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

Помогите Способы сравнения DisplayName у Item'ов

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

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

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

    Баллы:
    123
    Skype:
    wwwixelsor9
    Имя в Minecraft:
    konfyciu
    Вот способ, который я использую:
    Код:
    ItemStack pl_st = event.getPlayer().getInventory().getItemInHand();
    ItemMeta pl_st_met = pl_st.getItemMeta();
    if(pl_st_met.getDisplayName().equalsIgnoreCase(ChatColor.GOLD + "My Item")) {
    //....
    }
    
    Но он кидает ошибку:
    Код:
    2014-03-06 21:24:59 [SEVERE] Could not pass event PlayerInteractEvent to Magica v1.0
    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:30)
       at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:478)
       at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:463)
       at org.bukkit.craftbukkit.v1_6_R3.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:207)
       at net.minecraft.server.v1_6_R3.PlayerInteractManager.interact(PlayerInteractManager.java:374)
       at net.minecraft.server.v1_6_R3.PlayerConnection.a(PlayerConnection.java:631)
       at net.minecraft.server.v1_6_R3.Packet15Place.handle(SourceFile:58)
       at org.spigotmc.netty.NettyNetworkManager.b(NettyNetworkManager.java:230)
       at net.minecraft.server.v1_6_R3.PlayerConnection.e(PlayerConnection.java:117)
       at net.minecraft.server.v1_6_R3.ServerConnection.b(SourceFile:37)
       at org.spigotmc.netty.NettyServerConnection.b(NettyServerConnection.java:132)
       at net.minecraft.server.v1_6_R3.MinecraftServer.t(MinecraftServer.java:594)
       at net.minecraft.server.v1_6_R3.DedicatedServer.t(DedicatedServer.java:240)
       at net.minecraft.server.v1_6_R3.MinecraftServer.s(MinecraftServer.java:483)
       at net.minecraft.server.v1_6_R3.MinecraftServer.run(MinecraftServer.java:415)
       at net.minecraft.server.v1_6_R3.ThreadServerApplication.run(SourceFile:583)
    Caused by: java.lang.NullPointerException
       at me.konfyciu.Magica.MagicaListener.onInteractEvent(MagicaListener.java:23)
       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)
       ... 17 more
    

    Есть еще способы проверить имя итема?
     
  2. Хостинг MineCraft
    <
  3. serega6531

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

    Баллы:
    173
    Skype:
    shkurovs
    Не работает потому, что нужно проверять hasItemMeta().
     
  4. Автор темы
    konfyciu98

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

    Баллы:
    123
    Skype:
    wwwixelsor9
    Имя в Minecraft:
    konfyciu
    Так?
    Код:
    (pl_st.hasItemMeta() == pl_st_met.getDisplayName().equalsIgnoreCase(ChatColor.GOLD + "My Item"))
    Оно работает!
     
  5. serega6531

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

    Баллы:
    173
    Skype:
    shkurovs
    Эм... Я даже не знаю, что и сказать... Вы сравниваете, есть ли meta с содержит ли она нужную строку?
     
    Последнее редактирование: 6 мар 2014
  6. Автор темы
    konfyciu98

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

    Баллы:
    123
    Skype:
    wwwixelsor9
    Имя в Minecraft:
    konfyciu
    Да и работает!!!!![DOUBLEPOST=1394126336,1394126306][/DOUBLEPOST]Это магия :ninja:
     
  7. serega6531

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

    Баллы:
    173
    Skype:
    shkurovs
    Ну... Ладно... Если вы так хотите, то пожалуйста.
    А вообще надо как-то так:

    Код:
    if(i.hasItemMeta()){
    if(i.getItemMeta().getDisplayName().equals("yourstring")){
    //code
    }
    }
     
    konfyciu98 нравится это.
  8. Автор темы
    konfyciu98

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

    Баллы:
    123
    Skype:
    wwwixelsor9
    Имя в Minecraft:
    konfyciu
    Возьму оба способа :D
     
  9. ql_Nik_lp

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

    Баллы:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
    Еще хочу заметить что если текст покрашен, то сравнивать надо либо с ChatColor + String либо обрезая первые 2 символа
     
  10. Автор темы
    konfyciu98

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

    Баллы:
    123
    Skype:
    wwwixelsor9
    Имя в Minecraft:
    konfyciu
    Это я знаю.
     
  11. JustBlender

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

    Баллы:
    123
    Skype:
    justblender
    Имя в Minecraft:
    JustBlender
    Гениальное, а главное, идеальное решение проблемы! Маленькие школьники даже не додумаются сделать такое, если даже в наковальне можно будет цветные названия задавать :)
     
  12. ql_Nik_lp

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

    Баллы:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
    Не понял задумки)
     
  13. JustBlender

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

    Баллы:
    123
    Skype:
    justblender
    Имя в Minecraft:
    JustBlender
    *БРАВО* *ВСЕ ХЛОПАЮТ РУКАМИ*
     
  14. Den_Abr

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

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    А как же Lore?
     
    ПриветОтЛайки, fromgate и ql_Nik_lp нравится это.
  15. ql_Nik_lp

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

    Баллы:
    173
    Skype:
    q-nik-p
    Имя в Minecraft:
    ql_Nik_lp
    Вот плюсую.
    Всегда использовал для этой цели строку в lore покрашенную в черный цвет
     
  16. Den_Abr

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

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Прятать лору за пакетами:lol::lol::lol:
     
    Hephest, fromgate и ql_Nik_lp нравится это.
  17. Автор темы
    konfyciu98

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

    Баллы:
    123
    Skype:
    wwwixelsor9
    Имя в Minecraft:
    konfyciu
    Я сделал так, но именно на проверку консоль кидает ошибку
    Код:
    if(event.getPlayer().getItemInHand().hasItemMeta() && event.getPlayer().getItemInHand().getItemMeta().getDisplayName().equalsIgnoreCase(ChatColor.GOLD +"Itemmorger"+ChatColor.RED))
    [DOUBLEPOST=1394466777,1394466649][/DOUBLEPOST]
    Код:
    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:30)
       at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:478)
       at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:463)
       at net.minecraft.server.v1_6_R3.PlayerConnection.a(PlayerConnection.java:1125)
       at net.minecraft.server.v1_6_R3.Packet7UseEntity.handle(SourceFile:36)
       at org.spigotmc.netty.NettyNetworkManager.b(NettyNetworkManager.java:230)
       at net.minecraft.server.v1_6_R3.PlayerConnection.e(PlayerConnection.java:117)
       at net.minecraft.server.v1_6_R3.ServerConnection.b(SourceFile:37)
       at org.spigotmc.netty.NettyServerConnection.b(NettyServerConnection.java:132)
       at net.minecraft.server.v1_6_R3.MinecraftServer.t(MinecraftServer.java:594)
       at net.minecraft.server.v1_6_R3.DedicatedServer.t(DedicatedServer.java:240)
       at net.minecraft.server.v1_6_R3.MinecraftServer.s(MinecraftServer.java:483)
       at net.minecraft.server.v1_6_R3.MinecraftServer.run(MinecraftServer.java:415)
       at net.minecraft.server.v1_6_R3.ThreadServerApplication.run(SourceFile:583)
    Caused by: java.lang.NullPointerException
       at me.konfyciu.Itemmorger.Itemmorger.onInteractEntity(Passenger.java:55)
       at sun.reflect.GeneratedMethodAccessor329.invoke(Unknown Source)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
       at java.lang.reflect.Method.invoke(Method.java:606)
       at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:425)
       ... 15 more
    
     
  18. serega6531

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

    Баллы:
    173
    Skype:
    shkurovs
    А hasDisplayName() где?
     
  19. BeYkeR

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

    Баллы:
    173
    Сделай проверку на предмет в руке.
     

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