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

Spigot Wieso buggt das?

PandaMod

Minecrafter
Registriert
5 Januar 2020
Beiträge
16
Diamanten
299
Minecraft
SuchtAPI
Hey,

Ich habe zuvor noch nie in 1.12.2 etwas gemacht aber wenn ich im Inventar ein bestimmtes Item anklicke, sollte es eig. komplett canceln aber nach dem 2. mal klicken kann ich das Item in die "Hand" nehmen...

Java:
if(event.getCurrentItem().getItemMeta().getDisplayName().equalsIgnoreCase("§7» §cTeufelshörner")) {
    event.setCancelled(true);
    player.playSound(player.getLocation(), "signal.fehler", 10.0F, 1.0F);
}



Wieso ist das so?

Ich hoffe ihr könnt mir helfen.. xD

Mit freundlichen Grüßen! ^^
 

PandaMod

Minecrafter
Registriert
5 Januar 2020
Beiträge
16
Diamanten
299
Minecraft
SuchtAPI
Wäre hilfreich, wenn du die komplette Methode postest und vielleicht auch im Serverlog noch Fehlern suchst, weil ich mir ziemlich sicher bin, dass da auch etwas zu finden ist.

in der Console kommt folgender Fehler:
[11:40:16 ERROR]: Could not pass event InventoryCreativeEvent to System v0.1
org.bukkit.event.EventException: null
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:500) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:485) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
at net.minecraft.server.v1_12_R1.PlayerConnection.a(PlayerConnection.java:2047) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
at net.minecraft.server.v1_12_R1.PacketPlayInSetCreativeSlot.a(SourceFile:23) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
at net.minecraft.server.v1_12_R1.PacketPlayInSetCreativeSlot.a(SourceFile:9) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
at net.minecraft.server.v1_12_R1.PlayerConnectionUtils$1.run(SourceFile:13) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_281]
at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_281]
at net.minecraft.server.v1_12_R1.SystemUtils.a(SourceFile:46) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
at net.minecraft.server.v1_12_R1.MinecraftServer.D(MinecraftServer.java:748) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:406) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:679) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:577) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_281]
Caused by: java.lang.NullPointerException
at de.suchtcraft.system.listeners.Cosmetics_Listener.onClick(Cosmetics_Listener.java:22) ~[?:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_281]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_281]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_281]
at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_281]
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:302) ~[spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
... 15 more

die komplette Methode

Java:
@EventHandler
public void onClick(InventoryClickEvent event) {
    Player player = (Player) event.getWhoClicked();

    if (event.getCurrentItem().getItemMeta().getDisplayName().equalsIgnoreCase("§7» §cTeufelshörner")) {
        event.setCancelled(true);
        player.playSound(player.getLocation(), "signal.fehler", 10.0F, 1.0F);
    }
}

die Zeile 22 ist
Java:
if (event.getCurrentItem().getItemMeta().getDisplayName().equalsIgnoreCase("§7» §cTeufelshörner")) {
 

PandaMod

Minecrafter
Registriert
5 Januar 2020
Beiträge
16
Diamanten
299
Minecraft
SuchtAPI
Gut,

Ich hab grad mal probiert ob es in Gamemode 0 funktioniert weil ja in der Console "InventoryCreativeEvent" steht
Naja in Gamemode 0 funktioniert das zwar nicht aber irgendwie trotzdem weird, dass es in Gamemode 1 funktioniert.. xD
 

Malfrador

Threadripper
Registriert
16 Juni 2013
Beiträge
1.473
Diamanten
396
Minecraft
Malfrador
Naja, der Fehler ist doch recht eindeutig. Du machst keine Nullchecks, sondern fragst direkt den Displayname ab.
Sowohl getCurrentItem (der Slot ist leer) als auch getItemMeta (das Item hat keine Meta) können null sein und eines davon ist es in diesem Fall auch. Der Displayname ist eventuell ebenfalls nullable, da bin ich mir nicht sicher.

Wenn du vorher überprüfst ob diese Dinge null sind, sollte es keine Exceptions mehr geben.

Würdest du eine aktuelle Minecraft-Version nutzen könntest du Java 15 nutzen, was deutlich hilfreichere NullPointerExceptions bietet, um dir das finden solcher Fehler zu erleichtern.
 
Oben