• 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!

InventoryClickEvent fehler (beim klick ausserhalb des Inventars)

Sprax

Minecrafter
Registriert
12 April 2014
Beiträge
11
Diamanten
241
Minecraft
Sprax2013
Hi Leute! Ich habe diese Frage bereits im Nitrado-Forum gestellt aber da konnte mir leider nicht geholfen werden:

Ich code ein Plugin für Spigot 1.8.8. Dabei nutzte ich ein InventoryClickEvent. Nun bekomme ich einen Fehler in der Konsole, wenn ich ausserhalb des Inventars klicke. Das beeinträchtigt nicht das Plugin sieht aber nicht schön aus und nervt!

Java:
  @EventHandler
   private void InventoryClick(InventoryClickEvent e) {
     Player p = (Player)e.getWhoClicked();
     
     if(e.getClickedInventory().getName().equals("§eInv")) {
       if(e.getClickedInventory().getItem(4).getType() == Material.RED_ROSE) {
         e.setCancelled(true);
         
         if(e.getCurrentItem().hasItemMeta() && e.getCurrentItem().getItemMeta().hasDisplayName()) {
           if(e.getCurrentItem().getItemMeta().getDisplayName() == "Lava") {
             p.sendMessage("Lava Partikel");
           }
         }
       }
     }
   }

Code:
[17:48:21] [Server thread/ERROR]: Could not pass event InventoryClickEvent to CoinShop v1.0
org.bukkit.event.EventException
   at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:310) ~[spigot-1.8.8-R0.1-SNAPSHOT-latest.jar:git-Spigot-fdc1440-53fac9f]
   at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot-1.8.8-R0.1-SNAPSHOT-latest.jar:git-Spigot-fdc1440-53fac9f]
   at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [spigot-1.8.8-R0.1-SNAPSHOT-latest.jar:git-Spigot-fdc1440-53fac9f]
   at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487) [spigot-1.8.8-R0.1-SNAPSHOT-latest.jar:git-Spigot-fdc1440-53fac9f]
   at net.minecraft.server.v1_8_R3.PlayerConnection.a(PlayerConnection.java:1630) [spigot-1.8.8-R0.1-SNAPSHOT-latest.jar:git-Spigot-fdc1440-53fac9f]
   at net.minecraft.server.v1_8_R3.PacketPlayInWindowClick.a(SourceFile:31) [spigot-1.8.8-R0.1-SNAPSHOT-latest.jar:git-Spigot-fdc1440-53fac9f]
   at net.minecraft.server.v1_8_R3.PacketPlayInWindowClick.a(SourceFile:9) [spigot-1.8.8-R0.1-SNAPSHOT-latest.jar:git-Spigot-fdc1440-53fac9f]
   at net.minecraft.server.v1_8_R3.PlayerConnectionUtils$1.run(SourceFile:13) [spigot-1.8.8-R0.1-SNAPSHOT-latest.jar:git-Spigot-fdc1440-53fac9f]
   at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_51]
   at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_51]
   at net.minecraft.server.v1_8_R3.SystemUtils.a(SourceFile:44) [spigot-1.8.8-R0.1-SNAPSHOT-latest.jar:git-Spigot-fdc1440-53fac9f]
   at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:714) [spigot-1.8.8-R0.1-SNAPSHOT-latest.jar:git-Spigot-fdc1440-53fac9f]
   at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:374) [spigot-1.8.8-R0.1-SNAPSHOT-latest.jar:git-Spigot-fdc1440-53fac9f]
   at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:653) [spigot-1.8.8-R0.1-SNAPSHOT-latest.jar:git-Spigot-fdc1440-53fac9f]
   at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:556) [spigot-1.8.8-R0.1-SNAPSHOT-latest.jar:git-Spigot-fdc1440-53fac9f]
   at java.lang.Thread.run(Thread.java:745) [?:1.8.0_51]
