InventoryClickEvent wirft ArrayIndexOutOfBound wenn Anvil offen ist

  • Guten Abend,


    mein Problem ist dass das InventoryClickEvent (spigot 1.8.8) ArrayIndexOutOfBound wirft wenn ein Hopper offen ist.

    Ich cancle das Event ganz normal.

    Code
        @EventHandler(priority = EventPriority.HIGHEST)
        private void onInventoryClickEvent(InventoryClickEvent event) {
           event.setCancelled(true);
        }



    Werfen tut er mir das...



    Weiß jemand was da falsch läuft?

    Es funktioniert doch bei Kisten auch?


    Danke!

    Lg

  • Der Code den du da geschickt hast hat rein gar nichts mit dem error zutun.


    Wie der Fehler schon sagt versuchst du irgendwo auf etwas zuzugreifen das es nicht gibt. Irgendwo arbeitest du mit einem Array und versuchst da auf etwas zuzugreifen das es nicht gibt bzw auf ein Element das es nicht gibt.

  • Der Code den du da geschickt hast hat rein gar nichts mit dem error zutun.


    Wie der Fehler schon sagt versuchst du irgendwo auf etwas zuzugreifen das es nicht gibt. Irgendwo arbeitest du mit einem Array und versuchst da auf etwas zuzugreifen das es nicht gibt bzw auf ein Element das es nicht gibt.

    Das eben das Problem, der Fehler kommt mit dem Event und ich arbeite mit keinem Array in diesem Fall.

    Ohne dem Event tritt der Fehler auch nicht auf..

  • Machst du irgendetwas mit Packets oder eines der installierten plugins? Wenn du das nicht weißt alle Plugins Rausschmeißen und eines nach dem anderen hinzufügen und testen bis der Fehler auftritt, dann weißt du wer der Übeltäter ist.


    Ansonsten eventuell mal eine andere spigot Version probieren und alles gleich lassen außer der spigot Version.


    Und sollte der Fehler selbst ohne andere Plugins und mit anderer spigot Version passieren, also nur mit deinem plugin muss es an deinem Plugin liegen.

  • Machst du irgendetwas mit Packets oder eines der installierten plugins? Wenn du das nicht weißt alle Plugins Rausschmeißen und eines nach dem anderen hinzufügen und testen bis der Fehler auftritt, dann weißt du wer der Übeltäter ist.


    Ansonsten eventuell mal eine andere spigot Version probieren und alles gleich lassen außer der spigot Version.


    Und sollte der Fehler selbst ohne andere Plugins und mit anderer spigot Version passieren, also nur mit deinem plugin muss es an deinem Plugin liegen.

    Hey,


    nein ich weiß über alle meine Plugins bescheid.

    Bisher ist nur ein Plugin drauf was mit meinem CloudSystem kommuniziert und eben dieses...es ist also das einzige was auf Inventory Events zurückgreift.


    Das ist die ganze Klasse mit den Events....etwas anderes greift nicht darauf zurück..



    Entschuldige die späte Rückmeldung.

    LG


    EDIT: Die Sache ist halt, es passiert wirklich nur im Anvil-Inventar....

  • DerSchlawiner

    Hat den Titel des Themas von „InventoryClickEvent wirft ArrayIndexOutOfBound wenn Hopper offen ist“ zu „InventoryClickEvent wirft ArrayIndexOutOfBound wenn Anvil offen ist“ geändert.
  • Update:


    Also, ersmtals..ich weiß nicht wieso ich es hingeschrieben, aber das Inventrar ist ein Anvil kein Hopper....für Texteingabe.

    Und zum zweiten...ich denke das das Inventar scheinbar 0 Slots hat.


    Wie gesagt, ändere ich es zur Kiste...also InventoryType.Chest geht alles....

    Bei InventoryType.Anvil wirft InventoryClickEvent eine Exception, sowie das setzen von Items eine Exception wirtft....nur bei InventoryType.Anvil.


    Jemand eine Idee?

  • Wo genau setzt du das Inventar auf chest, damit es geht? Du hast da mehr als hundert Zeilen Code, da muss man schon genau wissen was du machst und wo, damit man einschätzen kann warum dies das Verhalten verändert.


    Auch ist das finden von Fehler mit Ausschnitten vom Code nicht gerade sehr einfach, wenn nicht zufällig der Fehler schon genau auf eine Zeile hinweist oder es kein grober Fehler ist, dann ist das ohne Zusammenhänge schon mehr ein rätselraten als eine Fehleranalyse.


    Es wäre gut wenn du nochmal schaust, das wenn der Fehler auftritt, einen kompletten Fehler aus der Konsole zu kopieren und hier zu teilen. Auch eventuell ein bisschen davor und danach mit kopieren, manchmal gibt das auch noch Hinweise darauf woran es liegen kann.

  • Wo genau setzt du das Inventar auf chest, damit es geht? Du hast da mehr als hundert Zeilen Code, da muss man schon genau wissen was du machst und wo, damit man einschätzen kann warum dies das Verhalten verändert.


    Auch ist das finden von Fehler mit Ausschnitten vom Code nicht gerade sehr einfach, wenn nicht zufällig der Fehler schon genau auf eine Zeile hinweist oder es kein grober Fehler ist, dann ist das ohne Zusammenhänge schon mehr ein rätselraten als eine Fehleranalyse.


    Es wäre gut wenn du nochmal schaust, das wenn der Fehler auftritt, einen kompletten Fehler aus der Konsole zu kopieren und hier zu teilen. Auch eventuell ein bisschen davor und danach mit kopieren, manchmal gibt das auch noch Hinweise darauf woran es liegen kann.

    In dem alten Code oben bei Zeile 17 und bei Zeile 24.

    Der Name des Inventars wird auch nicht übernommen, da übergebe ich mittlerweile auch keinen String mehr.


    Ich kann dir auch mal die gesammte Klasse schicken, das sind dann 1000+ Zeilen Code, aber ich kann dir bestätigen das da sicher nicht anderes etwas beeinflusst :/


    UPDATE: Zu dem anderen das du geschrieben hast. Ja es ist Rätseln weil es keinen Sinn macht und ich noch nie so einen weirden Fehler hatte...


    Hier siehst du das Inventar..also den Anvil...

    Dieser hat keinen Namen...hab ihn dem Fall "Hallo" übergeben als Namen plus per Loop den Anvil mit Glas befüllt...aber auch die Items sind nicht da....ich habe nur das Inventar geöffnet.

    Da kommt auch kein Fehler, er irgnoriert einfach alles.


    Dann wenn ich unten die Items bewege(Sende dir die exakten Codeabschnitte welche dabei genommen werden) kommen diese Errors wie oben.

    Die Einzige Map die ich verwende ich ne HashMap und ne Klasse abzuspeichern....der Code ist mittlerweile strukturierter.


    Der Fehlerspam beim Bewegen von Items


    Der Code der aufgeführt wird bei dem Inventar.

    Code
                  case NAME_TAG:
                    inv = Bukkit.createInventory(null, InventoryType.ANVIL, "Hallo");
                    for(int i = 0; i < 3; i++) inv.setItem(i, Items.getItem(160, 7, 1, "§f", false));
                    player.openInventory(inv);
                    
                    player.playSound(player.getLocation(), Sound.WOOD_CLICK, 1, 2);
                    break;


    Und hier das InventoryClickEvent, mittlerweile mit einem Try-Carch wo ich keinen Fehler ausgebe...




    Und hier was komplett unütze ist nochmal die ganze Klasse solltest du etwas anderes nachschauen wollen:



    Und ich würde wie ich bereits am Anfang geraten sagen das dieser Fehler nicht von meinem Plugin bzw. dieser Klasse kommt.

    Im Fehler geht es m eine ArrayList wo ein index abfragt ist der außerhalb der größe ist...ArrayList ist leer und er will Index 31 z.B haben.

    Das passt nicht zu meinem Code, und darunter haben wir Netty Packets die eindeutig der Inventory Klasse von Spigot zu tun haben...ich glaube das mein Spigot nen backen hat was den Anvil betrifft :/


    Ich habe die eigentlich von hier...(https://getbukkit.org/download/spigot) 1.8.8 runtergeladen....

    Oh Mann, das zipft mich an...

  • Zitat

    Ich habe die eigentlich von hier...(https://getbukkit.org/download/spigot) 1.8.8 runtergeladen....


    Dazu hat md5 grade erst etwas geschrieben. Vielleicht nimmst du dir das mal zu Herzen: https://www.spigotmc.org/threa…t-bungeecord-1-17.510208/

    Sonst kann ich dir nur raten, was dir hier wahrscheinlich jeder raten wird: Wenn du Probleme mit Bugs in der Serversoftware hast (was hier offensichtlich der Fall ist, wie du schon selber festgestellt hast) benutz die aktuellste Version und melde den Bug ;)

    Mit freundlichen Grüßen,

    Rincewind