Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

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

Тема в разделе "Разработка плагинов для новичков", создана пользователем BeYkeR, 2 апр 2013.

  1. Автор темы
    BeYkeR

    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

    Как исправить эту ошибку ?
     
  2. Хостинг MineCraft
    <
  3. AvengeRkaa

    AvengeRkaa Старожил

    Баллы:
    123
    Имя в Minecraft:
    AvengeRkaa
    Думаю, все будет понятно.
     
  4. Den_Abr

    Den_Abr Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Из мухи слона коровы игрока делаешь.
    При взаимодействии проверяй, игрок ли сущность
     
    fromgate нравится это.
  5. Автор темы
    BeYkeR

    BeYkeR Старожил Девелопер Пользователь

    Баллы:
    173
    Вроде проверку делаю, все равно ошибки выкидывает
     
  6. Den_Abr

    Den_Abr Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Показывай код тогда
     
    ВремяПриключений нравится это.
  7. Автор темы
    BeYkeR

    BeYkeR Старожил Девелопер Пользователь

    Баллы:
    173
    Вот , один из аптечек(Когда делаю под один, работает только одна аптечка)
    Код:
        @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();
                }
            }
     
  8. Den_Abr

    Den_Abr Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Если не надо лечить живность, то после объявления переменной entity попробуй добавить
    if(!(entity instanceof Player)) return;

    И вообще, форматируй код(CTRL+SHIFT+F), читать же неудобно =\
     
    BeYkeR нравится это.
  9. VaNnOrus

    VaNnOrus Старожил Пользователь

    Баллы:
    123
    Зачем двойные скобки?
    А тут скобок как раз не хватает. Получается все выражение до hasPermission складывается, а потом или isOp. Надо сделать " && (hasPermission || isOp) "
    А вообще проверку на опа можно не делать, в plugin.yml достаточно выставить по дефолту заданное право для опов.
     

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