Помогите Ошибка при проверке equipment slot

  • Автор темы Автор темы reZero
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

reZero

Активный участник
Пользователь
Баллы
76
Выбивает npe когда на этой строке
if(eqp.equals(EquipmentSlot.HAND) && e.getAction().equals(Action.RIGHT_CLICK_BLOCK))
Помогите плиз
PHP:
@EventHandler
    public void onClick(PlayerInteractEvent e)
    {
        Player p = e.getPlayer();
        Block clicked = e.getClickedBlock();
        EquipmentSlot eqp = e.getHand();
        if(eqp.equals(EquipmentSlot.HAND) && e.getAction().equals(Action.RIGHT_CLICK_BLOCK))
        {
 
Выбивает npe когда на этой строке
if(eqp.equals(EquipmentSlot.HAND) && e.getAction().equals(Action.RIGHT_CLICK_BLOCK))
Помогите плиз
PHP:
@EventHandler
    public void onClick(PlayerInteractEvent e)
    {
        Player p = e.getPlayer();
        Block clicked = e.getClickedBlock();
        EquipmentSlot eqp = e.getHand();
        if(eqp.equals(EquipmentSlot.HAND) && e.getAction().equals(Action.RIGHT_CLICK_BLOCK))
        {
сравнивай через ==
 
PHP:
[2K [18:13:28 ERROR]: Could not pass event PlayerInteractEvent to hackDoor v1.0
org.bukkit.event.EventException
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[spigot-1.11.2.jar:git-Spigot-3fb9445-6e3cec8]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot-1.11.2.jar:git-Spigot-3fb9445-6e3cec8]
at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [spigot-1.11.2.jar:git-Spigot-3fb9445-6e3cec8]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487) [spigot-1.11.2.jar:git-Spigot-3fb9445-6e3cec8]
at org.bukkit.craftbukkit.v1_11_R1.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:234) [spigot-1.11.2.jar:git-Spigot-3fb9445-6e3cec8]
at org.bukkit.craftbukkit.v1_11_R1.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:201) [spigot-1.11.2.jar:git-Spigot-3fb9445-6e3cec8]
at net.minecraft.server.v1_11_R1.BlockPressurePlateWeighted.e(BlockPressurePlateWeighted.java:32) [spigot-1.11.2.jar:git-Spigot-3fb9445-6e3cec8]
at net.minecraft.server.v1_11_R1.BlockPressurePlateAbstract.a(BlockPressurePlateAbstract.java:96) [spigot-1.11.2.jar:git-Spigot-3fb9445-6e3cec8]
at net.minecraft.server.v1_11_R1.BlockPressurePlateAbstract.a(BlockPressurePlateAbstract.java:89) [spigot-1.11.2.jar:git-Spigot-3fb9445-6e3cec8]
at net.minecraft.server.v1_11_R1.Entity.checkBlockCollisions(Entity.java:951) [spigot-1.11.2.jar:git-Spigot-3fb9445-6e3cec8]
at net.minecraft.server.v1_11_R1.Entity.move(Entity.java:534) [spigot-1.11.2.jar:git-Spigot-3fb9445-6e3cec8]
at net.minecraft.server.v1_11_R1.PlayerConnection.a(PlayerConnection.java:550) [spigot-1.11.2.jar:git-Spigot-3fb9445-6e3cec8]
at net.minecraft.server.v1_11_R1.PacketPlayInFlying.a(SourceFile:126) [spigot-1.11.2.jar:git-Spigot-3fb9445-6e3cec8]
at net.minecraft.server.v1_11_R1.PacketPlayInFlying$PacketPlayInPositionLook.a(SourceFile:18) [spigot-1.11.2.jar:git-Spigot-3fb9445-6e3cec8]
at net.minecraft.server.v1_11_R1.PlayerConnectionUtils$1.run(SourceFile:13) [spigot-1.11.2.jar:git-Spigot-3fb9445-6e3cec8]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_161]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_161]
at net.minecraft.server.v1_11_R1.SystemUtils.a(SourceFile:46) [spigot-1.11.2.jar:git-Spigot-3fb9445-6e3cec8]
at net.minecraft.server.v1_11_R1.MinecraftServer.D(MinecraftServer.java:747) [spigot-1.11.2.jar:git-Spigot-3fb9445-6e3cec8]
at net.minecraft.server.v1_11_R1.DedicatedServer.D(DedicatedServer.java:399) [spigot-1.11.2.jar:git-Spigot-3fb9445-6e3cec8]
at net.minecraft.server.v1_11_R1.MinecraftServer.C(MinecraftServer.java:678) [spigot-1.11.2.jar:git-Spigot-3fb9445-6e3cec8]
at net.minecraft.server.v1_11_R1.MinecraftServer.run(MinecraftServer.java:576) [spigot-1.11.2.jar:git-Spigot-3fb9445-6e3cec8]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_161]
Caused by: java.lang.NullPointerException
at ru.ReZero.HD.Events.onHack.onClick(onHack.java:90) ~[?:?]
at sun.reflect.GeneratedMethodAccessor272.invoke(Unknown Source) ~[?:?]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_161]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_161]
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:302) ~[spigot-1.11.2.jar:git-Spigot-3fb9445-6e3cec8]
 
Caused by: java.lang.NullPointerException
at ru.ReZero.HD.Events.onHack.onClick(onHack.java:90) ~[?:?]

Кинь сюда 90 строку из класса onHack, метода onClick
 
Поставь проверку на действие вначале, ведь если в ивенте будет действие Action.PHYSICAL, то eqp будет null
 
У тебя e.getHand() передаёт null, если игрок будет на плитку вставать и т. д., а ивент все равно вызовется. Поставь перед e.getHand() проверку на действие
 
сделал так, это правильно?
Код:
Player p = e.getPlayer();
        if(e.getAction() == Action.RIGHT_CLICK_BLOCK && e.getAction() != Action.PHYSICAL)
        {
          EquipmentSlot eqp = e.getHand();
        if(eqp == EquipmentSlot.HAND)
        {
 
Да, но вот это не обязательно: && e.getAction() != Action.PHYSICAL, если тебе нужна проверка только на right-click
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх