Solved Inventory Help

Discussion in 'Plugin Development' started by bodhistrontg, Dec 15, 2013.

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

    bodhistrontg

    So when i type the command shop nothing is happening but an error is happening
    Error:
    java.lang.NullPointerException
    at org.bukkit.craftbukkit.v1_6_R3.entity.CraftHumanEntity.openInventory(CraftHumanEntity.java:185)
    at me.bodhiIsEpic.bukkit.Shop.onPlayerInteract(Shop.java:80)
    at sun.reflect.GeneratedMethodAccessor2.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)
    ... 16 more

    Code:
    Code:java
    1. package me.bodhiIsEpic.bukkit;
    2.  
    3. import java.util.Arrays;
    4.  
    5. import org.bukkit.Bukkit;
    6. import org.bukkit.ChatColor;
    7. import org.bukkit.Material;
    8. import org.bukkit.command.Command;
    9. import org.bukkit.command.CommandExecutor;
    10. import org.bukkit.command.CommandSender;
    11. import org.bukkit.entity.Player;
    12. import org.bukkit.event.EventHandler;
    13. import org.bukkit.event.Listener;
    14. import org.bukkit.event.inventory.InventoryClickEvent;
    15. import org.bukkit.inventory.Inventory;
    16. import org.bukkit.inventory.ItemStack;
    17. import org.bukkit.inventory.meta.ItemMeta;
    18.  
    19. public class Shop implements Listener, CommandExecutor {
    20.  
    21. private Inventory inv;
    22. private ItemStack c, s, a;
    23.  
    24. public Shop() {
    25. inv = Bukkit.getServer().createInventory(null, 9, "Shop");
    26.  
    27. c = createItem(new ItemStack(Material.DIAMOND_SWORD, 1), ChatColor.GREEN + "The Slayer", 10);
    28. s = createItem(new ItemStack(Material.BOW, 1), ChatColor.YELLOW + "The assasin", 5);
    29. a = createItem(new ItemStack(Material.DIAMOND_SPADE, 1), ChatColor.RED + "The Spade", 3);
    30.  
    31. inv.setItem(0, c);
    32. inv.setItem(2, s);
    33. inv.setItem(4, a);
    34. }
    35.  
    36. public Shop(Main main) {
    37. }
    38.  
    39. private ItemStack createItem(ItemStack is, String name, int amount) {
    40. ItemStack i = new ItemStack(is);
    41. ItemMeta im = i.getItemMeta();
    42. im.setDisplayName(name);
    43. im.setLore(Arrays.asList("Would you like to buy," + name.toLowerCase() + "for" + amount));
    44. i.setItemMeta(im);
    45. return i;
    46. }
    47. private ItemStack AddItem(ItemStack is, String name, String note, Player p) {
    48. ItemStack i = new ItemStack(is);
    49. ItemMeta im = i.getItemMeta();
    50. im.setDisplayName(name);
    51. im.setLore(Arrays.asList(note));
    52. i.setItemMeta(im);
    53. p.getInventory().addItem(i);
    54. return i;
    55. }
    56.  
    57. @EventHandler
    58. public void onInventoryClick(InventoryClickEvent e) {
    59. if (!e.getInventory().getName().equalsIgnoreCase(inv.getName())) return;
    60. if (e.getCurrentItem().getItemMeta() == null) return;
    61. if (e.getCurrentItem().getItemMeta().getDisplayName().contains("The Slayer")) {
    62. e.setCancelled(true);
    63. AddItem(new ItemStack(Material.DIAMOND_SWORD, 1), ChatColor.GREEN + "The Slayer", ChatColor.LIGHT_PURPLE + "The Slayer of zombies", (Player) e.getWhoClicked());
    64. e.getWhoClicked().closeInventory();
    65. }
    66. if (e.getCurrentItem().getItemMeta().getDisplayName().contains("The assasin")) {
    67. e.setCancelled(true);
    68. e.getWhoClicked().closeInventory();
    69. }
    70. if (e.getCurrentItem().getItemMeta().getDisplayName().contains("The Spade")) {
    71. e.setCancelled(true);
    72. e.getWhoClicked().closeInventory();
    73. }
    74. }
    75.  
    76. @Override
    77. public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
    78. if (cmd.getName().equalsIgnoreCase("shop")) {
    79. Player player = (Player) sender;
    80. player.openInventory(inv); //Line 80
    81. }
    82. return false;
    83. }
    84. }

    Thank you all for helping

    bump

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jun 5, 2016
  2. Offline

    AoH_Ruthless

    bodhistrontg
    Refrain from bumping more than once every 24 hours.

    Try adding debug messages and see how far the code gets.
     
  3. Offline

    sgavster

    check if the item isn't null,
    and if the item.getType() isn't null.
     
  4. Offline

    bodhistrontg

    Check if what item isn't null and it is not opening the inventory
     
Thread Status:
Not open for further replies.

Share This Page