Hello, Today I was getting an error with an event (it was caused by the following code - the code was on line 33, as shown in the console). Code (Text): @EventHandler public void createBowls(PlayerInteractEvent event) { if (event.getClickedBlock().getType() == Material.IRON_FENCE) { if (this.getConfig().get("userdata." + event.getPlayer().getName() + ".team").equals("dwarf")) { if (this.getConfig().get("server.general.gamestarted").equals("enabled")) { if (event.getAction() == Action.RIGHT_CLICK_BLOCK) { if (event.getPlayer().getItemInHand().getType() == Material.STICK) { ItemStack bowl = new ItemStack(Material.INK_SACK, 1, (short) 8); ItemMeta bowlmeta = bowl.getItemMeta(); bowlmeta.setDisplayName(ChatColor.AQUA + "Bowl"); bowlmeta.setLore(Arrays.asList("Use these on the oil Jimmy. We are gonna need more", "morter for these walls to make them strong, Jimmy!", ChatColor.GOLD + "- BruceWillakers")); bowl.setItemMeta(bowlmeta); event.getPlayer().getInventory().addItem(bowl); Shrinebar.removeItemType(event.getPlayer(), Material.STICK, 1); event.getPlayer().updateInventory(); Shrinebar.playSound(event.getClickedBlock().getLocation(), Sound.ZOMBIE_REMEDY, 1, 2); } } } } } } And the console says it's caused by: Code (Text): if (event.getClickedBlock().getType() == Material.IRON_FENCE) {
You need to add a null check, since when you click air e#getblockclicked return null (And please, do some formatting at that code, it gave me eye cancer)
Maybe because you need to add the ignoreCancelled=true to the event handler (since when click air it dire as already cancelled) set @EventHandler(ignoreCancelled=true) and should work fine
Code (Text): [22:48:36 ERROR]: Could not pass event PlayerInteractEvent to Game v1.0 org.bukkit.event.EventException at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.ja va:310) ~[server.jar:git-Spigot-21fe707-e1ebe52] at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.jav a:62) ~[server.jar:git-Spigot-21fe707-e1ebe52] at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.j ava:502) [server.jar:git-Spigot-21fe707-e1ebe52] at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.j ava:487) [server.jar:git-Spigot-21fe707-e1ebe52] at org.bukkit.craftbukkit.v1_8_R3.event.CraftEventFactory.callPlayerInte ractEvent(CraftEventFactory.java:228) [server.jar:git-Spigot-21fe707-e1ebe52] at org.bukkit.craftbukkit.v1_8_R3.event.CraftEventFactory.callPlayerInte ractEvent(CraftEventFactory.java:195) [server.jar:git-Spigot-21fe707-e1ebe52] at org.bukkit.craftbukkit.v1_8_R3.event.CraftEventFactory.callPlayerInte ractEvent(CraftEventFactory.java:191) [server.jar:git-Spigot-21fe707-e1ebe52] at net.minecraft.server.v1_8_R3.PlayerConnection.a(PlayerConnection.java :717) [server.jar:git-Spigot-21fe707-e1ebe52] at net.minecraft.server.v1_8_R3.PacketPlayInBlockPlace.a(PacketPlayInBlo ckPlace.java:52) [server.jar:git-Spigot-21fe707-e1ebe52] at net.minecraft.server.v1_8_R3.PacketPlayInBlockPlace.a(PacketPlayInBlo ckPlace.java:1) [server.jar:git-Spigot-21fe707-e1ebe52] at net.minecraft.server.v1_8_R3.PlayerConnectionUtils$1.run(SourceFile:1 3) [server.jar:git-Spigot-21fe707-e1ebe52] at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [ ?:1.8.0_131] at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_131] at net.minecraft.server.v1_8_R3.SystemUtils.a(SourceFile:44) [server.jar :git-Spigot-21fe707-e1ebe52] at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:7 15) [server.jar:git-Spigot-21fe707-e1ebe52] at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:3 74) [server.jar:git-Spigot-21fe707-e1ebe52] at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:6 54) [server.jar:git-Spigot-21fe707-e1ebe52] at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java :557) [server.jar:git-Spigot-21fe707-e1ebe52] at java.lang.Thread.run(Unknown Source) [?:1.8.0_131] Caused by: java.lang.NullPointerException at nl.marido.game.Game.createTorch(Game.java:368) ~[?:?] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0 _131] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0 _131] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1 .8.0_131] at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_131] at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.ja va:306) ~[server.jar:git-Spigot-21fe707-e1ebe52] ... 18 more >
But thats useless (in my eyes) because if I use .getClickedBlock().getType() == blabla it SHOULD ONLY DO ACTIONS WITH THAT BLOCK I still dont know why I never got this before... I just added some code cleanups (removed the && things etc) and this happend.
You need to open your eyes then. Doesn't matter. You clearly don't understand what is erroring. The NPE you're receiving is caused by the ".getType()", the condition doesn't even get evaluated because it errors half way through. The expression you're trying to do is the equivalent of writing "if (null.getType() == xyz)". You can't do that. Either you weren't interacting with air or you did indeed have null checks.
I tried to help you in two different way, you can choose one of them. Or maybe you can repeat yourself everything's fine and continue to your way