ServerPlugin Brauche Hilfe beim Vergleich zweier Inventar-Objekte

Dieses Thema im Forum "Programmierung" wurde erstellt von Mariusmak, 28. November 2013.

  1. Mariusmak
    Offline

    Mariusmak

    Registriert seit:
    3. April 2012
    Beiträge:
    3
    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 (Text):
    1. 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 (Text):
    1. plugin.invHolder.put("Hauptseite", inv);
    Jetzt öffne ich das Inventar mithilfe dieses Codes:
    Code (Text):
    1. 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 (Text):
    1. if(player.getOpenInventory().getTopInventory() == plugin.invHolder.get("Hauptseite"))
    2.         {
    3.             Bukkit.broadcastMessage("Inventare sind gleich");
    4.         }
    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
     
    #1
  2. Sabbertran
    Offline

    Sabbertran

    Registriert seit:
    24. April 2012
    Beiträge:
    75
    Minecraft:
    Sabbertran
    Ich bin mir zwar nicht ganz sicher, aber probier mal einen Vergleich mit .equals() anstatt ==.
     
    #2
  3. Mariusmak
    Offline

    Mariusmak

    Registriert seit:
    3. April 2012
    Beiträge:
    3
    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
     
    #3