Bad Brackets Fer Dayz

Discussion in 'Plugin Development' started by Onlineids, Apr 3, 2014.

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

    Onlineids

    So I am making a custom enchant plugin and heres the command part putting the enchantment on an item and giving it to the player. I just keep getting array out of bounds errors I know why because im asking for args before I even verify that they are there. I just cant figure out how to rearrange it so it works properly and keeps all its functionality. Heres the code:

    Code:java
    1. package me.online.CustomEnchants;
    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.CommandSender;
    11. import org.bukkit.entity.Player;
    12. import org.bukkit.event.Listener;
    13. import org.bukkit.inventory.ItemStack;
    14. import org.bukkit.inventory.meta.ItemMeta;
    15. import org.bukkit.plugin.java.JavaPlugin;
    16.  
    17. public class Main extends JavaPlugin implements Listener{
    18. public void onEnable(){
    19. Bukkit.getServer().getPluginManager().registerEvents(this, this);
    20. Bukkit.getServer().getLogger().info(ChatColor.GREEN + "Custom Enchants Enabled!");
    21. getConfig().options().copyDefaults(true);
    22. getConfig().options().header("WELCOME TO CUSTOM ENCHANTS CONFIG!!!\r\nSupports Color Codes!\r\nKeep text between quotes!");
    23. getConfig().options().copyHeader(true);
    24. saveConfig();
    25. }
    26.  
    27. public final String prefix1 = getConfig().getString("prefix");
    28. public final String prefix = ChatColor.translateAlternateColorCodes('&', prefix1);
    29. public void onDisable(){
    30. Bukkit.getServer().getLogger().info(ChatColor.DARK_RED + "Custom Enchants Disabled!");
    31. }
    32. @Override
    33. public boolean onCommand(CommandSender sender, Command command,
    34. String label, String[] args) {
    35. if(!(sender instanceof Player)){
    36. sender.sendMessage(ChatColor.DARK_RED + "Only players can use this!");
    37. return true;
    38. }else{
    39. final Player p = ((Player) sender).getPlayer();
    40. if(command.getName().equalsIgnoreCase("ce")){
    41. if(sender.hasPermission("customenchants.give")){
    42. if(args.length > 0){
    43. if((args[0]).equalsIgnoreCase("give")){
    44.  
    45.  
    46. if(args.length == 5){
    47. if(!(args[2]).equalsIgnoreCase("sword") || !(args[2]).equalsIgnoreCase("axe") || !(args[2]).equalsIgnoreCase("helmet") || !(args[2]).equalsIgnoreCase("chestplate") || !(args[2]).equalsIgnoreCase("leggings") || !(args[2]).equalsIgnoreCase("boots")){
    48. p.sendMessage(prefix + ChatColor.AQUA + " That item isnt enchantable do '/ce items' to see possible ones!");
    49. return true;
    50. }else if(!(args[3]).equalsIgnoreCase("dodge") || !(args[3]).equalsIgnoreCase("critical") || !(args[3]).equalsIgnoreCase("speed") || !(args[3]).equalsIgnoreCase("poison")){
    51. p.sendMessage(prefix + ChatColor.AQUA + " That isnt an available enchantment do '/ce enchantments' to see possible ones!");
    52. return true;
    53. }else try{
    54. Integer.parseInt(args[4]);
    55. }catch (Exception e) {
    56. sender.sendMessage(prefix + ChatColor.DARK_RED + " The final arg (Level) isn't a number!");
    57. return false;
    58.  
    59. }
    60.  
    61. else if(((args[2]).equalsIgnoreCase("sword") && (args[3]).equalsIgnoreCase("dodge")) || ((args[2]).equalsIgnoreCase("axe") && (args[3]).equalsIgnoreCase("dodge")) || ((args[2]).equalsIgnoreCase("axe") && (args[3]).equalsIgnoreCase("speed")) || ((args[2]).equalsIgnoreCase("sword") && (args[3]).equalsIgnoreCase("speed")) || ((args[2]).equalsIgnoreCase("helmet") && (args[3]).equalsIgnoreCase("critical")) || ((args[2]).equalsIgnoreCase("helmet") && (args[3]).equalsIgnoreCase("poison")) || ((args[2]).equalsIgnoreCase("chestplate") && (args[3]).equalsIgnoreCase("poison")) || ((args[2]).equalsIgnoreCase("chestplate") && (args[3]).equalsIgnoreCase("critical")) || ((args[2]).equalsIgnoreCase("leggings") && (args[3]).equalsIgnoreCase("critical")) || ((args[2]).equalsIgnoreCase("leggings") && (args[3]).equalsIgnoreCase("poison")) || ((args[2]).equalsIgnoreCase("boots") && (args[3]).equalsIgnoreCase("poison")) || (args[2]).equalsIgnoreCase("boots") && (args[3]).equalsIgnoreCase("critical")){
    62. p.sendMessage(prefix + ChatColor.AQUA + " That item and enchantment dont go together!");
    63. p.sendMessage(prefix + ChatColor.AQUA + " Do '/ec enchantments' to see ones that do!");
    64. return true;
    65. }
    66.  
    67. else if(Integer.parseInt((args[4])) >= 1 && Integer.parseInt((args[4])) <= 5){
    68. int a = Integer.parseInt((args[4]));
    69. String c = (args[3]).toLowerCase();
    70. if((args[2]).equalsIgnoreCase("sword")){
    71. ItemStack item = new ItemStack(Material.DIAMOND_SWORD, 1);
    72. ItemMeta im = item.getItemMeta();
    73. List<String> lore;
    74. lore = new ArrayList<String>();
    75. String g = a + "";
    76. String h = ChatColor.GRAY + c.replace("critical", "Critical").replace("dodge", "Dodge").replace("speed", "Speed").replace("poison", "Poison") + ChatColor.GRAY + g.replace("1", " I").replace("2", " II").replace("3", " III").replace("4", " IV").replace("5", " V");
    77. lore.add(h);
    78. im.setLore(lore);
    79. item.setItemMeta(im);
    80. Player player = Bukkit.getPlayer((args[1]));
    81. String name = player.getName();
    82. player.getInventory().addItem(item);
    83. String c1 = (args[3]).toUpperCase();
    84. p.sendMessage(prefix + " " + ChatColor.GREEN + c1 + ChatColor.AQUA + " Level " + ChatColor.GREEN + g + ChatColor.AQUA + " Sword added to " + ChatColor.GREEN + name + "'s" + ChatColor.AQUA + " inventory!");
    85. return true;
    86. }else if((args[2]).equalsIgnoreCase("axe")){
    87. ItemStack item = new ItemStack(Material.DIAMOND_AXE, 1);
    88. ItemMeta im = item.getItemMeta();
    89. List<String> lore;
    90. lore = new ArrayList<String>();
    91. String g = a + "";
    92. String h = ChatColor.GRAY + c.replace("critical", "Critical").replace("dodge", "Dodge").replace("speed", "Speed").replace("poison", "Poison") + ChatColor.GRAY + g.replace("1", " I").replace("2", " II").replace("3", " III").replace("4", " IV").replace("5", " V");
    93. lore.add(h);
    94. im.setLore(lore);
    95. item.setItemMeta(im);
    96. Player player = Bukkit.getPlayer((args[1]));
    97. String name = player.getName();
    98. player.getInventory().addItem(item);
    99. String c1 = (args[3]).toUpperCase();
    100. p.sendMessage(prefix + " " + ChatColor.GREEN + c1 + ChatColor.AQUA + " Level " + ChatColor.GREEN + g + ChatColor.AQUA + " Axe added to " + ChatColor.GREEN + name + "'s" + ChatColor.AQUA + " inventory!");
    101. return true;
    102. }else if((args[2]).equalsIgnoreCase("helmet")){
    103. ItemStack item = new ItemStack(Material.DIAMOND_HELMET, 1);
    104. ItemMeta im = item.getItemMeta();
    105. List<String> lore;
    106. lore = new ArrayList<String>();
    107. String g = a + "";
    108. String h = ChatColor.GRAY + c.replace("critical", "Critical").replace("dodge", "Dodge").replace("speed", "Speed").replace("poison", "Poison") + ChatColor.GRAY + g.replace("1", " I").replace("2", " II").replace("3", " III").replace("4", " IV").replace("5", " V");
    109. lore.add(h);
    110. im.setLore(lore);
    111. item.setItemMeta(im);
    112. Player player = Bukkit.getPlayer((args[1]));
    113. String name = player.getName();
    114. player.getInventory().addItem(item);
    115. String c1 = (args[3]).toUpperCase();
    116. p.sendMessage(prefix + " " + ChatColor.GREEN + c1 + ChatColor.AQUA + " Level " + ChatColor.GREEN + g + ChatColor.AQUA + " Helmet added to " + ChatColor.GREEN + name + "'s" + ChatColor.AQUA + " inventory!");
    117. return true;
    118. }else if((args[2]).equalsIgnoreCase("chestplate")){
    119. ItemStack item = new ItemStack(Material.DIAMOND_CHESTPLATE, 1);
    120. ItemMeta im = item.getItemMeta();
    121. List<String> lore;
    122. lore = new ArrayList<String>();
    123. String g = a + "";
    124. String h = ChatColor.GRAY + c.replace("critical", "Critical").replace("dodge", "Dodge").replace("speed", "Speed").replace("poison", "Poison") + ChatColor.GRAY + g.replace("1", " I").replace("2", " II").replace("3", " III").replace("4", " IV").replace("5", " V");
    125. lore.add(h);
    126. im.setLore(lore);
    127. item.setItemMeta(im);
    128. Player player = Bukkit.getPlayer((args[1]));
    129. String name = player.getName();
    130. player.getInventory().addItem(item);
    131. String c1 = (args[3]).toUpperCase();
    132. p.sendMessage(prefix + " " + ChatColor.GREEN + c1 + ChatColor.AQUA + " Level " + ChatColor.GREEN + g + ChatColor.AQUA + " Chestplate added to " + ChatColor.GREEN + name + "'s" + ChatColor.AQUA + " inventory!");
    133. return true;
    134. }else if((args[2]).equalsIgnoreCase("leggings")){
    135. ItemStack item = new ItemStack(Material.DIAMOND_LEGGINGS, 1);
    136. ItemMeta im = item.getItemMeta();
    137. List<String> lore;
    138. lore = new ArrayList<String>();
    139. String g = a + "";
    140. String h = ChatColor.GRAY + c.replace("critical", "Critical").replace("dodge", "Dodge").replace("speed", "Speed").replace("poison", "Poison") + ChatColor.GRAY + g.replace("1", " I").replace("2", " II").replace("3", " III").replace("4", " IV").replace("5", " V");
    141. lore.add(h);
    142. im.setLore(lore);
    143. item.setItemMeta(im);
    144. Player player = Bukkit.getPlayer((args[1]));
    145. String name = player.getName();
    146. player.getInventory().addItem(item);
    147. String c1 = (args[3]).toUpperCase();
    148. p.sendMessage(prefix + " " + ChatColor.GREEN + c1 + ChatColor.AQUA + " Level " + ChatColor.GREEN + g + ChatColor.AQUA + " Leggings added to " + ChatColor.GREEN + name + "'s" + ChatColor.AQUA + " inventory!");
    149. return true;
    150. }else if((args[2]).equalsIgnoreCase("boots")){
    151. ItemStack item = new ItemStack(Material.DIAMOND_BOOTS, 1);
    152. ItemMeta im = item.getItemMeta();
    153. List<String> lore;
    154. lore = new ArrayList<String>();
    155. String g = a + "";
    156. String h = ChatColor.GRAY + c.replace("critical", "Critical").replace("dodge", "Dodge").replace("speed", "Speed").replace("poison", "Poison") + ChatColor.GRAY + g.replace("1", " I").replace("2", " II").replace("3", " III").replace("4", " IV").replace("5", " V");
    157. lore.add(h);
    158. im.setLore(lore);
    159. item.setItemMeta(im);
    160. Player player = Bukkit.getPlayer((args[1]));
    161. String name = player.getName();
    162. player.getInventory().addItem(item);
    163. String c1 = (args[3]).toUpperCase();
    164. p.sendMessage(prefix + " " + ChatColor.GREEN + c1 + ChatColor.AQUA + " Level " + ChatColor.GREEN + g + ChatColor.AQUA + " Boots added to " + ChatColor.GREEN + name + "'s" + ChatColor.AQUA + " inventory!");
    165. return true;
    166. }
    167.  
    168. }
    169. else{
    170. p.sendMessage(prefix + ChatColor.AQUA + " Did you mean '/ce give'? Do '/ce help' for help");
    171. return true;
    172. }
    173.  
    174.  
    175.  
    176.  
    177.  
    178.  
    179.  
    180. }else{
    181. p.sendMessage(prefix + ChatColor.RED + " Proper Usage: '/ce give {Player} {Item} {Enchantment} {Level(1-5)}'");
    182. return true;
    183. }
    184.  
    185.  
    186.  
    187.  
    188.  
    189.  
    190. if((args[0].equalsIgnoreCase("help"))){
    191. p.sendMessage(ChatColor.AQUA + "=-=-=-=-=-=-=" + prefix + ChatColor.AQUA + "=-=-=-=-=-=-=" );
    192. p.sendMessage(ChatColor.AQUA + "/ce reload" + ChatColor.GRAY + " :" + ChatColor.GOLD + " Reload the config");
    193. p.sendMessage(ChatColor.AQUA + "/ce give {Player} {Item} {Enchantment} {Level(1-5)} " + ChatColor.GRAY + ":" + ChatColor.GOLD + " Give Player Item");
    194. p.sendMessage(ChatColor.AQUA + "/ce items " + ChatColor.GRAY + ":" + ChatColor.GOLD + " See items you can add custom enchantments to!");
    195. p.sendMessage(ChatColor.AQUA + "/ce enchantments" + ChatColor.GRAY + " :" + ChatColor.GOLD + " See available enchantments!");
    196. p.sendMessage(ChatColor.AQUA + "=-=-=-=-=-=-=" + prefix + ChatColor.AQUA + "=-=-=-=-=-=-=" );
    197. p.sendMessage("");
    198. return true;
    199. }if((args[0].equalsIgnoreCase("reload"))){
    200. reloadConfig();
    201. p.sendMessage(prefix + ChatColor.AQUA + "Config Reloaded!");
    202. p.sendMessage("");
    203.  
    204. return true;
    205. } if((args[0].equalsIgnoreCase("items"))){
    206. p.sendMessage(ChatColor.AQUA + "=-=-=-=-=-=-=" + ChatColor.GOLD + "[" + ChatColor.GREEN + "Items" + ChatColor.GOLD +"]" + ChatColor.AQUA + "=-=-=-=-=-=-=" );
    207. p.sendMessage(ChatColor.AQUA +"Items that can be enchanted (Type them in as you see them): ");
    208. p.sendMessage(ChatColor.GREEN + "Sword, Axe, Helmet, ChestPlate, Leggings, Boots");
    209. p.sendMessage(ChatColor.AQUA + "=-=-=-=-=-=-=" + ChatColor.GOLD + "[" + ChatColor.GREEN + "Items" + ChatColor.GOLD +"]" + ChatColor.AQUA + "=-=-=-=-=-=-=" );
    210. p.sendMessage("");
    211.  
    212. return true;
    213. }if((args[0].equalsIgnoreCase("enchantments"))){
    214. p.sendMessage(ChatColor.AQUA + "=-=-=-=-=-" + ChatColor.GOLD + "[" + ChatColor.GREEN + "Enchantments" + ChatColor.GOLD +"]" + ChatColor.AQUA + "-=-=-=-=-=" );
    215. p.sendMessage(ChatColor.AQUA +"Available Enchantments(Type them in as you see them):");
    216. p.sendMessage(ChatColor.GREEN + "Dodge, Critical, Speed, Poison");
    217. p.sendMessage(ChatColor.AQUA + "NOTE: " + ChatColor.GREEN + "Speed|Dodge Armor Only!");
    218. p.sendMessage(ChatColor.AQUA + "NOTE: " + ChatColor.GREEN + "Critical|Poison Weapons Only!");
    219. p.sendMessage(ChatColor.AQUA + "=-=-=-=-=-" + ChatColor.GOLD + "[" + ChatColor.GREEN + "Enchantments" + ChatColor.GOLD +"]" + ChatColor.AQUA + "-=-=-=-=-=" );
    220. p.sendMessage("");
    221.  
    222. return true;
    223. }else{
    224. sender.sendMessage(prefix + ChatColor.RED + "Improper args, do '/ce help' for help!");
    225. p.sendMessage("");
    226.  
    227. return true;
    228. }
    229.  
    230.  
    231. }else{
    232. p.sendMessage(prefix + ChatColor.RED + " Not enough args! Do '/ce help' for help!");
    233. }
    234. }
    235. else{
    236. sender.sendMessage(prefix + ChatColor.RED + " You dont have permission for this!");
    237. }
    238. }
    239. return false;
    240. }
    241. }
    242. }
    243.  
    244.  
     
  2. Offline

    adam753

    At a glance, I don't see anything that would cause an array out of bounds exception. However, this code is quite hard to read and I can see a few mistakes you've made, so I'm going to suggest rewriting it because you're very likely to find the problem in the process.
     
  3. Offline

    Maurdekye

    Onlineids What line does the error occur on?
     
  4. Offline

    Onlineids

    Wewrote it and fixed it
     
Thread Status:
Not open for further replies.

Share This Page