Wie kann man den Inhalt eines erstellen Inventares speichern?
Guten Tag, ich programmieren momentan an einem Minecraft Plugin für die Version 1.8 und habe in einer einen befehl programmiert mit dem es möglich ist ein 2. Inventar zu öffnen. Wenn ich aber in dieses Inventar Sachen rein lege, mein Inventar schließe und diesen Befehl nochmal eingebe, sind die Items nichtmehr in dem 2. Inventar drin. Kann mir evtl. jemand sagen wie ich es machen kann, dass die Items in diesem 2. Inventar gespeichert werden?
Danke im Vorraus
LG doffbatz
2 Antworten
Vermutlich erstellst du bei jedem Öffnen ein neues Inventar, logisch dass das nicht funktioniert. Am einfachsten ist es die Inventare in einer assoziativen Datenstruktur zu speichern. Java hat dafür das Interface Map, die sinnvollste Implementierung ist hier eine HashMap. Eine HashMap speichert die Werte in einer Hashtabelle, wodurch die Komplexität eines Zugriffes bei einer Veränderung der Größe mehr oder weniger konstant bleibt.
Erstellung:
Map<Player, Inventory> secondaryInventories = new HashMap<>();
Verwendung beim Öffnen:
Inventory secondaryInventory = secondaryInventories.get(player);
if (secondaryInventory == null) {
// Neues Inventar erstellen
secondaryInventories.put(player, secondaryInventory);
}
// Inventar öffnen
Damit bleiben die Inventare jedoch nur während der Laufzeit erhalten, willst du dass sie auch bei einem Neustart erhalten bleiben, musst du die Hashtabelle auf dem Datenträger speichern. Das geht zum Beispiel mit Minecrafts eigenem Format NBT.
Stichwort: HashMap
Viele wege führen nach Rom auch wenn Sie alt sind sowie nicht schön. (Video ist auch schon etwas älter)
Ist trotzdem blöd, wenn der eine Weg doppelt so lang ist. Genau daher gibt es auch Begriffe wie Scripkiddie, denn wenn man so lernt, versteht man eigentlich gar nicht, was man macht.
Wenn du hier schon auf ein Video verlinkst, dann sollte das wenigstens gut sein, aber das ist es definitiv nicht.