Solved EventHandler BlockBreakEvent

Discussion in 'Plugin Help/Development/Requests' started by Gartenzaun, Jan 10, 2015.

Thread Status:
Not open for further replies.
  1. Offline

    Gartenzaun

    Hello,

    my EventHandler code looks like this:

    Code:
    package gartenzaun;
    
    import java.util.Random;
    
    import org.bukkit.Material;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.block.BlockBreakEvent;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.inventory.meta.ItemMeta;
    
    public class MobileSpawner implements Listener {
        public MobileSpawner(Commands commands) {
            commands.getServer().getPluginManager().registerEvents(this, commands);
        }
        @SuppressWarnings("deprecation")
        @EventHandler
        public void onBlockBreakEvent(BlockBreakEvent event) {
            Player p = event.getPlayer();
            String playerworld = p.getWorld().getName();
            String configworld = Commands.plugin.getConfig().getString("Config.world");        
            if(playerworld.equalsIgnoreCase(configworld)) {
                ItemStack creeperHead = new ItemStack(397, 1, (short) 4);
                ItemMeta itemMeta = creeperHead.getItemMeta();
                itemMeta.setDisplayName("Mobile Spawner");
                creeperHead.setItemMeta(itemMeta);
                if(p.getItemInHand().getItemMeta().hasDisplayName() && p.getItemInHand().getItemMeta().getDisplayName().equals(creeperHead.getItemMeta().getDisplayName())) {
                    if(event.getBlock().getTypeId() == 18) {
                        if(random(1, 3) == 1) {
                            Integer zufallsZahl = random(1, 20);
                            if(zufallsZahl == 1) {
                                   ItemStack bonemeal = new ItemStack(Material.INK_SACK, 1, (short) 15);
                                   p.getWorld().dropItemNaturally(event.getBlock().getLocation(), bonemeal);
                            }
                            if(zufallsZahl == 2) {
                                   ItemStack bonemeal = new ItemStack(Material.INK_SACK, 1, (short) 15);
                                   p.getWorld().dropItemNaturally(event.getBlock().getLocation(), bonemeal);
                            }
                            if(zufallsZahl == 3) {
                                   ItemStack bonemeal = new ItemStack(Material.INK_SACK, 1, (short) 15);
                                   p.getWorld().dropItemNaturally(event.getBlock().getLocation(), bonemeal);
                            }
                            if(zufallsZahl == 4) {
                                   ItemStack bonemeal = new ItemStack(Material.INK_SACK, 1, (short) 15);
                                   p.getWorld().dropItemNaturally(event.getBlock().getLocation(), bonemeal);
                            }
                            if(zufallsZahl == 5) {
                                   ItemStack arrow = new ItemStack(Material.ARROW, 1);
                                   p.getWorld().dropItemNaturally(event.getBlock().getLocation(), arrow);
                            }
                            if(zufallsZahl == 6) {
                                   ItemStack arrow = new ItemStack(Material.ARROW, 1);
                                   p.getWorld().dropItemNaturally(event.getBlock().getLocation(), arrow);
                            }
                            if(zufallsZahl == 7) {
                                   ItemStack arrow = new ItemStack(Material.ARROW, 1);
                                   p.getWorld().dropItemNaturally(event.getBlock().getLocation(), arrow);
                            }
                            if(zufallsZahl == 8) {
                                   ItemStack gunpowder = new ItemStack(Material.SULPHUR, 1);
                                   p.getWorld().dropItemNaturally(event.getBlock().getLocation(), gunpowder);
                            }
                            if(zufallsZahl == 9) {
                                   ItemStack gunpowder = new ItemStack(Material.SULPHUR, 1);
                                   p.getWorld().dropItemNaturally(event.getBlock().getLocation(), gunpowder);
                            }
                            if(zufallsZahl == 10) {
                                   ItemStack slimeball = new ItemStack(Material.SLIME_BALL, 1);
                                   p.getWorld().dropItemNaturally(event.getBlock().getLocation(), slimeball);
                            }
                        }
                    }
                    if(event.getBlock().getTypeId() == 161) {
                        if(random(1, 3) == 1) {
                            Integer zufallsZahl = random(1, 20);
                            if(zufallsZahl == 1) {
                                   ItemStack bonemeal = new ItemStack(Material.INK_SACK, 1, (short) 15);
                                   p.getWorld().dropItemNaturally(event.getBlock().getLocation(), bonemeal);
                            }
                            if(zufallsZahl == 2) {
                                   ItemStack bonemeal = new ItemStack(Material.INK_SACK, 1, (short) 15);
                                   p.getWorld().dropItemNaturally(event.getBlock().getLocation(), bonemeal);
                            }
                            if(zufallsZahl == 3) {
                                   ItemStack bonemeal = new ItemStack(Material.INK_SACK, 1, (short) 15);
                                   p.getWorld().dropItemNaturally(event.getBlock().getLocation(), bonemeal);
                            }
                            if(zufallsZahl == 4) {
                                   ItemStack bonemeal = new ItemStack(Material.INK_SACK, 1, (short) 15);
                                   p.getWorld().dropItemNaturally(event.getBlock().getLocation(), bonemeal);
                            }
                            if(zufallsZahl == 5) {
                                   ItemStack arrow = new ItemStack(Material.ARROW, 1);
                                   p.getWorld().dropItemNaturally(event.getBlock().getLocation(), arrow);
                            }
                            if(zufallsZahl == 6) {
                                   ItemStack arrow = new ItemStack(Material.ARROW, 1);
                                   p.getWorld().dropItemNaturally(event.getBlock().getLocation(), arrow);
                            }
                            if(zufallsZahl == 7) {
                                   ItemStack arrow = new ItemStack(Material.ARROW, 1);
                                   p.getWorld().dropItemNaturally(event.getBlock().getLocation(), arrow);
                            }
                            if(zufallsZahl == 8) {
                                   ItemStack gunpowder = new ItemStack(Material.SULPHUR, 1);
                                   p.getWorld().dropItemNaturally(event.getBlock().getLocation(), gunpowder);
                            }
                            if(zufallsZahl == 9) {
                                   ItemStack gunpowder = new ItemStack(Material.SULPHUR, 1);
                                   p.getWorld().dropItemNaturally(event.getBlock().getLocation(), gunpowder);
                            }
                            if(zufallsZahl == 10) {
                                   ItemStack slimeball = new ItemStack(Material.SLIME_BALL, 1);
                                   p.getWorld().dropItemNaturally(event.getBlock().getLocation(), slimeball);
                            }
                        }
                    }
                }
            }
        }
        public int random(int min, int max){
            Random random = new Random();
            return random.nextInt(max - min + 1) + min;
        }
    }

    Everything works and there are no error messages when I break a block with the 'Supercrook'. But when I break a block without Supercrook, for example with a normal stonepickaxe it throws me an Error:

    NullPointerExceptions while registering the Event.

    Did I do something wrong?
     
    Last edited: Jan 10, 2015
  2. Offline

    mythbusterma

    @Gartenzaun

    Show the stack trace if you want help.
     
  3. Invisible

    nverdier

    @mythbusterma We should all probably learn to read minds because I see this happening a lot, when they don't post the stack trace. It'd be easier that way :p
     
    mine-care likes this.
  4. Offline

    Gartenzaun

    Code:
    11.01 08:41:02 [Server] INFO ... 15 more
    11.01 08:41:02 [Server] INFO at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:298) ~[spigot.jar:git-Spigot-1.7.9-R0.2-205-g0a049fa]
    11.01 08:41:02 [Server] INFO at java.lang.reflect.Method.invoke(Method.java:606) ~[?:1.7.0_51]
    11.01 08:41:02 [Server] INFO at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.7.0_51]
    11.01 08:41:02 [Server] INFO at sun.reflect.GeneratedMethodAccessor183.invoke(Unknown Source) ~[?:?]
    11.01 08:41:02 [Server] INFO at gartenzaun.MobileSpawner.onBlockBreakEvent(MobileSpawner.java:28) ~[?:?]
    11.01 08:41:02 [Server] INFO Caused by: java.lang.NullPointerException
    11.01 08:41:02 [Server] INFO at net.minecraft.server.v1_7_R4.ThreadServerApplication.run(SourceFile:628) [spigot.jar:git-Spigot-1.7.9-R0.2-205-g0a049fa]
    11.01 08:41:02 [Server] INFO at net.minecraft.server.v1_7_R4.MinecraftServer.run(MinecraftServer.java:490) [spigot.jar:git-Spigot-1.7.9-R0.2-205-g0a049fa]
    11.01 08:41:02 [Server] INFO at net.minecraft.server.v1_7_R4.MinecraftServer.u(MinecraftServer.java:584) [spigot.jar:git-Spigot-1.7.9-R0.2-205-g0a049fa]
    11.01 08:41:02 [Server] INFO at net.minecraft.server.v1_7_R4.DedicatedServer.v(DedicatedServer.java:289) [spigot.jar:git-Spigot-1.7.9-R0.2-205-g0a049fa]
    11.01 08:41:02 [Server] INFO at net.minecraft.server.v1_7_R4.MinecraftServer.v(MinecraftServer.java:734) [spigot.jar:git-Spigot-1.7.9-R0.2-205-g0a049fa]
    11.01 08:41:02 [Server] INFO at net.minecraft.server.v1_7_R4.ServerConnection.c(ServerConnection.java:81) [spigot.jar:git-Spigot-1.7.9-R0.2-205-g0a049fa]
    11.01 08:41:02 [Server] INFO at net.minecraft.server.v1_7_R4.NetworkManager.a(NetworkManager.java:186) [spigot.jar:git-Spigot-1.7.9-R0.2-205-g0a049fa]
    11.01 08:41:02 [Server] INFO at net.minecraft.server.v1_7_R4.PacketPlayInBlockDig.handle(PacketPlayInBlockDig.java:65) [spigot.jar:git-Spigot-1.7.9-R0.2-205-g0a049fa]
    11.01 08:41:02 [Server] INFO at net.minecraft.server.v1_7_R4.PacketPlayInBlockDig.a(PacketPlayInBlockDig.java:41) [spigot.jar:git-Spigot-1.7.9-R0.2-205-g0a049fa]
    11.01 08:41:02 [Server] INFO at net.minecraft.server.v1_7_R4.PlayerConnection.a(PlayerConnection.java:565) [spigot.jar:git-Spigot-1.7.9-R0.2-205-g0a049fa]
    11.01 08:41:02 [Server] INFO at net.minecraft.server.v1_7_R4.PlayerInteractManager.a(PlayerInteractManager.java:192) [spigot.jar:git-Spigot-1.7.9-R0.2-205-g0a049fa]
    11.01 08:41:02 [Server] INFO at net.minecraft.server.v1_7_R4.PlayerInteractManager.breakBlock(PlayerInteractManager.java:264) [spigot.jar:git-Spigot-1.7.9-R0.2-205-g0a049fa]
    11.01 08:41:02 [Server] INFO at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:494) [spigot.jar:git-Spigot-1.7.9-R0.2-205-g0a049fa]
    11.01 08:41:02 [Server] INFO at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:509) [spigot.jar:git-Spigot-1.7.9-R0.2-205-g0a049fa]
    11.01 08:41:02 [Server] INFO at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot.jar:git-Spigot-1.7.9-R0.2-205-g0a049fa]
    11.01 08:41:02 [Server] INFO at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:302) ~[spigot.jar:git-Spigot-1.7.9-R0.2-205-g0a049fa]
    11.01 08:41:02 [Server] INFO org.bukkit.event.EventException
    11.01 08:41:02 [Server] ERROR Could not pass event BlockBreakEvent to SkyBlock-Add-on v0.1
    Oh sry guys, I've posted the wrong EventHandler code. Wait a second....
     
  5. Offline

    mythbusterma

    @Gartenzaun

    You never check if the item hasItemMeta()
     
    Gartenzaun likes this.
  6. Offline

    Gartenzaun

    if(p.getItemInHand().hasItemMeta()) {
    }

    ?
     
  7. Offline

    mythbusterma

  8. Offline

    mine-care

    The class name in the trace doesn't match the one you sent to us. It's in class MobileSpawner
     
  9. Offline

    Gartenzaun

    Works thank you!

    <Edit by mrCookieSlime: Merged posts. Please don't double post. There is an Edit Button right next to the Date.>
     
Thread Status:
Not open for further replies.

Share This Page