The player this arena player represents
+ * @param arenaThe arena the player is currently in
+ * @param readyWhether the player is currently ready to start the game
+ * @param quitWhether the player has quit the game
+ * @param deadWhether the player has died
+ * @param isOutWhether the player has left the game
+ * @param isWatchingWhether the player is watching the arena
+ * @param needConfirmationWhether a conformation is necessary for the player to join the game
+ * @param inArenaWhether the player is currently in an arena
+ * @param frozenWhether the player is currently frozen, not allowed to move
+ */ + public ArenaPlayer(Player player, Arena arena, boolean ready, boolean quit, boolean dead, boolean isOut, + boolean isWatching, boolean needConfirmation, boolean inArena, boolean frozen) { + this.player = player; + this.arena = arena; + this.ready = ready; + this.quit = quit; + this.dead = dead; + this.isOut = isOut; + this.isWatching = isWatching; + this.needConfirmation = needConfirmation; + this.inArena = inArena; + this.frozen = frozen; + } + + /** + * Gets the player this arena player corresponds to + * + * @returnThe actual player
+ */ + public Player getPlayer() { + return player; + } + + public void setPlayer(Player player) { + this.player = player; + } + + /** + * Gets the arena this arena player is currently in + * + * @returnThe arena this player is in, or null if not in an arena
+ */ + public Arena getArena() { + return arena; + } + + public void setArena(Arena arena) { + this.arena = arena; + } + + /** + * Gets whether this arena player is ready to start the game + * + * @returnTrue if this player is ready
+ */ + public boolean isReady() { + return ready; + } + + public void setReady(boolean ready) { + this.ready = ready; + } + + /** + * Gets whether this arena player has quit + * + *If the player has been kicked, has died or has quit the game, this returns true.
+ * + * @returnTrue if this arena player has quit
+ */ + public boolean hasQuit() { + return quit; + } + + public void setQuit(boolean quit) { + this.quit = quit; + } + + /** + * Gets whether this arena player has died + * + * @returnTrue if this arena player has died
+ */ + public boolean isDead() { + return dead; + } + + public void setDead(boolean dead) { + this.dead = dead; + } + + /** + * Gets whether this arena player has left the game, and is "out" + * + * @returnTrue if this arena player is currently out
+ */ + public boolean isOut() { + return isOut; + } + + public void setOut(boolean out) { + isOut = out; + } + + /** + * Gets whether this arena player is currently watching the arena + * + * @returnTrue if currently watching the arena
+ */ + public boolean isWatching() { + return isWatching; + } + + public void setWatching(boolean watching) { + isWatching = watching; + } + + /** + * Gets whether ths arena player needs to confirm that they want to join the game + * + *As some arenas have entry fees, they might require that a player confirms that they really want to join the + * arena. If a player hasn't confirmed that they want to join, this will be true.
+ * + * @returnTrue if this arena player needs to confirm that they are joining
+ */ + public boolean needConfirmation() { + return needConfirmation; + } + + public void setNeedConfirmation(boolean needConfirmation) { + this.needConfirmation = needConfirmation; + } + + /** + * Gets whether this arena player is currently in an arena + * + * @returnTrue if in an arena
+ */ + public boolean isInArena() { + return inArena; + } + + /** + * Sets whether this arena player is currently in an arena + * + * @param inArenaTrue if this arena player is currently in an arena
+ */ + public void setInArena(boolean inArena) { + this.inArena = inArena; + } + + /** + * Gets whether this arena player is frozen + * + *A frozen player is a player that is currently prevented from moving, such as when players are forced to stay + * on their pedestals until the countdown expires.
+ * + * @returnTrue if this arena player is frozen
+ */ + public boolean isFrozen() { + return frozen; + } + + public void setFrozen(boolean frozen) { + this.frozen = frozen; + } + } diff --git a/src/main/java/net/knarcraft/hungerarena/ArenaState.java b/src/main/java/net/knarcraft/hungerarena/ArenaState.java index 6179a1d..a821645 100644 --- a/src/main/java/net/knarcraft/hungerarena/ArenaState.java +++ b/src/main/java/net/knarcraft/hungerarena/ArenaState.java @@ -1,9 +1,9 @@ package net.knarcraft.hungerarena; public enum ArenaState { - + IDLE, RUNNING, WARPED - + } diff --git a/src/main/java/net/knarcraft/hungerarena/Chests.java b/src/main/java/net/knarcraft/hungerarena/Chests.java index 020a67b..bc665ef 100644 --- a/src/main/java/net/knarcraft/hungerarena/Chests.java +++ b/src/main/java/net/knarcraft/hungerarena/Chests.java @@ -46,9 +46,9 @@ public class Chests implements Listener { Block block = event.getClickedBlock(); Player p = event.getPlayer(); if (plugin.getArena(p) != null) { - int a = plugin.getArena(p); + int a = plugin.getArena(p).getArenaId(); if (plugin.Playing.get(a).contains(p.getName()) && plugin.canJoin.get(a)) { - if (!plugin.restrictedWorlds || (plugin.restrictedWorlds && plugin.worldsNames.containsValue(p.getWorld().getName()))) { + if (!plugin.restrictedWorlds || (plugin.restrictedWorlds && plugin.worldNames.containsValue(p.getWorld().getName()))) { if (block != null) { if (block.getState() instanceof InventoryHolder) { ItemStack[] itemsinchest = ((InventoryHolder) block.getState()).getInventory().getContents().clone(); diff --git a/src/main/java/net/knarcraft/hungerarena/HaCommands.java b/src/main/java/net/knarcraft/hungerarena/HaCommands.java index b4e4815..6ba96d0 100644 --- a/src/main/java/net/knarcraft/hungerarena/HaCommands.java +++ b/src/main/java/net/knarcraft/hungerarena/HaCommands.java @@ -33,6 +33,7 @@ import org.bukkit.scoreboard.DisplaySlot; import org.bukkit.scoreboard.Objective; import org.bukkit.scoreboard.Score; import org.bukkit.scoreboard.Scoreboard; +import org.jetbrains.annotations.NotNull; import java.lang.reflect.Method; import java.util.ArrayList; @@ -40,6 +41,7 @@ import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Set; +import java.util.UUID; public class HaCommands implements CommandExecutor { public final HungerArena plugin; @@ -49,8 +51,8 @@ public class HaCommands implements CommandExecutor { } int i = 0; - int arena = 1; - boolean NoPlayerSpawns = true; + int arenaId = 1; + boolean noPlayerSpawns = true; private void clearInv(Player p) { p.getInventory().clear(); @@ -62,47 +64,48 @@ public class HaCommands implements CommandExecutor { } private Location getArenaSpawn() { - String[] Spawncoords; - if (plugin.spawns.getString("Spawn_coordinates." + arena) != null) { - Spawncoords = plugin.spawns.getString("Spawn_coordinates." + arena).split(","); + String[] spawnCoordinates; + if (plugin.spawns.getString("Spawn_coordinates." + arenaId) != null) { + spawnCoordinates = plugin.spawns.getString("Spawn_coordinates." + arenaId).split(","); } else { - Spawncoords = plugin.spawns.getString("Spawn_coordinates.0").split(","); + spawnCoordinates = plugin.spawns.getString("Spawn_coordinates.0").split(","); } - double spawnx = Double.parseDouble(Spawncoords[0]); - double spawny = Double.parseDouble(Spawncoords[1]); - double spawnz = Double.parseDouble(Spawncoords[2]); - String spawnworld = Spawncoords[3]; - World spawnw = plugin.getServer().getWorld(spawnworld); - return new Location(spawnw, spawnx, spawny, spawnz); + double spawnX = Double.parseDouble(spawnCoordinates[0]); + double spawnY = Double.parseDouble(spawnCoordinates[1]); + double spawnZ = Double.parseDouble(spawnCoordinates[2]); + String spawnWorldName = spawnCoordinates[3]; + World spawnWorld = plugin.getServer().getWorld(spawnWorldName); + return new Location(spawnWorld, spawnX, spawnY, spawnZ); } @Override - public boolean onCommand(final CommandSender sender, Command cmd, String commandLabel, String[] args) { + public boolean onCommand(final @NotNull CommandSender sender, @NotNull Command cmd, @NotNull String commandLabel, String[] args) { boolean console = false; - boolean playr = false; + boolean isPlayer = false; if (sender instanceof ConsoleCommandSender) { console = true; } else if (sender instanceof Player) { - playr = true; + isPlayer = true; } - if (playr) { - final Player p = (Player) sender; - final String pname = p.getName(); - String ThisWorld = p.getWorld().getName(); - for (int i : plugin.worldsNames.keySet()) { - if (plugin.worldsNames.get(i) != null) { - if (plugin.worldsNames.get(i).equals(ThisWorld)) { - arena = i; - NoPlayerSpawns = false; + if (isPlayer) { + final Player player = (Player) sender; + final UUID playerUUID = player.getUniqueId(); + final String playerName = player.getName(); + String ThisWorld = player.getWorld().getName(); + for (int i : plugin.worldNames.keySet()) { + if (plugin.worldNames.get(i) != null) { + if (plugin.worldNames.get(i).equals(ThisWorld)) { + arenaId = i; + noPlayerSpawns = false; } } } - if (plugin.getArena(p) != null) { - arena = plugin.getArena(p); - NoPlayerSpawns = false; + if (plugin.getArena(player) != null) { + arenaId = plugin.getArena(player).getArenaId(); + noPlayerSpawns = false; } if (cmd.getName().equalsIgnoreCase("Ha")) { if (args.length == 0) { @@ -110,275 +113,276 @@ public class HaCommands implements CommandExecutor { sender.sendMessage(ChatColor.GREEN + "[HungerArena] Update by " + ChatColor.AQUA + "Jeppa ! "); return false; } else if (args[0].equalsIgnoreCase("NewArena")) { - if (p.hasPermission("HungerArena.StartPoint")) { + if (player.hasPermission("HungerArena.StartPoint")) { if (args.length < 2) { - p.sendMessage(ChatColor.AQUA + "You have to enter the arena number as 2nd argument"); + player.sendMessage(ChatColor.AQUA + "You have to enter the arena number as 2nd argument"); } else { try { - arena = Integer.parseInt(args[1]); + arenaId = Integer.parseInt(args[1]); } catch (Exception e) { - p.sendMessage(ChatColor.RED + "Argument not an integer!"); + player.sendMessage(ChatColor.RED + "Argument not an integer!"); return false; } - if (plugin.worldsNames.containsValue(ThisWorld)) { - p.sendMessage(ChatColor.RED + "This world already has an areana! \n (only one arena per world possible, yet!)"); + if (plugin.worldNames.containsValue(ThisWorld)) { + player.sendMessage(ChatColor.RED + "This world already has an areana! \n (only one arena per world possible, yet!)"); return false; } - ((Player) sender).performCommand("startpoint " + arena); + ((Player) sender).performCommand("startpoint " + arenaId); } } else { - p.sendMessage(ChatColor.RED + "You don't have permission!"); + player.sendMessage(ChatColor.RED + "You don't have permission!"); } } else if (args[0].equalsIgnoreCase("SetSpawn")) { - if (p.hasPermission("HungerArena.SetSpawn")) { - if ((NoPlayerSpawns) && (args.length < 2)) { - p.sendMessage(ChatColor.AQUA + "You have to set the playerspawns first! Use /ha newarena \nOr enter the arena number as 2nd argument, \n0 is default/fallback!"); + if (player.hasPermission("HungerArena.SetSpawn")) { + if ((noPlayerSpawns) && (args.length < 2)) { + player.sendMessage(ChatColor.AQUA + "You have to set the playerspawns first! Use /ha newarena \nOr enter the arena number as 2nd argument, \n0 is default/fallback!"); } else { - double x = p.getLocation().getX(); - double y = p.getLocation().getY(); - double z = p.getLocation().getZ(); + double x = player.getLocation().getX(); + double y = player.getLocation().getY(); + double z = player.getLocation().getZ(); if (plugin.spawns.getString("Spawn_coordinates.0") == null) { plugin.spawns.set("Spawn_coordinates.0", x + "," + y + "," + z + "," + ThisWorld); plugin.spawns.set("Spawns_set.0", "true"); } if (args.length >= 2) { try { - arena = Integer.parseInt(args[1]); + arenaId = Integer.parseInt(args[1]); } catch (Exception e) { - p.sendMessage(ChatColor.RED + "Argument not an integer!"); + player.sendMessage(ChatColor.RED + "Argument not an integer!"); return false; } } - plugin.spawns.set("Spawn_coordinates." + arena, x + "," + y + "," + z + "," + ThisWorld); - plugin.spawns.set("Spawns_set." + arena, "true"); + plugin.spawns.set("Spawn_coordinates." + arenaId, x + "," + y + "," + z + "," + ThisWorld); + plugin.spawns.set("Spawns_set." + arenaId, "true"); plugin.saveSpawns(); - p.sendMessage(ChatColor.AQUA + "You have set the spawn for dead tributes!"); + player.sendMessage(ChatColor.AQUA + "You have set the spawn for dead tributes!"); } } else { - p.sendMessage(ChatColor.RED + "You don't have permission!"); + player.sendMessage(ChatColor.RED + "You don't have permission!"); } } else if (args[0].equalsIgnoreCase("SetTorch")) { - if (p.hasPermission("HungerArena.SetSpawn")) { + if (player.hasPermission("HungerArena.SetSpawn")) { if (args.length < 2) { - p.sendMessage(ChatColor.AQUA + "You have to enter the arena number as 2nd argument"); + player.sendMessage(ChatColor.AQUA + "You have to enter the arena number as 2nd argument"); } else { - double x = p.getLocation().getX(); - double y = p.getLocation().getY(); - double z = p.getLocation().getZ(); + double x = player.getLocation().getX(); + double y = player.getLocation().getY(); + double z = player.getLocation().getZ(); if (args.length >= 2) { try { - arena = Integer.parseInt(args[1]); + arenaId = Integer.parseInt(args[1]); } catch (Exception e) { - p.sendMessage(ChatColor.RED + "Argument not an integer!"); + player.sendMessage(ChatColor.RED + "Argument not an integer!"); return true; } } - plugin.spawns.set("Start_torch." + arena, x + "," + y + "," + z + "," + ThisWorld); + plugin.spawns.set("Start_torch." + arenaId, x + "," + y + "," + z + "," + ThisWorld); plugin.saveSpawns(); - p.sendMessage(ChatColor.AQUA + "You have set the start redstone torch for arena " + arena + "!"); + player.sendMessage(ChatColor.AQUA + "You have set the start redstone torch for arena " + arenaId + "!"); } } else { - p.sendMessage(ChatColor.RED + "You don't have permission!"); + player.sendMessage(ChatColor.RED + "You don't have permission!"); } } else if (args[0].equalsIgnoreCase("Help")) { - help_sub(sender, playr, console); + help_sub(sender, isPlayer, console); - } else if (plugin.restrictedWorlds && !plugin.worldsNames.containsValue(ThisWorld)) { - p.sendMessage(ChatColor.RED + "That can't be run in this world!"); - } else if (!plugin.restrictedWorlds || plugin.restrictedWorlds && plugin.worldsNames.containsValue(ThisWorld)) { + } else if (plugin.restrictedWorlds && !plugin.worldNames.containsValue(ThisWorld)) { + player.sendMessage(ChatColor.RED + "That can't be run in this world!"); + } else if (!plugin.restrictedWorlds || plugin.restrictedWorlds && plugin.worldNames.containsValue(ThisWorld)) { //////////////////////////////////////// LISTING /////////////////////////////////////////////// if (args[0].equalsIgnoreCase("List")) { - if (p.hasPermission("HungerArena.GameMaker") || plugin.Watching.get(arena).contains(pname) || p.hasPermission("HungerArena.List")) { - list_sub(p, sender, playr, console, args); + if (player.hasPermission("HungerArena.GameMaker") || plugin.Watching.get(arenaId).contains(playerName) || player.hasPermission("HungerArena.List")) { + list_sub(player, sender, isPlayer, console, args); } else { - p.sendMessage(ChatColor.RED + "You don't have permission!"); + player.sendMessage(ChatColor.RED + "You don't have permission!"); } } else if (args[0].equalsIgnoreCase("rList")) { - if (p.hasPermission("HungerArena.GameMaker")) { + if (player.hasPermission("HungerArena.GameMaker")) { rList_sub(sender, args); } else { - p.sendMessage(ChatColor.RED + "You don't have permission!"); + player.sendMessage(ChatColor.RED + "You don't have permission!"); } //////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////// JOINING/LEAVING ////////////////////////////////////////// } else if (args[0].equalsIgnoreCase("Join")) { - if (p.hasPermission("HungerArena.Join")) { + if (player.hasPermission("HungerArena.Join")) { boolean needconfirm = false; for (int i : plugin.NeedConfirm.keySet()) { - if (plugin.NeedConfirm.get(i).contains(pname)) { + if (plugin.NeedConfirm.get(i).contains(playerName)) { needconfirm = true; - p.sendMessage(ChatColor.GOLD + "You need to run /ha confirm"); + player.sendMessage(ChatColor.GOLD + "You need to run /ha confirm"); } } if (!needconfirm) { if ((args.length >= 2) && checkarena(args[1], sender)) { - arena = Integer.parseInt(args[1]); + arenaId = Integer.parseInt(args[1]); } else { - if (NoPlayerSpawns) { + if (noPlayerSpawns) { for (int i : plugin.Playing.keySet()) { if (plugin.Playing.get(i).size() < plugin.maxPlayers.get(i)) { - arena = i; - p.sendMessage(ChatColor.RED + "Found free slots in Arena " + arena + " !"); + arenaId = i; + player.sendMessage(ChatColor.RED + "Found free slots in Arena " + arenaId + " !"); } else if (i == plugin.Playing.size()) { - p.sendMessage(ChatColor.RED + "No free slots found / All games are full!"); + player.sendMessage(ChatColor.RED + "No free slots found / All games are full!"); } } } } - if ((plugin.Playing.get(arena) != null) && (plugin.location.get(arena).size() != 0)) { - if (plugin.Playing.get(arena).contains(pname)) { - p.sendMessage(ChatColor.RED + "You are already playing!"); - } else if (plugin.Dead.get(arena).contains(pname) || plugin.Quit.get(arena).contains(pname)) { - p.sendMessage(ChatColor.RED + "You DIED/QUIT! You can't join again!"); - } else if (plugin.Playing.get(arena).size() == plugin.maxPlayers.get(arena)) { - p.sendMessage(ChatColor.RED + "There are already " + plugin.maxPlayers.get(arena) + " Tributes in that Arena!"); - } else if (plugin.canJoin.get(arena)) { - p.sendMessage(ChatColor.RED + "That game is in progress!"); - } else if (!plugin.open.get(arena)) { - p.sendMessage(ChatColor.RED + "That game is closed!"); - } else if ((plugin.spawns.getString("Spawns_set." + arena) == null) || (plugin.spawns.getString("Spawns_set." + arena).equalsIgnoreCase("false"))) { - p.sendMessage(ChatColor.RED + "/ha setspawn for Arena " + arena + " hasn't been run!"); - } else if (plugin.getArena(p) != null) { - p.sendMessage(ChatColor.RED + "You are already in an arena!"); + if ((plugin.Playing.get(arenaId) != null) && (plugin.location.get(arenaId).size() != 0)) { + if (plugin.Playing.get(arenaId).contains(playerName)) { + player.sendMessage(ChatColor.RED + "You are already playing!"); + } else if (plugin.Dead.get(arenaId).contains(playerName) || plugin.Quit.get(arenaId).contains(playerName)) { + player.sendMessage(ChatColor.RED + "You DIED/QUIT! You can't join again!"); + } else if (plugin.Playing.get(arenaId).size() == plugin.maxPlayers.get(arenaId)) { + player.sendMessage(ChatColor.RED + "There are already " + plugin.maxPlayers.get(arenaId) + " Tributes in that Arena!"); + } else if (plugin.canJoin.get(arenaId)) { + player.sendMessage(ChatColor.RED + "That game is in progress!"); + } else if (!plugin.open.get(arenaId)) { + player.sendMessage(ChatColor.RED + "That game is closed!"); + } else if ((plugin.spawns.getString("Spawns_set." + arenaId) == null) || (plugin.spawns.getString("Spawns_set." + arenaId).equalsIgnoreCase("false"))) { + player.sendMessage(ChatColor.RED + "/ha setspawn for Arena " + arenaId + " hasn't been run!"); + } else if (plugin.getArena(player) != null) { + player.sendMessage(ChatColor.RED + "You are already in an arena!"); } else if (plugin.config.getBoolean("Need_Confirm")) { if (plugin.config.getBoolean("EntryFee.enabled") && plugin.config.getBoolean("EntryFee.eco")) { - if (!(plugin.econ.getBalance(p) < plugin.config.getDouble("EntryFee.cost"))) { + if (!(plugin.econ.getBalance(player) < plugin.config.getDouble("EntryFee.cost"))) { i = 0; for (ItemStack fee : plugin.Fee) { int total = plugin.Fee.size(); - if (p.getInventory().containsAtLeast(fee, fee.getAmount())) { + if (player.getInventory().containsAtLeast(fee, fee.getAmount())) { i = i + 1; if (total == i) { - plugin.NeedConfirm.get(arena).add(pname); - p.sendMessage(ChatColor.GOLD + "Your inventory will be cleared! Type /ha confirm to procede"); + plugin.NeedConfirm.get(arenaId).add(playerUUID); + player.sendMessage(ChatColor.GOLD + "Your inventory will be cleared! Type /ha confirm to procede"); } } } if (plugin.Fee.size() > i) { - p.sendMessage(ChatColor.RED + "You are missing some items and can't join the games..."); + player.sendMessage(ChatColor.RED + "You are missing some items and can't join the games..."); } } else { - p.sendMessage(ChatColor.RED + "You don't have enough money to join!"); + player.sendMessage(ChatColor.RED + "You don't have enough money to join!"); } } else if (plugin.config.getBoolean("EntryFee.enabled") && !plugin.config.getBoolean("EntryFee.eco")) { i = 0; for (ItemStack fee : plugin.Fee) { int total = plugin.Fee.size(); - if (p.getInventory().containsAtLeast(fee, fee.getAmount())) { + if (player.getInventory().containsAtLeast(fee, fee.getAmount())) { i = i + 1; if (total == i) { - plugin.NeedConfirm.get(arena).add(pname); - p.sendMessage(ChatColor.GOLD + "Your inventory will be cleared! Type /ha confirm to procede"); + plugin.NeedConfirm.get(arenaId).add(playerUUID); + player.sendMessage(ChatColor.GOLD + "Your inventory will be cleared! Type /ha confirm to procede"); } } } if (plugin.Fee.size() > i) { - p.sendMessage(ChatColor.RED + "You are missing some items and can't join the games..."); + player.sendMessage(ChatColor.RED + "You are missing some items and can't join the games..."); } } else if (!plugin.config.getBoolean("EntryFee.enabled") && plugin.config.getBoolean("EntryFee.eco")) { - if (!(plugin.econ.getBalance(p) < plugin.config.getDouble("EntryFee.cost"))) { - plugin.NeedConfirm.get(arena).add(pname); - p.sendMessage(ChatColor.GOLD + "Your inventory will be cleared! Type /ha confirm to procede"); + if (!(plugin.econ.getBalance(player) < plugin.config.getDouble("EntryFee.cost"))) { + plugin.NeedConfirm.get(arenaId).add(playerUUID); + player.sendMessage(ChatColor.GOLD + "Your inventory will be cleared! Type /ha confirm to procede"); } else { - p.sendMessage(ChatColor.RED + "You don't have enough money to join!"); + player.sendMessage(ChatColor.RED + "You don't have enough money to join!"); } } else { - plugin.NeedConfirm.get(arena).add(pname); - p.sendMessage(ChatColor.GOLD + "Your inventory will be cleared! Type /ha confirm to procede"); + plugin.NeedConfirm.get(arenaId).add(playerUUID); + player.sendMessage(ChatColor.GOLD + "Your inventory will be cleared! Type /ha confirm to procede"); } } else if (plugin.config.getString("Need_Confirm").equalsIgnoreCase("false")) { - confirmSub(p, pname, ThisWorld); + confirmSub(player, playerName, ThisWorld); } } else { - p.sendMessage(ChatColor.RED + "That arena doesn't exist!"); + player.sendMessage(ChatColor.RED + "That arena doesn't exist!"); } } } else { - p.sendMessage(ChatColor.RED + "You don't have permission!"); + player.sendMessage(ChatColor.RED + "You don't have permission!"); } //////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////// CONFIRMATION /////////////////////////////////////////////// } else if (args[0].equalsIgnoreCase("Confirm")) { for (int v : plugin.NeedConfirm.keySet()) { - if (plugin.NeedConfirm.get(v).contains(pname)) { - arena = v; - confirmSub(p, pname, ThisWorld); + if (plugin.NeedConfirm.get(v).contains(playerName)) { + arenaId = v; + confirmSub(player, playerName, ThisWorld); } else if ((v == plugin.NeedConfirm.size()) && (plugin.config.getBoolean("Need_Confirm"))) { - p.sendMessage(ChatColor.RED + "You haven't joined any games!"); + player.sendMessage(ChatColor.RED + "You haven't joined any games!"); } } } else if (args[0].equalsIgnoreCase("Ready")) { - if (plugin.getArena(p) != null) { - arena = plugin.getArena(p); - if (plugin.Playing.get(arena).contains(pname)) { - if (plugin.Ready.get(arena).contains(pname)) { - p.sendMessage(ChatColor.RED + "You're already ready!"); - } else if (plugin.Playing.get(arena).size() == 1) { - p.sendMessage(ChatColor.RED + "You can't be ready when no one else is playing!"); + if (plugin.getArena(player) != null) { + arenaId = plugin.getArena(player).getArenaId(); + if (plugin.Playing.get(arenaId).contains(playerName)) { + if (plugin.Ready.get(arenaId).contains(playerName)) { + player.sendMessage(ChatColor.RED + "You're already ready!"); + } else if (plugin.Playing.get(arenaId).size() == 1) { + player.sendMessage(ChatColor.RED + "You can't be ready when no one else is playing!"); } else { - plugin.Ready.get(arena).add(pname); + plugin.Ready.get(arenaId).add(playerUUID); if (plugin.config.getBoolean("broadcastAll")) { - plugin.getServer().broadcastMessage(ChatColor.AQUA + "[HungerArena] Game " + arena + ": " + ChatColor.GRAY + plugin.Ready.get(arena).size() + "/" + plugin.maxPlayers.get(arena) + " Players ready!"); + plugin.getServer().broadcastMessage(ChatColor.AQUA + "[HungerArena] Game " + arenaId + ": " + ChatColor.GRAY + plugin.Ready.get(arenaId).size() + "/" + plugin.maxPlayers.get(arenaId) + " Players ready!"); } else { - for (String gn : plugin.Playing.get(arena)) { + for (UUID gn : plugin.Playing.get(arenaId)) { Player g = plugin.getServer().getPlayer(gn); - g.sendMessage(ChatColor.GRAY + String.valueOf(plugin.Ready.get(arena).size()) + "/" + plugin.maxPlayers.get(arena) + " Players ready!"); + g.sendMessage(ChatColor.GRAY + String.valueOf(plugin.Ready.get(arenaId).size()) + "/" + plugin.maxPlayers.get(arenaId) + " Players ready!"); } } - p.sendMessage(ChatColor.AQUA + "You have marked yourself as READY!"); + player.sendMessage(ChatColor.AQUA + "You have marked yourself as READY!"); if (plugin.config.getBoolean("Auto_Warp")) { - if (((double) plugin.Playing.get(arena).size()) % 60 <= plugin.Ready.get(arena).size() || plugin.Playing.get(arena).size() == plugin.Ready.get(arena).size()) { - Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), "ha warpall " + arena); + if (((double) plugin.Playing.get(arenaId).size()) % 60 <= plugin.Ready.get(arenaId).size() || plugin.Playing.get(arenaId).size() == plugin.Ready.get(arenaId).size()) { + Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), "ha warpall " + arenaId); } } } } } else { - p.sendMessage(ChatColor.RED + "You aren't playing in any games!"); + player.sendMessage(ChatColor.RED + "You aren't playing in any games!"); } } else if (args[0].equalsIgnoreCase("Leave")) { - if (plugin.getArena(p) != null) { - arena = plugin.getArena(p); - if (plugin.canJoin.get(arena)) { - clearInv(p); - p.teleport(getArenaSpawn()); - plugin.Frozen.get(arena).remove(pname); + if (plugin.getArena(player) != null) { + Arena arena = plugin.getArena(player); + arenaId = arena.getArenaId(); + if (plugin.canJoin.get(arenaId)) { + clearInv(player); + player.teleport(getArenaSpawn()); + plugin.arenaPlayers.get(playerUUID).setFrozen(false); - if (plugin.Playing.get(arena).size() != 1) { - plugin.RestoreInv(p, pname); + if (plugin.Playing.get(arenaId).size() != 1) { + plugin.restoreInventory(player, playerName); } - plugin.winner(arena); + plugin.winner(arenaId); } else { - clearInv(p); - p.teleport(getArenaSpawn()); + clearInv(player); + player.teleport(getArenaSpawn()); - plugin.RestoreInv(p, pname); + plugin.restoreInventory(player, playerName); if (plugin.config.getBoolean("EntryFee.enabled") && plugin.config.getBoolean("EntryFee.eco")) { - plugin.econ.depositPlayer(p, plugin.config.getDouble("EntryFee.cost")); - p.sendMessage(ChatColor.GOLD + "[HungerArena] " + ChatColor.GREEN + "$" + plugin.config.getDouble("EntryFee.cost") + " has been added to your account!"); + plugin.econ.depositPlayer(player, plugin.config.getDouble("EntryFee.cost")); + player.sendMessage(ChatColor.GOLD + "[HungerArena] " + ChatColor.GREEN + "$" + plugin.config.getDouble("EntryFee.cost") + " has been added to your account!"); for (ItemStack fees : plugin.Fee) { - p.getInventory().addItem(fees); - p.sendMessage(ChatColor.GOLD + "[HungerArena] " + ChatColor.GREEN + fees.getType().toString().toLowerCase().replace("_", " ") + " was refunded because you left the games."); + player.getInventory().addItem(fees); + player.sendMessage(ChatColor.GOLD + "[HungerArena] " + ChatColor.GREEN + fees.getType().toString().toLowerCase().replace("_", " ") + " was refunded because you left the games."); } } else if (plugin.config.getBoolean("EntryFee.enabled") && !plugin.config.getBoolean("EntryFee.eco")) { for (ItemStack fees : plugin.Fee) { - p.getInventory().addItem(fees); - p.sendMessage(ChatColor.GOLD + "[HungerArena] " + ChatColor.GREEN + fees.getType().toString().toLowerCase().replace("_", " ") + " was refunded because you left the games."); + player.getInventory().addItem(fees); + player.sendMessage(ChatColor.GOLD + "[HungerArena] " + ChatColor.GREEN + fees.getType().toString().toLowerCase().replace("_", " ") + " was refunded because you left the games."); } } else if (!plugin.config.getBoolean("EntryFee.enabled") && plugin.config.getBoolean("EntryFee.eco")) { - plugin.econ.depositPlayer(p, plugin.config.getDouble("EntryFee.cost")); - p.sendMessage(ChatColor.GOLD + "[HungerArena] " + ChatColor.GREEN + "$" + plugin.config.getDouble("EntryFee.cost") + " has added to your account!"); + plugin.econ.depositPlayer(player, plugin.config.getDouble("EntryFee.cost")); + player.sendMessage(ChatColor.GOLD + "[HungerArena] " + ChatColor.GREEN + "$" + plugin.config.getDouble("EntryFee.cost") + " has added to your account!"); } } } else { - p.sendMessage(ChatColor.RED + "You aren't in any games!"); + player.sendMessage(ChatColor.RED + "You aren't in any games!"); } //////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////// SPECTATOR RELATED ////////////////////////////////// @@ -386,15 +390,15 @@ public class HaCommands implements CommandExecutor { if (sender.hasPermission("HungerArena.Watch")) { if (args.length >= 2) { if (checkarena(args[1], sender)) { - arena = Integer.parseInt(args[1]); - if (!plugin.Watching.get(arena).contains(pname) && plugin.getArena(p) == null && plugin.canJoin.get(arena)) { - plugin.Watching.get(arena).add(pname); - p.teleport(Bukkit.getPlayer(plugin.Playing.get(arena).get(0))); + arenaId = Integer.parseInt(args[1]); + if (!plugin.Watching.get(arenaId).contains(playerName) && plugin.getArena(player) == null && plugin.canJoin.get(arenaId)) { + plugin.Watching.get(arenaId).add(playerUUID); + player.teleport(Bukkit.getPlayer(plugin.Playing.get(arenaId).get(0))); for (Player online : plugin.getServer().getOnlinePlayers()) { - online.hidePlayer(plugin, p); + online.hidePlayer(plugin, player); } - p.setAllowFlight(true); - p.sendMessage(ChatColor.AQUA + "You can now spectate!"); + player.setAllowFlight(true); + player.sendMessage(ChatColor.AQUA + "You can now spectate!"); Scoreboard scoreboard = plugin.getServer().getScoreboardManager().getNewScoreboard(); Objective sobj; try { @@ -408,45 +412,45 @@ public class HaCommands implements CommandExecutor { Score splayers = sobj.getScore((ChatColor.RED + "Players")); splayers.setScore(0); sobj.setDisplaySlot(DisplaySlot.SIDEBAR); - p.setScoreboard(scoreboard); - plugin.scoreboards.put(p.getName(), p.getScoreboard()); - } else if (!plugin.canJoin.get(arena)) { - p.sendMessage(ChatColor.RED + "That game isn't in progress!"); - } else if (plugin.Playing.get(arena).contains(pname)) { - p.sendMessage(ChatColor.RED + "You can't watch while you're playing!"); - } else if (plugin.Watching.get(arena).contains(pname)) { - plugin.Watching.get(arena).remove(pname); + player.setScoreboard(scoreboard); + plugin.scoreboards.put(player.getName(), player.getScoreboard()); + } else if (!plugin.canJoin.get(arenaId)) { + player.sendMessage(ChatColor.RED + "That game isn't in progress!"); + } else if (plugin.Playing.get(arenaId).contains(playerName)) { + player.sendMessage(ChatColor.RED + "You can't watch while you're playing!"); + } else if (plugin.Watching.get(arenaId).contains(playerName)) { + plugin.Watching.get(arenaId).remove(playerName); for (Player online : plugin.getServer().getOnlinePlayers()) { - online.showPlayer(plugin, p); + online.showPlayer(plugin, player); } - p.getScoreboard().clearSlot(DisplaySlot.SIDEBAR); - plugin.scoreboards.remove(p.getName()); - p.teleport(getArenaSpawn()); - p.setAllowFlight(false); - p.sendMessage(ChatColor.AQUA + "You are not spectating any more"); + player.getScoreboard().clearSlot(DisplaySlot.SIDEBAR); + plugin.scoreboards.remove(player.getName()); + player.teleport(getArenaSpawn()); + player.setAllowFlight(false); + player.sendMessage(ChatColor.AQUA + "You are not spectating any more"); } } } else { - p.sendMessage(ChatColor.RED + "Too few arguments!"); + player.sendMessage(ChatColor.RED + "Too few arguments!"); } } else { - p.sendMessage(ChatColor.RED + "You don't have permission!"); + player.sendMessage(ChatColor.RED + "You don't have permission!"); } } else if (args[0].equalsIgnoreCase("tp")) { for (int i : plugin.Watching.keySet()) { - if (plugin.Watching.get(i).contains(pname)) { + if (plugin.Watching.get(i).contains(playerName)) { if (plugin.getArena(Bukkit.getServer().getPlayer(args[1])) != null) { Player target = Bukkit.getServer().getPlayer(args[1]); - p.teleport(target); - p.sendMessage(ChatColor.AQUA + "You've been teleported to " + target.getName()); + player.teleport(target); + player.sendMessage(ChatColor.AQUA + "You've been teleported to " + target.getName()); return true; } else { - p.sendMessage(ChatColor.RED + "That person isn't in game!"); + player.sendMessage(ChatColor.RED + "That person isn't in game!"); return true; } } else { if (i == plugin.Watching.size()) { - p.sendMessage(ChatColor.RED + "You have to be spectating first!"); + player.sendMessage(ChatColor.RED + "You have to be spectating first!"); return true; } } @@ -457,9 +461,9 @@ public class HaCommands implements CommandExecutor { if (args.length != 2) { return false; } - if (p.hasPermission("HungerArena.AddArena")) { + if (player.hasPermission("HungerArena.AddArena")) { SessionManager manager = WorldEdit.getInstance().getSessionManager(); - BukkitPlayer actor = BukkitAdapter.adapt(p); + BukkitPlayer actor = BukkitAdapter.adapt(player); LocalSession localSession = manager.get(actor); Region region; com.sk89q.worldedit.world.World selectionWorld = localSession.getSelectionWorld(); @@ -470,78 +474,78 @@ public class HaCommands implements CommandExecutor { region = localSession.getSelection(selectionWorld); - Location min = BukkitAdapter.adapt(p.getWorld(), region.getMinimumPoint()); - Location max = BukkitAdapter.adapt(p.getWorld(), region.getMaximumPoint()); + Location min = BukkitAdapter.adapt(player.getWorld(), region.getMinimumPoint()); + Location max = BukkitAdapter.adapt(player.getWorld(), region.getMaximumPoint()); plugin.spawns.set("Arenas." + args[1] + ".Max", max.getWorld().getName() + "," + max.getX() + "," + max.getY() + "," + max.getZ()); plugin.spawns.set("Arenas." + args[1] + ".Min", min.getWorld().getName() + "," + min.getX() + "," + min.getY() + "," + min.getZ()); plugin.saveConfig(); - p.sendMessage(ChatColor.GREEN + "Arena " + ChatColor.DARK_AQUA + args[1] + player.sendMessage(ChatColor.GREEN + "Arena " + ChatColor.DARK_AQUA + args[1] + ChatColor.GREEN + " created with WorldEdit!"); return true; } catch (IncompleteRegionException ex) { - p.sendMessage(ChatColor.DARK_RED + "You must make a WorldEdit selection first!"); + player.sendMessage(ChatColor.DARK_RED + "You must make a WorldEdit selection first!"); return false; } } else { - p.sendMessage(ChatColor.RED + "You don't have permission!"); + player.sendMessage(ChatColor.RED + "You don't have permission!"); return true; } } else { - p.sendMessage(ChatColor.RED + "You don't have WorldEdit enabled for HungerArena!"); + player.sendMessage(ChatColor.RED + "You don't have WorldEdit enabled for HungerArena!"); return true; } } else if (args[0].equalsIgnoreCase("Kick")) { - return kick_sub(sender, args, playr, console, getArenaSpawn()); + return kick_sub(sender, args, isPlayer, console, getArenaSpawn()); } else if (args[0].equalsIgnoreCase("Refill")) { - if (p.hasPermission("HungerArena.Refill")) { + if (player.hasPermission("HungerArena.Refill")) { ReFill_sub(sender, args); } else { - p.sendMessage(ChatColor.RED + "You don't have permission!"); + player.sendMessage(ChatColor.RED + "You don't have permission!"); return true; } } else if (args[0].equalsIgnoreCase("Restart")) { - if (p.hasPermission("HungerArena.Restart")) { - Restart_Close_sub(sender, args, playr, false); + if (player.hasPermission("HungerArena.Restart")) { + Restart_Close_sub(sender, args, isPlayer, false); } else { - p.sendMessage(ChatColor.RED + "You don't have permission!"); + player.sendMessage(ChatColor.RED + "You don't have permission!"); } /////////////////////////////////// Toggle ////////////////////////////////////////////////// } else if (args[0].equalsIgnoreCase("close")) { - if (p.hasPermission("HungerArena.toggle")) { - Restart_Close_sub(sender, args, playr, true); + if (player.hasPermission("HungerArena.toggle")) { + Restart_Close_sub(sender, args, isPlayer, true); } else { - p.sendMessage(ChatColor.RED + "No Perms!"); + player.sendMessage(ChatColor.RED + "No Perms!"); } } else if (args[0].equalsIgnoreCase("open")) { - if (p.hasPermission("HungerArena.toggle")) { + if (player.hasPermission("HungerArena.toggle")) { open_sub(sender, args); } else { - p.sendMessage(ChatColor.RED + "No Perms!"); + player.sendMessage(ChatColor.RED + "No Perms!"); } //////////////////////////////////////////////////////////////////////////////////////////// } else if (args[0].equalsIgnoreCase("Reload")) { - if (p.hasPermission("HungerArena.Reload")) { + if (player.hasPermission("HungerArena.Reload")) { reload_sub(sender); } else { - p.sendMessage(ChatColor.RED + "You don't have permission"); + player.sendMessage(ChatColor.RED + "You don't have permission"); } } else if (args[0].equalsIgnoreCase("WarpAll")) { - if (p.hasPermission("HungerArena.Warpall")) { + if (player.hasPermission("HungerArena.Warpall")) { warpall_sub(sender, args); } else { - p.sendMessage(ChatColor.RED + "You don't have permission"); + player.sendMessage(ChatColor.RED + "You don't have permission"); } } else if (args[0].equalsIgnoreCase("Start")) { - if (p.hasPermission("HungerArena.Start")) { + if (player.hasPermission("HungerArena.Start")) { start_sub(sender, args); } else { - p.sendMessage(ChatColor.RED + "You don't have permission!"); + player.sendMessage(ChatColor.RED + "You don't have permission!"); } } else { - p.sendMessage(ChatColor.RED + "Unknown command, type /ha help for a list of commands"); + player.sendMessage(ChatColor.RED + "Unknown command, type /ha help for a list of commands"); } } } @@ -555,10 +559,10 @@ public class HaCommands implements CommandExecutor { return false; } if (args[0].equalsIgnoreCase("Help")) { - help_sub(sender, playr, console); + help_sub(sender, isPlayer, console); return false; } else if (args[0].equalsIgnoreCase("List")) { - list_sub(null, sender, playr, console, args); + list_sub(null, sender, isPlayer, console, args); } else if (args[0].equalsIgnoreCase("rList")) { rList_sub(sender, args); @@ -566,17 +570,17 @@ public class HaCommands implements CommandExecutor { } else if (args[0].equalsIgnoreCase("SetSpawn") || args[0].equalsIgnoreCase("Join") || args[0].equalsIgnoreCase("Confirm") || args[0].equalsIgnoreCase("Ready") || args[0].equalsIgnoreCase("Leave") || args[0].equalsIgnoreCase("Watch") || args[0].equalsIgnoreCase("NewArena")) { sender.sendMessage(ChatColor.RED + "That can only be run by a player!"); } else if (args[0].equalsIgnoreCase("Kick")) { - return kick_sub(sender, args, playr, console, getArenaSpawn()); + return kick_sub(sender, args, isPlayer, console, getArenaSpawn()); } else if (args[0].equalsIgnoreCase("Refill")) { ReFill_sub(sender, args); } else if (args[0].equalsIgnoreCase("Restart")) { - Restart_Close_sub(sender, args, playr, false); + Restart_Close_sub(sender, args, isPlayer, false); /////////////////////////////////// Toggle ////////////////////////////////////////////////// } else if (args[0].equalsIgnoreCase("close")) { - Restart_Close_sub(sender, args, playr, true); + Restart_Close_sub(sender, args, isPlayer, true); } else if (args[0].equalsIgnoreCase("open")) { open_sub(sender, args); @@ -635,35 +639,35 @@ public class HaCommands implements CommandExecutor { private void list_sub(Player p, CommandSender sender, boolean playr, boolean console, String[] args) { if (args.length >= 2) { if (checkarena(args[1], sender)) { - arena = Integer.parseInt(args[1]); + arenaId = Integer.parseInt(args[1]); list_subsub(p, sender, console); } } else { if (console || (p != null && plugin.getArena(p) == null)) { - arena = 1; + arenaId = 1; list_subsub(p, sender, console); } else { - arena = plugin.getArena(p); + arenaId = plugin.getArena(p).getArenaId(); list_subsub(p, sender, console); } } } private void list_subsub(Player p, CommandSender sender, boolean console) { - sender.sendMessage(ChatColor.AQUA + "----- Arena " + arena + " -----"); - if (!plugin.Playing.get(arena).isEmpty() && plugin.Playing.containsKey(arena)) { - for (String playernames : plugin.Playing.get(arena)) { - Player players = plugin.getServer().getPlayerExact(playernames); + sender.sendMessage(ChatColor.AQUA + "----- Arena " + arenaId + " -----"); + if (!plugin.Playing.get(arenaId).isEmpty() && plugin.Playing.containsKey(arenaId)) { + for (UUID playerId : plugin.Playing.get(arenaId)) { + Player player = plugin.getServer().getPlayer(playerId); if (console || (p != null && p.hasPermission("HungerArena.GameMaker"))) { double maxh; try { - maxh = players.getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue(); + maxh = player.getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue(); } catch (Exception e) { - maxh = players.getMaxHealth(); + maxh = player.getMaxHealth(); } - sender.sendMessage(ChatColor.GREEN + playernames + " Life: " + players.getHealth() + "/" + maxh); + sender.sendMessage(ChatColor.GREEN + player.getName() + " Life: " + player.getHealth() + "/" + maxh); } else if (console || (p != null && p.hasPermission("HungerArena.List"))) { - sender.sendMessage(ChatColor.GREEN + playernames); + sender.sendMessage(ChatColor.GREEN + player.getName()); } } } else { @@ -675,11 +679,11 @@ public class HaCommands implements CommandExecutor { private void rList_sub(CommandSender sender, String[] args) { if (args.length >= 2) { if (checkarena(args[1], sender)) { - arena = Integer.parseInt(args[1]); - sender.sendMessage(ChatColor.AQUA + "----- Arena " + arena + " -----"); - if (!plugin.Ready.get(arena).isEmpty() && plugin.Ready.containsKey(arena)) { - for (String playernames : plugin.Ready.get(arena)) { - sender.sendMessage(ChatColor.GREEN + playernames); + arenaId = Integer.parseInt(args[1]); + sender.sendMessage(ChatColor.AQUA + "----- Arena " + arenaId + " -----"); + if (!plugin.Ready.get(arenaId).isEmpty() && plugin.Ready.containsKey(arenaId)) { + for (UUID playerId : plugin.Ready.get(arenaId)) { + sender.sendMessage(ChatColor.GREEN + plugin.arenaPlayers.get(playerId).getPlayer().getName()); } } else { sender.sendMessage(ChatColor.GRAY + "No one is ready!"); @@ -689,8 +693,8 @@ public class HaCommands implements CommandExecutor { } else { sender.sendMessage(ChatColor.AQUA + "----- Arena 1 -----"); if (!plugin.Ready.get(1).isEmpty() && plugin.Ready.containsKey(1)) { - for (String playernames : plugin.Ready.get(1)) { - sender.sendMessage(ChatColor.GREEN + playernames); + for (UUID playerId : plugin.Ready.get(1)) { + sender.sendMessage(ChatColor.GREEN + plugin.arenaPlayers.get(playerId).getPlayer().getName()); } } else { sender.sendMessage(ChatColor.GRAY + "No one is ready!"); @@ -711,21 +715,21 @@ public class HaCommands implements CommandExecutor { } if (console || (playr && sender.hasPermission("HungerArena.Kick"))) { if (plugin.getArena(target) != null) { - arena = plugin.getArena(target); - plugin.Playing.get(arena).remove(target.getName()); + arenaId = plugin.getArena(target).getArenaId(); + plugin.Playing.get(arenaId).remove(target.getName()); if (!plugin.config.getBoolean("broadcastAll")) { - plugin.getServer().broadcastMessage(ChatColor.RED + target.getName() + " was kicked from arena " + arena + "!"); + plugin.getServer().broadcastMessage(ChatColor.RED + target.getName() + " was kicked from arena " + arenaId + "!"); } else { - for (String gn : plugin.Playing.get(arena)) { + for (UUID gn : plugin.Playing.get(arenaId)) { Player g = plugin.getServer().getPlayer(gn); g.sendMessage(ChatColor.RED + target.getName() + " was kicked from the game!"); } } clearInv(target); target.teleport(Spawn); - plugin.Quit.get(arena).add(target.getName()); - plugin.RestoreInv(target, target.getName()); - plugin.winner(arena); + plugin.Quit.get(arenaId).add(target.getUniqueId()); + plugin.restoreInventory(target, target.getName()); + plugin.winner(arenaId); return true; } else { sender.sendMessage(ChatColor.RED + "That player isn't in the game!"); @@ -804,9 +808,9 @@ public class HaCommands implements CommandExecutor { plugin.getServer().getScheduler().cancelTask(plugin.deathtime.get(a)); plugin.deathtime.put(a, null); } - if (plugin.grace.get(a) != null) { - plugin.getServer().getScheduler().cancelTask(plugin.grace.get(a)); - plugin.grace.put(a, null); + if (plugin.graceSchedulerIds.get(a) != null) { + plugin.getServer().getScheduler().cancelTask(plugin.graceSchedulerIds.get(a)); + plugin.graceSchedulerIds.put(a, null); } if (plugin.start.get(a) != null) { plugin.getServer().getScheduler().cancelTask(plugin.start.get(a)); @@ -816,22 +820,25 @@ public class HaCommands implements CommandExecutor { if (plugin.timetodeath.get(a) != null) { plugin.timetodeath.remove(a); } - plugin.Frozen.get(a).clear(); + + for (ArenaPlayer arenaPlayer : plugin.arenas.get(a).getArenaPlayers()) { + arenaPlayer.setFrozen(false); + } if (plugin.Playing.get(a) != null) { - for (String players : plugin.Playing.get(a)) { - Player tributes = plugin.getServer().getPlayerExact(players); - clearInv(tributes); - tributes.getScoreboard().clearSlot(DisplaySlot.SIDEBAR); - tributes.teleport(tributes.getWorld().getSpawnLocation()); - plugin.scoreboards.remove(players); - plugin.Kills.remove(players); - plugin.Frozen.get(a).add(players); + for (UUID player : plugin.Playing.get(a)) { + Player tribute = plugin.getServer().getPlayer(player); + clearInv(tribute); + tribute.getScoreboard().clearSlot(DisplaySlot.SIDEBAR); + tribute.teleport(tribute.getWorld().getSpawnLocation()); + plugin.scoreboards.remove(player); + plugin.Kills.remove(player); + plugin.arenaPlayers.get(player).setFrozen(false); } } plugin.Kills.remove("__SuM__"); if (plugin.Watching.get(a) != null) { - for (String sname : plugin.Watching.get(a)) { - Player spectators = plugin.getServer().getPlayerExact(sname); + for (UUID sname : plugin.Watching.get(a)) { + Player spectators = plugin.getServer().getPlayer(sname); spectators.teleport(spectators.getWorld().getSpawnLocation()); spectators.setAllowFlight(false); spectators.getScoreboard().clearSlot(DisplaySlot.SIDEBAR); @@ -841,21 +848,22 @@ public class HaCommands implements CommandExecutor { plugin.scoreboards.remove(sname); } } - if (plugin.Frozen.get(a) != null) { - for (String sname : plugin.Frozen.get(a)) { - Player player = plugin.getServer().getPlayerExact(sname); - plugin.RestoreInv(player, sname); + for (ArenaPlayer arenaPlayer : plugin.arenas.get(a).getArenaPlayers()) { + if (arenaPlayer.isFrozen()) { + plugin.restoreInventory(arenaPlayer.getPlayer(), arenaPlayer.getPlayer().getName()); } } - plugin.Dead.get(a).clear(); - plugin.Quit.get(a).clear(); - plugin.Watching.get(a).clear(); - plugin.Frozen.get(a).clear(); - plugin.Ready.get(a).clear(); - plugin.NeedConfirm.get(a).clear(); - plugin.Out.get(a).clear(); + for (ArenaPlayer arenaPlayer : plugin.arenas.get(a).getArenaPlayers()) { + arenaPlayer.setFrozen(false); + arenaPlayer.setReady(false); + arenaPlayer.setNeedConfirmation(false); + arenaPlayer.setOut(false); + arenaPlayer.setInArena(false); + arenaPlayer.setDead(false); + arenaPlayer.setQuit(false); + arenaPlayer.setWatching(false); + } plugin.Playing.get(a).clear(); - plugin.inArena.get(a).clear(); if (closeit) { plugin.open.put(a, false); @@ -1001,8 +1009,8 @@ public class HaCommands implements CommandExecutor { private void reload_sub(CommandSender sender) { for (Player online : plugin.getServer().getOnlinePlayers()) { if (plugin.getArena(online) != null) { - arena = plugin.getArena(online); - plugin.RestoreInv(online, online.getName()); + arenaId = plugin.getArena(online).getArenaId(); + plugin.restoreInventory(online, online.getName()); online.teleport(getArenaSpawn()); } } @@ -1013,7 +1021,7 @@ public class HaCommands implements CommandExecutor { plugin.Fee.clear(); plugin.ChestPay.clear(); plugin.spawns = null; - plugin.worldsNames.clear(); + plugin.worldNames.clear(); plugin.data = null; plugin.management = null; plugin.MyChests = null; @@ -1030,31 +1038,31 @@ public class HaCommands implements CommandExecutor { } else { if (args.length >= 2) { if (checkarena(args[1], sender)) { - arena = Integer.parseInt(args[1]); - if ((plugin.spawns.getString("Spawns_set." + arena) == null) || (plugin.spawns.getString("Spawns_set." + arena).equalsIgnoreCase("false"))) { - sender.sendMessage(ChatColor.RED + "/ha setspawn for Arena " + arena + " hasn't been run!"); + arenaId = Integer.parseInt(args[1]); + if ((plugin.spawns.getString("Spawns_set." + arenaId) == null) || (plugin.spawns.getString("Spawns_set." + arenaId).equalsIgnoreCase("false"))) { + sender.sendMessage(ChatColor.RED + "/ha setspawn for Arena " + arenaId + " hasn't been run!"); } else { - if (plugin.Playing.get(arena).size() <= 1) { + if (plugin.Playing.get(arenaId).size() <= 1) { sender.sendMessage(ChatColor.RED + "There are not enough players!"); - } else if (plugin.canJoin.get(arena)) { + } else if (plugin.canJoin.get(arenaId)) { sender.sendMessage(ChatColor.RED + "Game already in progress!"); } else { - plugin.setTorch(arena, false); + plugin.setTorch(arenaId, false); if (plugin.config.getString("Auto_Start").equalsIgnoreCase("true")) { - plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, () -> Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), "ha start " + arena), 20L); + plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, () -> Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), "ha start " + arenaId), 20L); } ListThe arena to check
* @returnTrue if the arena can be joined
*/ diff --git a/src/main/java/net/knarcraft/hungerarena/Listeners/DeathListener.java b/src/main/java/net/knarcraft/hungerarena/Listeners/DeathListener.java index 515f8d5..62c02d4 100644 --- a/src/main/java/net/knarcraft/hungerarena/Listeners/DeathListener.java +++ b/src/main/java/net/knarcraft/hungerarena/Listeners/DeathListener.java @@ -15,6 +15,8 @@ import org.bukkit.event.entity.PlayerDeathEvent; import org.bukkit.event.player.PlayerRespawnEvent; import org.bukkit.scoreboard.DisplaySlot; +import java.util.UUID; + public class DeathListener implements Listener { public final HungerArena plugin; @@ -31,9 +33,9 @@ public class DeathListener implements Listener { //get the arena the player has died in... (may be not the one he joined...) String ThisWorld = p.getWorld().getName(); - for (int z : plugin.worldsNames.keySet()) { - if (plugin.worldsNames.get(z) != null) { - if (plugin.worldsNames.get(z).equals(ThisWorld)) { + for (int z : plugin.worldNames.keySet()) { + if (plugin.worldNames.get(z) != null) { + if (plugin.worldNames.get(z).equals(ThisWorld)) { a = z; } } @@ -63,7 +65,7 @@ public class DeathListener implements Listener { final Location Spawn = new Location(spawnw, spawnx, spawny, spawnz); Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(plugin, () -> { player.teleport(Spawn); - plugin.RestoreInv(player, player.getName()); + plugin.restoreInventory(player, player.getName()); }, 10L); } @@ -72,136 +74,141 @@ public class DeathListener implements Listener { Player p = event.getEntity(); Server s = p.getServer(); String pname = p.getName(); + UUID playerId = p.getUniqueId(); if (plugin.getArena(p) != null) { - a = plugin.getArena(p); - int players = plugin.Playing.get(a).size() - 1; + a = plugin.getArena(p).getArenaId(); String leftmsg = null; clearInv(p); event.getDrops().clear(); p.getScoreboard().clearSlot(DisplaySlot.SIDEBAR); plugin.scoreboards.remove(p.getName()); - if (!plugin.Frozen.get(a).isEmpty()) { - if (plugin.Frozen.get(a).contains(pname)) { - if (!(p.getKiller() instanceof Player)) { - players = plugin.Playing.get(a).size() - 1; - leftmsg = ChatColor.BLUE + "There are now " + players + " tributes left!"; - if (plugin.config.getBoolean("Cannon_Death")) { - double y = p.getLocation().getY(); - double newy = y + 200; - double x = p.getLocation().getX(); - double z = p.getLocation().getZ(); - Location strike = new Location(p.getWorld(), x, newy, z); - p.getWorld().strikeLightning(strike); - } - event.setDeathMessage(""); - if (plugin.config.getBoolean("broadcastAll")) { - p.getServer().broadcastMessage(pname + ChatColor.LIGHT_PURPLE + " Stepped off their pedestal too early!"); - } else { - for (String gn : plugin.Playing.get(a)) { - Player g = plugin.getServer().getPlayer(gn); - g.sendMessage(pname + ChatColor.LIGHT_PURPLE + " Stepped off their pedestal too early!"); - } - } - plugin.Frozen.get(a).remove(pname); - plugin.Playing.get(a).remove(pname); - if (plugin.config.getBoolean("broadcastAll")) { - p.getServer().broadcastMessage(leftmsg); - } else { - for (String gn : plugin.Playing.get(a)) { - Player g = plugin.getServer().getPlayer(gn); - g.sendMessage(leftmsg); - } - } - plugin.winner(a); - } - } + int players = plugin.Playing.get(a).size() - 1; + if (plugin.arenaPlayers.get(playerId).isFrozen()) { + doFrozenPlayerStuff(p, players, leftmsg, pname, playerId, event, s); } else { - players = plugin.Playing.get(a).size() - 1; - leftmsg = ChatColor.BLUE + "There are now " + players + " tributes left!"; - if (plugin.config.getBoolean("Cannon_Death")) { - double y = p.getLocation().getY(); - double newY = y + 200; - double x = p.getLocation().getX(); - double z = p.getLocation().getZ(); - Location strike = new Location(p.getWorld(), x, newY, z); - p.getWorld().strikeLightning(strike); - } - plugin.Dead.get(a).add(pname); - plugin.Playing.get(a).remove(pname); - if (p.getKiller() instanceof Player) { - if (p.getKiller().getInventory().getItemInMainHand().getType() == Material.AIR) { - Player killer = p.getKiller(); - String killername = killer.getName(); - event.setDeathMessage(""); - if (plugin.config.getBoolean("broadcastAll")) { - s.broadcastMessage(ChatColor.LIGHT_PURPLE + "**BOOM** Tribute " + pname + " was killed by tribute " + killername + " with their FIST!"); - s.broadcastMessage(leftmsg); - } else { - for (String gn : plugin.Playing.get(a)) { - Player g = plugin.getServer().getPlayer(gn); - g.sendMessage(ChatColor.LIGHT_PURPLE + "**BOOM** Tribute " + pname + " was killed by tribute " + killername + " with their FIST!"); - g.sendMessage(leftmsg); - } - } - if (plugin.Kills.containsKey(killername)) { - plugin.Kills.put(killername, plugin.Kills.get(killername) + 1); - } else { - plugin.Kills.put(killername, 1); - } - if (plugin.Kills.containsKey("__SuM__")) { - plugin.Kills.put("__SuM__", plugin.Kills.get("__SuM__") + 1); - } else { - plugin.Kills.put("__SuM__", 1); - } - plugin.winner(a); - } else { - Player killer = p.getKiller(); - String killername = killer.getName(); - String weapon = "a(n) " + killer.getInventory().getItemInMainHand().getType().name().replace('_', ' '); - if (killer.getInventory().getItemInMainHand().hasItemMeta()) { - if (killer.getInventory().getItemInMainHand().getItemMeta().hasDisplayName()) { - weapon = killer.getInventory().getItemInMainHand().getItemMeta().getDisplayName(); - } - } - String msg = ChatColor.LIGHT_PURPLE + "**BOOM** Tribute " + pname + " was killed by tribute " + killername + " with " + weapon; - event.setDeathMessage(""); - if (plugin.config.getBoolean("broadcastAll")) { - s.broadcastMessage(msg); - s.broadcastMessage(leftmsg); - } else { - for (String gn : plugin.Playing.get(a)) { - Player g = plugin.getServer().getPlayer(gn); - g.sendMessage(msg); - g.sendMessage(leftmsg); - } - } - if (plugin.Kills.containsKey(killername)) { - plugin.Kills.put(killername, plugin.Kills.get(killername) + 1); - } else { - plugin.Kills.put(killername, 1); - } - if (plugin.Kills.containsKey("__SuM__")) { - plugin.Kills.put("__SuM__", plugin.Kills.get("__SuM__") + 1); - } else { - plugin.Kills.put("__SuM__", 1); - } - plugin.winner(a); - } - } else { - event.setDeathMessage(""); - if (plugin.config.getBoolean("broadcastAll")) { - s.broadcastMessage(ChatColor.LIGHT_PURPLE + pname + " died of natural causes!"); - s.broadcastMessage(leftmsg); - } else { - for (String gn : plugin.Playing.get(a)) { - Player g = plugin.getServer().getPlayer(gn); - g.sendMessage(ChatColor.LIGHT_PURPLE + pname + " died of " + ChatColor.ITALIC + " probably " + ChatColor.LIGHT_PURPLE + "natural causes!"); - g.sendMessage(leftmsg); - } - } - plugin.winner(a); + doNonFrozenPlayerStuff(p, players, leftmsg, pname, playerId, event, s); + } + } + } + + private void doFrozenPlayerStuff(Player p, int players, String leftmsg, String pname, UUID playerId, PlayerDeathEvent event, Server s) { + //Basically, if a frozen player is killed by something which isn't another player, assume the reason the player + // was killed was because they left their pedestal too early + if (!(p.getKiller() instanceof Player)) { + leftmsg = ChatColor.BLUE + "There are now " + players + " tributes left!"; + fireCannon(p); + event.setDeathMessage(""); + if (plugin.config.getBoolean("broadcastAll")) { + p.getServer().broadcastMessage(pname + ChatColor.LIGHT_PURPLE + " Stepped off their pedestal too early!"); + } else { + for (UUID gn : plugin.Playing.get(a)) { + Player g = plugin.getServer().getPlayer(gn); + g.sendMessage(pname + ChatColor.LIGHT_PURPLE + " Stepped off their pedestal too early!"); } } + plugin.arenaPlayers.get(playerId).setFrozen(false); + plugin.arenaPlayers.get(playerId).setInArena(false); + plugin.arenaPlayers.get(playerId).setArena(null); + if (plugin.config.getBoolean("broadcastAll")) { + p.getServer().broadcastMessage(leftmsg); + } else { + for (UUID gn : plugin.Playing.get(a)) { + Player g = plugin.getServer().getPlayer(gn); + g.sendMessage(leftmsg); + } + } + plugin.winner(a); + } + } + + private void doNonFrozenPlayerStuff(Player player, int players, String leftmsg, String pname, UUID playerId, PlayerDeathEvent event, Server s) { + leftmsg = ChatColor.BLUE + "There are now " + players + " tributes left!"; + fireCannon(player); + plugin.Dead.get(a).add(playerId); + plugin.Playing.get(a).remove(playerId); + if (player.getKiller() instanceof Player) { + if (player.getKiller().getInventory().getItemInMainHand().getType() == Material.AIR) { + Player killer = player.getKiller(); + String killername = killer.getName(); + event.setDeathMessage(""); + if (plugin.config.getBoolean("broadcastAll")) { + s.broadcastMessage(ChatColor.LIGHT_PURPLE + "**BOOM** Tribute " + pname + " was killed by tribute " + killername + " with their FIST!"); + s.broadcastMessage(leftmsg); + } else { + for (UUID gn : plugin.Playing.get(a)) { + Player g = plugin.getServer().getPlayer(gn); + g.sendMessage(ChatColor.LIGHT_PURPLE + "**BOOM** Tribute " + pname + " was killed by tribute " + killername + " with their FIST!"); + g.sendMessage(leftmsg); + } + } + if (plugin.Kills.containsKey(killername)) { + plugin.Kills.put(killername, plugin.Kills.get(killername) + 1); + } else { + plugin.Kills.put(killername, 1); + } + if (plugin.Kills.containsKey("__SuM__")) { + plugin.Kills.put("__SuM__", plugin.Kills.get("__SuM__") + 1); + } else { + plugin.Kills.put("__SuM__", 1); + } + plugin.winner(a); + } else { + Player killer = player.getKiller(); + String killername = killer.getName(); + String weapon = "a(n) " + killer.getInventory().getItemInMainHand().getType().name().replace('_', ' '); + if (killer.getInventory().getItemInMainHand().hasItemMeta()) { + if (killer.getInventory().getItemInMainHand().getItemMeta().hasDisplayName()) { + weapon = killer.getInventory().getItemInMainHand().getItemMeta().getDisplayName(); + } + } + String msg = ChatColor.LIGHT_PURPLE + "**BOOM** Tribute " + pname + " was killed by tribute " + killername + " with " + weapon; + event.setDeathMessage(""); + if (plugin.config.getBoolean("broadcastAll")) { + s.broadcastMessage(msg); + s.broadcastMessage(leftmsg); + } else { + for (UUID gn : plugin.Playing.get(a)) { + Player g = plugin.getServer().getPlayer(gn); + g.sendMessage(msg); + g.sendMessage(leftmsg); + } + } + if (plugin.Kills.containsKey(killername)) { + plugin.Kills.put(killername, plugin.Kills.get(killername) + 1); + } else { + plugin.Kills.put(killername, 1); + } + if (plugin.Kills.containsKey("__SuM__")) { + plugin.Kills.put("__SuM__", plugin.Kills.get("__SuM__") + 1); + } else { + plugin.Kills.put("__SuM__", 1); + } + plugin.winner(a); + } + } else { + event.setDeathMessage(""); + if (plugin.config.getBoolean("broadcastAll")) { + s.broadcastMessage(ChatColor.LIGHT_PURPLE + pname + " died of natural causes!"); + s.broadcastMessage(leftmsg); + } else { + for (UUID gn : plugin.Playing.get(a)) { + Player g = plugin.getServer().getPlayer(gn); + g.sendMessage(ChatColor.LIGHT_PURPLE + pname + " died of " + ChatColor.ITALIC + " probably " + ChatColor.LIGHT_PURPLE + "natural causes!"); + g.sendMessage(leftmsg); + } + } + plugin.winner(a); + } + } + + private void fireCannon(Player player) { + if (plugin.config.getBoolean("Cannon_Death")) { + double y = player.getLocation().getY(); + double newY = y + 200; + double x = player.getLocation().getX(); + double z = player.getLocation().getZ(); + Location strike = new Location(player.getWorld(), x, newY, z); + player.getWorld().strikeLightning(strike); } } diff --git a/src/main/java/net/knarcraft/hungerarena/Listeners/FreezeListener.java b/src/main/java/net/knarcraft/hungerarena/Listeners/FreezeListener.java index 001a184..a994c3c 100644 --- a/src/main/java/net/knarcraft/hungerarena/Listeners/FreezeListener.java +++ b/src/main/java/net/knarcraft/hungerarena/Listeners/FreezeListener.java @@ -1,5 +1,6 @@ package net.knarcraft.hungerarena.Listeners; +import net.knarcraft.hungerarena.ArenaPlayer; import net.knarcraft.hungerarena.HungerArena; import org.bukkit.ChatColor; import org.bukkit.Location; @@ -13,6 +14,7 @@ import org.bukkit.metadata.MetadataValue; import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import java.util.UUID; public class FreezeListener implements Listener { public final HungerArena plugin; @@ -31,12 +33,12 @@ public class FreezeListener implements Listener { Player p = event.getPlayer(); String pname = p.getName(); if (plugin.getArena(p) != null) { - a = plugin.getArena(p); - if (plugin.Frozen.get(a).contains(pname) && plugin.config.getBoolean("Frozen_Teleport")) { + a = plugin.getArena(p).getArenaId(); + if (plugin.arenaPlayers.get(p.getUniqueId()).isFrozen() && plugin.config.getBoolean("Frozen_Teleport")) { if (plugin.config.getBoolean("Explode_on_Move")) { timeUp.put(a, false); - for (String players : plugin.Playing.get(a)) { - Player playing = plugin.getServer().getPlayerExact(players); + for (UUID players : plugin.Playing.get(a)) { + Player playing = plugin.getServer().getPlayer(players); i = plugin.Playing.get(a).indexOf(players) + 1; if (!timeUp.get(a) && !timing.contains(a)) { timing.add(a); @@ -52,7 +54,7 @@ public class FreezeListener implements Listener { } else { if (!playing.getLocation().getBlock().getLocation().equals(plugin.location.get(a).get(i).getBlock().getLocation())) { if (!plugin.Dead.get(a).contains(playing.getName())) { - plugin.Dead.get(a).add(playing.getName()); + plugin.Dead.get(a).add(playing.getUniqueId()); World world = playing.getLocation().getWorld(); world.createExplosion(playing.getLocation(), 0.0F, false); playing.setHealth(0.0D); @@ -74,17 +76,19 @@ public class FreezeListener implements Listener { if (plugin.config.getBoolean("broadcastAll")) { p.getServer().broadcastMessage(pname + ChatColor.LIGHT_PURPLE + " Stepped off their pedestal too early!"); } else { - for (String gn : plugin.Playing.get(a)) { + for (UUID gn : plugin.Playing.get(a)) { Player g = plugin.getServer().getPlayer(gn); g.sendMessage(pname + ChatColor.LIGHT_PURPLE + " Stepped off their pedestal too early!"); } } - plugin.Frozen.get(a).remove(pname); - plugin.Playing.get(a).remove(pname); + ArenaPlayer arenaPlayer = plugin.arenaPlayers.get(p.getUniqueId()); + arenaPlayer.setFrozen(false); + arenaPlayer.setInArena(false); + arenaPlayer.setArena(null); if (plugin.config.getBoolean("broadcastAll")) { p.getServer().broadcastMessage(leftmsg); } else { - for (String gn : plugin.Playing.get(a)) { + for (UUID gn : plugin.Playing.get(a)) { Player g = plugin.getServer().getPlayer(gn); g.sendMessage(leftmsg); } diff --git a/src/main/java/net/knarcraft/hungerarena/Listeners/JoinAndQuitListener.java b/src/main/java/net/knarcraft/hungerarena/Listeners/JoinAndQuitListener.java index 891fc1e..d81ca79 100644 --- a/src/main/java/net/knarcraft/hungerarena/Listeners/JoinAndQuitListener.java +++ b/src/main/java/net/knarcraft/hungerarena/Listeners/JoinAndQuitListener.java @@ -1,5 +1,6 @@ package net.knarcraft.hungerarena.Listeners; +import net.knarcraft.hungerarena.ArenaPlayer; import net.knarcraft.hungerarena.HaCommands; import net.knarcraft.hungerarena.HungerArena; import org.bukkit.ChatColor; @@ -12,6 +13,8 @@ import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.scoreboard.DisplaySlot; +import java.util.UUID; + public class JoinAndQuitListener implements Listener { public HungerArena plugin; @@ -30,25 +33,26 @@ public class JoinAndQuitListener implements Listener { @EventHandler public void onPlayerJoin(PlayerJoinEvent event) { final Player player = event.getPlayer(); + final UUID playerId = player.getUniqueId(); final String pname = player.getName(); boolean pfound = false; for (int i : plugin.Watching.keySet()) { - for (String s : plugin.Watching.get(i)) { - Player spectator = plugin.getServer().getPlayerExact(s); + for (UUID s : plugin.Watching.get(i)) { + Player spectator = plugin.getServer().getPlayer(s); player.hidePlayer(plugin, spectator); } } for (int i : plugin.Out.keySet()) { - if (plugin.Out.get(i).contains(pname)) { - plugin.Playing.get(i).add(pname); + if (plugin.Out.get(i).contains(playerId)) { + plugin.Playing.get(i).add(playerId); plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, () -> player.sendMessage(ChatColor.AQUA + "You have saved yourself from being ejected from the arena!"), 40L); - plugin.Out.get(i).remove(pname); + plugin.Out.get(i).remove(playerId); pfound = true; } } for (final int i : plugin.Quit.keySet()) { - if (plugin.Quit.get(i).contains(pname)) { + if (plugin.Quit.get(i).contains(playerId)) { String[] Spawncoords = plugin.spawns.getString("Spawn_coordinates." + i).split(","); String w = Spawncoords[3]; World spawnw = plugin.getServer().getWorld(w); @@ -59,9 +63,9 @@ public class JoinAndQuitListener implements Listener { plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, () -> { player.teleport(Spawn); player.sendMessage(ChatColor.RED + "You have been teleported to last spawn because you quit/forfeited!"); - plugin.RestoreInv(player, player.getName()); + plugin.restoreInventory(player, player.getName()); if (plugin.Quit.get(i) != null) { - plugin.Quit.get(i).remove(player.getName()); + plugin.Quit.get(i).remove(player.getUniqueId()); } }, 40L); pfound = true; @@ -79,7 +83,7 @@ public class JoinAndQuitListener implements Listener { plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, () -> { player.teleport(Spawn); player.sendMessage(ChatColor.RED + "You have been teleported to spawn because you quit/died/forfeited!!"); - plugin.RestoreInv(player, player.getName()); + plugin.restoreInventory(player, player.getName()); if (plugin.Dead.get(i) != null) { plugin.Dead.get(i).remove(player.getName()); } @@ -106,7 +110,7 @@ public class JoinAndQuitListener implements Listener { player.getInventory().setHelmet(null); plugin.inArena.remove(pname); player.sendMessage(ChatColor.RED + "You were still in the arena when you left and now the games are over."); - plugin.RestoreInv(player, player.getName()); + plugin.restoreInventory(player, player.getName()); if (plugin.inArena.get(i) != null) { plugin.inArena.get(i).remove(player.getName()); } @@ -115,7 +119,7 @@ public class JoinAndQuitListener implements Listener { } } } - if (!plugin.restrictedWorlds || plugin.worldsNames.containsValue(player.getWorld().getName())) { + if (!plugin.restrictedWorlds || plugin.worldNames.containsValue(player.getWorld().getName())) { if (!pfound && plugin.config.getBoolean("Force_Players_toSpawn") && (plugin.spawns.getString("Spawn_coordinates.0") != null)) { String[] spawnCoordinates = plugin.spawns.getString("Spawn_coordinates.0").split(","); String w = spawnCoordinates[3]; @@ -124,7 +128,7 @@ public class JoinAndQuitListener implements Listener { double spawnY = Double.parseDouble(spawnCoordinates[1]); double spawnZ = Double.parseDouble(spawnCoordinates[2]); final Location Spawn = new Location(spawnWorld, spawnX, spawnY, spawnZ); - plugin.RestoreInv(player, player.getName()); + plugin.restoreInventory(player, player.getName()); plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, () -> { player.teleport(Spawn); player.sendMessage(ChatColor.RED + "You have been teleported to spawn!!"); @@ -134,46 +138,44 @@ public class JoinAndQuitListener implements Listener { } @EventHandler - public void onQuit(PlayerQuitEvent evt) { - Player p = evt.getPlayer(); - String playerName = p.getName(); - for (int i : plugin.Frozen.keySet()) { - if (plugin.Frozen.get(i).contains(playerName)) { - plugin.Frozen.remove(playerName); - String[] Spawncoords = plugin.spawns.getString("Spawn_coordinates.0").split(","); - String w = Spawncoords[3]; - World spawnw = plugin.getServer().getWorld(w); - double spawnx = Double.parseDouble(Spawncoords[0]); - double spawny = Double.parseDouble(Spawncoords[1]); - double spawnz = Double.parseDouble(Spawncoords[2]); - Location Spawn = new Location(spawnw, spawnx, spawny, spawnz); - p.teleport(Spawn); - p.getScoreboard().clearSlot(DisplaySlot.SIDEBAR); - plugin.scoreboards.remove(p.getName()); - plugin.Kills.remove(p.getName()); - } + public void onQuit(PlayerQuitEvent event) { + Player player = event.getPlayer(); + ArenaPlayer arenaPlayer = plugin.arenaPlayers.get(player.getUniqueId()); + if (arenaPlayer != null && arenaPlayer.isFrozen()) { + arenaPlayer.setFrozen(false); + String[] spawnCoordinates = plugin.spawns.getString("Spawn_coordinates.0").split(","); + String w = spawnCoordinates[3]; + World spawnWorld = plugin.getServer().getWorld(w); + double spawnX = Double.parseDouble(spawnCoordinates[0]); + double spawnY = Double.parseDouble(spawnCoordinates[1]); + double spawnZ = Double.parseDouble(spawnCoordinates[2]); + Location Spawn = new Location(spawnWorld, spawnX, spawnY, spawnZ); + player.teleport(Spawn); + player.getScoreboard().clearSlot(DisplaySlot.SIDEBAR); + plugin.scoreboards.remove(player.getName()); + plugin.Kills.remove(player.getName()); } } @EventHandler public void onPlayerQuit(PlayerQuitEvent event) { - final Player p = event.getPlayer(); - final String playerName = p.getName(); - if (plugin.getArena(p) != null) { - arena = plugin.getArena(p); - plugin.Out.get(arena).add(playerName); - plugin.Playing.get(arena).remove(playerName); + final Player player = event.getPlayer(); + final UUID playerId = player.getUniqueId(); + if (plugin.getArena(player) != null) { + arena = plugin.getArena(player).getArenaId(); + plugin.Out.get(arena).add(playerId); + plugin.Playing.get(arena).remove(playerId); plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, () -> { - if (plugin.Out.get(arena).contains(playerName)) { - plugin.Quit.get(arena).add(playerName); - plugin.Out.get(arena).remove(playerName); - p.getScoreboard().clearSlot(DisplaySlot.SIDEBAR); - plugin.scoreboards.remove(p.getName()); - plugin.Kills.remove(p.getName()); + if (plugin.Out.get(arena).contains(playerId)) { + plugin.Quit.get(arena).add(playerId); + plugin.Out.get(arena).remove(playerId); + player.getScoreboard().clearSlot(DisplaySlot.SIDEBAR); + plugin.scoreboards.remove(player.getName()); + plugin.Kills.remove(player.getName()); plugin.winner(arena); - plugin.inArena.get(arena).add(playerName); - } else if (plugin.getArena(p) == null) { - plugin.Quit.get(arena).add(playerName); + plugin.inArena.get(arena).add(playerId); + } else if (plugin.getArena(player) == null) { + plugin.Quit.get(arena).add(playerId); } }, 1200L); } diff --git a/src/main/java/net/knarcraft/hungerarena/Listeners/PvP.java b/src/main/java/net/knarcraft/hungerarena/Listeners/PvP.java index 2df731c..63d79f6 100644 --- a/src/main/java/net/knarcraft/hungerarena/Listeners/PvP.java +++ b/src/main/java/net/knarcraft/hungerarena/Listeners/PvP.java @@ -18,7 +18,7 @@ public class PvP implements Listener { this.plugin = m; } - int a = 0; + int arenaId = 0; @EventHandler(priority = EventPriority.MONITOR) public void PlayerPvP(EntityDamageByEntityEvent event) { @@ -26,8 +26,8 @@ public class PvP implements Listener { Entity dl = event.getDamager(); if (pl instanceof Player p && dl instanceof Player d) { if (plugin.getArena(p) != null && plugin.getArena(d) != null) { - a = plugin.getArena(p); - if (plugin.canJoin.get(a)) { + arenaId = plugin.getArena(p).getArenaId(); + if (plugin.canJoin.get(arenaId)) { if (event.isCancelled()) { event.setCancelled(false); } @@ -39,8 +39,8 @@ public class PvP implements Listener { } } if (plugin.getArena(p) != null) { - a = plugin.getArena(p); - if (!plugin.canJoin.get(a)) { + arenaId = plugin.getArena(p).getArenaId(); + if (!plugin.canJoin.get(arenaId)) { if (!event.isCancelled()) { event.setCancelled(true); } @@ -76,13 +76,13 @@ public class PvP implements Listener { @EventHandler public void PlayerDamage(EntityDamageEvent event) { Entity e = event.getEntity(); - if (e instanceof Player p) { - if (plugin.getArena(p) != null) { - a = plugin.getArena(p); - if (plugin.gp.get(a) != null && plugin.gp.get(a) != 0) { + if (e instanceof Player player) { + if (plugin.getArena(player) != null) { + arenaId = plugin.getArena(player).getArenaId(); + if (plugin.gp.get(arenaId) != null && plugin.gp.get(arenaId) != 0) { event.setCancelled(true); } - if (plugin.Frozen.get(a) != null && plugin.Frozen.get(a).contains(p.getName())) { + if (plugin.arenaPlayers.get(player.getUniqueId()).isFrozen()) { event.setCancelled(true); } } diff --git a/src/main/java/net/knarcraft/hungerarena/Listeners/TeleportListener.java b/src/main/java/net/knarcraft/hungerarena/Listeners/TeleportListener.java index 4c039e3..bbc5554 100644 --- a/src/main/java/net/knarcraft/hungerarena/Listeners/TeleportListener.java +++ b/src/main/java/net/knarcraft/hungerarena/Listeners/TeleportListener.java @@ -19,7 +19,7 @@ public class TeleportListener implements Listener { @EventHandler(priority = EventPriority.MONITOR) public void onTP(PlayerTeleportEvent event) { Player p = event.getPlayer(); - if (plugin.worldsNames.containsValue(event.getTo().getWorld().getName()) && plugin.Tele.contains(p)) { + if (plugin.worldNames.containsValue(event.getTo().getWorld().getName()) && plugin.Tele.contains(p)) { event.setCancelled(true); p.sendMessage(ChatColor.RED + "You are a dead tribute... How are you supposed to get back into the arena...."); plugin.Tele.remove(p); diff --git a/src/main/java/net/knarcraft/hungerarena/Listeners/WorldChange.java b/src/main/java/net/knarcraft/hungerarena/Listeners/WorldChange.java index 435274d..9ff0cb4 100644 --- a/src/main/java/net/knarcraft/hungerarena/Listeners/WorldChange.java +++ b/src/main/java/net/knarcraft/hungerarena/Listeners/WorldChange.java @@ -21,8 +21,8 @@ public class WorldChange implements Listener { String pname = p.getName(); String ThisWorld = p.getWorld().getName(); String FromWorld = event.getFrom().getName(); - if (!plugin.worldsNames.containsValue(ThisWorld) && plugin.worldsNames.containsValue(FromWorld)) { - plugin.RestoreInv(p, pname); + if (!plugin.worldNames.containsValue(ThisWorld) && plugin.worldNames.containsValue(FromWorld)) { + plugin.restoreInventory(p, pname); } } @@ -32,16 +32,16 @@ public class WorldChange implements Listener { String pname = p.getName(); String ThisWorld = p.getWorld().getName(); int a = 0; - for (int i : plugin.worldsNames.keySet()) { - if (plugin.worldsNames.get(i) == null) { + for (int i : plugin.worldNames.keySet()) { + if (plugin.worldNames.get(i) == null) { continue; } - if (plugin.worldsNames.get(i).equals(ThisWorld)) { + if (plugin.worldNames.get(i).equals(ThisWorld)) { a = i; - if (plugin.Frozen.get(a) != null && plugin.Frozen.get(a).contains(pname)) { + if (plugin.arenaPlayers.get(p.getUniqueId()).isFrozen()) { return; } else { - plugin.RestoreInv(p, pname); + plugin.restoreInventory(p, pname); if (plugin.config.getBoolean("joinTeleport")) { String[] spawnCoordinates = plugin.spawns.getString("Spawn_coordinates." + a).split(","); double spawnX = Double.parseDouble(spawnCoordinates[0]); diff --git a/src/main/java/net/knarcraft/hungerarena/SpawnsCommand.java b/src/main/java/net/knarcraft/hungerarena/SpawnsCommand.java index 95c20da..69c00d4 100644 --- a/src/main/java/net/knarcraft/hungerarena/SpawnsCommand.java +++ b/src/main/java/net/knarcraft/hungerarena/SpawnsCommand.java @@ -3,6 +3,7 @@ package net.knarcraft.hungerarena; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Location; +import org.bukkit.World; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; @@ -13,166 +14,157 @@ import java.util.ArrayList; import java.util.HashMap; public class SpawnsCommand implements CommandExecutor { - public final HungerArena plugin; - int i = 0; - int arenaId = 0; - boolean NoPlayerSpawns; - public SpawnsCommand(HungerArena m) { - this.plugin = m; + public final HungerArena plugin; + int tributeId = 0; + int arenaId = 0; + boolean noPlayerSpawns; + + public SpawnsCommand(HungerArena plugin) { + this.plugin = plugin; } @Override - public boolean onCommand(@NotNull CommandSender sender, @NotNull Command cmd, @NotNull String commandLabel, String[] args) { - Player p = (Player) sender; - String ThisWorld = p.getWorld().getName(); - NoPlayerSpawns = true; - for (int i : plugin.worldsNames.keySet()) { - if (plugin.worldsNames.get(i) != null) { - if (plugin.worldsNames.get(i).equals(ThisWorld)) { - arenaId = i; - NoPlayerSpawns = false; + public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String commandLabel, + String[] args) { + Player player = (Player) sender; + String playerWorld = player.getWorld().getName(); + this.noPlayerSpawns = true; + for (int arenaId : plugin.arenas.keySet()) { + String arenaWorld = plugin.worldNames.get(arenaId); + if (arenaWorld != null) { + if (arenaWorld.equals(playerWorld)) { + this.arenaId = arenaId; + this.noPlayerSpawns = false; break; } } } - if (cmd.getName().equalsIgnoreCase("StartPoint")) { - if (p.hasPermission("HungerArena.StartPoint")) { - Location location; - double x; - double y; - double z; - if (args.length == 6) { - try { - i = Integer.parseInt(args[1]); - arenaId = Integer.parseInt(args[0]); - } catch (Exception e) { - p.sendMessage(ChatColor.RED + "Argument not an integer!"); - return true; - } - String world = args[2]; - x = Double.parseDouble(args[3]); - y = Double.parseDouble(args[4]); - z = Double.parseDouble(args[5]); - location = new Location(Bukkit.getWorld(world), x, y, z); - if (plugin.location.get(arenaId) != null) { - plugin.location.get(arenaId).put(i, location); - } else { - /*plugin.arenas.put(arenaId, new Arena(arenaId, location.getWorld(), new ArrayList<>(), - ArenaState.IDLE, false, true, 0, 0, 0, - new HashMap<>()));*/ - plugin.arenas.get(arenaId).locations().put(i, location); - plugin.location.put(arenaId, new HashMap<>()); - plugin.location.get(arenaId).put(i, location); - plugin.Playing.put(arenaId, new ArrayList<>()); - plugin.Ready.put(arenaId, new ArrayList<>()); - plugin.Dead.put(arenaId, new ArrayList<>()); - plugin.Quit.put(arenaId, new ArrayList<>()); - plugin.Out.put(arenaId, new ArrayList<>()); - plugin.Watching.put(arenaId, new ArrayList<>()); - plugin.NeedConfirm.put(arenaId, new ArrayList<>()); - plugin.inArena.put(arenaId, new ArrayList<>()); - plugin.Frozen.put(arenaId, new ArrayList<>()); - plugin.canJoin.put(arenaId, false); - plugin.MatchRunning.put(arenaId, null); - plugin.open.put(arenaId, true); - } - String coords = location.getWorld().getName() + "," + (location.getX()) + "," + location.getY() + "," + (location.getZ()); - p.sendMessage(coords); - plugin.spawns.set("Spawns." + arenaId + "" + i, coords); - plugin.worldsNames.put(arenaId, location.getWorld().getName()); - plugin.saveSpawns(); - plugin.maxPlayers.put(arenaId, plugin.location.get(arenaId).size()); - p.sendMessage(ChatColor.AQUA + "You have set the spawn location of Tribute " + i + " in arena " + arenaId + "!"); - this.plugin.reloadSpawnPoints(false); - return true; - } - if (args.length >= 2) { - try { - i = Integer.parseInt(args[1]); - arenaId = Integer.parseInt(args[0]); - } catch (Exception e) { - p.sendMessage(ChatColor.RED + "Argument not an integer!"); - return true; - } - if (i >= 1 && i <= plugin.config.getInt("maxPlayers")) { - if (!plugin.worldsNames.containsValue(p.getWorld().getName())) { - p.sendMessage(ChatColor.GOLD + "You've added this world to the config ..."); - } - location = p.getLocation().getBlock().getLocation(); - x = location.getX() + .5; - y = location.getY(); - z = location.getZ() + .5; - location = new Location(location.getWorld(), x, y, z); - if (plugin.location.get(arenaId) != null) { - plugin.location.get(arenaId).put(i, location); - } else { - plugin.location.put(arenaId, new HashMap<>()); - plugin.location.get(arenaId).put(i, location); - plugin.Playing.put(arenaId, new ArrayList<>()); - plugin.Ready.put(arenaId, new ArrayList<>()); - plugin.Dead.put(arenaId, new ArrayList<>()); - plugin.Quit.put(arenaId, new ArrayList<>()); - plugin.Out.put(arenaId, new ArrayList<>()); - plugin.Watching.put(arenaId, new ArrayList<>()); - plugin.NeedConfirm.put(arenaId, new ArrayList<>()); - plugin.inArena.put(arenaId, new ArrayList<>()); - plugin.Frozen.put(arenaId, new ArrayList<>()); - plugin.canJoin.put(arenaId, false); - plugin.MatchRunning.put(arenaId, null); - plugin.open.put(arenaId, true); - } - String coords = location.getWorld().getName() + "," + (location.getX()) + "," + location.getY() + "," + (location.getZ()); - p.sendMessage(coords); - plugin.spawns.set("Spawns." + arenaId + "" + i, coords); - plugin.worldsNames.put(arenaId, location.getWorld().getName()); - plugin.saveSpawns(); - plugin.maxPlayers.put(arenaId, plugin.location.get(arenaId).size()); - p.sendMessage(ChatColor.AQUA + "You have set the spawn location of Tribute " + i + " in arena " + arenaId + "!"); - this.plugin.reloadSpawnPoints(false); - } else { - p.sendMessage(ChatColor.RED + "You can't go past " + plugin.config.getInt("maxPlayers") + " players!"); - } - } else if (args.length == 1) { - if (NoPlayerSpawns) { - try { - arenaId = Integer.parseInt(args[0]); - } catch (Exception e) { - p.sendMessage(ChatColor.RED + "Argument not an integer!"); - return true; - } - } - if (plugin.spawns.get("Spawns." + arenaId) != null) { - int start = 1; - while (start < plugin.config.getInt("maxPlayers") + 2) { - if (plugin.spawns.get("Spawns." + arenaId + "" + start) != null) { - start = start + 1; - if (start == plugin.config.getInt("maxPlayers") + 1) { - p.sendMessage(ChatColor.DARK_AQUA + "[HungerArena] " + ChatColor.GREEN + "All spawns set, type /startpoint [Arena #] [Spawn #] to over-ride previous points!"); - return true; - } - } else { - int sloc = start; - start = plugin.config.getInt("maxPlayers") + 1; - p.sendMessage(ChatColor.DARK_AQUA + "[HungerArena] " + ChatColor.RED + "Begin Setting For Arena " + arenaId + " Starting From Point " + sloc); - plugin.setting.put(p.getName(), arenaId + "-" + sloc); - return true; - } - } - } - p.sendMessage(ChatColor.DARK_AQUA + "[HungerArena] " + ChatColor.RED + "Begin Setting For Arena " + arenaId + " Starting From Point " + 1); - plugin.setting.put(p.getName(), arenaId + "-" + 1); - return true; - } else { - p.sendMessage(ChatColor.RED + "No argument given! \nUse command like this:\n/startpoint [Arena #] [Startpoint #] for setting your position as a startpoint.\n/startpoint [Arena #] [Startpoint #] [Mapname] [x] [y] [z] \nOr you can use /startpoint [Arena #] to use the 'spawntool': ID" + plugin.config.getInt("spawnsTool") + " for setting the startpoints!"); - return false; - } - } else { - p.sendMessage(ChatColor.RED + "You don't have permission!"); + if (!command.getName().equalsIgnoreCase("StartPoint")) { + return false; + } + + if (!player.hasPermission("HungerArena.StartPoint")) { + player.sendMessage(ChatColor.RED + "You don't have permission!"); + return false; + } + + if (args.length >= 2) { + try { + this.tributeId = Integer.parseInt(args[1]); + this.arenaId = Integer.parseInt(args[0]); + } catch (Exception e) { + player.sendMessage(ChatColor.RED + "Argument not an integer!"); + return true; } } - return false; + + if (args.length == 6) { + saveGivenLocationSpawnPoint(args, player); + return true; + } else if (args.length >= 2) { + savePlayerLocationSpawnPoint(player); + return true; + } else if (args.length == 1) { + enableSpawnSetting(args, player); + return true; + } else { + player.sendMessage(ChatColor.RED + "No argument given! \nUse command like this:\n/startpoint [Arena #] " + + "[Startpoint #] for setting your position as a startpoint.\n/startpoint [Arena #] [Startpoint #] " + + "[Mapname] [x] [y] [z] \nOr you can use /startpoint [Arena #] to use the 'spawntool': ID" + + plugin.config.getInt("spawnsTool") + " for setting the startpoints!"); + return false; + } + } + + private void enableSpawnSetting(String[] args, Player player) { + //If any player spawn has been set, the arena id was set during the constructor call + if (noPlayerSpawns) { + try { + this.arenaId = Integer.parseInt(args[0]); + } catch (Exception e) { + player.sendMessage(ChatColor.RED + "Argument not an integer!"); + return; + } + } + + //If spawns already exist, calculate the next missing spawn + int start = 1; + if (plugin.spawns.get("Spawns." + arenaId) != null) { + while (start < plugin.config.getInt("maxPlayers") + 2) { + if (plugin.spawns.get("Spawns." + arenaId + "" + start) != null) { + start++; + //All spawn points already set + if (start == plugin.config.getInt("maxPlayers") + 1) { + player.sendMessage(ChatColor.DARK_AQUA + "[HungerArena] " + ChatColor.GREEN + + "All spawns set, type /startpoint [Arena #] [Spawn #] to over-ride previous points!"); + return; + } + } else { + //Enable spawn setting, starting from the next available spawn + player.sendMessage(ChatColor.DARK_AQUA + "[HungerArena] " + ChatColor.RED + + "Begin Setting For Arena " + arenaId + " Starting From Point " + start); + plugin.setting.put(player.getName(), arenaId + "-" + start); + return; + } + } + } + //Enable spawn setting, starting from the next available spawn + player.sendMessage(ChatColor.DARK_AQUA + "[HungerArena] " + ChatColor.RED + "Begin Setting For Arena " + + arenaId + " Starting From Point " + start); + plugin.setting.put(player.getName(), arenaId + "-" + start); + } + + private void savePlayerLocationSpawnPoint(Player player) { + if (tributeId >= 1 && tributeId <= plugin.config.getInt("maxPlayers")) { + player.sendMessage(ChatColor.RED + "You can't go past " + plugin.config.getInt("maxPlayers") + " players!"); + return; + } + + if (!plugin.worldNames.containsValue(player.getWorld().getName())) { + player.sendMessage(ChatColor.GOLD + "You've added this world to the config ..."); + } + Location location = player.getLocation().getBlock().getLocation(); + double x = location.getX() + .5; + double y = location.getY(); + double z = location.getZ() + .5; + location = new Location(location.getWorld(), x, y, z); + + saveSpawnPoint(player, location); + } + + private void saveGivenLocationSpawnPoint(String[] args, Player player) { + String worldName = args[2]; + double x = Double.parseDouble(args[3]); + double y = Double.parseDouble(args[4]); + double z = Double.parseDouble(args[5]); + Location location = new Location(Bukkit.getWorld(worldName), x, y, z); + + saveSpawnPoint(player, location); + } + + private void saveSpawnPoint(Player player, Location location) { + //Add a new arena if it does not yet exist + if (plugin.arenas.get(arenaId) == null) { + plugin.arenas.put(arenaId, new Arena(arenaId, location.getWorld(), new ArrayList<>(), + ArenaState.IDLE, false, true, 0, 0, 0, + new HashMap<>())); + } + Arena arena = plugin.arenas.get(arenaId); + arena.getLocations().put(tributeId, location); + + World world = location.getWorld(); + String coordinates = world == null ? "" : world.getName() + "," + location.getX() + "," + + location.getY() + "," + location.getZ(); + player.sendMessage(coordinates); + plugin.spawns.set(String.format("Spawns.%s.%s", arenaId, tributeId), coordinates); + plugin.worldNames.put(arenaId, location.getWorld().getName()); + plugin.saveSpawns(); + + arena.setMaxPlayers(plugin.location.get(arenaId).size()); + player.sendMessage(ChatColor.AQUA + String.format("You have set the spawn location of Tribute %d in arena %d!", tributeId, arenaId)); + this.plugin.reloadSpawnPoints(false); } }