• Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!

Brauche Hilfe beim Vergleich zweier Inventar-Objekte

Mariusmak

Minecrafter
Registriert
3 April 2012
Beiträge
3
Diamanten
0
Momentan schreibe ich an einem Plugin, für welches ich eine Liste mit Inventaren habe und wissen muss, ob das Inventar welches ein Spieler geöffnet hat, während er eine Aktion ausführt, in dieser Liste vorhanden ist. Ich nutze als Liste eine BiMap, eine HashMap die in beide Richtungen verwendet werden kann. Anfangs erstelle ich ein neues Inventar. Dazu verwende ich diesen Code:
Code:
Inventory inv = Bukkit.createInventory(null, 54,"Shop Hauptseite");
Nun schmeiß ich ein paar Items in dieses Inventar. Bin ich damit fertig, speichere ich das Inventar in die besagte HashMap, indem ich diesen Code nutze:
Code:
plugin.invHolder.put("Hauptseite", inv);
Jetzt öffne ich das Inventar mithilfe dieses Codes:
Code:
Bukkit.getPlayerExact(playerName).openInventory(plugin.invHolder.get("Hauptseite")
Ich übergebe hier den Key mit dem ich vorher das Inventar abgespeichert habe.
Wenn der Spieler nun in seinem Inventar herumklickt, frage ich mit diesem Code ab, ob das offene Inventar das Inventar ist, welches ich vorher in die HashMap eingetragen habe. Dies tue ich mit diesem Code:
Code:
if(player.getOpenInventory().getTopInventory() == plugin.invHolder.get("Hauptseite"))
        {
            Bukkit.broadcastMessage("Inventare sind gleich");
        }

Das Inventar, welches geöffnet ist, ist ja genau das Inventar aus der Liste. Trotzdem sagt er mir, dass die beiden Inventare nicht gleich sind. Wie kann ich das beheben? Seht ihr einen Fehler oder habt ihr Ideen?

Ich bedanke mich schonmal im Voraus, ich hoffe ihr könnt mir helfen :)

Gruß,

Marius
 

Mariusmak

Minecrafter
Registriert
3 April 2012
Beiträge
3
Diamanten
0
Habe jetzt die Lösung gefunden mit .equals hat es auch nicht funktioniert. Der Fehler war nicht mein Code sondern man kann generell die normalen Inventare nicht miteinander vergleichen. Man muss das Inventar erst zum Typ CraftInventory casten und danach die Methode .getInventory() auf das gecastete Objekt anwenden. Tut man dies mit den zwei zu vergleichenden Objekten, erhält man die richtigen Lösungen, wenn man sie dann vergleicht.

Trotzdem Vielen Dank für eure Hilfe :D

Gruß,
Marius
 
Oben