Kits Enable Error

Discussion in 'Plugin Development' started by Dead_Skeleton, Sep 15, 2013.

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

    Dead_Skeleton

    Hey guys, I need your help again! I made a kits plugin where when you type /PvP, it gives you a PvP kit an until you die, you cannot choose another kit. The other kit is /Archer. Here is my code:

    Main:

    Code:java
    1. package me.Dead_Skeleton.kits;
    2.  
    3. import java.util.ArrayList;
    4.  
    5. import org.bukkit.Bukkit;
    6. import org.bukkit.entity.Player;
    7. import org.bukkit.event.EventHandler;
    8. import org.bukkit.event.Listener;
    9. import org.bukkit.event.entity.PlayerDeathEvent;
    10. import org.bukkit.plugin.java.JavaPlugin;
    11.  
    12. public class Main extends JavaPlugin implements Listener {
    13.  
    14. ArrayList<Player> hasAkit = new ArrayList<Player>();
    15.  
    16. public void onEnable() {
    17. Bukkit.getServer().getPluginManager().registerEvents(this, this);
    18. Bukkit.getServer().getPluginManager().registerEvents(new Archer(this), this);
    19. Bukkit.getServer().getPluginManager().registerEvents(new PvP(this), this);
    20. getCommand("pvp").setExecutor(new PvP(this));
    21. getCommand("archer").setExecutor(new Archer(this));
    22. }
    23. public void onDisable() {
    24.  
    25. }
    26.  
    27. @EventHandler
    28. public void onPlayerDeath(PlayerDeathEvent e) {
    29. if(e.getEntity() instanceof Player) {
    30. Player p = e.getEntity();
    31. hasAkit.remove(p);
    32. }
    33. }
    34. }
    35.  


    PvP:

    Code:java
    1. package me.Dead_Skeleton.kits;
    2.  
    3. import java.util.ArrayList;
    4.  
    5. import org.bukkit.ChatColor;
    6. import org.bukkit.Material;
    7. import org.bukkit.command.Command;
    8. import org.bukkit.command.CommandSender;
    9. import org.bukkit.enchantments.Enchantment;
    10. import org.bukkit.entity.Player;
    11. import org.bukkit.event.Listener;
    12. import org.bukkit.inventory.ItemStack;
    13. import org.bukkit.inventory.meta.ItemMeta;
    14. import org.bukkit.plugin.java.JavaPlugin;
    15.  
    16. public class PvP extends JavaPlugin implements Listener {
    17.  
    18. private Main main;
    19.  
    20. public PvP(Main main){
    21. this.main = main;
    22. }
    23.  
    24. private ArrayList<Player> hasAkit = main.hasAkit;
    25.  
    26. public boolean onCommand(CommandSender sender, Command cmd, String CommandLabel, String[] args) {
    27. if(cmd.getName().equalsIgnoreCase("pvp")) {
    28. if(!(sender instanceof Player)) {
    29. sender.sendMessage(ChatColor.RED + "The console cannot receive kits!");
    30. return true;
    31. }
    32. Player p = (Player) sender;
    33. if(hasAkit.contains(p)) {
    34. p.sendMessage(ChatColor.RED + "You have already received a kit!");
    35. }
    36. p.getInventory().setHelmet(new ItemStack(Material.IRON_HELMET));
    37. p.getInventory().setChestplate(new ItemStack(Material.IRON_CHESTPLATE));
    38. p.getInventory().setLeggings(new ItemStack(Material.IRON_LEGGINGS));
    39. p.getInventory().setBoots(new ItemStack(Material.IRON_BOOTS));
    40. ItemStack diamond_sword = new ItemStack(Material.DIAMOND_SWORD);
    41. ItemMeta diamond_im = diamond_sword.getItemMeta();
    42. diamond_im.addEnchant(Enchantment.DAMAGE_ALL, 1, true);
    43. diamond_sword.setItemMeta(diamond_im);
    44. p.getInventory().addItem(diamond_sword);
    45. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP, 1));
    46. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP, 1));
    47. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP, 1));
    48. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP, 1));
    49. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP, 1));
    50. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP, 1));
    51. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP, 1));
    52. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP, 1));
    53. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP, 1));
    54. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP, 1));
    55. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP, 1));
    56. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP, 1));
    57. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP, 1));
    58. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP, 1));
    59. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP, 1));
    60. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP, 1));
    61. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP, 1));
    62. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP, 1));
    63. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP, 1));
    64. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP, 1));
    65. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP, 1));
    66. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP, 1));
    67. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP, 1));
    68. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP, 1));
    69. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP, 1));
    70. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP, 1));
    71. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP, 1));
    72. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP, 1));
    73. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP, 1));
    74. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP, 1));
    75. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP, 1));
    76. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP, 1));
    77. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP, 1));
    78. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP, 1));
    79. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP, 1));
    80. p.sendMessage(ChatColor.GREEN + "Here is your PvP kit!");
    81. }
    82. return true;
    83. }
    84. }
    85.  


    Archer:

    Code:java
    1. package me.Dead_Skeleton.kits;
    2.  
    3. import java.util.ArrayList;
    4.  
    5. import org.bukkit.ChatColor;
    6. import org.bukkit.Material;
    7. import org.bukkit.command.Command;
    8. import org.bukkit.command.CommandSender;
    9. import org.bukkit.enchantments.Enchantment;
    10. import org.bukkit.entity.Player;
    11. import org.bukkit.event.Listener;
    12. import org.bukkit.inventory.ItemStack;
    13. import org.bukkit.inventory.meta.ItemMeta;
    14. import org.bukkit.plugin.java.JavaPlugin;
    15.  
    16. public class Archer extends JavaPlugin implements Listener {
    17.  
    18. private Main main;
    19.  
    20. public Archer(Main main){
    21. this.main = main;
    22. }
    23.  
    24. private ArrayList<Player> hasAkit = main.hasAkit;
    25.  
    26. public boolean onCommand(CommandSender sender, Command cmd, String CommandLabel, String[] args) {
    27. if(cmd.getName().equalsIgnoreCase("archer")) {
    28. if(!(sender instanceof Player)) {
    29. sender.sendMessage(ChatColor.RED + "You have already received a kit!");
    30. return true;
    31. }
    32. Player p = (Player) sender;
    33. if(hasAkit.contains(p)) {
    34. p.sendMessage(ChatColor.RED + "You have already received a kit!");
    35. return true;
    36. }
    37. ItemStack archer_helmet = new ItemStack(Material.LEATHER_HELMET);
    38. ItemStack archer_chestplate = new ItemStack(Material.LEATHER_CHESTPLATE);
    39. ItemStack archer_leggings = new ItemStack(Material.LEATHER_LEGGINGS);
    40. ItemStack archer_boots = new ItemStack(Material.LEATHER_BOOTS);
    41. ItemMeta helmet_meta = archer_helmet.getItemMeta();
    42. ItemMeta chestplate_meta = archer_chestplate.getItemMeta();
    43. ItemMeta leggings_meta = archer_leggings.getItemMeta();
    44. ItemMeta boots_meta = archer_boots.getItemMeta();
    45. helmet_meta.addEnchant(Enchantment.PROTECTION_ENVIRONMENTAL, 2, true);
    46. chestplate_meta.addEnchant(Enchantment.PROTECTION_ENVIRONMENTAL, 2, true);
    47. leggings_meta.addEnchant(Enchantment.PROTECTION_ENVIRONMENTAL, 2, true);
    48. boots_meta.addEnchant(Enchantment.PROTECTION_ENVIRONMENTAL, 2, true);
    49. boots_meta.addEnchant(Enchantment.PROTECTION_ENVIRONMENTAL, 5, true);
    50. archer_helmet.setItemMeta(helmet_meta);
    51. archer_chestplate.setItemMeta(chestplate_meta);
    52. archer_leggings.setItemMeta(leggings_meta);
    53. archer_boots.setItemMeta(boots_meta);
    54. p.getInventory().setHelmet(archer_helmet);
    55. p.getInventory().setChestplate(archer_chestplate);
    56. p.getInventory().setLeggings(archer_leggings);
    57. p.getInventory().setBoots(archer_boots);
    58. ItemStack archer_sword = new ItemStack(Material.STONE_SWORD);
    59. ItemMeta sword_meta = archer_sword.getItemMeta();
    60. sword_meta.addEnchant(Enchantment.DAMAGE_ALL, 1, true);
    61. archer_sword.setItemMeta(sword_meta);
    62. p.getInventory().addItem(archer_sword);
    63. ItemStack archer_bow = new ItemStack(Material.BOW);
    64. ItemMeta bow_meta = archer_bow.getItemMeta();
    65. bow_meta.addEnchant(Enchantment.ARROW_INFINITE, 1, true);
    66. bow_meta.addEnchant(Enchantment.ARROW_KNOCKBACK, 2, true);
    67. bow_meta.addEnchant(Enchantment.ARROW_DAMAGE, 5, true);
    68. archer_bow.setItemMeta(bow_meta);
    69. p.getInventory().addItem(archer_bow);
    70. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP, 1));
    71. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP, 1));
    72. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP, 1));
    73. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP, 1));
    74. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP, 1));
    75. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP, 1));
    76. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP, 1));
    77. p.getInventory().addItem(new ItemStack(Material.ARROW));
    78. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP, 1));
    79. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP, 1));
    80. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP, 1));
    81. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP, 1));
    82. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP, 1));
    83. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP, 1));
    84. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP, 1));
    85. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP, 1));
    86. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP, 1));
    87. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP, 1));
    88. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP, 1));
    89. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP, 1));
    90. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP, 1));
    91. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP, 1));
    92. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP, 1));
    93. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP, 1));
    94. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP, 1));
    95. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP, 1));
    96. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP, 1));
    97. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP, 1));
    98. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP, 1));
    99. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP, 1));
    100. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP, 1));
    101. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP, 1));
    102. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP, 1));
    103. p.getInventory().addItem(new ItemStack(Material.MUSHROOM_SOUP, 1));
    104. hasAkit.add(p);
    105. }
    106. return true;
    107. }
    108. }
    109.  


    plugin.yml:

    Code:
    name: Kits
    version: 1.0
    main: me.Dead_Skeleton.kits.Main
    description: Kits plugin.
     
    commands:
        pvp:
            usage: /<command>
            description: PvP Kit.
        archer:
            usage: /<command>
            description: Archer Kit.
    Error in console when loading plugin:

    Code:
    [SEVERE] Error occurred while enabling Kits v1.0 (Is it up to date?)
    java.lang.NullPointerException
        at me.Dead_Skeleton.kits.Archer.<init>(Archer.java:24)
        at me.Dead_Skeleton.kits.Main.onEnable(Main.java:18)
        at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:217)
        at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:457)
        at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:382)
        at org.bukkit.craftbukkit.v1_6_R2.CraftServer.loadPlugin(CraftServer.java:286)
        at org.bukkit.craftbukkit.v1_6_R2.CraftServer.enablePlugins(CraftServer.java:268)
        at net.minecraft.server.v1_6_R2.MinecraftServer.l(MinecraftServer.java:319)
        at net.minecraft.server.v1_6_R2.MinecraftServer.f(MinecraftServer.java:296)
        at net.minecraft.server.v1_6_R2.MinecraftServer.a(MinecraftServer.java:256)
        at net.minecraft.server.v1_6_R2.DedicatedServer.init(DedicatedServer.java:164)
        at net.minecraft.server.v1_6_R2.MinecraftServer.run(MinecraftServer.java:397)
        at net.minecraft.server.v1_6_R2.ThreadServerApplication.run(SourceFile:582)
    Hope you can see what's wrong! Thanks!
     
  2. Offline

    Barnyard_Owl

    Code:java
    1. /* Main, line 15 */ ArrayList<Player> hasAkit = new ArrayList<Player>( );
    2. // should be
    3. static ArrayList<Player> hasAkit = new ArrayList<Player>( );
    4.  
    5. // ----------
    6.  
    7. /* PvP, line 25 */ private ArrayList<Player> hasAkit = main.hasAkit;
    8. // should be
    9. private ArrayList<Player> hasAkit = Main.hasAkit;
    10.  
    11. // ----------
    12.  
    13. /* Archer, line 25 */ private ArrayList<Player> hasAkit = main.hasAkit;
    14. // should be
    15. private ArrayList<Player> hasAkit = Main.hasAkit;
    16.  

    You can just use
    Code:java
    1. @SuppressWarnings( "unused" )

    to get rid of any errors on line 18 in classes PvP and Archer, or remove the main variable altogether.
     
  3. Offline

    Dead_Skeleton

    Thanks! I followed those instructions and fixed a couple of other things. In the PvP class, I hadn't said for it to return if they were in the ArrayList and I never said for it to add them, either! I fixed a lot!
     
  4. Offline

    chasechocolate

    Dead_Skeleton you shouldn't have multiple classes extending JavaPlugin. Since it looks like all those classes are for is commands and listeners, so just make it implement CommandExecutor and Listener. In the onEnable() of the main class, use this.getCommand("archer").setExecutor(new Archer(this)).
     
Thread Status:
Not open for further replies.

Share This Page