1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

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

Тема в разделе "Разработка плагинов для новичков", создана пользователем reZero, 4 июл 2018.

Статус темы:
Закрыта.
  1. Автор темы
    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))
            {
     
  2. HunterGaming

    HunterGaming Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    sqdFendy
    сравнивай через ==
     
  3. Автор темы
    reZero

    reZero Активный участник Пользователь

    Баллы:
    76
    Думаешь в этом проблема? Или это так, к слову?
     
  4. Автор темы
    reZero

    reZero Активный участник Пользователь

    Баллы:
    76
    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 byjava.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
     
  5. Автор темы
    reZero

    reZero Активный участник Пользователь

    Баллы:
    76
    Чуваки, хелпуйте, срочно надо
     
  6. HunterGaming

    HunterGaming Активный участник Пользователь

    Баллы:
    96
    Имя в Minecraft:
    sqdFendy
    Caused by: java.lang.NullPointerException
    at ru.ReZero.HD.Events.onHack.onClick(onHack.java:90) ~[?:?]

    Кинь сюда 90 строку из класса onHack, метода onClick
     
  7. Автор темы
    reZero

    reZero Активный участник Пользователь

    Баллы:
    76
    PHP:
            if(eqp == EquipmentSlot.HAND && e.getAction() == Action.RIGHT_CLICK_BLOCK)
     
  8. Scraplls

    Scraplls Активный участник

    Баллы:
    61
    Поставь проверку на действие вначале, ведь если в ивенте будет действие Action.PHYSICAL, то eqp будет null
     
  9. Автор темы
    reZero

    reZero Активный участник Пользователь

    Баллы:
    76
    А это тогда что по твоему?
    PHP:
            if(eqp == EquipmentSlot.HAND && e.getAction() == Action.RIGHT_CLICK_BLOCK)
     
  10. Scraplls

    Scraplls Активный участник

    Баллы:
    61
    У тебя e.getHand() передаёт null, если игрок будет на плитку вставать и т. д., а ивент все равно вызовется. Поставь перед e.getHand() проверку на действие
     
  11. Автор темы
    reZero

    reZero Активный участник Пользователь

    Баллы:
    76
    сделал так, это правильно?
    Код:
    Player p = e.getPlayer();
            if(e.getAction() == Action.RIGHT_CLICK_BLOCK && e.getAction() != Action.PHYSICAL)
            {
              EquipmentSlot eqp = e.getHand();
            if(eqp == EquipmentSlot.HAND)
            {
     
  12. Scraplls

    Scraplls Активный участник

    Баллы:
    61
    Да, но вот это не обязательно: && e.getAction() != Action.PHYSICAL, если тебе нужна проверка только на right-click
     
  13. Автор темы
    reZero

    reZero Активный участник Пользователь

    Баллы:
    76
    окей, спасибо.

    Тему пока закрою, если ошибка появится снова - отпишу сюда
     
Статус темы:
Закрыта.

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