ArrayList Removal Error

Discussion in 'Plugin Development' started by TCO_007, Mar 16, 2014.

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

    TCO_007

    Sorry haha. I know I have been posting more than usual tonight but I am new to coding haha. Anyways, I cant seem to figure out why my code is not removing me from my ArrayList Trampler.
    I thought I had the correct code but when I die, it does not remove me from it. Any help? Here is my code.
    Main Class:
    Code:java
    1. package me.TCOB055.MultiKits;
    2.  
    3. import java.util.ArrayList;
    4.  
    5. import org.bukkit.Bukkit;
    6. import org.bukkit.event.Listener;
    7. import org.bukkit.plugin.PluginManager;
    8. import org.bukkit.plugin.java.JavaPlugin;
    9.  
    10. public class Main extends JavaPlugin {
    11. public GUIListener guilisten = new GUIListener(this);
    12. public Events Events = new Events(this);
    13. //array lists for kits
    14. ArrayList<String> PvP = new ArrayList<String>();
    15. ArrayList<String> Fisherman = new ArrayList<String>();
    16. ArrayList<String> kitused = new ArrayList<String>();
    17. ArrayList<String> venom = new ArrayList<String>();
    18. ArrayList<String> Trampler = new ArrayList<String>();
    19. //end of array lists
    20.  
    21. public void onEnable() {
    22. commands();
    23. events();
    24. }
    25.  
    26. public void commands(){
    27. getCommand("Fisherman").setExecutor(new Fisherman(this));
    28. getCommand("PvP").setExecutor(new PvP(this));
    29. getCommand("kit").setExecutor(new Kit(this));
    30. getCommand("Venom").setExecutor(new Venom(this));
    31. getCommand("Trampler").setExecutor(new Trampler(this));
    32.  
    33. }
    34.  
    35. public void events(){
    36. PluginManager pm = getServer().getPluginManager();
    37. pm.registerEvents(Events, this);
    38. pm.registerEvents(guilisten, this);
    39.  
    40. }
    41. }
    42.  


    Events Class:
    Code:java
    1. package me.TCOB055.MultiKits;
    2.  
    3.  
    4. import java.util.List;
    5.  
    6. import org.bukkit.ChatColor;
    7. import org.bukkit.Material;
    8. import org.bukkit.entity.Entity;
    9. import org.bukkit.entity.Player;
    10. import org.bukkit.event.EventHandler;
    11. import org.bukkit.event.Listener;
    12. import org.bukkit.event.entity.EntityDamageByEntityEvent;
    13. import org.bukkit.event.entity.EntityDamageEvent;
    14. import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
    15. import org.bukkit.event.entity.PlayerDeathEvent;
    16. import org.bukkit.event.player.PlayerFishEvent;
    17. import org.bukkit.potion.PotionEffect;
    18. import org.bukkit.potion.PotionEffectType;
    19.  
    20. public class Events implements Listener {
    21. private Main plugin;
    22. public Events(Main instance){
    23. plugin = instance; }
    24.  
    25. @EventHandler
    26. public void onPlayerHitFishingrodscorpion(final PlayerFishEvent event) {
    27. final Player player = event.getPlayer();
    28. if (event.getCaught() instanceof Player) {
    29. final Player caught = (Player) event.getCaught();
    30. if (plugin.Fisherman.contains(player.getName())) {
    31. if (player.getItemInHand().getType() == Material.FISHING_ROD) {
    32. player.sendMessage(ChatColor.AQUA + "You have fished " + ChatColor.BOLD + ChatColor.RED + caught.getName() + ChatColor.AQUA + " to you!");
    33. caught.teleport(player.getLocation());
    34. }
    35. }
    36. }
    37. }
    38. @EventHandler
    39. public void onDeath(PlayerDeathEvent e){
    40. Player p = e.getEntity();
    41. if(plugin.kitused.contains(p.getName())){
    42. plugin.kitused.remove(p.getName());
    43. if(plugin.Fisherman.contains(p.getName())){
    44. plugin.Fisherman.remove(p.getName());
    45. if(plugin.PvP.contains(p.getName())){
    46. plugin.PvP.remove(p.getName());
    47. if(plugin.venom.contains(p.getName())){
    48. plugin.venom.remove(p.getName());
    49. if(plugin.Trampler.contains(p.getName())){
    50. plugin.Trampler.remove(p.getName());
    51. }
    52. }
    53. }
    54. }
    55. }
    56. }
    57.  
    58. @EventHandler
    59. public void onVenom(EntityDamageByEntityEvent e){
    60. Player p = (Player) e.getEntity();
    61. Player d = (Player) e.getDamager();
    62. if (plugin.venom.contains(d.getName())){
    63. if (e.getDamager() instanceof Player && e.getEntity() instanceof Player){
    64. if(Math.random() > 0.33D){
    65. p.addPotionEffect(new PotionEffect(PotionEffectType.POISON, 80, 1));
    66. }
    67. }
    68. }
    69. }
    70. @EventHandler
    71. public void onPlayerDamage(EntityDamageEvent e) {
    72. if (e.getEntity() instanceof Player) {
    73. Player p = (Player) e.getEntity();
    74. if (plugin.Trampler.contains(p.getName())) {
    75. if(e.getCause().equals(DamageCause.FALL)){
    76. e.setDamage((double) p.getFallDistance() / 8);
    77. if (p.getFallDistance() > 3) {
    78. List<Entity> nearby = p.getNearbyEntities(5, 5, 5);
    79. for (Entity tmp : nearby)
    80. if (tmp instanceof Player) {
    81. ((Player) tmp).damage((double) p.getFallDistance() / 2);
    82. }
    83. }
    84. }
    85. }
    86. }
    87. }
    88. }
    89.  


    Kit GUI:
    Code:java
    1. package me.TCOB055.MultiKits;
    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.CommandExecutor;
    10. import org.bukkit.command.CommandSender;
    11. import org.bukkit.enchantments.Enchantment;
    12. import org.bukkit.entity.Player;
    13. import org.bukkit.inventory.Inventory;
    14. import org.bukkit.inventory.ItemStack;
    15. import org.bukkit.inventory.meta.ItemMeta;
    16.  
    17. public class Kit implements CommandExecutor{
    18. private Main plugin;
    19. public Kit(Main instance){
    20. plugin = instance;
    21. }
    22. public static Inventory kits = Bukkit.createInventory(null, 18, ChatColor.GOLD + "Kits");
    23.  
    24. public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args){
    25. Player p = (Player) sender;
    26. if(commandLabel.equalsIgnoreCase("kit")){
    27. kits.clear();
    28. p.sendMessage(ChatColor.GREEN + "You have opened your kits!");
    29.  
    30. ItemStack PvP = new ItemStack(Material.DIAMOND_SWORD);
    31. PvP.addEnchantment(Enchantment.DAMAGE_ALL, 1);
    32. ItemMeta PvPMeta = PvP.getItemMeta();
    33. PvPMeta.setDisplayName(ChatColor.GRAY + "PvP");
    34. ArrayList<String> PvPLore = new ArrayList<String>();
    35. PvPLore.add(ChatColor.RED + "Diamond Sword - Sharpness 1");
    36. PvPLore.add(ChatColor.GRAY + "Full iron armour!");
    37. PvPMeta.setLore(PvPLore);
    38. PvP.setItemMeta(PvPMeta);
    39. kits.setItem(0 , PvP);
    40.  
    41.  
    42.  
    43. ItemStack Fisherman = new ItemStack(Material.FISHING_ROD);
    44. Fisherman.addUnsafeEnchantment(Enchantment.DURABILITY, 10);
    45. ItemMeta FishermanMeta = Fisherman.getItemMeta();
    46. FishermanMeta.setDisplayName(ChatColor.GOLD + "Fisherman");
    47. ArrayList<String> FishermanLore = new ArrayList<String>();
    48. FishermanLore.add(ChatColor.AQUA + "Stone Sword - Sharpness 1");
    49. FishermanLore.add(ChatColor.GOLD + "Hook your enemies and pull them to you!");
    50. FishermanMeta.setLore(FishermanLore);
    51. Fisherman.setItemMeta(FishermanMeta);
    52. kits.setItem(1, Fisherman);
    53.  
    54. ItemStack Venom = new ItemStack(Material.SPIDER_EYE);
    55. Venom.addUnsafeEnchantment(Enchantment.LUCK, 1);
    56. ItemMeta VenomMeta = Venom.getItemMeta();
    57. VenomMeta.setDisplayName(ChatColor.GOLD + "Venom");
    58. ArrayList<String> VenomLore = new ArrayList<String>();
    59. VenomLore.add(ChatColor.AQUA + "Stone Sword");
    60. VenomLore.add(ChatColor.GREEN + "33% chance of giving poison to your enemy!");
    61. VenomMeta.setLore(VenomLore);
    62. Venom.setItemMeta(VenomMeta);
    63. kits.setItem(2, Venom);
    64.  
    65. ItemStack Trampler = new ItemStack(Material.CHAINMAIL_BOOTS);
    66. Trampler.addEnchantment(Enchantment.PROTECTION_FALL, 1);
    67. ItemMeta TramplerMeta = Trampler.getItemMeta();
    68. TramplerMeta.setDisplayName(ChatColor.GOLD + "Trampler");
    69. ArrayList<String> TramplerLore = new ArrayList<String>();
    70. TramplerLore.add(ChatColor.GRAY + "Stone Sword - Sharpness 1");
    71. TramplerLore.add(ChatColor.GOLD + "Trample your enemies by transfering your fall damage to theirs!");
    72. TramplerMeta.setLore(TramplerLore);
    73. Trampler.setItemMeta(TramplerMeta);
    74. kits.setItem(3, Trampler);
    75.  
    76.  
    77.  
    78. p.openInventory(kits);
    79.  
    80.  
    81.  
    82. }
    83. return false;
    84. }
    85. }
    86.  


    GUIListener:
    Code:java
    1. package me.TCOB055.MultiKits;
    2.  
    3. import org.bukkit.Bukkit;
    4. import org.bukkit.ChatColor;
    5. import org.bukkit.entity.Player;
    6. import org.bukkit.event.EventHandler;
    7. import org.bukkit.event.Listener;
    8. import org.bukkit.event.inventory.InventoryClickEvent;
    9. import org.bukkit.inventory.Inventory;
    10.  
    11. public class GUIListener implements Listener{
    12. private Main plugin;
    13. public GUIListener(Main instance){
    14. plugin = instance;
    15. }
    16. @EventHandler
    17. public void onClick(InventoryClickEvent event){
    18. if ((event.getCurrentItem() != null) && (event.getCurrentItem().getItemMeta() != null)){
    19. Inventory inv = event.getInventory();
    20. Player p = (Player)event.getWhoClicked();
    21. if ((inv.getTitle().equals(ChatColor.GOLD + "Kits"))){
    22. if (event.getCurrentItem().getItemMeta().getDisplayName().equals(ChatColor.GRAY + "PvP")){
    23. Bukkit.dispatchCommand(p, "PvP");
    24. event.setCancelled(true);
    25. p.closeInventory();
    26.  
    27. }
    28. if (event.getCurrentItem().getItemMeta().getDisplayName().equals(ChatColor.GOLD + "Fisherman")){
    29. Bukkit.dispatchCommand(p, "Fisherman");
    30. event.setCancelled(true);
    31. p.closeInventory();
    32. }
    33. if (event.getCurrentItem().getItemMeta().getDisplayName().equals(ChatColor.GOLD + "Venom")){
    34. Bukkit.dispatchCommand(p, "Venom");
    35. event.setCancelled(true);
    36. p.closeInventory();
    37. }
    38. if (event.getCurrentItem().getItemMeta().getDisplayName().equals(ChatColor.GOLD + "Trampler")){
    39. Bukkit.dispatchCommand(p, "Trampler");
    40. event.setCancelled(true);
    41. p.closeInventory();
    42. }
    43.  
    44. }
    45.  
    46. }
    47.  
    48. }
    49. }
    50.  
     
  2. Offline

    Wizehh

    TCO_007
    Are you ever added to the arraylist? Try adding debug messages so you can get an idea of where the code works and doesn't work (e.g.,
    PHP:
    if (statement) {
        
    System.out.println("This is debug message #1");
    }
    ).
    Also, you really should adhere to the Java naming conventions: all your variables and fields should be lowercase.
     
  3. Offline

    TCO_007

    Yes. It adds me to the arraylist and I am almost 100% positive because the kit still gives you items on the FIRST try and the
    plugin.trampler.add(p.getName());\
    is in with that code. Its after you type the /trampler command for the first time and die does it not proceed to work anymore. Wizehh
     
  4. Offline

    Wizehh

    Why on earth are your if clauses..
    Anyway, here's the fixed code, it should work now:
    PHP:
    if (plugin.kitused.contains(p.getName())) {
        
    plugin.kitused.remove(p.getName());
    }
    if (
    plugin.fisherman.contains(p.getName())) {
        
    plugin.fisherman.remove(p.getName());
    }
    if (
    plugin.pvp.contains(p.getName())) {
        
    plugin.pvp.remove(p.getName());
    }
    if (
    plugin.venom.contains(p.getName())) {
        
    plugin.venom.remove(p.getName());
    }
    if (
    plugin.trampler.contains(p.getName())) {
        
    plugin.trampler.remove(p.getName());
    }
     
  5. Offline

    hubeb

    TCO_007
    if you are using plugin.trampler.add(p.getName());
    then use plugin.trampler.remove(p.getName());
    make a playerdeathevent and run the removal code there.
     
  6. Offline

    TCO_007

    hubeb Thats what I thought I did here:
    Code:java
    1. public void onDeath(PlayerDeathEvent e){
    2. Player p = e.getEntity();
    3. if(plugin.kitused.contains(p.getName())){
    4. plugin.kitused.remove(p.getName());
    5. if(plugin.Fisherman.contains(p.getName())){
    6. plugin.Fisherman.remove(p.getName());
    7. if(plugin.PvP.contains(p.getName())){
    8. plugin.PvP.remove(p.getName());
    9. if(plugin.venom.contains(p.getName())){
    10. plugin.venom.remove(p.getName());
    11. if(plugin.trampler.contains(p.getName())){
    12. plugin.trampler.remove(p.getName());
    13. }
    14. }
    15. }
    16. }
    17. }
    18. }
    19.  

    Wizehh
     
  7. Offline

    Wizehh

     
  8. Offline

    hubeb

    TCO_007 Srry I did not see that.
     
  9. Offline

    TCO_007

    Its ok :) hubeb
    Would it still work if I just made another playerdeathevent or would that just screw it up?
     
  10. Offline

    Wizehh

    Are you purposely disregarding my advice? I do believe the code I've provided for you will work.
     
  11. Offline

    TCO_007

    No. I put in your code and it still didnt work. I forgot to mention that when I was talking to hubeb. Sorry about that. I put in your code though and it still doesnt work. It works for all other kits but trampler and I cant seem to find the problem. Wizehh
     
Thread Status:
Not open for further replies.

Share This Page