Войти или зарегистрироваться

Помогите При получении предмета из руки возникает ошибка - NullPointerExeption

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

Aviloo

Активный участник
Пользователь
Баллы
61
Имя в Minecraft
Aviloo
Всем привет . У меня возникла проблема . Мне нужно получить предмет из руки игрока , но постоянно возникает ошибка - NullPointerExeption . Хотя я держу этот предмет в руках и почему он возвращает null , ума не приложу Вот фрагмент кода:
Код:
public class BookSecond implements Listener {
    private static final ConcurrentHashMap<UUID, Integer> BookSecondHash = new ConcurrentHashMap<>();
    public static int addValue(UUID uuid, Integer value){
        BookSecondHash.put(uuid, BookSecondHash.getOrDefault(uuid, 0) + value);
        return value;
    }
    public static int getValue(UUID uuid){
        return BookSecondHash.getOrDefault(uuid, 0);

    }


    @EventHandler
    public void useBook(PlayerInteractEvent e){
        
        Player p = e.getPlayer();
        UUID uuid = p.getUniqueId();
        ItemStack usageItem = p.getInventory().getItemInMainHand();
        if( Objects.requireNonNull(usageItem.getItemMeta()).hasEnchant(Enchantment.PROTECTION_FALL) ){
            if(e.getAction() == Action.RIGHT_CLICK_BLOCK || e.getAction() == Action.RIGHT_CLICK_AIR){
                if(getValue(uuid) != 1) {
                    p.getInventory().removeItem(usageItem);
                    p.sendMessage(ChatColor.YELLOW + "Вы изучили " + ChatColor.YELLOW + usageItem.getItemMeta().getDisplayName());
                    Integer IntValue = 1;
                    addValue(uuid, IntValue);

                }
                if(getValue(uuid) == 1){
                    p.sendMessage("Вы уже изучили !");
                }
            }
        }
        if(usageItem.getItemMeta() == null){
            return;
        }
    }
}

Вот возникающая ошибка :
Код:
[19:58:11 ERROR]: Could not pass event PlayerInteractEvent to crafts v1.0
java.lang.NullPointerException: null
        at java.util.Objects.requireNonNull(Objects.java:208) ~[?:?]
        at hi.aviloo.сrafts.permissonBook.BookFirst.useBook(BookFirst.java:38) ~[crafts-1.0.jar:?]
        at com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor35.execute(Unknown Source) ~[?:?]
        at org.bukkit.plugin.EventExecutor.lambda$create$1(EventExecutor.java:75) ~[pufferfish-api-1.19-R0.1-SNAPSHOT.jar:?]
        at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:76) ~[pufferfish-api-1.19-R0.1-SNAPSHOT.jar:git-Pufferfish-5]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[pufferfish-api-1.19-R0.1-SNAPSHOT.jar:?]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:666) ~[pufferfish-api-1.19-R0.1-SNAPSHOT.jar:?]
        at org.bukkit.craftbukkit.v1_19_R1.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:544) ~[pufferfish-1.19.jar:git-Pufferfish-5]
        at net.minecraft.server.level.ServerPlayerGameMode.useItemOn(ServerPlayerGameMode.java:527) ~[?:?]
        at net.minecraft.server.network.ServerGamePacketListenerImpl.handleUseItemOn(ServerGamePacketListenerImpl.java:1873) ~[?:?]
        at net.minecraft.network.protocol.game.ServerboundUseItemOnPacket.handle(ServerboundUseItemOnPacket.java:37) ~[?:?]
        at net.minecraft.network.protocol.game.ServerboundUseItemOnPacket.a(ServerboundUseItemOnPacket.java:9) ~[?:?]
        at net.minecraft.network.protocol.PacketUtils.lambda$ensureRunningOnSameThread$1(PacketUtils.java:51) ~[?:?]
        at net.minecraft.server.TickTask.run(TickTask.java:18) ~[pufferfish-1.19.jar:git-Pufferfish-5]
        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:1360) ~[pufferfish-1.19.jar:git-Pufferfish-5]
        at net.minecraft.server.MinecraftServer.d(MinecraftServer.java:183) ~[pufferfish-1.19.jar:git-Pufferfish-5]
        at net.minecraft.util.thread.BlockableEventLoop.pollTask(BlockableEventLoop.java:126) ~[?:?]
        at net.minecraft.server.MinecraftServer.pollTaskInternal(MinecraftServer.java:1337) ~[pufferfish-1.19.jar:git-Pufferfish-5]
        at net.minecraft.server.MinecraftServer.pollTask(MinecraftServer.java:1330) ~[pufferfish-1.19.jar:git-Pufferfish-5]
        at net.minecraft.util.thread.BlockableEventLoop.managedBlock(BlockableEventLoop.java:136) ~[?:?]
        at net.minecraft.server.MinecraftServer.tickServer(MinecraftServer.java:1408) ~[pufferfish-1.19.jar:git-Pufferfish-5]
        at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1189) ~[pufferfish-1.19.jar:git-Pufferfish-5]
        at net.minecraft.server.MinecraftServer.lambda$spin$1(MinecraftServer.java:304) ~[pufferfish-1.19.jar:git-Pufferfish-5]
        at java.lang.Thread.run(Thread.java:833) ~[?:?]



Прошу вашей помощи .Заранее ,спасибо.
 
1)прикладывай строку, на которую указывает трейс, никто не будет копаться в твоём коде
2)requireNonNull бросает npe, если ему дали null. Проверяй, является ли мета нуллом, или обрабатывай исключение
 
Судя по стеку, ошибка происходит в методе Objects.requireNonNull()
В своём коде ты этот метод используешь только один раз:
Objects.requireNonNull(usageItem.getItemMeta())

Сам метод Objects.requireNonNull вылядит так:
upload_2022-7-28_22-49-40.png

Выходит, что usageItem.getItemMeta() == null.
Собственно, при работе твоего кода необходимо убедиться, что мета не нулл.
Зачем ты в данном случае использовал Objects.requireNonNull() - я не знаю
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх