Solved Random NULL coming out of onCommand statement.

Discussion in 'Plugin Development' started by 2000callum, May 9, 2014.

Thread Status:
Not open for further replies.
  1. Im trying to make some SIMPLE commands but i dont know whats going on, im so lost whats going on ive read the stacktrace but stall nothing is making some sense. can you guys/girls help out

    StackTrace:
    Code:java
    1. [19:14:19 ERROR]: null
    2. org.bukkit.command.CommandException: Unhandled exception executing command 'dgdrops' in plugin Delogaming-Drops v1.2
    3. at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[bukkit.jar:git-Spigot-1406]
    4. at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:180) ~[bukkit.jar:git-Spigot-1406]
    5. at org.bukkit.craftbukkit.v1_7_R3.CraftServer.dispatchCommand(CraftServer.java:717) ~[bukkit.jar:git-Spigot-1406]
    6. at net.minecraft.server.v1_7_R3.PlayerConnection.handleCommand(PlayerConnection.java:985) [bukkit.jar:git-Spigot-1406]
    7. at net.minecraft.server.v1_7_R3.PlayerConnection.a(PlayerConnection.java:830) [bukkit.jar:git-Spigot-1406]
    8. at net.minecraft.server.v1_7_R3.PacketPlayInChat.a(PacketPlayInChat.java:28) [bukkit.jar:git-Spigot-1406]
    9. at net.minecraft.server.v1_7_R3.PacketPlayInChat.handle(PacketPlayInChat.java:65) [bukkit.jar:git-Spigot-1406]
    10. at net.minecraft.server.v1_7_R3.NetworkManager.a(NetworkManager.java:163) [bukkit.jar:git-Spigot-1406]
    11. at net.minecraft.server.v1_7_R3.ServerConnection.c(ServerConnection.java:77) [bukkit.jar:git-Spigot-1406]
    12. at net.minecraft.server.v1_7_R3.MinecraftServer.v(MinecraftServer.java:713) [bukkit.jar:git-Spigot-1406]
    13. at net.minecraft.server.v1_7_R3.DedicatedServer.v(DedicatedServer.java:283) [bukkit.jar:git-Spigot-1406]
    14. at net.minecraft.server.v1_7_R3.MinecraftServer.u(MinecraftServer.java:576) [bukkit.jar:git-Spigot-1406]
    15. at net.minecraft.server.v1_7_R3.MinecraftServer.run(MinecraftServer.java:482) [bukkit.jar:git-Spigot-1406]
    16. at net.minecraft.server.v1_7_R3.ThreadServerApplication.run(SourceFile:628) [bukkit.jar:git-Spigot-1406]
    17. Caused by: java.lang.ArrayIndexOutOfBoundsException: 0
    18. at net.delogaming.callumcarmicheal.Drops.onCommand(Drops.java:109) ~[?:?]
    19. at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[bukkit.jar:git-Spigot-1406]
    20. ... 13 more
    21.  


    Source Code from Plugin (Ignore the unused imports im going to use them or remove them later):

    Code:java
    1. package net.delogaming.callumcarmicheal;
    2.  
    3. import java.awt.Event;
    4. import java.io.File;
    5. import java.util.ArrayList;
    6. import java.util.Arrays;
    7. import java.util.HashMap;
    8. import java.util.Iterator;
    9. import java.util.List;
    10. import java.util.Map;
    11. import java.util.Random;
    12. import java.util.UUID;
    13. import java.util.logging.Logger;
    14.  
    15. import org.bukkit.Bukkit;
    16. import org.bukkit.Location;
    17. import org.bukkit.Material;
    18. import org.bukkit.Server;
    19. import org.bukkit.Sound;
    20. import org.bukkit.World;
    21. import org.bukkit.block.Block;
    22. import org.bukkit.command.Command;
    23. import org.bukkit.command.CommandSender;
    24. import org.bukkit.enchantments.Enchantment;
    25. import org.bukkit.entity.HumanEntity;
    26. import org.bukkit.entity.Player;
    27. import org.bukkit.event.EventHandler;
    28. import org.bukkit.event.EventPriority;
    29. import org.bukkit.event.Listener;
    30. import org.bukkit.event.block.Action;
    31. import org.bukkit.event.block.BlockBreakEvent;
    32. import org.bukkit.event.inventory.InventoryClickEvent;
    33. import org.bukkit.event.inventory.InventoryCloseEvent;
    34. import org.bukkit.event.inventory.InventoryDragEvent;
    35. import org.bukkit.event.player.PlayerInteractEvent;
    36. import org.bukkit.inventory.Inventory;
    37. import org.bukkit.inventory.InventoryView;
    38. import org.bukkit.inventory.ItemStack;
    39. import org.bukkit.inventory.meta.ItemMeta;
    40. import org.bukkit.permissions.Permission;
    41. import org.bukkit.plugin.PluginManager;
    42. import org.bukkit.plugin.java.JavaPlugin;
    43. import org.bukkit.scheduler.BukkitScheduler;
    44.  
    45. public class Drops extends JavaPlugin implements Listener {
    46.  
    47. public final Logger logger = Logger.getLogger("Minecraft");
    48.  
    49. @Override
    50. public void onEnable() {
    51. saveDefaultConfig();
    52. Server server = this.getServer();
    53. PluginManager pm = getServer().getPluginManager();
    54. Bukkit.getPluginManager().registerEvents(this, this);
    55. }
    56.  
    57. @Override
    58. public void onDisable() {
    59. saveDefaultConfig();
    60. Server server = this.getServer();
    61. PluginManager pm = getServer().getPluginManager();
    62. }
    63.  
    64. public static void SpawnItemEntity(org.bukkit.block.Block block, Location loc, ItemStack b)
    65. {
    66. block.getWorld().dropItemNaturally( loc, b );
    67. }
    68.  
    69. @SuppressWarnings("deprecation")
    70. @EventHandler(priority = EventPriority.HIGH)
    71. public void onBlockBreak(BlockBreakEvent e) {
    72. Player p = e.getPlayer();
    73. Block b = e.getBlock();
    74. Location loc = b.getLocation();
    75.  
    76. if(p.hasPermission("dgsmelt.use") || p.isOp())
    77. {
    78. if( !( getConfig().getString( "Blocks.ID."+e.getBlock().getTypeId()+".ItemToDropID" ) == null ) )
    79. {
    80. if ( !( b.getDrops() == null ) )
    81. {
    82. e.getBlock().getDrops().clear();
    83. ItemStack Item = new ItemStack( getConfig().getInt( "Blocks.ID."+e.getBlock().getTypeId()+".ItemToDropID" ) );
    84. SpawnItemEntity(b, loc, Item);
    85. }
    86. }
    87. }
    88. }
    89.  
    90. @Override
    91. public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
    92. if(sender instanceof Player)
    93. {
    94. Player player = (Player) sender;
    95.  
    96. // Command Centre
    97. if(commandLabel.equalsIgnoreCase("dgdrops")){
    98.  
    99. // Format args if(!(args == null) && (args[0].equalsIgnoreCase("args here")))
    100.  
    101. if(args == null)
    102. {
    103. player.sendMessage("[DGDrops] ===Commands===");
    104. player.sendMessage("[DGDrops] Add | Add a block to database");
    105. player.sendMessage("[DGDrops] Reload | Reload Config");
    106. return false;
    107. }
    108.  
    109. if(!(args == null) && (args[0].equalsIgnoreCase("reload")))
    110. {
    111. if (player.hasPermission("dgsdrops.admin.reload") == true || player.isOp() == true)
    112. {
    113. reloadConfig();
    114. player.sendMessage("[DGDrops] reloaded config");
    115. }
    116. }
    117.  
    118. if(!(args == null) && (args[0].equalsIgnoreCase("add")))
    119. {
    120. if(player.isOp() || player.hasPermission("dgsdrops.admin.add"))
    121. {
    122. if(args[1] == null)
    123. {player.sendMessage("[DGDrops] Error 419: Invaild Argument");player.sendMessage(" dgsdrops:");player.sendMessage(" Arg 1: Block ID");player.sendMessage(" Arg 2: Block2DropID");player.sendMessage(" Arg 3: NameofBlock");}
    124. else if(args[2] == null)
    125. {player.sendMessage("[DGDrops] Error 419: Invaild Argument");player.sendMessage(" dgsdrops:");player.sendMessage(" Arg 1: Block ID");player.sendMessage(" Arg 2: Block2DropID");player.sendMessage(" Arg 3: NameofBlock");}
    126. else if(args[3] == null)
    127. {player.sendMessage("[DGDrops] Error 419: Invaild Argument");player.sendMessage(" dgsdrops:");player.sendMessage(" Arg 1: Block ID");player.sendMessage(" Arg 2: Block2DropID");player.sendMessage(" Arg 3: NameofBlock");}
    128. else
    129. {
    130. String ID = args[1]; String B2D = args[2]; String NOB = args[3];
    131. player.sendMessage("[DGDrops] Block Added successfully");
    132. player.sendMessage("[DGDrops]" + ("[ID: " + ID) + (";BlockToDrop:" + B2D) + (";NameOfBlock" + NOB) + "]");
    133. getConfig().set("Drops.ID" + ID + ".DropID", B2D);
    134. getConfig().set("Drops.ID" + ID + ".Name", NOB);
    135. player.sendMessage("[DGDrops] reloaded config");
    136. }
    137. }
    138. }
    139. }
    140. }
    141. return false;
    142. }
    143. }
    144.  


    My Plugin yml:
    Code:
    name: Delogaming-Drops
    main: net.delogaming.callumcarmicheal.Drops
    version: 1.2
    description: It will autosmelt what you mine
    commands:
      dgdrops:
          description: DGDrops command
          usage: /<command> [RELOAD/ADD]
    authors: [CallumCarmicheal]
    permissions:
      dgsdrops.admin.add:
          description: DGSDrops Add an Item
          default: false
      dgsdrops.admin.reload:
          description: DGSDrops Reload
          default: false
      dgsdrops.use:
          description: DGSDrops Use
          default: true
      dgsdrops.deny:
          description: DGSDrops Stop Using
          default: false
    Does anyone know what the problem is... im so lost i dont understand what is going on.

    I've even try to error trap the args array but it stall wont swash that bug. ;(

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

    Denziz

    2000callum

    Code:java
    1. at net.delogaming.callumcarmicheal.Drops.onCommand(Drops.java:109)
    Line 109.

    Line 109 equals,
    Code:java
    1. if(!(args == null) && (args[0].equalsIgnoreCase("reload")))


    Try and see if it works to change it to
    Code:java
    1. if(args[0].equalsIgnoreCase("reload")){
     
  3. Stall same error

    Stack Trace:
    Code:java
    1. org.bukkit.command.CommandException: Unhandled exception executing command 'dgdrops' in plugin Delogaming-Drops v1.2
    2. at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[bukkit.jar:git-Spigot-1406]
    3. at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:180) ~[bukkit.jar:git-Spigot-1406]
    4. at org.bukkit.craftbukkit.v1_7_R3.CraftServer.dispatchCommand(CraftServer.java:717) ~[bukkit.jar:git-Spigot-1406]
    5. at net.minecraft.server.v1_7_R3.PlayerConnection.handleCommand(PlayerConnection.java:985) [bukkit.jar:git-Spigot-1406]
    6. at net.minecraft.server.v1_7_R3.PlayerConnection.a(PlayerConnection.java:830) [bukkit.jar:git-Spigot-1406]
    7. at net.minecraft.server.v1_7_R3.PacketPlayInChat.a(PacketPlayInChat.java:28) [bukkit.jar:git-Spigot-1406]
    8. at net.minecraft.server.v1_7_R3.PacketPlayInChat.handle(PacketPlayInChat.java:65) [bukkit.jar:git-Spigot-1406]
    9. at net.minecraft.server.v1_7_R3.NetworkManager.a(NetworkManager.java:163) [bukkit.jar:git-Spigot-1406]
    10. at net.minecraft.server.v1_7_R3.ServerConnection.c(ServerConnection.java:77) [bukkit.jar:git-Spigot-1406]
    11. at net.minecraft.server.v1_7_R3.MinecraftServer.v(MinecraftServer.java:713) [bukkit.jar:git-Spigot-1406]
    12. at net.minecraft.server.v1_7_R3.DedicatedServer.v(DedicatedServer.java:283) [bukkit.jar:git-Spigot-1406]
    13. at net.minecraft.server.v1_7_R3.MinecraftServer.u(MinecraftServer.java:576) [bukkit.jar:git-Spigot-1406]
    14. at net.minecraft.server.v1_7_R3.MinecraftServer.run(MinecraftServer.java:482) [bukkit.jar:git-Spigot-1406]
    15. at net.minecraft.server.v1_7_R3.ThreadServerApplication.run(SourceFile:628) [bukkit.jar:git-Spigot-1406]
    16. Caused by: java.lang.ArrayIndexOutOfBoundsException: 0
    17. at net.delogaming.callumcarmicheal.Drops.onCommand(Drops.java:103) ~[?:?]
    18. at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[bukkit.jar:git-Spigot-1406]
    19. ... 13 more
    20.  


    onCommand source:
    Code:java
    1. @Override
    2. public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
    3. if (sender instanceof Player) {
    4. Player player = (Player) sender;
    5.  
    6. // Command Centre
    7. if (commandLabel.equalsIgnoreCase("dgdrops")) {
    8.  
    9. // Format args if(!(args == null) && (args[0].equalsIgnoreCase("args here")))
    10.  
    11. if (args == null)
    12. {
    13. player.sendMessage("[DGDrops] ===Commands===");
    14. player.sendMessage("[DGDrops] Add | Add a block to database");
    15. player.sendMessage("[DGDrops] Reload | Reload Config");
    16. }
    17.  
    18. if (args[0].equalsIgnoreCase("reload"))
    19. {
    20. if (player.hasPermission("dgsdrops.admin.reload") == true || player.isOp() == true) {
    21. reloadConfig();
    22. player.sendMessage("[DGDrops] reloaded config");
    23. }
    24. }
    25.  
    26. if (args[0].equalsIgnoreCase("add"))
    27. {
    28. if (player.isOp() || player.hasPermission("dgsdrops.admin.add")) {
    29. if (args[1] == null) {
    30. player.sendMessage("[DGDrops] Error 419: Invaild Argument");
    31. player.sendMessage(" dgsdrops:");
    32. player.sendMessage(" Arg 1: Block ID");
    33. player.sendMessage(" Arg 2: Block2DropID");
    34. player.sendMessage(" Arg 3: NameofBlock");
    35. } else if (args[2] == null) {
    36. player.sendMessage("[DGDrops] Error 419: Invaild Argument");
    37. player.sendMessage(" dgsdrops:");
    38. player.sendMessage(" Arg 1: Block ID");
    39. player.sendMessage(" Arg 2: Block2DropID");
    40. player.sendMessage(" Arg 3: NameofBlock");
    41. } else if (args[3] == null) {
    42. player.sendMessage("[DGDrops] Error 419: Invaild Argument");
    43. player.sendMessage(" dgsdrops:");
    44. player.sendMessage(" Arg 1: Block ID");
    45. player.sendMessage(" Arg 2: Block2DropID");
    46. player.sendMessage(" Arg 3: NameofBlock");
    47. } else {
    48. String ID = args[1];
    49. String B2D = args[2];
    50. String NOB = args[3];
    51. player.sendMessage("[DGDrops] Block Added successfully");
    52. player.sendMessage("[DGDrops]" + ("[ID: " + ID) + (";BlockToDrop:" + B2D) + (";NameOfBlock" + NOB) + "]");
    53. getConfig().set("Drops.ID" + ID + ".DropID", B2D);
    54. getConfig().set("Drops.ID" + ID + ".Name", NOB);
    55. player.sendMessage("[DGDrops] reloaded config");
    56. }
    57. }
    58. }
    59. }
    60. }
    61. return false;
    62. }
    63.  


    The Error Line:
    Code:java
    1. if (args[0].equalsIgnoreCase("reload"))
    2. {
    3. if (player.hasPermission("dgsdrops.admin.reload") == true || player.isOp() == true) {
    4. reloadConfig();
    5. player.sendMessage("[DGDrops] reloaded config");
    6. }
    7. }
     
  4. Offline

    Denziz

    Hmm....
    Try this.
    Code:java
    1. if(sender instanceof Player){
    2. Player player = (Player) sender;
    3.  
    4. // Command Centre
    5. if(commandLabel.equalsIgnoreCase("dgdrops")){
    6.  
    7. // Format args if(!(args == null) && (args[0].equalsIgnoreCase("args here")))
    8.  
    9. //If it is just /dgdrops
    10. if(args.length == 0){
    11. player.sendMessage("[DGDrops] ===Commands===");
    12. player.sendMessage("[DGDrops] Add | Add a block to database");
    13. player.sendMessage("[DGDrops] Reload | Reload Config");
    14. return false;
    15. }
    16.  
    17. //If it is /dgdrops reload
    18. if(args[0].equalsIgnoreCase("reload")){
    19. if(player.hasPermission("dgsdrops.admin.reload") == true || player.isOp() == true){
    20. this.reloadConfig();
    21. player.sendMessage("[DGDrops] reloaded config");
    22. }
    23. }
    24.  
    25. //If it is /dgdrops add
    26. if(args[0].equalsIgnoreCase("add")){
    27. if(player.isOp() || player.hasPermission("dgsdrops.admin.add")){
    28. //If the args 1, 2 or 3 is null
    29. if(args[1].equals(null)){
    30. player.sendMessage("[DGDrops] Error 419: Invaild Argument");player.sendMessage(" dgsdrops:");player.sendMessage(" Arg 1: Block ID");player.sendMessage(" Arg 2: Block2DropID");player.sendMessage(" Arg 3: NameofBlock");}
    31. else if(args[2] == null)
    32. {player.sendMessage("[DGDrops] Error 419: Invaild Argument");player.sendMessage(" dgsdrops:");player.sendMessage(" Arg 1: Block ID");player.sendMessage(" Arg 2: Block2DropID");player.sendMessage(" Arg 3: NameofBlock");}
    33. else if(args[3] == null)
    34. {player.sendMessage("[DGDrops] Error 419: Invaild Argument");player.sendMessage(" dgsdrops:");player.sendMessage(" Arg 1: Block ID");player.sendMessage(" Arg 2: Block2DropID");player.sendMessage(" Arg 3: NameofBlock");}
    35. else
    36. {
    37. String ID = args[1]; String B2D = args[2]; String NOB = args[3];
    38. player.sendMessage("[DGDrops] Block Added successfully");
    39. player.sendMessage("[DGDrops]" + ("[ID: " + ID) + (";BlockToDrop:" + B2D) + (";NameOfBlock" + NOB) + "]");
    40. this.getConfig().set("Drops.ID" + ID + ".DropID", B2D);
    41. this.getConfig().set("Drops.ID" + ID + ".Name", NOB);
    42. player.sendMessage("[DGDrops] reloaded config");
    43. }
    44. }
    45. }
    46. }
    47. }
    48. return false;
    49. }
     
  5. Omg i dont know what u did but you fixed it thanks ;)

    wait was the the spaces between the if statement and the brackets?
     
  6. Offline

    Denziz

    Cheers m8, glad to help you out :D
     
  7. Offline

    ChunkMe

    Please change the prefix to Solved
     
  8. Offline

    Denziz

    Nope :p , took away
    Code:java
    1. if(!(args == null)
     
  9. Thanks
    Just did, thanks for reminding!

    Thanks for the help ;)
     
Thread Status:
Not open for further replies.

Share This Page