Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

Помогите Ошибки в консоле связанное с PlayerInteractEntityEvent

BeYkeR

Старожил
Девелопер
Пользователь
Баллы
173
Сегодня обновлял свой плагин SimpleMedicineChest и вот произлошло во время тестов:
2013-04-02 19:51:13 [SEVERE] Could not pass event PlayerInteractEntityEvent to SimpleMedicineChest v1.0.2
org.bukkit.event.EventException
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:427)
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62)
at org.bukkit.plugin.TimedRegisteredListener.callEvent(TimedRegisteredListener.java:26)
at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:479)
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:464)
at net.minecraft.server.v1_4_R1.PlayerConnection.a(PlayerConnection.java:1113)
at net.minecraft.server.v1_4_R1.Packet7UseEntity.handle(SourceFile:36)
at org.spigotmc.netty.NettyNetworkManager.b(NettyNetworkManager.java:174)
at net.minecraft.server.v1_4_R1.PlayerConnection.d(PlayerConnection.java:113)
at net.minecraft.server.v1_4_R1.ServerConnection.b(SourceFile:39)
at org.spigotmc.netty.NettyServerConnection.b(NettyServerConnection.java:67)
at net.minecraft.server.v1_4_R1.MinecraftServer.r(MinecraftServer.java:600)
at net.minecraft.server.v1_4_R1.DedicatedServer.r(DedicatedServer.java:228)
at net.minecraft.server.v1_4_R1.MinecraftServer.q(MinecraftServer.java:489)
at net.minecraft.server.v1_4_R1.MinecraftServer.run(MinecraftServer.java:421)
at net.minecraft.server.v1_4_R1.ThreadServerApplication.run(SourceFile:849)
Caused by: java.lang.ClassCastException: org.bukkit.craftbukkit.v1_4_R1.entity.CraftMushroomCow cannot be cast to org.bukkit.entity.Player
at ykt.BeYkeRYkt.SimpleMedicineChest.KitsListener.onPlayerInteractBIG(KitsListener.java:171)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:425)
... 15 more
2013-04-02 19:51:13 [SEVERE] Could not pass event PlayerInteractEntityEvent to SimpleMedicineChest v1.0.2
org.bukkit.event.EventException
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:427)
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62)
at org.bukkit.plugin.TimedRegisteredListener.callEvent(TimedRegisteredListener.java:26)
at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:479)
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:464)
at net.minecraft.server.v1_4_R1.PlayerConnection.a(PlayerConnection.java:1113)
at net.minecraft.server.v1_4_R1.Packet7UseEntity.handle(SourceFile:36)
at org.spigotmc.netty.NettyNetworkManager.b(NettyNetworkManager.java:174)
at net.minecraft.server.v1_4_R1.PlayerConnection.d(PlayerConnection.java:113)
at net.minecraft.server.v1_4_R1.ServerConnection.b(SourceFile:39)
at org.spigotmc.netty.NettyServerConnection.b(NettyServerConnection.java:67)
at net.minecraft.server.v1_4_R1.MinecraftServer.r(MinecraftServer.java:600)
at net.minecraft.server.v1_4_R1.DedicatedServer.r(DedicatedServer.java:228)
at net.minecraft.server.v1_4_R1.MinecraftServer.q(MinecraftServer.java:489)
at net.minecraft.server.v1_4_R1.MinecraftServer.run(MinecraftServer.java:421)
at net.minecraft.server.v1_4_R1.ThreadServerApplication.run(SourceFile:849)
Caused by: java.lang.ClassCastException: org.bukkit.craftbukkit.v1_4_R1.entity.CraftMushroomCow cannot be cast to org.bukkit.entity.Player
at ykt.BeYkeRYkt.SimpleMedicineChest.KitsListener.onPlayerInteractNORMAL(KitsListener.java:143)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:425)
... 15 more
2013-04-02 19:51:13 [SEVERE] Could not pass event PlayerInteractEntityEvent to SimpleMedicineChest v1.0.2
org.bukkit.event.EventException
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:427)
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62)
at org.bukkit.plugin.TimedRegisteredListener.callEvent(TimedRegisteredListener.java:26)
at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:479)
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:464)
at net.minecraft.server.v1_4_R1.PlayerConnection.a(PlayerConnection.java:1113)
at net.minecraft.server.v1_4_R1.Packet7UseEntity.handle(SourceFile:36)
at org.spigotmc.netty.NettyNetworkManager.b(NettyNetworkManager.java:174)
at net.minecraft.server.v1_4_R1.PlayerConnection.d(PlayerConnection.java:113)
at net.minecraft.server.v1_4_R1.ServerConnection.b(SourceFile:39)
at org.spigotmc.netty.NettyServerConnection.b(NettyServerConnection.java:67)
at net.minecraft.server.v1_4_R1.MinecraftServer.r(MinecraftServer.java:600)
at net.minecraft.server.v1_4_R1.DedicatedServer.r(DedicatedServer.java:228)
at net.minecraft.server.v1_4_R1.MinecraftServer.q(MinecraftServer.java:489)
at net.minecraft.server.v1_4_R1.MinecraftServer.run(MinecraftServer.java:421)
at net.minecraft.server.v1_4_R1.ThreadServerApplication.run(SourceFile:849)
Caused by: java.lang.ClassCastException: org.bukkit.craftbukkit.v1_4_R1.entity.CraftMushroomCow cannot be cast to org.bukkit.entity.Player
at ykt.BeYkeRYkt.SimpleMedicineChest.KitsListener.onPlayerInteractSmall(KitsListener.java:115)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:425)
... 15 more

Как исправить эту ошибку ?
 
Из мухи слона коровы игрока делаешь.
При взаимодействии проверяй, игрок ли сущность
 
Вроде проверку делаю, все равно ошибки выкидывает
 
Показывай код тогда
Вот , один из аптечек(Когда делаю под один, работает только одна аптечка)
Java:
    @EventHandler(priority = EventPriority.LOWEST)
        public void onPlayerInteractSmall(PlayerInteractEntityEvent event)
        {
          Player player = event.getPlayer();
          Entity entity = event.getRightClicked();
          Player t = (Player) entity;
          ItemStack item = player.getInventory().getItemInHand();
          if (event.isCancelled()) return;
          if (item==null) return;
              if (item.getType() != Material.getMaterial(plugin.getConfig().getInt("smallkit"))) return;
            event.setCancelled(true);
          if (((entity instanceof Player)) &&
            (player.getItemInHand().getTypeId() == Material.getMaterial(plugin.getConfig().getInt("smallkit")).getId()) &&
            (player.hasPermission("SMC.use.others")) || (player.isOp()))
            if (t.getHealth() > 15) {
              t.setHealth(20);
            } else {
              t.setHealth(t.getHealth() + plugin.getConfig().getInt("smallhealth"));
              t.getWorld().playEffect(t.getLocation(), Effect.POTION_BREAK, 4);
              t.sendMessage(ChatColor.YELLOW + "[SimpleMedicineChest]" + plugin.getConfig().getString("other-heal-you"));
              player.sendMessage(ChatColor.GREEN + "[SimpleMedicineChest]" + plugin.getConfig().getString("you-heal-other"));
                if(item.getAmount() == 1){
                    player.getInventory().remove(item);
                }else item.setAmount(item.getAmount() - 1);
              player.updateInventory();
            }
        }
 
Если не надо лечить живность, то после объявления переменной entity попробуй добавить
if(!(entity instanceof Player)) return;

И вообще, форматируй код(CTRL+SHIFT+F), читать же неудобно =\
 
( (entity instanceof Player) )
Зачем двойные скобки?
( player.hasPermission("SMC.use.others") ) || ( player.isOp() )
А тут скобок как раз не хватает. Получается все выражение до hasPermission складывается, а потом или isOp. Надо сделать " && (hasPermission || isOp) "
А вообще проверку на опа можно не делать, в plugin.yml достаточно выставить по дефолту заданное право для опов.
 

Поделиться этой страницей

Назад
Верх