Solved Get clicked item?

Discussion in 'Plugin Development' started by Meatiex, Feb 3, 2014.

Thread Status:
Not open for further replies.
  1. Offline

    Meatiex

    How would I get a items name when you click on it in a inventory?

    Heres the code that doesn't work...
    Code:java
    1. @EventHandler
    2. public void onInventoryClick(InventoryClickEvent event) {
    3. HumanEntity player = event.getWhoClicked();
    4. if (event.getInventory().getTitle().equals(ChatColor.GREEN + "" + ChatColor.BOLD + "Game Select")) {
    5. if (event.getCurrentItem().getItemMeta().getDisplayName() == ChatColor.YELLOW + "Back to Hub" && event.getCurrentItem().getType() == Material.JUKEBOX) {
    6. World world = Bukkit.getWorld("world");
    7. Location pos = new Location(world, -31, 101, 8);
    8. player.teleport(pos);
    9. } else {
    10. //This is what happens
    11. event.setCancelled(true);
    12. player.closeInventory();
    13. }
    14. }
    15. }

    Heres the compass in my inventory:

    Code:java
    1. ItemStack hub = new ItemStack(Material.JUKEBOX);
    2. ItemMeta meta3 = hub.getItemMeta();
    3. meta3.setDisplayName(ChatColor.YELLOW + "Back to Hub");
    4. hub.setItemMeta(meta3);
    5. custom.setItem(8, hub);

    Any help would be awesome :D
     
  2. Offline

    Gater12

    Meatiex
    event.getCursor();
    Returns an ItemStack on the cursor (Which should be the item)
     
  3. Offline

    Meatiex

    It dono if getCursor works...
    Code:
    [18:52:32] [Server thread/ERROR]: Could not pass event InventoryClickEvent to Games v1.0
    org.bukkit.event.EventException
    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:320) ~[bukkit.jar:git-bukkit-1253]
    at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[bukkit.jar:git-bukkit-1253]
    at org.bukkit.plugin.TimedRegisteredListener.callEvent(TimedRegisteredListener.java:30) ~[bukkit.jar:git-bukkit-1253]
    at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:482) [bukkit.jar:git-bukkit-1253]
    at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:467) [bukkit.jar:git-bukkit-1253]
    at net.minecraft.server.v1_7_R1.PlayerConnection.a(PlayerConnection.java:1391) [bukkit.jar:git-bukkit-1253]
    at net.minecraft.server.v1_7_R1.PacketPlayInWindowClick.a(SourceFile:32) [bukkit.jar:git-bukkit-1253]
    at net.minecraft.server.v1_7_R1.PacketPlayInWindowClick.handle(SourceFile:10) [bukkit.jar:git-bukkit-1253]
    at net.minecraft.server.v1_7_R1.NetworkManager.a(NetworkManager.java:147) [bukkit.jar:git-bukkit-1253]
    at net.minecraft.server.v1_7_R1.ServerConnection.c(SourceFile:134) [bukkit.jar:git-bukkit-1253]
    at net.minecraft.server.v1_7_R1.MinecraftServer.u(MinecraftServer.java:678) [bukkit.jar:git-bukkit-1253]
    at net.minecraft.server.v1_7_R1.DedicatedServer.u(DedicatedServer.java:273) [bukkit.jar:git-bukkit-1253]
    at net.minecraft.server.v1_7_R1.MinecraftServer.t(MinecraftServer.java:540) [bukkit.jar:git-bukkit-1253]
    at net.minecraft.server.v1_7_R1.MinecraftServer.run(MinecraftServer.java:446) [bukkit.jar:git-bukkit-1253]
    at net.minecraft.server.v1_7_R1.ThreadServerApplication.run(SourceFile:617) [bukkit.jar:git-bukkit-1253]
    Caused by: java.lang.NullPointerException
    at me.Meatie.plugin.PlayerListiner.onInventoryClick(PlayerListiner.java:156) ~[?:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_25]
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.7.0_25]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.7.0_25]
    at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.7.0_25]
    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:318) ~[bukkit.jar:git-bukkit-1253]
    
    Code:java
    1. if (event.getCursor().getItemMeta().getDisplayName() == ChatColor.YELLOW + "Back to Hub" && event.getCursor().getType() == Material.JUKEBOX) {
     
  4. Offline

    Elimnator

    Do:
    Code:
    public void onPlayerClick(InventoryClickEvent event) {
      int slot = event.getSlot();
      ItemStack item = event.getWhoClicked().getInventory().getItem(slot);
    }
    
    Then you can get the items name.
     
  5. Offline

    Meatiex

    uh... I can't figure out how to do this for custom inventory... like above

    [Solved]

    I dono exactly what I did, but it works great now :D
    Code:java
    1. @EventHandler
    2. public void onInventoryClick(InventoryClickEvent event) {
    3. HumanEntity player = event.getWhoClicked();
    4. if (event.getInventory().getTitle().equals(ChatColor.GREEN + "" + ChatColor.BOLD + "Game Select")) {
    5. player.closeInventory();
    6. if (event.getCurrentItem().getType() == Material.JUKEBOX) {
    7. Location pos = new Location(Bukkit.getWorld("world"), -31, 101, 8);
    8. player.teleport(pos);
    9. } else {
    10. event.setCancelled(true);
    11. }
    12. }
    13. }
     
Thread Status:
Not open for further replies.

Share This Page