Solved CommandExecutor

Discussion in 'Plugin Development' started by TheHolySheep_NL, Mar 29, 2014.

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

    TheHolySheep_NL

    Hi
    I am making a plugin with multiple classes.
    I try to make is so when i type: /donate it opens up the "donateInventory"
    But when i run the command i get an error.

    - Sheep

    Main:

    Code:java
    1. package me.theholysheepnl.Donator;
    2.  
    3. import java.util.ArrayList;
    4. import java.util.List;
    5.  
    6. import org.bukkit.Bukkit;
    7. import org.bukkit.ChatColor;
    8. import org.bukkit.Material;
    9. import org.bukkit.command.Command;
    10. import org.bukkit.command.CommandExecutor;
    11. import org.bukkit.command.CommandSender;
    12. import org.bukkit.entity.Player;
    13. import org.bukkit.event.EventHandler;
    14. import org.bukkit.event.Listener;
    15. import org.bukkit.event.inventory.InventoryClickEvent;
    16. import org.bukkit.event.inventory.InventoryCloseEvent;
    17. import org.bukkit.inventory.Inventory;
    18. import org.bukkit.inventory.ItemStack;
    19. import org.bukkit.inventory.meta.ItemMeta;
    20. import org.bukkit.plugin.java.JavaPlugin;
    21.  
    22.  
    23.  
    24. public class DonateCUI extends JavaPlugin implements Listener, CommandExecutor {
    25.  
    26. public static Inventory donateInventory;
    27.  
    28. List<String> viewing = new ArrayList<String>();
    29.  
    30. JavaPlugin plugin;
    31.  
    32. public DonateCUI(JavaPlugin plugin) {
    33. this.plugin = plugin;
    34.  
    35. }
    36.  
    37. public void onEnable() {
    38. donateInventory = Bukkit.createInventory(null, 36, ChatColor.WHITE + "" + ChatColor.BOLD + "Donate" + ChatColor.GREEN + "" + ChatColor.BOLD + " Menu");
    39.  
    40. }
    41.  
    42.  
    43.  
    44. public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args){
    45. final Player p = (Player) sender;
    46. if(cmd.getName().equalsIgnoreCase("donate")) {
    47.  
    48. ItemStack coal = new ItemStack(Material.DIAMOND_AXE);
    49. ItemMeta coalim = coal.getItemMeta();
    50. coalim.setDisplayName(ChatColor.GRAY + "Coal Rank");
    51. List<String> loreListcoal = new ArrayList<String>();
    52. loreListcoal.add(ChatColor.GOLD + "" + ChatColor.BOLD + "*" + ChatColor.WHITE + " Costs:" + ChatColor.GOLD + " 5 euro");
    53. coalim.setLore(loreListcoal);
    54. coal.setItemMeta(coalim);
    55.  
    56. ItemStack iron = new ItemStack(Material.IRON_INGOT);
    57. ItemMeta ironim = iron.getItemMeta();
    58. ironim.setDisplayName(ChatColor.GRAY + "Coal Rank");
    59. List<String> loreListiron = new ArrayList<String>();
    60. loreListiron.add(ChatColor.GOLD + "" + ChatColor.BOLD + "*" + ChatColor.WHITE + " Costs:" + ChatColor.GOLD + " 5 euro");
    61. ironim.setLore(loreListiron);
    62. iron.setItemMeta(ironim);
    63.  
    64. ItemStack gold = new ItemStack(Material.DIAMOND_AXE);
    65. ItemMeta goldim = gold.getItemMeta();
    66. goldim.setDisplayName(ChatColor.GRAY + "Coal Rank");
    67. List<String> loreListgold = new ArrayList<String>();
    68. loreListgold.add(ChatColor.GOLD + "" + ChatColor.BOLD + "*" + ChatColor.WHITE + " Costs:" + ChatColor.GOLD + " 5 euro");
    69. goldim.setLore(loreListgold);
    70. gold.setItemMeta(goldim);
    71.  
    72. ItemStack diamond = new ItemStack(Material.DIAMOND_AXE);
    73. ItemMeta diamondim = diamond.getItemMeta();
    74. diamondim.setDisplayName(ChatColor.GRAY + "Coal Rank");
    75. List<String> loreListdiamond = new ArrayList<String>();
    76. loreListdiamond.add(ChatColor.GOLD + "" + ChatColor.BOLD + "*" + ChatColor.WHITE + " Costs:" + ChatColor.GOLD + " 5 euro");
    77. diamondim.setLore(loreListdiamond);
    78. diamond.setItemMeta(diamondim);
    79.  
    80. ItemStack obsidian = new ItemStack(Material.DIAMOND_AXE);
    81. ItemMeta obsidianim = obsidian.getItemMeta();
    82. obsidianim.setDisplayName(ChatColor.GRAY + "Coal Rank");
    83. List<String> loreListobsidian = new ArrayList<String>();
    84. loreListobsidian.add(ChatColor.GOLD + "" + ChatColor.BOLD + "*" + ChatColor.WHITE + " Costs:" + ChatColor.GOLD + " 5 euro");
    85. obsidianim.setLore(loreListobsidian);
    86. obsidian.setItemMeta(obsidianim);
    87.  
    88. ItemStack bedrock = new ItemStack(Material.DIAMOND_AXE);
    89. ItemMeta bedrockim = bedrock.getItemMeta();
    90. bedrockim.setDisplayName(ChatColor.GRAY + "Coal Rank");
    91. List<String> loreListbedrock = new ArrayList<String>();
    92. loreListbedrock.add(ChatColor.GOLD + "" + ChatColor.BOLD + "*" + ChatColor.WHITE + " Costs:" + ChatColor.GOLD + " 5 euro");
    93. bedrockim.setLore(loreListbedrock);
    94. bedrock.setItemMeta(bedrockim);
    95.  
    96.  
    97. p.openInventory(donateInventory);
    98. viewing.add(p.getName());
    99. donateInventory.setItem(11, new ItemStack(coal));
    100. donateInventory.setItem(12, new ItemStack(iron));
    101. donateInventory.setItem(13, new ItemStack(gold));
    102. donateInventory.setItem(15, new ItemStack(diamond));
    103. donateInventory.setItem(16, new ItemStack(obsidian));
    104. donateInventory.setItem(17, new ItemStack(bedrock));
    105.  
    106. }
    107. return false;
    108. }
    109.  
    110.  
    111.  
    112. @EventHandler
    113. public void onInventoryClicks(InventoryClickEvent e) {
    114. if (viewing.contains(e.getWhoClicked().getName())) {
    115. e.setCancelled(true);
    116. final Player p = (Player) e.getWhoClicked();
    117. if(e.getInventory().getName().equals(donateInventory.getName())) {
    118. if(e.getCurrentItem().getType().equals(Material.DIAMOND_AXE)) {
    119. e.setCancelled(true);
    120. p.sendMessage(ChatColor.WHITE + "[" + ChatColor.GREEN + "Donators" + ChatColor.WHITE + "] " + ChatColor.GREEN + "You selected the" + ChatColor.RED + " Heal Skill" + ChatColor.GREEN + "!");
    121. Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), "pex user " + p.getName() + " remove skill.sword");
    122. Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), "pex user " + p.getName() + " remove skill.hoe");
    123. Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), "pex user " + p.getName() + " add skill.axe");
    124. p.closeInventory();
    125.  
    126. }
    127. else if(e.getInventory().getName().equals(donateInventory.getName())) {
    128. if(e.getCurrentItem().getType().equals(Material.DIAMOND_SWORD)) {
    129. e.setCancelled(true);
    130. p.sendMessage(ChatColor.WHITE + "[" + ChatColor.GREEN + "Donators" + ChatColor.WHITE + "] " + ChatColor.GREEN + "You selected the" + ChatColor.GOLD + " FireBall Skill" + ChatColor.GREEN + "!");
    131. Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), "pex user " + p.getName() + " remove skill.axe");
    132. Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), "pex user " + p.getName() + " remove skill.hoe");
    133. Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), "pex user " + p.getName() + " add skill.sword");
    134. p.closeInventory();
    135.  
    136. }
    137. else if(e.getInventory().getName().equals(donateInventory.getName())) {
    138. if(e.getCurrentItem().getType().equals(Material.DIAMOND_HOE)) {
    139. e.setCancelled(true);
    140. p.sendMessage(ChatColor.WHITE + "[" + ChatColor.GREEN + "Donators" + ChatColor.WHITE + "] " + ChatColor.GREEN + "You selected the" + ChatColor.AQUA + " EnderPearl Skill" + ChatColor.GREEN + "!");
    141. Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), "pex user " + p.getName() + " remove skill.sword");
    142. Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), "pex user " + p.getName() + " remove skill.axe");
    143. Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), "pex user " + p.getName() + " add skill.hoe");
    144. p.closeInventory();
    145.  
    146. }
    147. }
    148. }
    149. }
    150. }
    151. }
    152.  
    153. @EventHandler
    154. public void onInventoryClose(InventoryCloseEvent event) {
    155. if (viewing.contains(event.getPlayer().getName()))
    156. viewing.remove(event.getPlayer().getName());
    157. }
    158. }
    159.  


    CommandClass:

    Code:java
    1. package me.theholysheepnl.Donator;
    2.  
    3. import java.util.ArrayList;
    4. import java.util.List;
    5.  
    6. import org.bukkit.Bukkit;
    7. import org.bukkit.ChatColor;
    8. import org.bukkit.Material;
    9. import org.bukkit.command.Command;
    10. import org.bukkit.command.CommandExecutor;
    11. import org.bukkit.command.CommandSender;
    12. import org.bukkit.entity.Player;
    13. import org.bukkit.event.EventHandler;
    14. import org.bukkit.event.Listener;
    15. import org.bukkit.event.inventory.InventoryClickEvent;
    16. import org.bukkit.event.inventory.InventoryCloseEvent;
    17. import org.bukkit.inventory.Inventory;
    18. import org.bukkit.inventory.ItemStack;
    19. import org.bukkit.inventory.meta.ItemMeta;
    20. import org.bukkit.plugin.java.JavaPlugin;
    21.  
    22.  
    23.  
    24. public class DonateCUI implements Listener, CommandExecutor {
    25.  
    26. public static Inventory donateInventory;
    27.  
    28. List<String> viewing = new ArrayList<String>();
    29.  
    30. JavaPlugin plugin;
    31.  
    32. public DonateCUI(JavaPlugin plugin) {
    33. this.plugin = plugin;
    34.  
    35. }
    36.  
    37. public void onEnable() {
    38. donateInventory = Bukkit.createInventory(null, 36, ChatColor.WHITE + "" + ChatColor.BOLD + "Donate" + ChatColor.GREEN + "" + ChatColor.BOLD + " Menu");
    39.  
    40. }
    41.  
    42.  
    43.  
    44. public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args){
    45. final Player p = (Player) sender;
    46. if(cmd.getName().equalsIgnoreCase("donate")) {
    47.  
    48. ItemStack coal = new ItemStack(Material.DIAMOND_AXE);
    49. ItemMeta coalim = coal.getItemMeta();
    50. coalim.setDisplayName(ChatColor.GRAY + "Coal Rank");
    51. List<String> loreListcoal = new ArrayList<String>();
    52. loreListcoal.add(ChatColor.GOLD + "" + ChatColor.BOLD + "*" + ChatColor.WHITE + " Costs:" + ChatColor.GOLD + " 5 euro");
    53. coalim.setLore(loreListcoal);
    54. coal.setItemMeta(coalim);
    55.  
    56. ItemStack iron = new ItemStack(Material.IRON_INGOT);
    57. ItemMeta ironim = iron.getItemMeta();
    58. ironim.setDisplayName(ChatColor.GRAY + "Coal Rank");
    59. List<String> loreListiron = new ArrayList<String>();
    60. loreListiron.add(ChatColor.GOLD + "" + ChatColor.BOLD + "*" + ChatColor.WHITE + " Costs:" + ChatColor.GOLD + " 5 euro");
    61. ironim.setLore(loreListiron);
    62. iron.setItemMeta(ironim);
    63.  
    64. ItemStack gold = new ItemStack(Material.DIAMOND_AXE);
    65. ItemMeta goldim = gold.getItemMeta();
    66. goldim.setDisplayName(ChatColor.GRAY + "Coal Rank");
    67. List<String> loreListgold = new ArrayList<String>();
    68. loreListgold.add(ChatColor.GOLD + "" + ChatColor.BOLD + "*" + ChatColor.WHITE + " Costs:" + ChatColor.GOLD + " 5 euro");
    69. goldim.setLore(loreListgold);
    70. gold.setItemMeta(goldim);
    71.  
    72. ItemStack diamond = new ItemStack(Material.DIAMOND_AXE);
    73. ItemMeta diamondim = diamond.getItemMeta();
    74. diamondim.setDisplayName(ChatColor.GRAY + "Coal Rank");
    75. List<String> loreListdiamond = new ArrayList<String>();
    76. loreListdiamond.add(ChatColor.GOLD + "" + ChatColor.BOLD + "*" + ChatColor.WHITE + " Costs:" + ChatColor.GOLD + " 5 euro");
    77. diamondim.setLore(loreListdiamond);
    78. diamond.setItemMeta(diamondim);
    79.  
    80. ItemStack obsidian = new ItemStack(Material.DIAMOND_AXE);
    81. ItemMeta obsidianim = obsidian.getItemMeta();
    82. obsidianim.setDisplayName(ChatColor.GRAY + "Coal Rank");
    83. List<String> loreListobsidian = new ArrayList<String>();
    84. loreListobsidian.add(ChatColor.GOLD + "" + ChatColor.BOLD + "*" + ChatColor.WHITE + " Costs:" + ChatColor.GOLD + " 5 euro");
    85. obsidianim.setLore(loreListobsidian);
    86. obsidian.setItemMeta(obsidianim);
    87.  
    88. ItemStack bedrock = new ItemStack(Material.DIAMOND_AXE);
    89. ItemMeta bedrockim = bedrock.getItemMeta();
    90. bedrockim.setDisplayName(ChatColor.GRAY + "Coal Rank");
    91. List<String> loreListbedrock = new ArrayList<String>();
    92. loreListbedrock.add(ChatColor.GOLD + "" + ChatColor.BOLD + "*" + ChatColor.WHITE + " Costs:" + ChatColor.GOLD + " 5 euro");
    93. bedrockim.setLore(loreListbedrock);
    94. bedrock.setItemMeta(bedrockim);
    95.  
    96.  
    97. p.openInventory(donateInventory);
    98. viewing.add(p.getName());
    99. donateInventory.setItem(11, new ItemStack(coal));
    100. donateInventory.setItem(12, new ItemStack(iron));
    101. donateInventory.setItem(13, new ItemStack(gold));
    102. donateInventory.setItem(15, new ItemStack(diamond));
    103. donateInventory.setItem(16, new ItemStack(obsidian));
    104. donateInventory.setItem(17, new ItemStack(bedrock));
    105.  
    106. }
    107. return false;
    108. }
    109.  
    110.  
    111.  
    112. @EventHandler
    113. public void onInventoryClicks(InventoryClickEvent e) {
    114. if (viewing.contains(e.getWhoClicked().getName())) {
    115. e.setCancelled(true);
    116. final Player p = (Player) e.getWhoClicked();
    117. if(e.getInventory().getName().equals(donateInventory.getName())) {
    118. if(e.getCurrentItem().getType().equals(Material.DIAMOND_AXE)) {
    119. e.setCancelled(true);
    120. p.sendMessage(ChatColor.WHITE + "[" + ChatColor.GREEN + "Donators" + ChatColor.WHITE + "] " + ChatColor.GREEN + "You selected the" + ChatColor.RED + " Heal Skill" + ChatColor.GREEN + "!");
    121. Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), "pex user " + p.getName() + " remove skill.sword");
    122. Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), "pex user " + p.getName() + " remove skill.hoe");
    123. Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), "pex user " + p.getName() + " add skill.axe");
    124. p.closeInventory();
    125.  
    126. }
    127. else if(e.getInventory().getName().equals(donateInventory.getName())) {
    128. if(e.getCurrentItem().getType().equals(Material.DIAMOND_SWORD)) {
    129. e.setCancelled(true);
    130. p.sendMessage(ChatColor.WHITE + "[" + ChatColor.GREEN + "Donators" + ChatColor.WHITE + "] " + ChatColor.GREEN + "You selected the" + ChatColor.GOLD + " FireBall Skill" + ChatColor.GREEN + "!");
    131. Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), "pex user " + p.getName() + " remove skill.axe");
    132. Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), "pex user " + p.getName() + " remove skill.hoe");
    133. Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), "pex user " + p.getName() + " add skill.sword");
    134. p.closeInventory();
    135.  
    136. }
    137. else if(e.getInventory().getName().equals(donateInventory.getName())) {
    138. if(e.getCurrentItem().getType().equals(Material.DIAMOND_HOE)) {
    139. e.setCancelled(true);
    140. p.sendMessage(ChatColor.WHITE + "[" + ChatColor.GREEN + "Donators" + ChatColor.WHITE + "] " + ChatColor.GREEN + "You selected the" + ChatColor.AQUA + " EnderPearl Skill" + ChatColor.GREEN + "!");
    141. Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), "pex user " + p.getName() + " remove skill.sword");
    142. Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), "pex user " + p.getName() + " remove skill.axe");
    143. Bukkit.getServer().dispatchCommand(Bukkit.getServer().getConsoleSender(), "pex user " + p.getName() + " add skill.hoe");
    144. p.closeInventory();
    145.  
    146. }
    147. }
    148. }
    149. }
    150. }
    151. }
    152.  
    153. @EventHandler
    154. public void onInventoryClose(InventoryCloseEvent event) {
    155. if (viewing.contains(event.getPlayer().getName()))
    156. viewing.remove(event.getPlayer().getName());
    157. }
    158. }
    159.  
    160.  
    161.  
    162.  



    Error:
    Code:java
    1. [17:31:22 INFO]: TheHolySheep_NL issued server command: /donate
    2. [17:31:22 ERROR]: null
    3. org.bukkit.command.CommandException: Unhandled exception executing command 'dona
    4. te' in plugin Donator v0.2
    5. at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[cra
    6. ftbukkit.jar:git-Bukkit-1.7.2-R0.2-1-gbafd450-b2975jnks]
    7. at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:19
    8. 6) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.2-1-gbafd450-b2975jnks]
    9. at org.bukkit.craftbukkit.v1_7_R1.CraftServer.dispatchCommand(CraftServe
    10. r.java:542) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.2-1-gbafd450-b2975jnks]
    11. at net.minecraft.server.v1_7_R1.PlayerConnection.handleCommand(PlayerCon
    12. nection.java:932) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-1-gbafd450-b2975jnks]
    13. at net.minecraft.server.v1_7_R1.PlayerConnection.a(PlayerConnection.java
    14. :814) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-1-gbafd450-b2975jnks]
    15. at net.minecraft.server.v1_7_R1.PacketPlayInChat.a(PacketPlayInChat.java
    16. :28) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-1-gbafd450-b2975jnks]
    17. at net.minecraft.server.v1_7_R1.PacketPlayInChat.handle(PacketPlayInChat
    18. .java:47) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-1-gbafd450-b2975jnks]
    19. at net.minecraft.server.v1_7_R1.NetworkManager.a(NetworkManager.java:146
    20. ) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-1-gbafd450-b2975jnks]
    21. at net.minecraft.server.v1_7_R1.ServerConnection.c(SourceFile:134) [craf
    22. tbukkit.jar:git-Bukkit-1.7.2-R0.2-1-gbafd450-b2975jnks]
    23. at net.minecraft.server.v1_7_R1.MinecraftServer.u(MinecraftServer.java:6
    24. 55) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-1-gbafd450-b2975jnks]
    25. at net.minecraft.server.v1_7_R1.DedicatedServer.u(DedicatedServer.java:2
    26. 50) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-1-gbafd450-b2975jnks]
    27. at net.minecraft.server.v1_7_R1.MinecraftServer.t(MinecraftServer.java:5
    28. 45) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-1-gbafd450-b2975jnks]
    29. at net.minecraft.server.v1_7_R1.MinecraftServer.run(MinecraftServer.java
    30. :457) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-1-gbafd450-b2975jnks]
    31. at net.minecraft.server.v1_7_R1.ThreadServerApplication.run(SourceFile:6
    32. 17) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-1-gbafd450-b2975jnks]
    33. Caused by: java.lang.NullPointerException
    34. at org.bukkit.craftbukkit.v1_7_R1.entity.CraftHumanEntity.openInventory(
    35. CraftHumanEntity.java:185) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.2-1-gbafd450-b2
    36. 975jnks]
    37. at me.theholysheepnl.Donator.DonateCUI.onCommand(DonateCUI.java:97) ~[?:
    38. ?]
    39. at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[cra
    40. ftbukkit.jar:git-Bukkit-1.7.2-R0.2-1-gbafd450-b2975jnks]
    41. ... 13 more
     
  2. TheHolySheep_NL
    You aren't extending JavaPlugin in your main class

    Edit: Also, why do you have 2 of the exact same classes?
     
  3. Offline

    adam753

    You've pasted your DonateCUI code into both boxes by mistake, but it doesn't matter, the problem is there.
    You're getting a NullPointerException because donateInventory is null. You're setting it in onEnable, but onEnable only gets called automatically in your main class.
    Remove the onEnable method from DonateCUI and put the line in the constructor above it, and it should work.
     
  4. Offline

    TheHolySheep_NL

    @TheGamingGrunts
    It workes :)

    - Sheep

    adam753
    Thanks it worked now!!

    - Sheep
    (ps. is it bad to make many threads? (just a random question)

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jun 7, 2016
Thread Status:
Not open for further replies.

Share This Page