Помогите Не сравнивается название

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

Kurumi

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
Kurumi
При клике игрока на блок или воздух, мне нужно проверить, есть ли у него в руке предмет из конфига, и если есть, то проверить название. Когда пытаюсь сравнить название предмета с тем что в конфиге, выбивает null pointer exception. Ругается на строку с проверкой имени предмета.
PHP:
ItemStack ItemPhone = new ItemStack(Material.getMaterial(main.getConfig().getString("settings.Item")));
        if(e.getAction().equals(Action.RIGHT_CLICK_AIR) || e.getAction().equals(Action.RIGHT_CLICK_BLOCK))
        {
            if(e.getPlayer().getItemInHand().getItemMeta().getDisplayName().equalsIgnoreCase("Железный слиток"))
            {
            if (e.getPlayer().getItemInHand().getType() == Material.getMaterial(main.getConfig().getString("settings.Item")))
            {
                DialGUI.openSmartphoneScreen(e.getPlayer());
                DialGUI.activated = true;  
            }
            }
        }
 
При клике игрока на блок или воздух, мне нужно проверить, есть ли у него в руке предмет из конфига, и если есть, то проверить название. Когда пытаюсь сравнить название предмета с тем что в конфиге, выбивает null pointer exception. Ругается на строку с проверкой имени предмета.
PHP:
ItemStack ItemPhone = new ItemStack(Material.getMaterial(main.getConfig().getString("settings.Item")));
        if(e.getAction().equals(Action.RIGHT_CLICK_AIR) || e.getAction().equals(Action.RIGHT_CLICK_BLOCK))
        {
            if(e.getPlayer().getItemInHand().getItemMeta().getDisplayName().equalsIgnoreCase("Железный слиток"))
            {
            if (e.getPlayer().getItemInHand().getType() == Material.getMaterial(main.getConfig().getString("settings.Item")))
            {
                DialGUI.openSmartphoneScreen(e.getPlayer());
                DialGUI.activated = true; 
            }
            }
        }
А если у игрока клиент на английском 🙂 ?
 
