How bad i did that?

Discussion in 'Plugin Development' started by PistoFrancoPuumm, Sep 21, 2016.

Thread Status:
Not open for further replies.
  1. Hello i'm trying to do a Radar with a compass and i finally finish doing that... it obiously don't works
    but i want to know what i did wrong?

    Code:
    @EventHandler
        public void onPlayerItemUse(final PlayerInteractEvent event) {
            final Player player = event.getPlayer();
            if (event.getAction() == Action.RIGHT_CLICK_BLOCK) {
                if (event.getItem() != null) {
                    if (event.getItem().getType() == Material.BLAZE_ROD) {
                        event.setCancelled(true);
                        loc1 = event.getClickedBlock().getLocation();
                        player.sendMessage(ChatColor.GREEN+"1st position set at: "+loc1.getBlockX()+" "+loc1.getBlockY()+" "+loc1.getBlockZ());
                    }
                    if(event.getItem().getType() == Material.COMPASS){
                        if(event.getItem().getItemMeta().getDisplayName().equalsIgnoreCase("§5§lMagic Radar")){
                            if(Bukkit.getOnlinePlayers().size() == 0){
                                MainClass.sendCenteredMessage(player,"No players to track!");
                            return;
                            }
                            else {
                                BukkitTask runnable = new BukkitRunnable() {
                                    @Override
                                    public void run() {
                                        if(player.getItemInHand().getType() == Material.COMPASS) {
                                            player.setCompassTarget(getNearest(player, 100D).getLocation());
                                        }else{
                                            cancel();
                                        }
                                    }
    
                                }.runTaskLater(plugin,20L);
                            }
                        }
                    }
                }
            }
     
  2. Okkey, now i got it... it seems like is giving me an error when i try to right click - left click a block... (But no error apears when i do right-left click at air) why i get this error?
    Code:
    [16:51:23 ERROR]: Could not pass event PlayerInteractEvent to SkyWars v1.0
    org.bukkit.event.EventException
            at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:302) ~[craftbukkit-1.10.2.jar:git-Bukkit-8cc5958]
            at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[craftbukkit-1.10.2.jar:git-Bukkit-8cc5958]
            at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:501) [craftbukkit-1.10.2.jar:git-Bukkit-8cc5958]
            at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:486) [craftbukkit-1.10.2.jar:git-Bukkit-8cc5958]
            at org.bukkit.craftbukkit.v1_10_R1.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:231) [craftbukkit-1.10.2.jar:git-Bukkit-8cc5958]
            at net.minecraft.server.v1_10_R1.PlayerInteractManager.a(PlayerInteractManager.java:492) [craftbukkit-1.10.2.jar:git-Bukkit-8cc5958]
            at net.minecraft.server.v1_10_R1.PlayerConnection.a(PlayerConnection.java:877) [craftbukkit-1.10.2.jar:git-Bukkit-8cc5958]
            at net.minecraft.server.v1_10_R1.PacketPlayInUseItem.a(SourceFile:55) [craftbukkit-1.10.2.jar:git-Bukkit-8cc5958]
            at net.minecraft.server.v1_10_R1.PacketPlayInUseItem.a(SourceFile:11) [craftbukkit-1.10.2.jar:git-Bukkit-8cc5958]
            at net.minecraft.server.v1_10_R1.PlayerConnectionUtils$1.run(SourceFile:13) [craftbukkit-1.10.2.jar:git-Bukkit-8cc5958]
            at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_92]
            at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_92]
            at net.minecraft.server.v1_10_R1.SystemUtils.a(SourceFile:45) [craftbukkit-1.10.2.jar:git-Bukkit-8cc5958]
            at net.minecraft.server.v1_10_R1.MinecraftServer.D(MinecraftServer.java:688) [craftbukkit-1.10.2.jar:git-Bukkit-8cc5958]
            at net.minecraft.server.v1_10_R1.DedicatedServer.D(DedicatedServer.java:361) [craftbukkit-1.10.2.jar:git-Bukkit-8cc5958]
            at net.minecraft.server.v1_10_R1.MinecraftServer.C(MinecraftServer.java:643) [craftbukkit-1.10.2.jar:git-Bukkit-8cc5958]
            at net.minecraft.server.v1_10_R1.MinecraftServer.run(MinecraftServer.java:547) [craftbukkit-1.10.2.jar:git-Bukkit-8cc5958]
            at java.lang.Thread.run(Thread.java:745) [?:1.8.0_92]
    Caused by: java.lang.NullPointerException
            at me.pistofranco.skywars.ListenersClass.onPlayerItemUse(ListenersClass.java:107) ~[?:?]
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_92]
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_92]
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_92]
            at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_92]
            at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:300) ~[craftbukkit-1.10.2.jar:git-Bukkit-8cc5958]
            ... 17 more
    
     
    Last edited: Sep 21, 2016
  3. Offline

    Lordloss

    - The display name of an item can be null, check first if it has one.
    - btw. you dont have to make the event final, you dont use it in your task.
     
  4. yep, i did it! thank you! :D
    i'll check if that what you said and then, if the item name is null, how i do to compare?
    beacause i can see in the slotbar the name: "Magic Radar"
     
  5. Code:
    if(event.getItem().getType() == Material.COMPASS){
     
  6. Offline

    Zombie_Striker

    @PistoFrancoPuumm
    The item can be null. Nullcheck the item before getting the type.
     
  7. Yes, i check it, and its null, so what i need to do now? I can see in the compass it says: Magic Clock, how it can return null?
     
  8. Offline

    Lordloss

    You simply want to react to an event if a player holds a specific item. If the item is null, it means the player is NOT holding any item. Check if its null, and if it is, return.
     
Thread Status:
Not open for further replies.

Share This Page