Spigot Java: Player-Inventory einer Welt bekommen?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Hey,

mit World#getPlayers() erhältst Du die Spieler, die gerade auf der Welt online sind. Von diesen kannst Du auch einfach das Inventar bekommen. Bei Spielern, die sich gerade nicht auf dem Server befinden, funktioniert das rein über die Spigot-API nicht, da Du nicht auf das Inventar von offline Spielern zugreifen kannst.

Um eine solche Funktion zu realisieren müsstest Du das Inventar eines Spielers beim Verlassen in einer Datenbank zwischenspeichern und dann über diese das Inventar abfragen. Beim Betreten des Servers musst Du dann auch das alte Inventar des Spielers überschreiben.

PS: Falls Du das Inventar von allen online Spielern auf dem gesamten Server erhalten möchtest und nicht nur von einer Welt, das geht über Bukkit.getOnlinePlayers().getInventory();

LG

Woher ich das weiß:Hobby – Hobby-Entwickler in diversen Sprachen seit 2017

Kalkablagerung 
Fragesteller
 12.12.2021, 15:44

Danke für deine Antwort. Fast wie erwartet, dass das nicht mit der Spigot-API möglich ist. Ich schaue noch ein bisschen, ob ich nicht vielleicht doch noch irgendeine bessere Variante finde.

0

Hey um das Inventar eines Offline Spielers zu bekommen würde ich das Inventar erstmal beim quitten in einer File oder in einer Datenbank speichern als Base64 String speichern. Nun müssen die Item Stacks jedoch noch serialized sein. Jedoch wurde dafür schon eine API geschrieben, welches dir ermöglicht nicht alle meta Daten extra in einem serialized Objekt zu speichern und sogar gleich das einlesen und auslesen von Base64 ermöglicht ->

(https://gist.github.com/graywolf336/8153678)

Jetzt musst du nur noch den Base64 String in einer File oder Datenbank speichern und beim Server starten wieder am besten in eine Map einlesen

Woher ich das weiß:Hobby