Help

Discussion in 'Plugin Development' started by Rufflez, Jun 18, 2014.

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

    Rufflez

    Hey, I'm getting an error with my plugin i'm wondering if you can help me.


    The menu opener class

    Code:
    public class Bone implements Listener
    {
        private Menu menu;
     
       
        @EventHandler
        public void onPlayerInteract(PlayerInteractEvent e) {
            if(!(e.getAction() == Action.RIGHT_CLICK_AIR)) return;
            if(!(e.getItem().getType() == Material.BONE)) return;
                menu.display(e.getPlayer());
                return;
        }
    }
    
    Menu class

    Code:java
    1. protected String name;
    2. protected Size size;
    3. protected HashMap<Integer, MenuElement> elements = new HashMap<Integer, MenuElement>();
    4.  
    5. public Menu (String name, ItemStack item, Size size) {
    6. this.name = name;
    7. this.item = CraftItemStack.asCraftCopy(item);
    8. this.size = size;
    9. }
    10.  
    11. public Menu (String name, Size size) {
    12. this(name, CraftItemStack.asCraftCopy(new ItemStack(Material.BEDROCK)), size);
    13. }
    14.  
    15. @Deprecated
    16. public Menu (String name, ItemStack item, Integer size) {
    17. this.name = name;
    18. this.item = CraftItemStack.asCraftCopy(item);
    19. this.size = Size.parse(size);
    20. }
    21.  
    22. @Deprecated
    23. public Menu (String name, Integer size) {
    24. this(name, CraftItemStack.asCraftCopy(new ItemStack(Material.BEDROCK)), size);
    25. }
    26.  
    27. @Override
    28. public Boolean click (Player player) {
    29. display(player);
    30. return false;
    31. }
    32.  
    33. public Inventory getInventory (Player player) {
    34. CraftInventory inventory = (CraftInventory) Bukkit.createInventory(new MenuHolder(this, Bukkit.createInventory(player.getPlayer(), size.getSize())), size.getSize(), name);
    35. for (Integer key : elements.keySet()) {
    36. Util.setInventoryItem(key, inventory, elements.get(key).getItem(player));
    37. }
    38. return inventory;
    39. }
    40.  
    41. public final void display (Player player) {
    42. player.getPlayer().openInventory(getInventory(player));
    43. }
    44.  
    45. public final void hide (final Player player) {
    46. Bukkit.getScheduler().scheduleSyncDelayedTask(Pets.getInstance(), new Runnable() {
    47. public void run() {
    48. if (player.getPlayer() != null) {
    49. player.getPlayer().closeInventory();
    50. }
    51. }
    52. });
    53. }
    54.  
    55. public HashMap<Integer, MenuElement> getElements () {
    56. return elements;
    57. }
    58.  
    59. public void setSize (Size size) {
    60. this.size = size;
    61. }
    62.  
    63. public Size getSize () {
    64. return size;
    65. }
    66.  
    67. public enum Size {
    68. ONE_LINE(9),
    69. TWO_LINE(18),
    70. THREE_LINE(27),
    71. FOUR_LINE(36),
    72. FIVE_LINE(45),
    73. SIX_LINE(54);
    74.  
    75. private int size;
    76.  
    77. private Size (int i) {
    78. this.size = i;
    79. }
    80.  
    81. public int getSize () {
    82. return size;
    83. }
    84.  
    85. public static Size parse (int i) {
    86. switch (i) {
    87. case 9:
    88. return ONE_LINE;
    89. case 18:
    90. return TWO_LINE;
    91. case 27:
    92. return THREE_LINE;
    93. case 36:
    94. return FOUR_LINE;
    95. case 45:
    96. return FIVE_LINE;
    97. case 54:
    98. return SIX_LINE;
    99. }
    100. throw new IllegalArgumentException("Invalid menu size");
    101. }
    102.  
    103. public static Size fit (int i) {
    104. if (i < 10) {
    105. return ONE_LINE;
    106. } else if (i < 19) {
    107. return TWO_LINE;
    108. } else if (i < 28) {
    109. return THREE_LINE;
    110. } else if (i < 37) {
    111. return FOUR_LINE;
    112. } else if (i < 46) {
    113. return FIVE_LINE;
    114. } else {
    115. return SIX_LINE;
    116. }
    117. }
    118. }
    119. }


    Error

    Code:
    [11:05:41] [Server thread/ERROR]: Could not pass event PlayerInteractEvent to Pets v1.0
    org.bukkit.event.EventException
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:294) ~[spigot.jar:git-Spigot-1485]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot.jar:git-Spigot-1485]
        at org.bukkit.plugin.TimedRegisteredListener.callEvent(TimedRegisteredListener.java:30) ~[spigot.jar:git-Spigot-1485]
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [spigot.jar:git-Spigot-1485]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487) [spigot.jar:git-Spigot-1485]
        at org.bukkit.craftbukkit.v1_7_R3.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:233) [spigot.jar:git-Spigot-1485]
        at org.bukkit.craftbukkit.v1_7_R3.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:203) [spigot.jar:git-Spigot-1485]
        at net.minecraft.server.v1_7_R3.PlayerConnection.a(PlayerConnection.java:618) [spigot.jar:git-Spigot-1485]
        at net.minecraft.server.v1_7_R3.PacketPlayInBlockPlace.a(SourceFile:60) [spigot.jar:git-Spigot-1485]
        at net.minecraft.server.v1_7_R3.PacketPlayInBlockPlace.handle(SourceFile:9) [spigot.jar:git-Spigot-1485]
        at net.minecraft.server.v1_7_R3.NetworkManager.a(NetworkManager.java:180) [spigot.jar:git-Spigot-1485]
        at net.minecraft.server.v1_7_R3.ServerConnection.c(ServerConnection.java:81) [spigot.jar:git-Spigot-1485]
        at net.minecraft.server.v1_7_R3.MinecraftServer.v(MinecraftServer.java:720) [spigot.jar:git-Spigot-1485]
        at net.minecraft.server.v1_7_R3.DedicatedServer.v(DedicatedServer.java:283) [spigot.jar:git-Spigot-1485]
        at net.minecraft.server.v1_7_R3.MinecraftServer.u(MinecraftServer.java:583) [spigot.jar:git-Spigot-1485]
        at net.minecraft.server.v1_7_R3.MinecraftServer.run(MinecraftServer.java:489) [spigot.jar:git-Spigot-1485]
        at net.minecraft.server.v1_7_R3.ThreadServerApplication.run(SourceFile:628) [spigot.jar:git-Spigot-1485]
    Caused by: java.lang.NullPointerException
        at se.DMarby.Pets.menu.PetMenuItem.onPlayerInteract(PetMenuItem.java:182) ~[?:?]
        at sun.reflect.GeneratedMethodAccessor16.invoke(Unknown Source) ~[?:?]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.7.0_51]
        at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.7.0_51]
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:292) ~[spigot.jar:git-Spigot-1485]
        ... 16 more
    
     
  2. Offline

    L33m4n123

    You never assign any value to the variable menu. Thus its null.. thus it throws an NullPointerException when trying to work with it. Learn to read stacktraces and you would've figured that out in less ammount of time than posting that thread
     
Thread Status:
Not open for further replies.

Share This Page