Why doesn't this code work?

Discussion in 'Plugin Development' started by KenikF, May 30, 2023.

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

    KenikF

    I want to write a plugin to break a totem with a certain name sound: for example, totem A1 makes a sound A, totem with the name B1 makes a sound B, but my plugin does not work!

    Code:
    public final class TotemSoundPlugin extends JavaPlugin implements Listener {
    
        @Override
        public void onEnable() {
            Bukkit.getPluginManager().registerEvents(this, this);
        }
    
        @EventHandler
        public void totemBreak(EntityResurrectEvent event) {
            if (!event.isCancelled()) {
                Player p = (Player) event.getEntity();
                ItemStack totemMain = p.getInventory().getItemInMainHand();
                ItemStack totemOff = p.getInventory().getItemInOffHand();
    
                Material totemMaterial = Material.TOTEM;
    
                if (totemMain.getType() == totemMaterial) {
                    ItemMeta mainMeta = totemMain.getItemMeta();
                    if (mainMeta != null && mainMeta.hasDisplayName()) {
                        String totemName = mainMeta.getDisplayName();
                        if (totemName.equalsIgnoreCase("totmen")) {
                            event.setCancelled(true);
                            p.getWorld().playSound(p.getLocation(), "totmen", 1.0F, 1.0F);
                            p.sendMessage("Totmen worked.");
                        }
                    }
                } else if (totemOff.getType() == totemMaterial) {
                    ItemMeta offMeta = totemOff.getItemMeta();
                    if (offMeta != null && offMeta.hasDisplayName()) {
                        String totemName = offMeta.getDisplayName();
                        if (totemName.equalsIgnoreCase("totmen")) {
                            event.setCancelled(true);
                            p.getWorld().playSound(p.getLocation(), "totmen", 1.0F, 1.0F);
                            p.sendMessage("Totmen worked.!");
                        }
                    }
                }
            }
        }
    }
    
    Version: 1.19.2, console log:
    Code:
    [09:27:21 ERROR]: Could not pass event EntityResurrectEvent to TotemSoundPlugin v1.0
    java.lang.NoSuchFieldError: TOTEM
    at org.kenikf.totemsoundplugin.TotemSoundPlugin.totemBreak(TotemSoundPlugin.java:30) ~[TotemSoundPlugin.jar:?]
    at com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor1.execute(Unknown Source) ~[?:?]
    at org.bukkit.plugin.EventExecutor$2.execute(EventExecutor.java:77) ~[paper-api-1.19.2-R0.1-SNAPSHOT.jar:?]
    at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:80) ~[paper-api-1.19.2-R0.1-SNAPSHOT.jar:git-Paper-307]
    at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[paper-api-1.19.2-R0.1-SNAPSHOT.jar:?]
    at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:670) ~[paper-api-1.19.2-R0.1-SNAPSHOT.jar:?]
    at net.minecraft.world.entity.LivingEntity.checkTotemDeathProtection(LivingEntity.java:1553) ~[?:?]
    at net.minecraft.world.entity.LivingEntity.hurt(LivingEntity.java:1485) ~[?:?]
    at net.minecraft.world.entity.player.Player.hurt(Player.java:982) ~[?:?]
    at net.minecraft.server.level.ServerPlayer.hurt(ServerPlayer.java:1051) ~[?:?]
    at net.minecraft.world.entity.LivingEntity.causeFallDamage(LivingEntity.java:1967) ~[?:?]
    at net.minecraft.world.entity.player.Player.causeFallDamage(Player.java:1786) ~[?:?]
    at net.minecraft.world.level.block.Block.fallOn(Block.java:462) ~[paper-1.19.2.jar:git-Paper-307]
    at net.minecraft.world.entity.Entity.checkFallDamage(Entity.java:1621) ~[paper-1.19.2.jar:git-Paper-307]
    at net.minecraft.world.entity.LivingEntity.checkFallDamage(LivingEntity.java:372) ~[?:?]
    at net.minecraft.server.level.ServerPlayer.doCheckFallDamage(ServerPlayer.java:1489) ~[?:?]
    at net.minecraft.server.network.ServerGamePacketListenerImpl.handleMovePlayer(ServerGamePacketListenerImpl.java:1634) ~[?:?]
    at net.minecraft.network.protocol.game.ServerboundMovePlayerPacket.handle(ServerboundMovePlayerPacket.java:29) ~[?:?]
    at net.minecraft.network.protocol.game.ServerboundMovePlayerPacket$Pos.handle(ServerboundMovePlayerPacket.java:66) ~[?:?]
    at net.minecraft.network.protocol.PacketUtils.lambda$ensureRunningOnSameThread$1(PacketUtils.java:51) ~[?:?]
    at net.minecraft.server.TickTask.run(TickTask.java:18) ~[paper-1.19.2.jar:git-Paper-307]
    at net.minecraft.util.thread.BlockableEventLoop.doRunTask(BlockableEventLoop.java:153) ~[?:?]
    at net.minecraft.util.thread.ReentrantBlockableEventLoop.doRunTask(ReentrantBlockableEventLoop.java:24) ~[?:?]
    at net.minecraft.server.MinecraftServer.doRunTask(MinecraftServer.java:1341) ~[paper-1.19.2.jar:git-Paper-307]
    at net.minecraft.server.MinecraftServer.d(MinecraftServer.java:185) ~[paper-1.19.2.jar:git-Paper-307]
    at net.minecraft.util.thread.BlockableEventLoop.pollTask(BlockableEventLoop.java:126) ~[?:?]
    at net.minecraft.server.MinecraftServer.pollTaskInternal(MinecraftServer.java:1318) ~[paper-1.19.2.jar:git-Paper-307]
    at net.minecraft.server.MinecraftServer.pollTask(MinecraftServer.java:1311) ~[paper-1.19.2.jar:git-Paper-307]
    at net.minecraft.util.thread.BlockableEventLoop.runAllTasks(BlockableEventLoop.java:114) ~[?:?]
    at net.minecraft.server.MinecraftServer.tickServer(MinecraftServer.java:1445) ~[paper-1.19.2.jar:git-Paper-307]
    at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1173) ~[paper-1.19.2.jar:git-Paper-307]
    at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:305) ~[paper-1.19.2.jar:git-Paper-307]
    at java.lang.Thread.run(Thread.java:1589) ~[?:?]
     
    Last edited by a moderator: May 30, 2023
Thread Status:
Not open for further replies.

Share This Page