Solved NullPointerException - InventoryClickEvent

Discussion in 'Plugin Development' started by NoteInBlock, Sep 20, 2014.

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

    NoteInBlock

    Hello!
    I want to program for fun an "adminmenu" plugin in which you can click on a new generated inventory when you right click on the "adminmenu" block (I used a bedrock block). In this "adminmenu" inventory you can click on items with different names which have different effects like "Time set Day" and stuff like that.

    It's working pretty well so far but one thing is really annoying. Everytime a player clicks on the inventory, doesn't matter where, I get this error in console (NullPointerException):
    Spoiler: Error (open)

    Code:
    [14:22:49 ERROR]: Could not pass event InventoryClickEvent to Adminmenu v1.0
    org.bukkit.event.EventException
            at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.ja
    va:427) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
            at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.jav
    a:62) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
            at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.j
    ava:481) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
            at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.j
    ava:466) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
            at net.minecraft.server.v1_7_R1.PlayerConnection.a(PlayerConnection.java
    :1351) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
            at net.minecraft.server.v1_7_R1.PacketPlayInWindowClick.a(SourceFile:32)
    [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
            at net.minecraft.server.v1_7_R1.PacketPlayInWindowClick.handle(SourceFil
    e:10) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
            at net.minecraft.server.v1_7_R1.NetworkManager.a(NetworkManager.java:146
    ) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
            at net.minecraft.server.v1_7_R1.ServerConnection.c(SourceFile:134) [craf
    tbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
            at net.minecraft.server.v1_7_R1.MinecraftServer.u(MinecraftServer.java:6
    55) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
            at net.minecraft.server.v1_7_R1.DedicatedServer.u(DedicatedServer.java:2
    50) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
            at net.minecraft.server.v1_7_R1.MinecraftServer.t(MinecraftServer.java:5
    45) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
            at net.minecraft.server.v1_7_R1.MinecraftServer.run(MinecraftServer.java
    :457) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
            at net.minecraft.server.v1_7_R1.ThreadServerApplication.run(SourceFile:6
    17) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
    Caused by: java.lang.NullPointerException
            at de.NoteInBlock.onInteractListener.onInvClick(onInteractListener.java:
    135) ~[?:?]
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0
    _67]
            at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.7.0
    _67]
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1
    .7.0_67]
            at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.7.0_67]
            at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.ja
    va:425) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
            ... 13 more
    [14:22:49 ERROR]: Could not pass event InventoryClickEvent to Adminmenu v1.0
    org.bukkit.event.EventException
            at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.ja
    va:427) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
            at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.jav
    a:62) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
            at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.j
    ava:481) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
            at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.j
    ava:466) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
            at net.minecraft.server.v1_7_R1.PlayerConnection.a(PlayerConnection.java
    :1351) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
            at net.minecraft.server.v1_7_R1.PacketPlayInWindowClick.a(SourceFile:32)
    [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
            at net.minecraft.server.v1_7_R1.PacketPlayInWindowClick.handle(SourceFil
    e:10) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
            at net.minecraft.server.v1_7_R1.NetworkManager.a(NetworkManager.java:146
    ) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
            at net.minecraft.server.v1_7_R1.ServerConnection.c(SourceFile:134) [craf
    tbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
            at net.minecraft.server.v1_7_R1.MinecraftServer.u(MinecraftServer.java:6
    55) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
            at net.minecraft.server.v1_7_R1.DedicatedServer.u(DedicatedServer.java:2
    50) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
            at net.minecraft.server.v1_7_R1.MinecraftServer.t(MinecraftServer.java:5
    45) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
            at net.minecraft.server.v1_7_R1.MinecraftServer.run(MinecraftServer.java
    :457) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
            at net.minecraft.server.v1_7_R1.ThreadServerApplication.run(SourceFile:6
    17) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
    Caused by: java.lang.NullPointerException
            at de.NoteInBlock.onInteractListener.onInvClick(onInteractListener.java:
    135) ~[?:?]
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0
    _67]
            at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.7.0
    _67]
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1
    .7.0_67]
            at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.7.0_67]
            at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.ja
    va:425) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.2-b2974jnks]
            ... 13 more
    >



    Here you can see the code:
    Spoiler: Main class (open)

    Code:java
    1. package de.NoteInBlock;
    2.  
    3. import org.bukkit.Bukkit;
    4. import org.bukkit.Material;
    5. import org.bukkit.command.Command;
    6. import org.bukkit.command.CommandSender;
    7. import org.bukkit.entity.Player;
    8. import org.bukkit.inventory.Inventory;
    9. import org.bukkit.inventory.ItemStack;
    10. import org.bukkit.inventory.meta.ItemMeta;
    11. import org.bukkit.plugin.java.JavaPlugin;
    12.  
    13. public class Main extends JavaPlugin {
    14.  
    15. public final static String prefix = "§4[§cAdminmenu§4]§f ";
    16. public Inventory inv = null;
    17.  
    18. @Override
    19. public void onEnable() {
    20. System.out.println(prefix + "§aPlugin erfolgreich geladen.");
    21. System.out.println(prefix + "Author: NoteInBlock");
    22. System.out.println(prefix + "Version: " + this.getDescription().getVersion());
    23.  
    24. Bukkit.getPluginManager().registerEvents(new onInteractListener(this), this);
    25. Bukkit.getPluginManager().registerEvents(new onInteractListener(this), this);
    26. }
    27. //Befehl um das "Adminmenu" Item zu bekommen
    28. @Override
    29. public boolean onCommand(CommandSender s, Command cmd,String label, String[] args) {
    30. if(cmd.getName().equalsIgnoreCase("adminmenu")) {
    31. if(s.hasPermission("adminmenu.admin")) {
    32. Player p = (Player) s;
    33. if(p.getInventory().contains(Material.BEDROCK)) {
    34. s.sendMessage(prefix + "§cDu hast bereits das Adminmenu-Tool in deinem Inventar.");
    35. } else {
    36. //Erstellen des "Adminmenu" Items
    37. ItemStack itemA = new ItemStack(Material.BEDROCK);
    38. ItemMeta meta = itemA.getItemMeta();
    39. meta.setDisplayName("§4§lAdminmenu");
    40. itemA.setItemMeta(meta);
    41. p.getInventory().setItemInHand(itemA);
    42. s.sendMessage(prefix + "§aDu hast das Adminmenu-Tool erhalten.");
    43. }
    44.  
    45.  
    46.  
    47. } else {
    48. s.sendMessage(prefix + "§cDu hast nicht die Permission §4adminmenu.admin §c um diesen Befehl auszuführen.");
    49. }
    50.  
    51. }
    52.  
    53.  
    54.  
    55. return true;
    56. }
    57.  
    58.  
    59.  
    60.  
    61. }
    62.  



    Spoiler: onInteractListener class (open)

    Code:java
    1. package de.NoteInBlock;
    2.  
    3. import org.bukkit.Bukkit;
    4. import org.bukkit.Material;
    5. import org.bukkit.command.ConsoleCommandSender;
    6. import org.bukkit.entity.HumanEntity;
    7. import org.bukkit.entity.Player;
    8. import org.bukkit.event.EventHandler;
    9. import org.bukkit.event.Listener;
    10. import org.bukkit.event.block.Action;
    11. import org.bukkit.event.inventory.InventoryClickEvent;
    12. import org.bukkit.event.player.PlayerInteractEvent;
    13. import org.bukkit.inventory.ItemStack;
    14. import org.bukkit.inventory.meta.ItemMeta;
    15.  
    16. public class onInteractListener implements Listener {
    17.  
    18.  
    19. private Main plugin;
    20. public onInteractListener(Main plugin) {
    21. this.plugin = plugin;
    22. }
    23.  
    24. //ItemStack "ItemKick" erstellen (public)
    25. ItemStack itemTimeday = new ItemStack(Material.WATCH);
    26. ItemStack itemTimenight = new ItemStack(Material.BED);
    27. ItemStack itemSaveAll = new ItemStack(Material.COMMAND);
    28. ItemStack itemmore = new ItemStack(Material.STAINED_GLASS_PANE);
    29.  
    30. @EventHandler
    31. public void onInteract(PlayerInteractEvent e) {
    32. Player p = e.getPlayer();
    33. if(e.getAction() == Action.RIGHT_CLICK_AIR || e.getAction() == Action.RIGHT_CLICK_BLOCK) {
    34. if(p.getItemInHand().getType() == Material.BEDROCK) {
    35. if(p.hasPermission("adminmenu.admin")) {
    36. if(p.getItemInHand().getItemMeta().getDisplayName().equals("§4§lAdminmenu")) {
    37.  
    38. //Inventar "Adminmenu" mit 9 Slots erstellen
    39. this.plugin.inv = p.getServer().createInventory(null, 9, "§4§lAdminmenu");
    40.  
    41. p.openInventory(this.plugin.inv);
    42.  
    43. /* Erstellen der Items im Inventar "Adminmenu" */
    44. //Item TimeDay
    45. ItemMeta metaTimeday = this.itemTimeday.getItemMeta();
    46. metaTimeday.setDisplayName("§aTime set Day");
    47. itemTimeday.setItemMeta(metaTimeday);
    48.  
    49. //Item TimeNight
    50. ItemMeta metaTimenight = this.itemTimenight.getItemMeta();
    51. metaTimenight.setDisplayName("§aTime set Night");
    52. itemTimenight.setItemMeta(metaTimenight);
    53.  
    54. //Item SaveAll
    55. ItemMeta metaSaveAll = this.itemSaveAll.getItemMeta();
    56. metaSaveAll.setDisplayName("§aSave-All");
    57. itemSaveAll.setItemMeta(metaSaveAll);
    58.  
    59. //Item More[...]2
    60. ItemMeta metaMore2 = this.itemmore.getItemMeta();
    61. metaMore2.setDisplayName("§4§oComing more soon...");
    62. itemmore.setItemMeta(metaMore2);
    63.  
    64. //Item More[...]3
    65. ItemMeta metaMore3 = this.itemmore.getItemMeta();
    66. metaMore3.setDisplayName("§4§oComing more soon...");
    67. itemmore.setItemMeta(metaMore3);
    68.  
    69. //Item More[...]4
    70. ItemMeta metaMore4 = this.itemmore.getItemMeta();
    71. metaMore4.setDisplayName("§4§oComing more soon...");
    72. itemmore.setItemMeta(metaMore4);
    73.  
    74. //Item More[...]5
    75. ItemMeta metaMore5 = this.itemmore.getItemMeta();
    76. metaMore5.setDisplayName("§4§oComing more soon...");
    77. itemmore.setItemMeta(metaMore5);
    78.  
    79. //Item More[...]6
    80. ItemMeta metaMore6 = this.itemmore.getItemMeta();
    81. metaMore6.setDisplayName("§4§oComing more soon...");
    82. itemmore.setItemMeta(metaMore6);
    83.  
    84. //Item More[...]7
    85. ItemMeta metaMore7 = this.itemmore.getItemMeta();
    86. metaMore7.setDisplayName("§4§oComing more soon...");
    87. itemmore.setItemMeta(metaMore7);
    88.  
    89. //Setzen der Items ins Inventar
    90. this.plugin.inv.setItem(0, itemTimeday);
    91. this.plugin.inv.setItem(1, itemTimenight);
    92. this.plugin.inv.setItem(2, itemSaveAll);
    93. this.plugin.inv.setItem(3, itemmore);
    94. this.plugin.inv.setItem(4, itemmore);
    95. this.plugin.inv.setItem(5, itemmore);
    96. this.plugin.inv.setItem(6, itemmore);
    97. this.plugin.inv.setItem(7, itemmore);
    98. this.plugin.inv.setItem(8, itemmore);
    99.  
    100. p.openInventory(this.plugin.inv);
    101.  
    102.  
    103. }
    104. } else {
    105. p.sendMessage(Main.prefix + "§cDu hast nicht die Permission §4adminmenu.admin §cum das Adminmenu zu benutzen.");
    106. }
    107. }
    108.  
    109. }
    110. }
    111.  
    112.  
    113. @EventHandler
    114. public void onInvClick(InventoryClickEvent e) {
    115. HumanEntity p = e.getWhoClicked();
    116. //SetCancelled(true) im Inventar "Adminmenu"
    117.  
    118.  
    119.  
    120.  
    121. if(e.getInventory().getTitle() == "§4§lAdminmenu") {
    122. e.setCancelled(true);
    123. } else {
    124. e.setCancelled(false);
    125. }
    126.  
    127.  
    128.  
    129. ItemStack item = e.getCurrentItem();
    130.  
    131.  
    132. //Wenn jemand im Adminmenu auf ein Item drück:
    133. ConsoleCommandSender console = Bukkit.getConsoleSender();
    134. Player player = (Player) e.getWhoClicked();
    135. String cIMD = e.getCurrentItem().getItemMeta().getDisplayName();
    136. Material cIT = e.getCurrentItem().getType();
    137.  
    138. if(e.getCurrentItem() == null ) {
    139.  
    140. player.sendMessage("Erkannt.");
    141. return;
    142.  
    143. } else {
    144.  
    145.  
    146. //Item Timeday
    147. if(item != itemTimeday) {
    148. if(cIT == Material.WATCH && cIMD == "§aTime set Day") {
    149. Bukkit.getServer().dispatchCommand(console, "time set 0");
    150. p.closeInventory();
    151. }
    152. } else {
    153. player.sendMessage("Erkannt.");
    154. return; }
    155.  
    156. //Item Timenight
    157. if(item != itemTimenight) {
    158. if(cIT == Material.BED && cIMD == "§aTime set Night") {
    159. Bukkit.getServer().dispatchCommand(console, "time set 999999");
    160. p.closeInventory();
    161. }
    162. } else {
    163. player.sendMessage("Erkannt.");
    164. return; }
    165.  
    166. //Item SaveAll
    167. if(item != itemSaveAll) {
    168. if(cIT == Material.COMMAND && cIMD == "§aSave-All") {
    169. Bukkit.getServer().dispatchCommand(console, "save-all");
    170. p.closeInventory();
    171. }
    172. } else {
    173. player.sendMessage("Erkannt.");
    174. return; }
    175.  
    176. //Item more
    177. if(item != itemmore) {
    178. if(cIT == Material.STAINED_GLASS_PANE && cIMD == "§4§oComing more soon...") {
    179. p.closeInventory();
    180. }
    181. } else {
    182. player.sendMessage("Erkannt.");
    183. return; }
    184. }
    185. }
    186. }
    187.  



    I already tried to fix it by myself with some "if cases" but it didn't work. I think you can see the last try I did in code.

    Well... I hope somebody can help me. Thanks!
     
  2. Offline

    fireblast709

    NoteInBlock you forgot to check whether:
    • getCurrentItem() is null
    • getCurrentItem().hasItemMeta()
    • getCurrentItem().getItemMeta().hasDisplayName()
    Also don't compare Strings with ==, use .equals() or .equalsIgnoreCase()
     
    Gnat008 and NoteInBlock like this.
  3. Offline

    NoteInBlock

    Hi fireblast709 and thanks for the fast reply!

    I tried to re-write the passage which caused the NullPointerException with your tips. But unfortunately it's not working anymore and the error is still there.
    New code:
    Show Spoiler

    Code:java
    1. package de.NoteInBlock;
    2.  
    3. import org.bukkit.Bukkit;
    4. import org.bukkit.Material;
    5. import org.bukkit.command.ConsoleCommandSender;
    6. import org.bukkit.entity.HumanEntity;
    7. import org.bukkit.entity.Player;
    8. import org.bukkit.event.EventHandler;
    9. import org.bukkit.event.Listener;
    10. import org.bukkit.event.block.Action;
    11. import org.bukkit.event.inventory.InventoryClickEvent;
    12. import org.bukkit.event.player.PlayerInteractEvent;
    13. import org.bukkit.inventory.ItemStack;
    14. import org.bukkit.inventory.meta.ItemMeta;
    15.  
    16. public class onInteractListener implements Listener {
    17.  
    18.  
    19. private Main plugin;
    20. public onInteractListener(Main plugin) {
    21. this.plugin = plugin;
    22. }
    23.  
    24. //ItemStack "ItemKick" erstellen (public)
    25. ItemStack itemTimeday = new ItemStack(Material.WATCH);
    26. ItemStack itemTimenight = new ItemStack(Material.BED);
    27. ItemStack itemSaveAll = new ItemStack(Material.COMMAND);
    28. ItemStack itemmore = new ItemStack(Material.STAINED_GLASS_PANE);
    29.  
    30. @EventHandler
    31. public void onInteract(PlayerInteractEvent e) {
    32. Player p = e.getPlayer();
    33. if(e.getAction() == Action.RIGHT_CLICK_AIR || e.getAction() == Action.RIGHT_CLICK_BLOCK) {
    34. if(p.getItemInHand().getType() == Material.BEDROCK) {
    35. if(p.hasPermission("adminmenu.admin")) {
    36. if(p.getItemInHand().getItemMeta().getDisplayName().equals("§4§lAdminmenu")) {
    37.  
    38. //Inventar "Adminmenu" mit 9 Slots erstellen
    39. this.plugin.inv = p.getServer().createInventory(null, 9, "§4§lAdminmenu");
    40.  
    41. p.openInventory(this.plugin.inv);
    42.  
    43. /* Erstellen der Items im Inventar "Adminmenu" */
    44. //Item TimeDay
    45. ItemMeta metaTimeday = this.itemTimeday.getItemMeta();
    46. metaTimeday.setDisplayName("§aTime set Day");
    47. itemTimeday.setItemMeta(metaTimeday);
    48.  
    49. //Item TimeNight
    50. ItemMeta metaTimenight = this.itemTimenight.getItemMeta();
    51. metaTimenight.setDisplayName("§aTime set Night");
    52. itemTimenight.setItemMeta(metaTimenight);
    53.  
    54. //Item SaveAll
    55. ItemMeta metaSaveAll = this.itemSaveAll.getItemMeta();
    56. metaSaveAll.setDisplayName("§aSave-All");
    57. itemSaveAll.setItemMeta(metaSaveAll);
    58.  
    59. //Item More[...]2
    60. ItemMeta metaMore2 = this.itemmore.getItemMeta();
    61. metaMore2.setDisplayName("§4§oComing more soon...");
    62. itemmore.setItemMeta(metaMore2);
    63.  
    64. //Item More[...]3
    65. ItemMeta metaMore3 = this.itemmore.getItemMeta();
    66. metaMore3.setDisplayName("§4§oComing more soon...");
    67. itemmore.setItemMeta(metaMore3);
    68.  
    69. //Item More[...]4
    70. ItemMeta metaMore4 = this.itemmore.getItemMeta();
    71. metaMore4.setDisplayName("§4§oComing more soon...");
    72. itemmore.setItemMeta(metaMore4);
    73.  
    74. //Item More[...]5
    75. ItemMeta metaMore5 = this.itemmore.getItemMeta();
    76. metaMore5.setDisplayName("§4§oComing more soon...");
    77. itemmore.setItemMeta(metaMore5);
    78.  
    79. //Item More[...]6
    80. ItemMeta metaMore6 = this.itemmore.getItemMeta();
    81. metaMore6.setDisplayName("§4§oComing more soon...");
    82. itemmore.setItemMeta(metaMore6);
    83.  
    84. //Item More[...]7
    85. ItemMeta metaMore7 = this.itemmore.getItemMeta();
    86. metaMore7.setDisplayName("§4§oComing more soon...");
    87. itemmore.setItemMeta(metaMore7);
    88.  
    89. //Setzen der Items ins Inventar
    90. this.plugin.inv.setItem(0, itemTimeday);
    91. this.plugin.inv.setItem(1, itemTimenight);
    92. this.plugin.inv.setItem(2, itemSaveAll);
    93. this.plugin.inv.setItem(3, itemmore);
    94. this.plugin.inv.setItem(4, itemmore);
    95. this.plugin.inv.setItem(5, itemmore);
    96. this.plugin.inv.setItem(6, itemmore);
    97. this.plugin.inv.setItem(7, itemmore);
    98. this.plugin.inv.setItem(8, itemmore);
    99.  
    100. p.openInventory(this.plugin.inv);
    101.  
    102.  
    103. }
    104. } else {
    105. p.sendMessage(Main.prefix + "§cDu hast nicht die Permission §4adminmenu.admin §cum das Adminmenu zu benutzen.");
    106. }
    107. }
    108.  
    109. }
    110. }
    111.  
    112. @EventHandler
    113. public void onInvClick(InventoryClickEvent e) {
    114. HumanEntity p = e.getWhoClicked();
    115. //SetCancelled(true) im Inventar "Adminmenu"
    116.  
    117. if(e.getInventory().getTitle() == "§4§lAdminmenu") {
    118. e.setCancelled(true);
    119. } else {
    120. e.setCancelled(false);
    121. }
    122.  
    123.  
    124. //Wenn jemand im Adminmenu auf ein Item drück:
    125. ConsoleCommandSender console = Bukkit.getConsoleSender();
    126. Player player = (Player) e.getWhoClicked();
    127. String cIMD = e.getCurrentItem().getItemMeta().getDisplayName();
    128. Material cIT = e.getCurrentItem().getType();
    129. ItemStack item = e.getCurrentItem();
    130.  
    131. //Click on itemTimeday
    132. if(item != null && item.hasItemMeta()) {
    133. if(cIT == Material.COMPASS && cIMD.equals("§aTime set Day")) {
    134. Bukkit.getServer().dispatchCommand(console, "time set 0");
    135. p.closeInventory();
    136. }
    137. } else {
    138. return;
    139. }
    140.  
    141. //Click on itemTimenight
    142. if(item != null && item.hasItemMeta()) {
    143. if(cIT == Material.BED && cIMD.equals("§aTime set Night")) {
    144. Bukkit.getServer().dispatchCommand(console, "time set 999999");
    145. p.closeInventory();
    146. }
    147. } else {
    148. return;
    149. }
    150.  
    151. //Click on itemSaveAll
    152. if(item != null && item.hasItemMeta()) {
    153. if(cIT == Material.COMMAND && cIMD.equals("§aSave-All")) {
    154. Bukkit.getServer().dispatchCommand(console, "save-all");
    155. p.closeInventory();
    156. }
    157. } else {
    158. return;
    159. }
    160.  
    161. //Click on itemmore
    162. if(item != null && item.hasItemMeta()) {
    163. if(cIT == Material.STAINED_GLASS_PANE && cIMD.equals("§4§oComing more soon...")) {
    164.  
    165. }
    166. } else {
    167. return;
    168. }
    169. }
    170. }



    I don't know what to do now... meh D:
     
  4. NoteInBlock
    no you Need to check in if clauses if the item has an itemmeta else return and so on.
     
  5. Offline

    Gnat008

    NoteInBlock
    That might help you. :)
     
  6. Offline

    NoteInBlock

    DoppelRR Gnat008
    I did it now and the adminmenu is working. But I still get a NullPointerExeception if someone clicks not on a block/item with a effect (like TimeDay [...]) in the "Adminmenu" inventory. Even if someone clicks in the normal inventory I get the error. And this is really spamming the console and annoying.
    Spoiler: Part of new Code 2.0 which causes the error (open)

    Code:java
    1. @EventHandler
    2. public void onInvClick(InventoryClickEvent e) {
    3. HumanEntity p = e.getWhoClicked();
    4.  
    5. //SetCancelled(true) im Inventar "Adminmenu"
    6. if(e.getInventory().getTitle() == "§4§lAdminmenu") {
    7. e.setCancelled(true);
    8. } else {
    9. e.setCancelled(false);
    10. }
    11.  
    12.  
    13. //Wenn jemand im Adminmenu auf ein Item drückt:
    14. ConsoleCommandSender console = Bukkit.getConsoleSender();
    15. Player player = (Player) e.getWhoClicked();
    16. String cIMD = e.getCurrentItem().getItemMeta().getDisplayName();
    17. Material cIT = e.getCurrentItem().getType();
    18. ItemStack item = e.getCurrentItem();
    19.  
    20. //Click on itemTimeday
    21. if(item != null) {
    22. if(item.hasItemMeta() == true) {
    23. if(item.getItemMeta().getDisplayName().equals("§aTime set Day")) {
    24. Bukkit.getServer().dispatchCommand(console, "time set 0");
    25. p.closeInventory();
    26.  
    27. //Click on itemTimenight
    28. } else {
    29. if(item.getItemMeta().getDisplayName().equals("§aTime set Night")) {
    30. Bukkit.getServer().dispatchCommand(console, "time set 999999");
    31. p.closeInventory();
    32. //Click on itemSaveAll
    33. } else {
    34. if(item.getItemMeta().getDisplayName().equals("§aSave-All")) {
    35. Bukkit.getServer().dispatchCommand(console, "save-all");
    36. p.closeInventory();
    37. //Click on itemmore
    38. } else {
    39. if(item.getItemMeta().getDisplayName().equals("§4§oComing more soon...")) {
    40. p.closeInventory();
    41. } else {
    42. return;
    43. }
    44. }
    45. }
    46. }
    47. } else {
    48. return;
    49. }
    50. } else {
    51. return;
    52. }
    53.  
    54. }

     
  7. Offline

    Techy4198

    do
    Code:
    if(!item.hasItemMeta()) return;
    right before
    Code:
    String cIMD = blablabla
     
    NoteInBlock likes this.
  8. Offline

    NoteInBlock

    Thanks!
    Now I only get the NullPointerExeception if someone clicks next to the inventory. Do you maybe now how to fix that, too? :)
     
  9. Offline

    DusRonald

    NoteInBlock
    Check if the player click outside, and return. - You can also send a message to the player.
    Code:java
    1. if(e.getSlotType() == SlotType.OUTSIDE) return;
     
    NoteInBlock likes this.
  10. Offline

    NoteInBlock


    It worked.
    Thanks to all for the fast help! :)
     
  11. Offline

    DusRonald

    No thanks :)
     
Thread Status:
Not open for further replies.

Share This Page