PHP:
[00:12:04] [Server thread/ERROR]: Could not pass event PlayerInteractEvent to Dial v2.1
org.bukkit.event.EventException
    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
    at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
    at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
    at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487) [spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
    at org.bukkit.craftbukkit.v1_11_R1.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:234) [spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
    at net.minecraft.server.v1_11_R1.PlayerInteractManager.a(PlayerInteractManager.java:448) [spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
    at net.minecraft.server.v1_11_R1.PlayerConnection.a(PlayerConnection.java:913) [spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
    at net.minecraft.server.v1_11_R1.PacketPlayInUseItem.a(PacketPlayInUseItem.java:37) [spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
    at net.minecraft.server.v1_11_R1.PacketPlayInUseItem.a(PacketPlayInUseItem.java:1) [spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
    at net.minecraft.server.v1_11_R1.PlayerConnectionUtils$1.run(SourceFile:13) [spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_161]
    at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_161]
    at net.minecraft.server.v1_11_R1.SystemUtils.a(SourceFile:46) [spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
    at net.minecraft.server.v1_11_R1.MinecraftServer.D(MinecraftServer.java:747) [spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
    at net.minecraft.server.v1_11_R1.DedicatedServer.D(DedicatedServer.java:399) [spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
    at net.minecraft.server.v1_11_R1.MinecraftServer.C(MinecraftServer.java:678) [spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
    at net.minecraft.server.v1_11_R1.MinecraftServer.run(MinecraftServer.java:576) [spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_161]
Caused by: java.lang.NullPointerException
    at me.pvpdog.dial.Utils.getColor(Utils.java:11) ~[?:?]
    at me.pvpdog.dial.BuyPhone.interactEvent(BuyPhone.java:38) ~[?:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_161]
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_161]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_161]
    at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_161]
    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:302) ~[spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
    ... 17 more
[00:13:39] [Server thread/INFO]: CONSOLE: [0;31;1mPlease note that this command is not supported and may cause issues when using some plugins.[m
PHP:
messages:
  prefix: '&9&l[&a&lТелефон&9&l] &7&l> '
  already: '&4У вас уже есть телефон!'
  buyPhone: '&aВы купили телефон! Теперь вы современный'
  notMoney: '&4У вас недостаточно денег!'
CallFormat:
  to: '&a&l[Вы] (&c&l%number%&7&l/&c&l%player%&a&l) &7&l > &9&l%msg%'
  from: '&a&l[Вам] (&c&l%number%&7&l/&c&l%player%&a&l) &7&l > &9&l%msg%'
settings:
  Item: IRON_INGOT
  PhoneName: '&9&lТелефон игрока &c&l%player%'
  pricePhone: 250
signFormat:
  FirstLine: test
  TwoLine: test
  ThreeLine: test
  FourLine: test
Main класс большой. Могу скинуть еще раз код с ивентом....
PHP:
    @EventHandler
    public void interactEvent(PlayerInteractEvent e)
    {
        ItemStack ItemPhone = new ItemStack(Material.getMaterial(main.getConfig().getString("settings.Item")));
        if(e.getAction().equals(Action.RIGHT_CLICK_AIR) || e.getAction().equals(Action.RIGHT_CLICK_BLOCK))
        {
            ItemStack hand = e.getPlayer().getItemInHand();
            ItemMeta meta = hand.getItemMeta();
            if (hand.getType() == Material.getMaterial(main.getConfig().getString("settings.Item")) && meta.getDisplayName().equalsIgnoreCase("Железный слиток"))
            {
                if(main.hasNumber(e.getPlayer()))
                {
                    DialGUI.openSmartphoneScreen(e.getPlayer());
                    DialGUI.activated = true;
                }
                else
                {
                    e.getPlayer().sendMessage(Utils.getColor("&cСначала нужно настроить свой телефон!"));
                }
            }
        }
 
Последнее редактирование:
Проблема в классе Utils в методе getColor, же.
старый лог, не заметил, сорян.
Код:
thread/ERROR]: Could not pass event PlayerInteractEvent to Dial v2.1
org.bukkit.event.EventException
    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
    at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
    at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
    at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487) [spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
    at org.bukkit.craftbukkit.v1_11_R1.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:234) [spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
    at net.minecraft.server.v1_11_R1.PlayerInteractManager.a(PlayerInteractManager.java:448) [spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
    at net.minecraft.server.v1_11_R1.PlayerConnection.a(PlayerConnection.java:913) [spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
    at net.minecraft.server.v1_11_R1.PacketPlayInUseItem.a(PacketPlayInUseItem.java:37) [spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
    at net.minecraft.server.v1_11_R1.PacketPlayInUseItem.a(PacketPlayInUseItem.java:1) [spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
    at net.minecraft.server.v1_11_R1.PlayerConnectionUtils$1.run(SourceFile:13) [spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_161]
    at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_161]
    at net.minecraft.server.v1_11_R1.SystemUtils.a(SourceFile:46) [spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
    at net.minecraft.server.v1_11_R1.MinecraftServer.D(MinecraftServer.java:747) [spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
    at net.minecraft.server.v1_11_R1.DedicatedServer.D(DedicatedServer.java:399) [spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
    at net.minecraft.server.v1_11_R1.MinecraftServer.C(MinecraftServer.java:678) [spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
    at net.minecraft.server.v1_11_R1.MinecraftServer.run(MinecraftServer.java:576) [spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_161]
Caused by: java.lang.NullPointerException
    at me.pvpdog.dial.BuyPhone.interactEvent(BuyPhone.java:38) ~[?:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_161]
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_161]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_161]
    at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_161]
    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:302) ~[spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
    ... 17 more
[02:27:45] [Server thread/ERROR]: Could not pass event PlayerInteractEvent to Dial v2.1
org.bukkit.event.EventException
    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
    at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
    at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
    at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487) [spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
    at org.bukkit.craftbukkit.v1_11_R1.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:234) [spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
    at org.bukkit.craftbukkit.v1_11_R1.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:201) [spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
    at org.bukkit.craftbukkit.v1_11_R1.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:197) [spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
    at net.minecraft.server.v1_11_R1.PlayerConnection.a(PlayerConnection.java:951) [spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
    at net.minecraft.server.v1_11_R1.PacketPlayInBlockPlace.a(PacketPlayInBlockPlace.java:26) [spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
    at net.minecraft.server.v1_11_R1.PacketPlayInBlockPlace.a(PacketPlayInBlockPlace.java:1) [spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
    at net.minecraft.server.v1_11_R1.PlayerConnectionUtils$1.run(SourceFile:13) [spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_161]
    at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_161]
    at net.minecraft.server.v1_11_R1.SystemUtils.a(SourceFile:46) [spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
    at net.minecraft.server.v1_11_R1.MinecraftServer.D(MinecraftServer.java:747) [spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
    at net.minecraft.server.v1_11_R1.DedicatedServer.D(DedicatedServer.java:399) [spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
    at net.minecraft.server.v1_11_R1.MinecraftServer.C(MinecraftServer.java:678) [spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
    at net.minecraft.server.v1_11_R1.MinecraftServer.run(MinecraftServer.java:576) [spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_161]
Caused by: java.lang.NullPointerException
    at me.pvpdog.dial.BuyPhone.interactEvent(BuyPhone.java:38) ~[?:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_161]
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_161]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_161]
    at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_161]
    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:302) ~[spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
    ... 18 more
[02:27:45] [Server thread/ERROR]: Could not pass event PlayerInteractEvent to Dial v2.1
org.bukkit.event.EventException
    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
    at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
    at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
    at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487) [spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
    at org.bukkit.craftbukkit.v1_11_R1.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:234) [spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
    at org.bukkit.craftbukkit.v1_11_R1.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:201) [spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
    at org.bukkit.craftbukkit.v1_11_R1.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:197) [spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
    at net.minecraft.server.v1_11_R1.PlayerConnection.a(PlayerConnection.java:951) [spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
    at net.minecraft.server.v1_11_R1.PacketPlayInBlockPlace.a(PacketPlayInBlockPlace.java:26) [spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
    at net.minecraft.server.v1_11_R1.PacketPlayInBlockPlace.a(PacketPlayInBlockPlace.java:1) [spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
    at net.minecraft.server.v1_11_R1.PlayerConnectionUtils$1.run(SourceFile:13) [spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_161]
    at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_161]
    at net.minecraft.server.v1_11_R1.SystemUtils.a(SourceFile:46) [spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
    at net.minecraft.server.v1_11_R1.MinecraftServer.D(MinecraftServer.java:747) [spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
    at net.minecraft.server.v1_11_R1.DedicatedServer.D(DedicatedServer.java:399) [spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
    at net.minecraft.server.v1_11_R1.MinecraftServer.C(MinecraftServer.java:678) [spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
    at net.minecraft.server.v1_11_R1.MinecraftServer.run(MinecraftServer.java:576) [spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_161]
Caused by: java.lang.NullPointerException
    at me.pvpdog.dial.BuyPhone.interactEvent(BuyPhone.java:38) ~[?:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_161]
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_161]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_161]
    at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_161]
    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:302) ~[spigot-1.11.2.jar:git-Spigot-3fb9445-2b6c9f4]
    ... 18 more
[02:28:57] [Server thread/INFO]: CONSOLE: [0;31;1mPlease note that this command is not supported and may cause issues when using some plugins.[m
[02:28:57] [Server thread/INFO]: CONSOLE: [0;31;1mIf you encounter any issues please use the /stop command to restart your server.[m
 
Я же писал, что ругается на строку с проверкой displayname
PHP:
 #если я убираю строку с проверкой имени - все работает    
if(hand.getType() == Material.getMaterial(main.getConfig().getString("settings.Item")) && meta.getDisplayName().equalsIgnoreCase("Железный слиток")))
 
Сейчас я исправил эту ошибку через try/catch, но мне кажется что это костыль и надо бы это как-то пофиксить... есть идеи?
 
Сейчас я исправил эту ошибку через try/catch, но мне кажется что это костыль и надо бы это как-то пофиксить... есть идеи?
Тупо проверять null.getType() null.equalsIgnoreCase(). Конечно будет npe.
hand !=null
meta.hasDisplayName();
 
Последнее редактирование:
Статус
Закрыто для дальнейших ответов.
Назад
Верх