Caused by: java.lang.NullPointerException
   at me.sprax2013.coin_shop.Inventorys.Trails.InventoryClick(Trails.java:97) ~[?:?]
   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_51]
   at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_51]
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_51]
   at java.lang.reflect.Method.invoke(Method.java:497) ~[?:1.8.0_51]
   at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[spigot-1.8.8-R0.1-SNAPSHOT-latest.jar:git-Spigot-fdc1440-53fac9f]
   ... 15 more

Ich hoffe einer weiß wie ich den Fehler beheben kann :)
 
V

Victini151

Guest
Auf den ersten Blick: Entweder das getClickedInventory oder das getCurrentItem ist null,
wo liegt denn Zeile 97?

Das das Nitradoforum nicht mit Kompetenz herhalten kann ist vielleicht nicht so verwunderlich, formulier dein Problem auf Englisch, und versuchs an "der Quelle des Übels", dem Spigot-Forum. Dort wirst du rauhe Antworten bekommen, aber am Ende ist das Problem mit einigen Rückschlägen für die Selbstachtung gelöst.
 

GPSforLEGENDS

Vorarbeiter
Registriert
21 März 2014
Beiträge
289
Alter
85
Diamanten
300
Minecraft
GPSforLEGENDS
Zuletzt bearbeitet:
V

Victini151

Guest
Code:
if(e.getCurrentItem().getItemMeta().getDisplayName()=="Lava"){
Wird nie true zurückgeben.
Exkurs: Dass es eine schlechte Praxis ist, ist unbestritten.
Es kann aber durchaus true evaluieren, sofern beide Strings durch Literale besetzt sind, das ist sogar eine Vorraussetzung der Spezifikation der JVM, siehe http://docs.oracle.com/javase/specs/jls/se7/html/jls-3.html#jls-3.10.5

TL;DR: Abändern auf equals() - wird einige potentielle Fehlerquellen ausmerzen.
 

GPSforLEGENDS

Vorarbeiter
Registriert
21 März 2014
Beiträge
289
Alter
85
Diamanten
300
Minecraft
GPSforLEGENDS
Exkurs: Dass es eine schlechte Praxis ist, ist unbestritten.
Es kann aber durchaus true evaluieren, sofern beide Strings durch Literale besetzt sind, das ist sogar eine Vorraussetzung der Spezifikation der JVM, siehe http://docs.oracle.com/javase/specs/jls/se7/html/jls-3.html#jls-3.10.5

TL;DR: Abändern auf equals() - wird einige potentielle Fehlerquellen ausmerzen.
Ich meinte ja auch, dass es nie true zurückgeben wird, wenn es so ist.
Das es true zurück gibt, wenn auf beiden Seiten auf das gleiche Objekt verwiesen wird, ist mir durchaus bewusst.
 

Sprax

Minecrafter
Registriert
12 April 2014
Beiträge
11
Diamanten
241
Minecraft
Sprax2013
Danke für eure bisherige Hilfe aber das Problem ist nicht gelöst :/

Das abfrage ob es null ist etc. habe ich bereits versucht aber hat nicht geholfen. Da ich keine Lust habe alles zu kopieren und die BB-Tags an das Forum anzupassen hägnge ich keinen Beitrag aus dem Nitrado-Forum an wo ich den Code/Fehler etc. gepostet habe ---> Mein Beitrag
 

GPSforLEGENDS

Vorarbeiter
Registriert
21 März 2014
Beiträge
289
Alter
85
Diamanten
300
Minecraft
GPSforLEGENDS
Code:
if((e.getClickedInventory().getName() == "§eCoinShop §8| §bPets") && !(e.getClickedInventory() == null)) {
Bitte vernünftig Java lernen...
Wechsel beide seiten
Und
Code:
e.getClickedInventory().getName() == "§eCoinShop §8| §bPets")
Statt == solltest du equals benutzen
 
Oben