Why aren't these 2 plugins working?

Discussion in 'Plugin Development' started by BrushPainter, Mar 9, 2014.

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

    BrushPainter

    Hey everyone, I do not have any errors on load, on disable, etc. or in my code with these 2 plugins.
    Here is the first ones code:
    Code:java
    1. package me.BrushPainter.Gems;
    2.  
    3. import java.io.File;
    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.CommandSender;
    10. import org.bukkit.entity.Player;
    11. import org.bukkit.event.EventHandler;
    12. import org.bukkit.event.Listener;
    13. import org.bukkit.event.player.PlayerJoinEvent;
    14. import org.bukkit.inventory.ItemStack;
    15. import org.bukkit.inventory.meta.ItemMeta;
    16. import org.bukkit.plugin.PluginManager;
    17. import org.bukkit.plugin.java.JavaPlugin;
    18.  
    19. public class Main extends JavaPlugin implements Listener{
    20.  
    21. public void onEnable() {
    22. this.saveDefaultConfig();
    23. getLogger().info("Gems Enabled");
    24. PluginManager pm = Bukkit.getPluginManager();
    25. pm.registerEvents(this, this);
    26. this.getConfig().options().copyDefaults(true);
    27. saveConfig();
    28. }
    29.  
    30. public void onDisable() {
    31.  
    32. getLogger().info("Gems Disabled");
    33. if(!(new File("plugins/Gems/config.yml").exists())){
    34. saveConfig();
    35. }
    36. }
    37.  
    38. @EventHandler
    39. public void onJoin(PlayerJoinEvent e)
    40. {
    41. Player p = e.getPlayer();
    42. getConfig().set(p.getName() + ".money" + p,(getConfig().getInt(p.getName() + ".money")));
    43. saveConfig();
    44. }
    45.  
    46. public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args)
    47.  
    48. {
    49. if(cmd.getName().equalsIgnoreCase("gemsreload"))
    50. {
    51. this.reloadConfig();
    52. }
    53.  
    54. if(cmd.getName().equalsIgnoreCase("pbgun"))
    55. {
    56. if(args.length == 0)
    57. {
    58. Player p = (Player) sender;
    59. p.sendMessage(ChatColor.DARK_RED + "" + ChatColor.BOLD + "List of Paintball guns:");
    60. p.sendMessage(ChatColor.DARK_GRAY + "" + ChatColor.ITALIC + "SemiAuto - Free [Default]");
    61. p.sendMessage(ChatColor.DARK_GRAY + "" + ChatColor.ITALIC + "ThreeBurst - 500" + ChatColor.AQUA + "G");
    62. p.sendMessage(ChatColor.DARK_GRAY + "" + ChatColor.ITALIC + "FullyAuto- 1000" + ChatColor.AQUA + "G");
    63.  
    64. }
    65. else
    66. {
    67. if (sender instanceof Player)
    68.  
    69. {
    70.  
    71. if(args.length == 2)
    72.  
    73. {
    74. if (args[1].equalsIgnoreCase("buy")) {
    75. final Player p = (Player)sender;
    76. p.sendMessage(ChatColor.DARK_RED + "Correct usage:" + ChatColor.RED + "/pbgun buy <GunName>");
    77. p.sendMessage(ChatColor.DARK_GRAY + "Type /pbgun for a list of guns.");
    78. }
    79. if (args[2].equalsIgnoreCase("fullyauto")) {
    80. final Player p = (Player)sender;
    81. Player pl = (Player) sender;
    82. p.getPlayer().getInventory().addItem(new ItemStack(Material.DIAMOND_BARDING, 1));
    83. ItemStack is1 = new ItemStack(Material.DIAMOND_BARDING);
    84. ItemMeta im1 = is1.getItemMeta();
    85. im1.setDisplayName(ChatColor.AQUA + "" + ChatColor.BOLD + "Fully-Auto Paintball Gun");
    86. is1.setItemMeta(im1);
    87. pl.getInventory().addItem(is1);
    88.  
    89. p.sendMessage(ChatColor.DARK_GRAY + "You have purchased a Full-Auto PB gun for 500" + ChatColor.AQUA + "b" + ChatColor.DARK_GRAY + "!");
    90. p.sendMessage(ChatColor.DARK_GRAY + "From now on you can type:");
    91. p.sendMessage(ChatColor.DARK_GRAY + "/fullyauto to get your gun back!");
    92.  
    93. Player t = Bukkit.getPlayer(args[2]);
    94. getConfig().set(t.getName() + ".money", getConfig().getInt(t.getName() + ".money") - 500);
    95. }
    96. if (args[2].equalsIgnoreCase("threeburst")) {
    97. final Player p = (Player)sender;
    98. Player pl = (Player) sender;
    99. p.getPlayer().getInventory().addItem(new ItemStack(Material.GOLD_BARDING, 1));
    100. ItemStack is2 = new ItemStack(Material.GOLD_BARDING);
    101. ItemMeta im2 = is2.getItemMeta();
    102. im2.setDisplayName(ChatColor.GOLD + "" + ChatColor.BOLD + "3-Burst Paintball Gun");
    103. is2.setItemMeta(im2);
    104. pl.getInventory().addItem(is2);
    105. p.sendMessage(ChatColor.DARK_GRAY + "You have purchased a 3-Burst PB gun for 1000" + ChatColor.AQUA + "b" + ChatColor.DARK_GRAY + "!");
    106. p.sendMessage(ChatColor.DARK_GRAY + "From now on you can type:");
    107. p.sendMessage(ChatColor.DARK_GRAY + "/threeburst to get your gun back!");
    108.  
    109. Player t = Bukkit.getPlayer(args[2]);
    110. getConfig().set(t.getName() + ".money", getConfig().getInt(t.getName() + ".money") - 1000);
    111. }
    112. else {
    113. final Player p = (Player)sender;
    114. p.sendMessage(ChatColor.DARK_GRAY + "That is not a paintball gun or you do not have enough" + ChatColor.AQUA + " Gems" + ChatColor.DARK_GRAY + "!");
    115. p.sendMessage(ChatColor.YELLOW + "Type /pbgun for a list of guns.");
    116. }
    117. }
    118. }
    119. }
    120.  
    121. if(cmd.getName().equalsIgnoreCase("gems"))
    122.  
    123. {
    124.  
    125. if(args.length == 0)
    126. {
    127. final Player p = (Player)sender;
    128. p.sendMessage("§7" + getConfig().getInt(p.getName() + ".money" + "§bG", 0));
    129.  
    130. }
    131. else
    132. {
    133. if (sender instanceof Player)
    134.  
    135. {
    136.  
    137. final Player p = (Player)sender;
    138.  
    139. if(args.length >= 1)
    140.  
    141. {
    142.  
    143. {
    144.  
    145. switch (args.length)
    146.  
    147. {
    148.  
    149. case 1:
    150.  
    151. case 2:
    152.  
    153. case 3:
    154.  
    155. p.sendMessage("§4Error: §cNot enough arguments, or too many.");
    156.  
    157. p.sendMessage("§7/Gems");
    158.  
    159. p.sendMessage("§7/Gems give <player> <amount>");
    160.  
    161. p.sendMessage("§7/Gems set <player> <amount>");
    162.  
    163. saveConfig();
    164.  
    165. break;
    166.  
    167.  
    168.  
    169. case 4:
    170.  
    171. Player t = Bukkit.getPlayer(args[2]);
    172.  
    173. if (t == null)
    174.  
    175. p.sendMessage( "§4Error: §cPlease enter a valid player.");
    176.  
    177. else try
    178.  
    179. {
    180.  
    181. int value = Integer.parseInt(args[3]);
    182.  
    183. if (args[1].equalsIgnoreCase("give")) {
    184.  
    185. getConfig().set(t.getName() + ".money", getConfig().getInt(t.getName() + ".money") + value);
    186.  
    187. p.sendMessage("§7You gave §bG" + args[3] + "§7's to §e" + t.getName());
    188.  
    189. t.sendMessage("§7You got §bG" + args[3] + "§7 from §e" + p.getName());
    190.  
    191. saveConfig();
    192.  
    193. }
    194.  
    195.  
    196.  
    197. if (args[1].equalsIgnoreCase("set"))
    198.  
    199. {
    200.  
    201. getConfig().set(t.getName() + ".money", value);
    202.  
    203. p.sendMessage("§7You set §e" + t.getName() + "§e's §bGems §7to §b" + value);
    204.  
    205. t.sendMessage("§7Your §bGems §7were set to §bG" + value + "§7 by §e" + p.getName());
    206.  
    207. saveConfig();
    208.  
    209. }
    210.  
    211. }
    212.  
    213. catch (final NumberFormatException e)
    214.  
    215. {
    216.  
    217. p.sendMessage( "§4Error: §cYou need to specify a valid amount.");
    218.  
    219. }
    220.  
    221.  
    222.  
    223. return true;
    224.  
    225. }
    226. }
    227. }
    228.  
    229. else if(args[0].equalsIgnoreCase("pay"))
    230.  
    231. {
    232.  
    233. switch (args.length)
    234.  
    235. {
    236.  
    237. case 1:
    238.  
    239. case 2:
    240.  
    241. p.sendMessage( "§4Error: §cYou need to specify an amount.");
    242.  
    243. p.sendMessage( "§7/Gems pay <player> <amount>");
    244.  
    245. break;
    246.  
    247. case 3:
    248.  
    249. Player t = Bukkit.getPlayer(args[1]);
    250.  
    251. if(t == null)
    252.  
    253. p.sendMessage( "§4Error: §cPlease enter a valid player.");
    254.  
    255. else try
    256.  
    257. {
    258.  
    259. getConfig().set(t.getName() + ".money", getConfig().getInt(t.getName() + ".money") + Integer.parseInt(args[2]));
    260.  
    261. getConfig().set(p.getName() + ".money", getConfig().getInt(p.getName() + ".money") - Integer.parseInt(args[2]));
    262.  
    263. p.sendMessage("§7You gave §bG" + args[2] + "§7's to §e" + t.getName());
    264.  
    265. t.sendMessage("§7You got §bG" + args[2] + "§7's from §e" + p.getName());
    266.  
    267. saveConfig();
    268.  
    269. break;
    270.  
    271. }
    272.  
    273. catch (final NumberFormatException e)
    274.  
    275. {
    276.  
    277. p.sendMessage( "§4Error: §cYou need to specify a valid amount.");
    278.  
    279. }
    280.  
    281.  
    282.  
    283. return true;
    284.  
    285.  
    286.  
    287. }
    288.  
    289. }
    290.  
    291. }
    292.  
    293. }
    294.  
    295. }
    296.  
    297. {
    298. return false;
    299. }
    300. }
    301. return false;
    302. }
    303. }

    plugin.yml:
    Code:
    name: Gems
    version: 1.0.1
    main: me.BrushPainter.Gems.Main
     
    commands:
      gems:
        description: Check the amount of Gems you have.
        permission: gems.balance.use
       
      gemsreload:
        description: Reload the CR Gems plugin.
        permission: gems.reload
       
      pbgun:
        description: Buy or sell a paintball gun!
     
    permissions:
      gems.pay.use:
        description: Pay another user Gems!
        default: op
       
      gems.give.use:
        description: Give another user Gems!
        default: op
       
      gems.set.use:
        description: Set another users Gems!
        default: op
     
      gems.balance.use:
        description: Set another users Gems!
        default: op
       
      gems.reload:
        description: Reload the CR Gems plugin.
        default: op
       
      gems.buy.threeburst:
        description: Buy the threeburst paintball gun.
        default: op
     
      gems.buy.fullyauto:
        description: Buy the fullyauto paintball gun.
        default: op
    Also I created a empty config.yml file for the plugin to generate players balances.

    Second plugin:
    Code:java
    1. package me.BrushPainter.PBGunShop;
    2.  
    3. import java.util.ArrayList;
    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.CommandSender;
    10. import org.bukkit.entity.Entity;
    11. import org.bukkit.entity.EntityType;
    12. import org.bukkit.entity.LivingEntity;
    13. import org.bukkit.entity.Player;
    14. import org.bukkit.entity.Villager;
    15. import org.bukkit.event.EventHandler;
    16. import org.bukkit.event.Listener;
    17. import org.bukkit.event.entity.EntityDamageByEntityEvent;
    18. import org.bukkit.event.inventory.InventoryClickEvent;
    19. import org.bukkit.event.player.PlayerInteractEntityEvent;
    20. import org.bukkit.inventory.Inventory;
    21. import org.bukkit.inventory.ItemStack;
    22. import org.bukkit.inventory.meta.ItemMeta;
    23. import org.bukkit.plugin.java.JavaPlugin;
    24. import org.bukkit.potion.PotionEffect;
    25. import org.bukkit.potion.PotionEffectType;
    26.  
    27. public class Main extends JavaPlugin implements Listener{
    28.  
    29. public void onEnable() {
    30.  
    31. Bukkit.getPluginManager().registerEvents(this, this);
    32.  
    33. getLogger().info("PBGunShop Enabled");
    34.  
    35. }
    36.  
    37. public void onDisable() {
    38.  
    39. getLogger().info("PBGunShop Disabled");
    40.  
    41. }
    42. public static Inventory PaintballGunShop = Bukkit.createInventory(null, 9, "Inventory");
    43.  
    44. @EventHandler
    45. public void onInventoryClick(InventoryClickEvent event) {
    46. Player player = (Player) event.getWhoClicked();
    47. Player buyer = (Player) event.getWhoClicked();
    48. ItemStack clicked = event.getCurrentItem();
    49. Inventory inventory = event.getInventory();
    50. ItemStack is = new ItemStack(Material.WOOL );
    51. is.setDurability((byte) 14);
    52. ItemMeta im = is.getItemMeta();
    53. im.setDisplayName(ChatColor.DARK_RED + "Close");
    54. ArrayList<String> lore = new ArrayList<String>();
    55. lore.add(ChatColor.DARK_GRAY + "Closes the PB Shop.");
    56. im.setLore(lore);
    57. is.setItemMeta(im);
    58. if (inventory.getName().equals(PaintballGunShop.getName())) {
    59. if (clicked.getItemMeta().getDisplayName().equalsIgnoreCase(ChatColor.DARK_RED + "Close")) {
    60. event.setCancelled(true);
    61. player.closeInventory();
    62. }
    63.  
    64. ItemStack fullyauto = new ItemStack(Material.DIAMOND_BARDING, 1);
    65. ItemMeta im1 = fullyauto.getItemMeta();
    66. im1.setDisplayName(ChatColor.AQUA + "" + ChatColor.BOLD + "Fully-Automatic Paintball Gun");
    67. fullyauto.setItemMeta(im1);
    68. lore.add(ChatColor.WHITE + "500 Coins");
    69. im1.setLore(lore);
    70. PaintballGunShop.setItem(0,fullyauto);
    71. if (inventory.getName().equals(PaintballGunShop.getName())) {
    72. if (clicked.getItemMeta().getDisplayName().equalsIgnoreCase(ChatColor.AQUA + "" + ChatColor.BOLD + "Fully-Automatic Paintball Gun")) {
    73. event.setCancelled(true);
    74. player.closeInventory();
    75. Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "manuaddp " + buyer + " paintballguns.getgun.fullyauto");
    76. Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "manuaddp " + buyer + " -pbgunshop.buy.fullyauto");
    77. Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "eco take " + buyer + " 500");
    78. buyer.sendMessage(ChatColor.YELLOW + "Congratulations! You purchased the fully-auto paintball gun!");
    79. buyer.sendMessage(ChatColor.YELLOW + "You can now use /fullyauto to get your gun!");
    80. }
    81.  
    82. ItemStack threeburst = new ItemStack(Material.GOLD_BARDING, 1);
    83. ItemMeta im2 = fullyauto.getItemMeta();
    84. im2.setDisplayName(ChatColor.GOLD + "" + ChatColor.BOLD + "3-Burst Paintball Gun");
    85. threeburst.setItemMeta(im2);
    86. lore.add(ChatColor.WHITE + "1000 Coins");
    87. im2.setLore(lore);
    88. PaintballGunShop.setItem(8,threeburst);
    89. if (inventory.getName().equals(PaintballGunShop.getName())) {
    90. if (clicked.getItemMeta().getDisplayName().equalsIgnoreCase(ChatColor.GOLD + "" + ChatColor.BOLD + "3-Burst Paintball Gun")) {
    91. event.setCancelled(true);
    92. player.closeInventory();
    93. Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "manuaddp " + buyer + " paintballguns.getgun.threeburst");
    94. Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "manuaddp " + buyer + " -pbgunshop.buy.threeburst");
    95. Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "eco take " + buyer + " 1000");
    96. buyer.sendMessage(ChatColor.YELLOW + "Congratulations! You purchased the three-burst paintball gun!");
    97. buyer.sendMessage(ChatColor.YELLOW + "You can now use /threeburst to get your gun!");
    98. }
    99. }
    100. }
    101. }
    102. }
    103.  
    104. ArrayList<String> Damagers = new ArrayList<String>();
    105. @EventHandler
    106. public void onEntityDamage(EntityDamageByEntityEvent event) {
    107.  
    108. Player player = (Player) event.getDamager();
    109. LivingEntity entity = (LivingEntity)event.getEntity();
    110. Villager zinc = (Villager) entity;
    111.  
    112. if (entity.getLastDamageCause().getEntity() instanceof Player) {
    113. event.setCancelled(true);
    114. } else if(zinc.getCustomName() != null && zinc.getCustomName().equals(ChatColor.BLUE + "" + ChatColor.BOLD + "Zinc - The Paintballer")){
    115. event.setCancelled(true);
    116. } else {
    117. if(Damagers.contains(player.getName())) {
    118. event.setCancelled(true);
    119. }
    120. }
    121. }
    122.  
    123. public void onPlayerInteractEntityEvent(PlayerInteractEntityEvent event) {
    124. Entity entity = event.getRightClicked();
    125. Villager zinc = (Villager) entity;
    126. Player player = event.getPlayer();
    127.  
    128. if(zinc.getCustomName() != null && zinc.getCustomName().equals(ChatColor.BLUE + "" + ChatColor.BOLD + "Zinc - The Paintballer")){
    129.  
    130.  
    131. player.openInventory(PaintballGunShop);
    132. }
    133. else{
    134.  
    135. }
    136. }
    137.  
    138. public boolean onCommand(CommandSender sender, Command cmd, String Label, String[] args){
    139.  
    140. if (cmd.getName().equalsIgnoreCase("spbshop")) {
    141. if (sender instanceof Player) {
    142. Player p = (Player) sender;
    143.  
    144. Villager e = (Villager) p.getWorld().spawnEntity(p.getLocation(), EntityType.VILLAGER);
    145.  
    146. e.setBreed(true);
    147. e.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, Integer.MAX_VALUE, 6));
    148. e.addPotionEffect(new PotionEffect(PotionEffectType.JUMP, Integer.MAX_VALUE, -6));
    149. e.setCustomName(ChatColor.BLUE + "" + ChatColor.BOLD + "Zinc - The Paintballer");
    150. e.setCustomNameVisible(true);
    151. e.getEquipment().getItemInHand().setType(Material.GOLD_BARDING);
    152.  
    153. }
    154. }
    155. return false;
    156. }
    157. }

    plugin.yml:
    Code:
    name: PBGunShop
    version: 1.0.1
    main: me.BrushPainter.PBGunShop.Main
     
    permissions:
      pbgunshop.buy.threeburst:
        description: Allows you to buy a threeburst pb gun.
        default: true
     
      pbgunshop.buy.fullyauto:
        description: Allows you to buy a fullyauto pb gun.
        default: true
       
      signshop.pb.create:
        description: Create a PB Shop sign.
        default: op
     
  2. Offline

    electro4fun

    BrushPainter Which part of the plugin is not working? Just a feature or is it not loading at all?
     
  3. Offline

    BrushPainter

    electro4fun They are both loading and in my gems plugin when you type /pbgun it displays the list of guns and their price as it should, but then when you type /pbgun buy <nameOfGunHere> it says "An internal error occurredwhile attempting to perform this command" and if you type /gems nothing at all happens, for all of them, including the arguments. Not sure if /gemsreload works because I didn't really set a way for the player to find out.

    And now for the PBGunShop plugin:
    /spbshop doesn't do anything when you type it so I don't know if the rest of the plugin will work.
     
  4. Offline

    TheRage66

  5. Offline

    BrushPainter

    TheRage66 There's seriously nothing in the console on enable, on disable, when I dispatch one of the commands and I'm not getting any errors in Eclipse... This is driving me insane. :(
     
  6. Offline

    electro4fun

    BrushPainter If it says internal error there should be a log or it should show up on the console. Check the log files.
     
  7. Offline

    BrushPainter

    electro4fun Ok one second.

    electro4fun
    Code:java
    1. [16:17:45] [Server thread/INFO]: BrushPainter issued server command: /pbgun
    2. [16:17:50] [Server thread/INFO]: BrushPainter issued server command: /pbgun buy fullyauto
    3. [16:17:50] [Server thread/ERROR]: null
    4. org.bukkit.command.CommandException: Unhandled exception executing command 'pbgun' in plugin Gems v1.0.1
    5. at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[craftbukkit_dev_2995.jar:git-Bukkit-1.7.2-R0.2-15-g2f3dbd3-b2995jnks]
    6. at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:199) ~[craftbukkit_dev_2995.jar:git-Bukkit-1.7.2-R0.2-15-g2f3dbd3-b2995jnks]
    7. at org.bukkit.craftbukkit.v1_7_R1.CraftServer.dispatchCommand(CraftServer.java:544) ~[craftbukkit_dev_2995.jar:git-Bukkit-1.7.2-R0.2-15-g2f3dbd3-b2995jnks]
    8. at net.minecraft.server.v1_7_R1.PlayerConnection.handleCommand(PlayerConnection.java:932) [craftbukkit_dev_2995.jar:git-Bukkit-1.7.2-R0.2-15-g2f3dbd3-b2995jnks]
    9. at net.minecraft.server.v1_7_R1.PlayerConnection.a(PlayerConnection.java:814) [craftbukkit_dev_2995.jar:git-Bukkit-1.7.2-R0.2-15-g2f3dbd3-b2995jnks]
    10. at net.minecraft.server.v1_7_R1.PacketPlayInChat.a(PacketPlayInChat.java:28) [craftbukkit_dev_2995.jar:git-Bukkit-1.7.2-R0.2-15-g2f3dbd3-b2995jnks]
    11. at net.minecraft.server.v1_7_R1.PacketPlayInChat.handle(PacketPlayInChat.java:47) [craftbukkit_dev_2995.jar:git-Bukkit-1.7.2-R0.2-15-g2f3dbd3-b2995jnks]
    12. at net.minecraft.server.v1_7_R1.NetworkManager.a(NetworkManager.java:146) [craftbukkit_dev_2995.jar:git-Bukkit-1.7.2-R0.2-15-g2f3dbd3-b2995jnks]
    13. at net.minecraft.server.v1_7_R1.ServerConnection.c(SourceFile:134) [craftbukkit_dev_2995.jar:git-Bukkit-1.7.2-R0.2-15-g2f3dbd3-b2995jnks]
    14. at net.minecraft.server.v1_7_R1.MinecraftServer.u(MinecraftServer.java:655) [craftbukkit_dev_2995.jar:git-Bukkit-1.7.2-R0.2-15-g2f3dbd3-b2995jnks]
    15. at net.minecraft.server.v1_7_R1.DedicatedServer.u(DedicatedServer.java:250) [craftbukkit_dev_2995.jar:git-Bukkit-1.7.2-R0.2-15-g2f3dbd3-b2995jnks]
    16. at net.minecraft.server.v1_7_R1.MinecraftServer.t(MinecraftServer.java:545) [craftbukkit_dev_2995.jar:git-Bukkit-1.7.2-R0.2-15-g2f3dbd3-b2995jnks]
    17. at net.minecraft.server.v1_7_R1.MinecraftServer.run(MinecraftServer.java:457) [craftbukkit_dev_2995.jar:git-Bukkit-1.7.2-R0.2-15-g2f3dbd3-b2995jnks]
    18. at net.minecraft.server.v1_7_R1.ThreadServerApplication.run(SourceFile:617) [craftbukkit_dev_2995.jar:git-Bukkit-1.7.2-R0.2-15-g2f3dbd3-b2995jnks]
    19. Caused by: java.lang.ArrayIndexOutOfBoundsException: 2
    20. at me.BrushPainter.Gems.Main.onCommand(Main.java:79) ~[?:?]
    21. at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[craftbukkit_dev_2995.jar:git-Bukkit-1.7.2-R0.2-15-g2f3dbd3-b2995jnks]
    22. ... 13 more


    Edit:
    When I type any other commands, even from the same plugin in the log file it just says "[16:20:05] [Server thread/INFO]: BrushPainter issued server command: /spbshop" and no error.

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

    electro4fun

    BrushPainter You use args.length == 2... but later use args[1] and args[2].

    Change to args[0] and args[1] because arrays start at 0.
     
  9. Offline

    BrushPainter

    electro4fun Ok you can now buy pb guns, but it doesn't charge you Gems or check if you even have enough. Also how can I make /gems and all it's args work? And do you know how I would fix my other plugin, PBGunShop? It's probably the most important plugin for me to get working right now. I think the villager right click function works, but the actual command itself isn't spawning the villager.
     
  10. Offline

    electro4fun

    BrushPainter I am not familiar with villager spawning so I can't help you there :/.
    It looks like /gems is trying to get a value from the config, but you include § in the path. I think your path to your config is wrong.
     
  11. Offline

    BrushPainter

    electro4fun Ohh ok, so basically I have to get rid of §'s in the path to the config?
     
  12. Offline

    electro4fun

    Code:java
    1. getConfig().getInt(p.getName() + ".money" + "§bG", 0)


    That is your line to get the money from the config.

    Code:java
    1. getConfig().set(p.getName() + ".money" + p,(getConfig().getInt(p.getName() + ".money")));


    That is the code you use when a player joins. They don't have the same path name.
     
  13. Offline

    BrushPainter

    electro4fun Ok I changed it to:
    Code:java
    1. package me.BrushPainter.Gems;
    2.  
    3. import java.io.File;
    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.CommandSender;
    10. import org.bukkit.entity.Player;
    11. import org.bukkit.event.EventHandler;
    12. import org.bukkit.event.Listener;
    13. import org.bukkit.event.player.PlayerJoinEvent;
    14. import org.bukkit.inventory.ItemStack;
    15. import org.bukkit.inventory.meta.ItemMeta;
    16. import org.bukkit.plugin.PluginManager;
    17. import org.bukkit.plugin.java.JavaPlugin;
    18.  
    19. public class Main extends JavaPlugin implements Listener{
    20.  
    21. public void onEnable() {
    22. this.saveDefaultConfig();
    23. getLogger().info("Gems Enabled");
    24. PluginManager pm = Bukkit.getPluginManager();
    25. pm.registerEvents(this, this);
    26. this.getConfig().options().copyDefaults(true);
    27. saveConfig();
    28. }
    29.  
    30. public void onDisable() {
    31.  
    32. getLogger().info("Gems Disabled");
    33. if(!(new File("plugins/Gems/config.yml").exists())){
    34. saveConfig();
    35. }
    36. }
    37.  
    38. @EventHandler
    39. public void onJoin(PlayerJoinEvent e)
    40. {
    41. Player p = e.getPlayer();
    42. getConfig().getInt(p.getName() + ".money" + ChatColor.AQUA + "G", 0);
    43. saveConfig();
    44. }
    45.  
    46. public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args)
    47.  
    48. {
    49. if(cmd.getName().equalsIgnoreCase("gemsreload"))
    50. {
    51. this.reloadConfig();
    52. }
    53.  
    54. if(cmd.getName().equalsIgnoreCase("pbgun"))
    55. {
    56. if(args.length == 0)
    57. {
    58. Player p = (Player) sender;
    59. p.sendMessage(ChatColor.DARK_RED + "" + ChatColor.BOLD + "List of Paintball guns:");
    60. p.sendMessage(ChatColor.DARK_GRAY + "" + ChatColor.ITALIC + "SemiAuto - Free [Default]");
    61. p.sendMessage(ChatColor.DARK_GRAY + "" + ChatColor.ITALIC + "ThreeBurst - 500" + ChatColor.AQUA + "G");
    62. p.sendMessage(ChatColor.DARK_GRAY + "" + ChatColor.ITALIC + "FullyAuto- 1000" + ChatColor.AQUA + "G");
    63.  
    64. }
    65. else
    66. {
    67. if (sender instanceof Player)
    68.  
    69. {
    70.  
    71. if(args.length == 2)
    72.  
    73. {
    74. if (args[0].equalsIgnoreCase("buy")) {
    75. final Player p = (Player)sender;
    76. p.sendMessage(ChatColor.DARK_RED + "Correct usage:" + ChatColor.RED + "/pbgun buy <GunName>");
    77. p.sendMessage(ChatColor.DARK_GRAY + "Type /pbgun for a list of guns.");
    78. }
    79. if (args[1].equalsIgnoreCase("fullyauto")) {
    80. final Player p = (Player)sender;
    81. Player pl = (Player) sender;
    82. ItemStack is1 = new ItemStack(Material.DIAMOND_BARDING);
    83. ItemMeta im1 = is1.getItemMeta();
    84. im1.setDisplayName(ChatColor.AQUA + "" + ChatColor.BOLD + "Fully-Auto Paintball Gun");
    85. is1.setItemMeta(im1);
    86. pl.getInventory().addItem(is1);
    87.  
    88. getConfig().getInt(p.getName() + ".money" + ChatColor.AQUA + "G", 0);
    89. p.sendMessage(ChatColor.DARK_GRAY + "You have purchased a Full-Auto PB gun for 500" + ChatColor.AQUA + "b" + ChatColor.DARK_GRAY + "!");
    90. p.sendMessage(ChatColor.DARK_GRAY + "From now on you can type:");
    91. p.sendMessage(ChatColor.DARK_GRAY + "/fullyauto to get your gun back!");
    92.  
    93. Player t = Bukkit.getPlayer(args[2]);
    94. getConfig().set(t.getName() + ".money", getConfig().getInt(t.getName() + ".money") - 500);
    95. }
    96. if (args[1].equalsIgnoreCase("threeburst")) {
    97. final Player p = (Player)sender;
    98. Player pl = (Player) sender;
    99. ItemStack is2 = new ItemStack(Material.GOLD_BARDING);
    100. ItemMeta im2 = is2.getItemMeta();
    101. im2.setDisplayName(ChatColor.GOLD + "" + ChatColor.BOLD + "3-Burst Paintball Gun");
    102. is2.setItemMeta(im2);
    103. pl.getInventory().addItem(is2);
    104. p.sendMessage(ChatColor.DARK_GRAY + "You have purchased a 3-Burst PB gun for 1000" + ChatColor.AQUA + "b" + ChatColor.DARK_GRAY + "!");
    105. p.sendMessage(ChatColor.DARK_GRAY + "From now on you can type:");
    106. p.sendMessage(ChatColor.DARK_GRAY + "/threeburst to get your gun back!");
    107.  
    108. Player t = Bukkit.getPlayer(args[2]);
    109. getConfig().set(t.getName() + ".money", getConfig().getInt(t.getName() + ".money") - 1000);
    110. }
    111. else {
    112. final Player p = (Player)sender;
    113. p.sendMessage(ChatColor.DARK_GRAY + "That is not a paintball gun or you do not have enough" + ChatColor.AQUA + " Gems" + ChatColor.DARK_GRAY + "!");
    114. p.sendMessage(ChatColor.YELLOW + "Type /pbgun for a list of guns.");
    115. }
    116. }
    117. }
    118. }
    119.  
    120. if(cmd.getName().equalsIgnoreCase("gems"))
    121.  
    122. {
    123.  
    124. if(args.length == 0)
    125. {
    126. final Player p = (Player)sender;
    127. p.sendMessage(ChatColor.GRAY + "" + getConfig().getInt(p.getName() + ".money" + ChatColor.AQUA + "G", 0));
    128.  
    129. }
    130. else
    131. {
    132. if (sender instanceof Player)
    133.  
    134. {
    135.  
    136. final Player p = (Player)sender;
    137.  
    138. if(args.length == 1)
    139.  
    140. {
    141.  
    142. {
    143.  
    144. switch (args.length)
    145.  
    146. {
    147.  
    148. case 1:
    149.  
    150. case 2:
    151.  
    152. case 3:
    153.  
    154. p.sendMessage("§4Error: §cNot enough arguments, or too many.");
    155.  
    156. p.sendMessage("§7/Gems");
    157.  
    158. p.sendMessage("§7/Gems give <player> <amount>");
    159.  
    160. p.sendMessage("§7/Gems set <player> <amount>");
    161.  
    162. saveConfig();
    163.  
    164. break;
    165.  
    166.  
    167.  
    168. case 4:
    169.  
    170. Player t = Bukkit.getPlayer(args[2]);
    171.  
    172. if (t == null)
    173.  
    174. p.sendMessage( "§4Error: §cPlease enter a valid player.");
    175.  
    176. else try
    177.  
    178. {
    179.  
    180. int value = Integer.parseInt(args[3]);
    181.  
    182. if (args[1].equalsIgnoreCase("give")) {
    183.  
    184. getConfig().set(t.getName() + ".money", getConfig().getInt(t.getName() + ".money") + value);
    185.  
    186. p.sendMessage("§7You gave §bG" + args[3] + "§7's to §e" + t.getName());
    187.  
    188. t.sendMessage("§7You got §bG" + args[3] + "§7 from §e" + p.getName());
    189.  
    190. saveConfig();
    191.  
    192. }
    193.  
    194.  
    195.  
    196. if (args[1].equalsIgnoreCase("set"))
    197.  
    198. {
    199.  
    200. getConfig().set(t.getName() + ".money", value);
    201.  
    202. p.sendMessage("§7You set §e" + t.getName() + "§e's §bGems §7to §b" + value);
    203.  
    204. t.sendMessage("§7Your §bGems §7were set to §bG" + value + "§7 by §e" + p.getName());
    205.  
    206. saveConfig();
    207.  
    208. }
    209.  
    210. }
    211.  
    212. catch (final NumberFormatException e)
    213.  
    214. {
    215.  
    216. p.sendMessage( "§4Error: §cYou need to specify a valid amount.");
    217.  
    218. }
    219.  
    220.  
    221.  
    222. return true;
    223.  
    224. }
    225. }
    226. }
    227.  
    228. else if(args[0].equalsIgnoreCase("pay"))
    229.  
    230. {
    231.  
    232. switch (args.length)
    233.  
    234. {
    235.  
    236. case 1:
    237.  
    238. case 2:
    239.  
    240. p.sendMessage( "§4Error: §cYou need to specify an amount.");
    241.  
    242. p.sendMessage( "§7/Gems pay <player> <amount>");
    243.  
    244. break;
    245.  
    246. case 3:
    247.  
    248. Player t = Bukkit.getPlayer(args[1]);
    249.  
    250. if(t == null)
    251.  
    252. p.sendMessage( "§4Error: §cPlease enter a valid player.");
    253.  
    254. else try
    255.  
    256. {
    257.  
    258. getConfig().set(t.getName() + ".money", getConfig().getInt(t.getName() + ".money") + Integer.parseInt(args[2]));
    259.  
    260. getConfig().set(p.getName() + ".money", getConfig().getInt(p.getName() + ".money") - Integer.parseInt(args[2]));
    261.  
    262. p.sendMessage("§7You gave §bG" + args[2] + "§7's to §e" + t.getName());
    263.  
    264. t.sendMessage("§7You got §bG" + args[2] + "§7's from §e" + p.getName());
    265.  
    266. saveConfig();
    267.  
    268. break;
    269.  
    270. }
    271.  
    272. catch (final NumberFormatException e)
    273.  
    274. {
    275.  
    276. p.sendMessage( "§4Error: §cYou need to specify a valid amount.");
    277.  
    278. }
    279.  
    280.  
    281.  
    282. return true;
    283.  
    284.  
    285.  
    286. }
    287.  
    288. }
    289.  
    290. }
    291.  
    292. }
    293.  
    294. }
    295.  
    296. {
    297. return false;
    298. }
    299. }
    300. return false;
    301. }
    302. }


    But how can I make it check if the player has 500G before it gives them the permission and gun?
     
  14. Offline

    electro4fun

    Code:java
    1. @EventHandler
    2. public void onJoin(PlayerJoinEvent e)
    3. {
    4. Player p = e.getPlayer();
    5. getConfig().getInt(p.getName() + ".money" + ChatColor.AQUA + "G", 0);
    6. saveConfig();
    7. }


    For example: This is your playerjoinevent. When you do getConfig().... that is returning an int from the specified path. Use this tutorial for more help: https://forums.bukkit.org/threads/bukkits-yaml-configuration-tutorial.42770/.
     
Thread Status:
Not open for further replies.

Share This Page