Arraylist Teams - Friendly Fire

Discussion in 'Plugin Development' started by DivinanceMC, May 20, 2014.

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

    DivinanceMC

    Hello,

    The plugin I've been working on has one bug I can't seem to get around. I can't turn off friendly fire. Teammates can hit each other with any item. If anyone could help, that would be great.

    Code:java
    1. package me.DivinanceMC.BorderClans;
    2.  
    3. import java.util.ArrayList;
    4. import org.bukkit.ChatColor;
    5. import org.bukkit.Material;
    6. import org.bukkit.Server;
    7. import org.bukkit.configuration.file.FileConfiguration;
    8. import org.bukkit.configuration.file.FileConfigurationOptions;
    9. import org.bukkit.entity.Arrow;
    10. import org.bukkit.entity.Entity;
    11. import org.bukkit.entity.Player;
    12. import org.bukkit.entity.Projectile;
    13. import org.bukkit.event.EventHandler;
    14. import org.bukkit.event.Listener;
    15. import org.bukkit.event.entity.EntityDamageByEntityEvent;
    16. import org.bukkit.event.inventory.InventoryClickEvent;
    17. import org.bukkit.event.player.PlayerJoinEvent;
    18. import org.bukkit.inventory.ItemStack;
    19. import org.bukkit.inventory.PlayerInventory;
    20. import org.bukkit.plugin.PluginManager;
    21. import org.bukkit.plugin.java.JavaPlugin;
    22.  
    23. public class BorderClans extends JavaPlugin
    24. implements Listener
    25. {
    26. ArrayList<Player> red = new ArrayList(0);
    27. ArrayList<Player> blue = new ArrayList(0);
    28.  
    29. public void onEnable()
    30. {
    31. getServer().getPluginManager().registerEvents(this, this);
    32. getConfig().options().copyDefaults(true);
    33. }
    34.  
    35. @EventHandler
    36. public void onPlayerjoin(PlayerJoinEvent event)
    37. {
    38. Player player = event.getPlayer();
    39.  
    40. if (player.hasPlayedBefore()) {
    41. String redteam = "red";
    42. String blueteam = "blue";
    43. String team = getConfig().getString(player.getName() + ".team");
    44.  
    45. if (team == null) {
    46. if (this.red.size() == this.blue.size())
    47. {
    48. String redconfig = "red";
    49. getConfig().set(player.getName() + ".team", redconfig);
    50. saveConfig();
    51.  
    52. this.red.add(player);
    53. player.sendMessage(ChatColor.GRAY + "You joined the " + ChatColor.DARK_RED + "Red Team");
    54. String redprefix = "§7[§4Red§7][§c-§7]§4 ";
    55. player.setDisplayName(redprefix + player.getName() + "§f");
    56. player.getInventory().setHelmet(new ItemStack(Material.WOOL, 1, (short)14));
    57. }
    58. else if (this.red.size() < this.blue.size()) {
    59. this.red.add(player);
    60. player.sendMessage(ChatColor.GRAY + (ChatColor.GRAY + "You joined the " + ChatColor.DARK_RED + "Red Team");
    61. String redprefix = "§7[§4Red§7][§c-§7]§4 ";
    62. player.setDisplayName(redprefix + player.getName() + "§f");
    63. player.getInventory().setHelmet(new ItemStack(Material.WOOL, 1, (short)14));
    64.  
    65. String redconfig = "red";
    66. getConfig().set(player.getName() + ".team", redconfig);
    67. saveConfig();
    68. }
    69. else if (this.blue.size() < this.red.size()) {
    70. this.blue.add(player);
    71. player.sendMessage(ChatColor.GRAY + "You joined the " + ChatColor.BLUE + "Blue Team");
    72. String blueprefix = "§7[§9Blue§7][§a+§7]§9 ";
    73. player.setDisplayName(blueprefix + player.getName() + "§f");
    74. player.getInventory().setHelmet(new ItemStack(Material.WOOL, 1, (short)11));
    75.  
    76. String blueconfig = "blue";
    77. getConfig().set(player.getName() + ".team", blueconfig);
    78. saveConfig();
    79. }
    80. }
    81. else if (team.equalsIgnoreCase(redteam))
    82. {
    83. this.red.add(player);
    84. player.sendMessage(ChatColor.GRAY + "You joined the " + ChatColor.DARK_RED + "Red Team");
    85. String redprefix = "§7[§4Red§7][§c-§7]§4 ";
    86. player.setDisplayName(redprefix + player.getName() + "§f");
    87. player.getInventory().setHelmet(new ItemStack(Material.WOOL, 1, (short)14));
    88. }
    89. else if (team.equals(blueteam))
    90. {
    91. this.blue.add(player);
    92. player.sendMessage(ChatColor.GRAY + "You joined the " + ChatColor.BLUE + "Blue Team");
    93. String blueprefix = "§7[§9Blue§7][§a+§7]§9 ";
    94. player.setDisplayName(blueprefix + player.getName() + "§f");
    95. player.getInventory().setHelmet(new ItemStack(Material.WOOL, 1, (short)11));
    96. }
    97. else if (team.equals(null)) {
    98. if (this.red.size() == this.blue.size())
    99. {
    100. String redconfig = "red";
    101. getConfig().set(player.getName() + ".team", redconfig);
    102. saveConfig();
    103.  
    104. this.red.add(player);
    105. player.sendMessage(ChatColor.GRAY + "You joined the " + ChatColor.DARK_RED + "Red Team");
    106. String redprefix = "§7[§4Red§7][§c-§7]§4 ";
    107. player.setDisplayName(redprefix + player.getName() + "§f");
    108. player.getInventory().setHelmet(new ItemStack(Material.WOOL, 1, (short)14));
    109. }
    110. else if (this.red.size() < this.blue.size()) {
    111. this.red.add(player);
    112. player.sendMessage(ChatColor.GRAY + "You joined the " + ChatColor.DARK_RED + "Red Team");
    113. String redprefix = "§7[§4Red§7][§c-§7]§4 ";
    114. player.setDisplayName(redprefix + player.getName() + "§f");
    115. player.getInventory().setHelmet(new ItemStack(Material.WOOL, 1, (short)14));
    116.  
    117. String redconfig = "red";
    118. getConfig().set(player.getName() + ".team", redconfig);
    119. saveConfig();
    120. }
    121. else if (this.blue.size() < this.red.size()) {
    122. this.blue.add(player);
    123. player.sendMessage(ChatColor.GRAY + "You joined the " + ChatColor.BLUE + "Blue Team");
    124. String blueprefix = "§7[§9Blue§7][§a+§7]§9 ";
    125. player.setDisplayName(blueprefix + player.getName() + "§f");
    126. player.getInventory().setHelmet(new ItemStack(Material.WOOL, 1, (short)11));
    127.  
    128. String blueconfig = "blue";
    129. getConfig().set(player.getName() + ".team", blueconfig);
    130. saveConfig();
    131. }
    132. }
    133. }
    134. else if (!player.hasPlayedBefore()) {
    135. if (this.red.size() == this.blue.size())
    136. {
    137. String redconfig = "red";
    138. getConfig().set(player.getName() + ".team", redconfig);
    139. saveConfig();
    140.  
    141. this.red.add(player);
    142. player.sendMessage(ChatColor.GRAY + "You joined the " + ChatColor.DARK_RED + "Red Team");
    143. String redprefix = "§7[§4Red§7][§c-§7]§4 ";
    144. player.setDisplayName(redprefix + player.getName() + "§f");
    145. player.getInventory().setHelmet(new ItemStack(Material.WOOL, 1, (short)14));
    146. }
    147. else if (this.red.size() < this.blue.size()) {
    148. this.red.add(player);
    149. player.sendMessage(ChatColor.GRAY + "You joined the " + ChatColor.DARK_RED + "Red Team");
    150. String redprefix = "§7[§4Red§7][§c-§7]§4 ";
    151. player.setDisplayName(redprefix + player.getName() + "§f");
    152. player.getInventory().setHelmet(new ItemStack(Material.WOOL, 1, (short)14));
    153.  
    154. String redconfig = "red";
    155. getConfig().set(player.getName() + ".team", redconfig);
    156. saveConfig();
    157. }
    158. else if (this.blue.size() < this.red.size()) {
    159. this.blue.add(player);
    160. player.sendMessage(ChatColor.GRAY + "You joined the " + ChatColor.BLUE + "Blue Team");
    161. String blueprefix = "§7[§9Blue§7][§a+§7]§9 ";
    162. player.setDisplayName(blueprefix + player.getName() + "§f");
    163. player.getInventory().setHelmet(new ItemStack(Material.WOOL, 1, (short)11));
    164.  
    165. String blueconfig = "blue";
    166. getConfig().set(player.getName() + ".team", blueconfig);
    167. saveConfig();
    168. }
    169. }
    170. }
    171.  
    172. @EventHandler
    173. public void onHelmetTouch(InventoryClickEvent event)
    174. {
    175. if (event.getSlot() == 39)
    176. event.setCancelled(true);
    177. }
    178.  
    179. @EventHandler
    180. public void onEntityDamageByEntity(EntityDamageByEntityEvent event)
    181. {
    182. if (((event.getEntity() instanceof Player)) && ((event.getDamager() instanceof Player))) {
    183. Player player = (Player)event.getEntity();
    184. Player damager = (Player)event.getDamager();
    185.  
    186. if ((this.red.contains(player.getName())) && (this.red.contains(damager.getName())))
    187. event.setCancelled(true);
    188. else if ((this.blue.contains(player.getName())) && (this.blue.contains(damager.getName())))
    189. event.setCancelled(true);
    190. }
    191. else if (((event.getEntity() instanceof Arrow)) && ((event.getDamager() instanceof Player))) {
    192. Entity arrow = event.getEntity();
    193. if ((((Projectile)arrow).getShooter() instanceof Player)) {
    194. Player player = (Player)arrow;
    195. Player damager = (Player)event.getDamager();
    196. if ((this.red.contains(player.getName())) && (this.red.contains(damager.getName()))) {
    197. event.setCancelled(true);
    198. }
    199. else if ((this.blue.contains(player
    200. .getName())) && (this.blue.contains(damager.getName())))
    201. event.setCancelled(true);
    202. }
    203. }
    204. }
    205. }
     
  2. Offline

    THEREDBARON24

    On damage, you are seeing if the player's name is in the array. Change this so from player.getName to player
     
  3. Offline

    SkyleTyler1337

    console output?
     
  4. Offline

    ABDTGaming

    You're adding the player entity to the ArrayList and then trying to see if the player's name is in the ArrayList in the EntityDamageByEntityEvent. Try adding the player to the ArrayList with red.add(player.getName());
     
Thread Status:
Not open for further replies.

Share This Page