Could not pass event PlayerInteractEvent

Discussion in 'Plugin Development' started by Mornov, Dec 26, 2020.

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

    Mornov

    this error will appear when i set it to main server, but when i start in localhost its not error

    ERROR
    Code:
    [17:07:37 ERROR]: Could not pass event PlayerInteractEvent to FrozenShooter v1.0-SNAPSHOT
    java.lang.NullPointerException: null
    at me.dream.Main.BarbarianAxe(Main.java:166) ~[?:?]
    at com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor122.execute(Unknown Source) ~[?:?]
    at org.bukkit.plugin.EventExecutor.lambda$create$1(EventExecutor.java:69) ~[patched_1.16.2.jar:git-Paper-189]
    at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:80) ~[patched_1.16.2.jar:git-Paper-189]
    at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[patched_1.16.2.jar:git-Paper-189]
    at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:607) ~[patched_1.16.2.jar:git-Paper-189]
    at org.bukkit.craftbukkit.v1_16_R2.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:503) ~[patched_1.16.2.jar:git-Paper-189]
    at org.bukkit.craftbukkit.v1_16_R2.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:470) ~[patched_1.16.2.jar:git-Paper-189]
    at org.bukkit.craftbukkit.v1_16_R2.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:466) ~[patched_1.16.2.jar:git-Paper-189]
    at net.minecraft.server.v1_16_R2.PlayerConnection.a(PlayerConnection.java:1501) ~[patched_1.16.2.jar:git-Paper-189]
    at net.minecraft.server.v1_16_R2.PacketPlayInBlockPlace.a(PacketPlayInBlockPlace.java:28) ~[patched_1.16.2.jar:git-Paper-189]
    at net.minecraft.server.v1_16_R2.PacketPlayInBlockPlace.a(PacketPlayInBlockPlace.java:5) ~[patched_1.16.2.jar:git-Paper-189]
    at net.minecraft.server.v1_16_R2.PlayerConnectionUtils.lambda$ensureMainThread$1(PlayerConnectionUtils.java:23) ~[patched_1.16.2.jar:git-Paper-189]
    at net.minecraft.server.v1_16_R2.TickTask.run(SourceFile:18) ~[patched_1.16.2.jar:git-Paper-189]
    at net.minecraft.server.v1_16_R2.IAsyncTaskHandler.executeTask(IAsyncTaskHandler.java:136) ~[patched_1.16.2.jar:git-Paper-189]
    at net.minecraft.server.v1_16_R2.IAsyncTaskHandlerReentrant.executeTask(SourceFile:23) ~[patched_1.16.2.jar:git-Paper-189]
    at net.minecraft.server.v1_16_R2.IAsyncTaskHandler.executeNext(IAsyncTaskHandler.java:109) ~[patched_1.16.2.jar:git-Paper-189]
    at net.minecraft.server.v1_16_R2.MinecraftServer.ba(MinecraftServer.java:1135) ~[patched_1.16.2.jar:git-Paper-189]
    at net.minecraft.server.v1_16_R2.MinecraftServer.executeNext(MinecraftServer.java:1128) ~[patched_1.16.2.jar:git-Paper-189]
    at net.minecraft.server.v1_16_R2.IAsyncTaskHandler.awaitTasks(IAsyncTaskHandler.java:119) ~[patched_1.16.2.jar:git-Paper-189]
    at net.minecraft.server.v1_16_R2.MinecraftServer.sleepForTick(MinecraftServer.java:1089) ~[patched_1.16.2.jar:git-Paper-189]
    at net.minecraft.server.v1_16_R2.MinecraftServer.w(MinecraftServer.java:1003) ~[patched_1.16.2.jar:git-Paper-189]
    at net.minecraft.server.v1_16_R2.MinecraftServer.lambda$a$0(MinecraftServer.java:177) ~[patched_1.16.2.jar:git-Paper-189]
    at java.lang.Thread.run(Thread.java:748) [?:1.8.0_275]
    
    MY CODE
    Code:
    @EventHandler
        public void BarbarianAxe(PlayerInteractEvent e) {
            Player p = e.getPlayer();
            if (e.getItem() == null) return;
            if ((e.getAction() == Action.RIGHT_CLICK_AIR || e.getAction() == Action.RIGHT_CLICK_BLOCK) && (e.getPlayer().getItemInHand().getItemMeta().getDisplayName().equalsIgnoreCase(ChatColor.GREEN + "Barbarian Axe"))) {
                if (!cooldownbbaxe.contains(p)) {
                    Location loc = p.getLocation();
                    Vector dir = p.getEyeLocation().getDirection().multiply(0.3);
                    ArmorStand barbarianaxe = p.getWorld().spawn(p.getLocation().add(0.2, 0.8, 0), ArmorStand.class);
                    ItemStack axe = new ItemStack(Material.IRON_AXE, 1);
                    barbarianaxe.setItemInHand(axe);
                    barbarianaxe.setVisible(false);
                    barbarianaxe.setBasePlate(false);
                    barbarianaxe.setInvulnerable(true);
                    barbarianaxe.setSmall(true);
                    barbarianaxe.setGravity(false);
                    barbarianaxe.getWorld().playSound(barbarianaxe.getLocation(), Sound.ENTITY_WOLF_SHAKE, 5, 1);
                    cooldownbbaxe.add(p);
                    Bukkit.getScheduler().scheduleSyncDelayedTask(this, () -> {
                        cooldownbbaxe.remove(p);
                    }, 100);
    
                    new BukkitRunnable() {
                        @Override
                        public void run() {
                            EulerAngle oldRot = barbarianaxe.getRightArmPose();
                            EulerAngle newRot = oldRot.add(0.5f, 0, 0);
    
                            if (!p.isOnline()) {
                                barbarianaxe.remove();
                            }
                            double distance = p.getLocation().distance(barbarianaxe.getLocation());
                            if (distance < 7) {
                                barbarianaxe.teleport(barbarianaxe.getLocation().add(dir));
                                barbarianaxe.setRightArmPose(newRot);
                            } else {
                                barbarianaxe.getWorld().playSound(barbarianaxe.getLocation(), Sound.ENTITY_ZOMBIE_BREAK_WOODEN_DOOR, 5, 1);
                                barbarianaxe.remove();
                                cancel();
                            }
                            if (barbarianaxe.getLocation().getBlock().getType().isSolid()) {
                                barbarianaxe.remove();
                                cancel();
                            } else {
                                for (Entity ent : barbarianaxe.getNearbyEntities(0.5, 0.5, 0.5)) {
                                    if (ent instanceof Monster) {
                                        ((Monster) ent).damage(30);
                                    }
                                    if (ent instanceof Animals) {
                                        ((Animals) ent).damage(30);
                                    }
                                }
    
                            }
                        }
                    }.runTaskTimer(this, 1, 1);
                } else {
                    p.sendMessage(ChatColor.RED + "This item is in cooldown.");
                }
            }
    
        }
    }
    
    Thank You!
     
  2. Offline

    CraftCreeper6

    @Mornov
    What is Main.java line 166?

    My guess is that getDisplayName() is returning null.
     
  3. Offline

    Mornov

    @CraftCreeper6

    how to fix this?

    Code:
    if ((e.getAction() == Action.RIGHT_CLICK_AIR || e.getAction() == Action.RIGHT_CLICK_BLOCK) && (e.getPlayer().getItemInHand().getItemMeta().getDisplayName().equalsIgnoreCase(ChatColor.GREEN + "Barbarian Axe"))) {
    
     
  4. Offline

    CraftCreeper6

    @Mornov
    use hasItemMeta() and hasDisplayName()
     
  5. Offline

    Mornov

    upload_2020-12-28_17-50-48.png
    cannot resolve hasDisplayName()
     
  6. Online

    timtower Administrator Administrator Moderator

    @Mornov Because it is a method for ItemMeta
     
Thread Status:
Not open for further replies.

Share This Page