diff options
Diffstat (limited to 'src/main/java/net/tylermurphy/hideAndSeek/command')
10 files changed, 324 insertions, 26 deletions
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/command/Join.java b/src/main/java/net/tylermurphy/hideAndSeek/command/Join.java new file mode 100644 index 0000000..5168e25 --- /dev/null +++ b/src/main/java/net/tylermurphy/hideAndSeek/command/Join.java @@ -0,0 +1,63 @@ +package net.tylermurphy.hideAndSeek.command; + +import org.bukkit.Bukkit; +import org.bukkit.GameMode; +import org.bukkit.Location; +import org.bukkit.attribute.Attribute; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +import net.tylermurphy.hideAndSeek.util.Functions; +import net.tylermurphy.hideAndSeek.util.ICommand; + +import static net.tylermurphy.hideAndSeek.Store.*; + +public class Join implements ICommand { + + public void execute(CommandSender sender, String[] args) { + if(!Functions.setup()) { + sender.sendMessage(errorPrefix + "Game is not setup. Run /hs setup to see what you needed to do"); + return; + } + Player player = Bukkit.getServer().getPlayer(sender.getName()); + if(player == null) { + sender.sendMessage(errorPrefix + "An internal error has occured"); + return; + } + if(playerList.containsKey(player.getName())){ + sender.sendMessage(errorPrefix + "You are already in the lobby/game"); + return; + } + playerList.put(player.getName(), player); + if(status.equals("Standby")) { + Hider.add(player.getName()); + HiderTeam.addEntry(player.getName()); + if(announceMessagesToNonPlayers) Bukkit.broadcastMessage(messagePrefix + sender.getName() + " has joined the HideAndSeek lobby"); + else Functions.broadcastMessage(messagePrefix + sender.getName() + " has joined the HideAndSeek lobby"); + player.teleport(new Location(Bukkit.getWorld(lobbyWorld), lobbyPosition.getX(),lobbyPosition.getY(),lobbyPosition.getZ())); + player.setGameMode(GameMode.ADVENTURE); + } else { + Spectator.add(player.getName()); + SpectatorTeam.addEntry(player.getName()); + player.sendMessage(messagePrefix + "You have joined mid game and became a spectator"); + player.setGameMode(GameMode.SPECTATOR); + player.teleport(new Location(Bukkit.getWorld("hideandseek_"+spawnWorld), spawnPosition.getX(),spawnPosition.getY(),spawnPosition.getZ())); + } + + player.setFoodLevel(20); + player.setHealth(player.getAttribute(Attribute.GENERIC_MAX_HEALTH).getBaseValue()); + } + + public String getLabel() { + return "join"; + } + + public String getUsage() { + return ""; + } + + public String getDescription() { + return "Joins the lobby if game is set to manual join/leave"; + } + +} diff --git a/src/main/java/net/tylermurphy/hideAndSeek/command/Leave.java b/src/main/java/net/tylermurphy/hideAndSeek/command/Leave.java new file mode 100644 index 0000000..4dec452 --- /dev/null +++ b/src/main/java/net/tylermurphy/hideAndSeek/command/Leave.java @@ -0,0 +1,53 @@ +package net.tylermurphy.hideAndSeek.command; + +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +import net.tylermurphy.hideAndSeek.util.Functions; +import net.tylermurphy.hideAndSeek.util.ICommand; + +import static net.tylermurphy.hideAndSeek.Store.*; + +public class Leave implements ICommand { + + public void execute(CommandSender sender, String[] args) { + if(!Functions.setup()) { + sender.sendMessage(errorPrefix + "Game is not setup. Run /hs setup to see what you needed to do"); + return; + } + Player player = Bukkit.getServer().getPlayer(sender.getName()); + if(player == null) { + sender.sendMessage(errorPrefix + "An internal error has occured"); + return; + } + if(!playerList.containsKey(player.getName())) { + sender.sendMessage(errorPrefix + "You are currently not in the lobby"); + return; + } + if(!Seeker.contains(player.getName())) { + if(announceMessagesToNonPlayers) Bukkit.broadcastMessage(messagePrefix + sender.getName() + " has left the HideAndSeek lobby"); + else Functions.broadcastMessage(messagePrefix + sender.getName() + " has left the HideAndSeek lobby"); + } + playerList.remove(player.getName()); + Hider.remove(player.getName()); + Seeker.remove(player.getName()); + HiderTeam.removeEntry(player.getName()); + SeekerTeam.removeEntry(player.getName()); + player.teleport(new Location(Bukkit.getWorld(exitWorld), exitPosition.getX(), exitPosition.getY(), exitPosition.getZ())); + } + + public String getLabel() { + return "leave"; + } + + public String getUsage() { + return ""; + } + + public String getDescription() { + return "Leaves the lobby if game is set to manual join/leave"; + } + +}
\ No newline at end of file diff --git a/src/main/java/net/tylermurphy/hideAndSeek/command/Reload.java b/src/main/java/net/tylermurphy/hideAndSeek/command/Reload.java index 1b1f1d5..438ab26 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/command/Reload.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/command/Reload.java @@ -1,6 +1,7 @@ package net.tylermurphy.hideAndSeek.command; import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; import net.tylermurphy.hideAndSeek.Store; import net.tylermurphy.hideAndSeek.util.Functions; @@ -8,14 +9,21 @@ import net.tylermurphy.hideAndSeek.util.ICommand; import static net.tylermurphy.hideAndSeek.Store.*; +import java.util.HashMap; + public class Reload implements ICommand { public void execute(CommandSender sender, String[] args) { + if(!status.equals("Standby")) { + sender.sendMessage(errorPrefix + "Game is currently in session"); + return; + } Store.loadConfig(); try { Functions.loadScoreboard(); } catch(Exception e) {} sender.sendMessage(messagePrefix + "Reloaded the config"); + playerList = new HashMap<String,Player>(); } public String getLabel() { diff --git a/src/main/java/net/tylermurphy/hideAndSeek/command/SaveMap.java b/src/main/java/net/tylermurphy/hideAndSeek/command/SaveMap.java index 2956c80..2c7e75a 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/command/SaveMap.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/command/SaveMap.java @@ -21,6 +21,10 @@ import net.tylermurphy.hideAndSeek.util.ICommand; public class SaveMap implements ICommand { public void execute(CommandSender sender, String[] args) { + if(!status.equals("Standby")) { + sender.sendMessage(errorPrefix + "Game is currently in session"); + return; + } if(spawnPosition.getBlockX() == 0 && spawnPosition.getBlockY() == 0 && spawnPosition.getBlockZ() == 0) { sender.sendMessage(errorPrefix + "Please set spawn location first"); return; diff --git a/src/main/java/net/tylermurphy/hideAndSeek/command/SetExitLocation.java b/src/main/java/net/tylermurphy/hideAndSeek/command/SetExitLocation.java new file mode 100644 index 0000000..3f872a1 --- /dev/null +++ b/src/main/java/net/tylermurphy/hideAndSeek/command/SetExitLocation.java @@ -0,0 +1,49 @@ +package net.tylermurphy.hideAndSeek.command; + +import static net.tylermurphy.hideAndSeek.Store.*; + +import java.util.HashMap; +import java.util.Map; + +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import org.bukkit.util.Vector; + +import net.tylermurphy.hideAndSeek.util.ICommand; + +public class SetExitLocation implements ICommand { + + public void execute(CommandSender sender, String[] args) { + Vector newExitPosition = new Vector(); + Player player = (Player) sender; + newExitPosition.setX(player.getLocation().getBlockX()); + newExitPosition.setY(player.getLocation().getBlockY()); + newExitPosition.setZ(player.getLocation().getBlockZ()); + if(!status.equals("Standby")) { + sender.sendMessage(errorPrefix + "Game is currently in session"); + return; + } + exitPosition = newExitPosition; + sender.sendMessage(messagePrefix + "Set exit position to current location"); + Map<String, Object> temp = new HashMap<String,Object>(); + temp.put("x", exitPosition.getX()); + temp.put("y", exitPosition.getY()); + temp.put("z", exitPosition.getZ()); + temp.put("world", player.getLocation().getWorld().getName()); + addToSection("spawns.exit",temp); + saveConfig(); + } + + public String getLabel() { + return "setexit"; + } + + public String getUsage() { + return ""; + } + + public String getDescription() { + return "Sets hide and seeks exit location to current position and world"; + } + +} diff --git a/src/main/java/net/tylermurphy/hideAndSeek/command/SetLobbyLocation.java b/src/main/java/net/tylermurphy/hideAndSeek/command/SetLobbyLocation.java new file mode 100644 index 0000000..7cb13fc --- /dev/null +++ b/src/main/java/net/tylermurphy/hideAndSeek/command/SetLobbyLocation.java @@ -0,0 +1,49 @@ +package net.tylermurphy.hideAndSeek.command; + +import static net.tylermurphy.hideAndSeek.Store.*; + +import java.util.HashMap; +import java.util.Map; + +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import org.bukkit.util.Vector; + +import net.tylermurphy.hideAndSeek.util.ICommand; + +public class SetLobbyLocation implements ICommand { + + public void execute(CommandSender sender, String[] args) { + Vector newLobbyPosition = new Vector(); + Player player = (Player) sender; + newLobbyPosition.setX(player.getLocation().getBlockX()); + newLobbyPosition.setY(player.getLocation().getBlockY()); + newLobbyPosition.setZ(player.getLocation().getBlockZ()); + if(!status.equals("Standby")) { + sender.sendMessage(errorPrefix + "Game is currently in session"); + return; + } + lobbyPosition = newLobbyPosition; + sender.sendMessage(messagePrefix + "Set lobby position to current location"); + Map<String, Object> temp = new HashMap<String,Object>(); + temp.put("x", lobbyPosition.getX()); + temp.put("y", lobbyPosition.getY()); + temp.put("z", lobbyPosition.getZ()); + temp.put("world", player.getLocation().getWorld().getName()); + addToSection("spawns.lobby",temp); + saveConfig(); + } + + public String getLabel() { + return "setlobby"; + } + + public String getUsage() { + return ""; + } + + public String getDescription() { + return "Sets hide and seeks lobby location to current position"; + } + +} diff --git a/src/main/java/net/tylermurphy/hideAndSeek/command/SetSpawnLocation.java b/src/main/java/net/tylermurphy/hideAndSeek/command/SetSpawnLocation.java index 62d6bc9..0114e21 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/command/SetSpawnLocation.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/command/SetSpawnLocation.java @@ -34,7 +34,7 @@ public class SetSpawnLocation implements ICommand { temp.put("y", spawnPosition.getY()); temp.put("z", spawnPosition.getZ()); temp.put("world", player.getLocation().getWorld().getName()); - addToSection("spawn",temp); + addToSection("spawns.game",temp); saveConfig(); } diff --git a/src/main/java/net/tylermurphy/hideAndSeek/command/Setup.java b/src/main/java/net/tylermurphy/hideAndSeek/command/Setup.java new file mode 100644 index 0000000..f071bee --- /dev/null +++ b/src/main/java/net/tylermurphy/hideAndSeek/command/Setup.java @@ -0,0 +1,57 @@ +package net.tylermurphy.hideAndSeek.command; + +import org.bukkit.command.CommandSender; + +import net.md_5.bungee.api.ChatColor; +import net.tylermurphy.hideAndSeek.Main; +import net.tylermurphy.hideAndSeek.util.ICommand; + +import static net.tylermurphy.hideAndSeek.Store.*; + +import java.io.File; + +public class Setup implements ICommand { + + public void execute(CommandSender sender, String[] args) { + + String message = String.format("%s%sThe following is needed for setup...", ChatColor.WHITE, ChatColor.BOLD); + int count = 0; + + if(spawnPosition.getBlockX() == 0 && spawnPosition.getBlockY() == 0 && spawnPosition.getBlockZ() == 0) { + message = String.format("%s\n%s%s-%s%s", message, ChatColor.RED, ChatColor.BOLD, ChatColor.WHITE, "Game spawn isnt set, /hs setspawn"); + count++; + } + if(lobbyPosition.getBlockX() == 0 && lobbyPosition.getBlockY() == 0 && lobbyPosition.getBlockZ() == 0) { + message = String.format("%s\n%s%s-%s%s", message, ChatColor.RED, ChatColor.BOLD, ChatColor.WHITE, "Lobby spawn isnt set, /hs setlobby"); + sender.sendMessage(errorPrefix + "Please set lobby location first"); + count++; + } + if(exitPosition.getBlockX() == 0 && exitPosition.getBlockY() == 0 && exitPosition.getBlockZ() == 0) { + message = String.format("%s\n%s%s-%s%s", message, ChatColor.RED, ChatColor.BOLD, ChatColor.WHITE, "Quit/exit teleport location isnt set, /hs setexit"); + count++; + } + File destenation = new File(Main.root+File.separator+"hideandseek_"+spawnWorld); + if(!destenation.exists()) { + message = String.format("%s\n%s%s-%s%s", message, ChatColor.RED, ChatColor.BOLD, ChatColor.WHITE, "Hide and seek map isnt saved, /hs savemap (after /hs setspawn)"); + count++; + } + if(count < 1) { + sender.sendMessage(messagePrefix + "Everything is setup and ready to go!"); + } else { + sender.sendMessage(message); + } + } + + public String getLabel() { + return "setup"; + } + + public String getUsage() { + return ""; + } + + public String getDescription() { + return "Shows what needs to be setup"; + } + +}
\ No newline at end of file diff --git a/src/main/java/net/tylermurphy/hideAndSeek/command/Start.java b/src/main/java/net/tylermurphy/hideAndSeek/command/Start.java index a49ce41..cd0c956 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/command/Start.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/command/Start.java @@ -8,6 +8,7 @@ import org.bukkit.entity.Player; import org.bukkit.potion.PotionEffect; import org.bukkit.potion.PotionEffectType; +import net.md_5.bungee.api.ChatColor; import net.tylermurphy.hideAndSeek.Main; import net.tylermurphy.hideAndSeek.events.Glow; import net.tylermurphy.hideAndSeek.events.Taunt; @@ -17,36 +18,33 @@ import net.tylermurphy.hideAndSeek.util.ICommand; import static net.tylermurphy.hideAndSeek.Store.*; -import java.io.File; import java.util.ArrayList; import java.util.Random; public class Start implements ICommand { public void execute(CommandSender sender, String[] args) { - if(!status.equals("Standby")) { - sender.sendMessage(errorPrefix + "Game is already in session"); + if(!Functions.setup()) { + sender.sendMessage(errorPrefix + "Game is not setup. Run /hs setup to see what you needed to do"); return; } - if(spawnPosition.getBlockX() == 0 && spawnPosition.getBlockY() == 0 && spawnPosition.getBlockZ() == 0) { - sender.sendMessage(errorPrefix + "Please set spawn location first"); + if(!status.equals("Standby")) { + sender.sendMessage(errorPrefix + "Game is already in session"); return; } - File destenation = new File(Main.root+File.separator+"hideandseek_"+spawnWorld); - if(!destenation.exists()) { - sender.sendMessage(errorPrefix + "Please set map save first"); + if(!playerList.containsKey(sender.getName())) { + sender.sendMessage(errorPrefix + "You are not in the lobby"); return; - } else { - if(Bukkit.getServer().getWorld("hideandseek_"+spawnWorld) != null) { - Functions.rollback("hideandseek_"+spawnWorld); - } else { - Functions.loadMap("hideandseek_"+spawnWorld); - } } if(playerList.size() < minPlayers) { sender.sendMessage(errorPrefix + "You must have at least "+minPlayers+" players to start"); return; } + if(Bukkit.getServer().getWorld("hideandseek_"+spawnWorld) != null) { + Functions.rollback("hideandseek_"+spawnWorld); + } else { + Functions.loadMap("hideandseek_"+spawnWorld); + } String seekerName; if(args.length < 1) { seekerName = playerList.values().stream().skip(new Random().nextInt(playerList.values().size())).findFirst().get().getName(); @@ -61,6 +59,7 @@ public class Start implements ICommand { Hider = new ArrayList<String>(); Seeker = new ArrayList<String>(); Spectator = new ArrayList<String>(); + Deaths = new ArrayList<String>(); for(Player temp : playerList.values()) { if(temp.getName().equals(seeker.getName())) continue; @@ -69,7 +68,7 @@ public class Start implements ICommand { } Seeker.add(seeker.getName()); SeekerTeam.addEntry(seeker.getName()); - + currentWorldborderSize = worldborderSize; for(Player player : playerList.values()) { player.getInventory().clear(); player.setGameMode(GameMode.ADVENTURE); @@ -83,65 +82,67 @@ public class Start implements ICommand { if(player != null) { player.addPotionEffect(new PotionEffect(PotionEffectType.BLINDNESS,1000000,127,false,false)); player.addPotionEffect(new PotionEffect(PotionEffectType.SLOW,1000000,127,false,false)); + player.sendTitle(ChatColor.RED + "" + ChatColor.BOLD + "SEEKER", ChatColor.WHITE + "Eliminate all hiders", 10, 70, 20); } } for(String playerName : Hider) { Player player = playerList.get(playerName); if(player != null) { player.addPotionEffect(new PotionEffect(PotionEffectType.SPEED,1000000,5,false,false)); + player.sendTitle(ChatColor.GOLD + "" + ChatColor.BOLD + "HIDER", ChatColor.WHITE + "Hide away from the seekers", 10, 70, 20); } } Functions.resetWorldborder("hideandseek_"+spawnWorld); status = "Starting"; int temp = gameId; - Bukkit.getServer().broadcastMessage(messagePrefix + "Hiders have 30 seconds to hide!"); + Functions.broadcastMessage(messagePrefix + "Hiders have 30 seconds to hide!"); Bukkit.getServer().getScheduler().runTaskLater(Main.plugin, new Runnable() { public void run() { if(temp != gameId) return; - Bukkit.getServer().broadcastMessage(messagePrefix + "Hiders have 20 seconds to hide!"); + Functions.broadcastMessage(messagePrefix + "Hiders have 20 seconds to hide!"); } }, 20 * 10); Bukkit.getServer().getScheduler().runTaskLater(Main.plugin, new Runnable() { public void run() { if(temp != gameId) return; - Bukkit.getServer().broadcastMessage(messagePrefix + "Hiders have 10 seconds to hide!"); + Functions.broadcastMessage(messagePrefix + "Hiders have 10 seconds to hide!"); } }, 20 * 20); Bukkit.getServer().getScheduler().runTaskLater(Main.plugin, new Runnable() { public void run() { if(temp != gameId) return; - Bukkit.getServer().broadcastMessage(messagePrefix + "Hiders have 5 seconds to hide!"); + Functions.broadcastMessage(messagePrefix + "Hiders have 5 seconds to hide!"); } }, 20 * 25); Bukkit.getServer().getScheduler().runTaskLater(Main.plugin, new Runnable() { public void run() { if(temp != gameId) return; - Bukkit.getServer().broadcastMessage(messagePrefix + "Hiders have 3 seconds to hide!"); + Functions.broadcastMessage(messagePrefix + "Hiders have 3 seconds to hide!"); } }, 20 * 27); Bukkit.getServer().getScheduler().runTaskLater(Main.plugin, new Runnable() { public void run() { if(temp != gameId) return; - Bukkit.getServer().broadcastMessage(messagePrefix + "Hiders have 2 seconds to hide!"); + Functions.broadcastMessage(messagePrefix + "Hiders have 2 seconds to hide!"); } }, 20 * 28); Bukkit.getServer().getScheduler().runTaskLater(Main.plugin, new Runnable() { public void run() { if(temp != gameId) return; - Bukkit.getServer().broadcastMessage(messagePrefix + "Hiders have 1 seconds to hide!"); + Functions.broadcastMessage(messagePrefix + "Hiders have 1 seconds to hide!"); } }, 20 * 29); Bukkit.getServer().getScheduler().runTaskLater(Main.plugin, new Runnable() { public void run() { if(temp != gameId) return; - Bukkit.getServer().broadcastMessage(messagePrefix + "Attetion SEEKERS, its time to find the hiders!"); + Functions.broadcastMessage(messagePrefix + "Attetion SEEKERS, its time to find the hiders!"); status = "Playing"; for(Player player : playerList.values()) { Functions.resetPlayer(player); @@ -159,6 +160,13 @@ public class Start implements ICommand { Main.taunt.schedule(); Main.glow = new Glow(gameId); + + if(gameLength > 0) { + timeLeft = gameLength; + for(Player player : playerList.values()) { + player.setLevel(timeLeft); + } + } } }, 20 * 30); diff --git a/src/main/java/net/tylermurphy/hideAndSeek/command/Stop.java b/src/main/java/net/tylermurphy/hideAndSeek/command/Stop.java index c956d3d..9c1e3d7 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/command/Stop.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/command/Stop.java @@ -17,8 +17,13 @@ import net.tylermurphy.hideAndSeek.util.Packet; public class Stop implements ICommand { public void execute(CommandSender sender, String[] args) { + if(!Functions.setup()) { + sender.sendMessage(errorPrefix + "Game is not setup. Run /hs setup to see what you needed to do"); + return; + } if(status.equals("Starting") || status.equals("Playing")) { - Bukkit.broadcastMessage(abortPrefix + "Game has been force stopped."); + if(announceMessagesToNonPlayers) Bukkit.broadcastMessage(abortPrefix + "Game has been force stopped."); + else Functions.broadcastMessage(abortPrefix + "Game has been force stopped."); onStop(); } else { @@ -38,10 +43,11 @@ public class Stop implements ICommand { Functions.resetWorldborder("hideandseek_"+spawnWorld); for(Player player : playerList.values()) { player.setGameMode(GameMode.ADVENTURE); + player.setLevel(0); Hider.add(player.getName()); HiderTeam.addEntry(player.getName()); player.getInventory().clear(); - player.teleport(new Location(Bukkit.getWorld(spawnWorld), spawnPosition.getX(),spawnPosition.getY(),spawnPosition.getZ())); + player.teleport(new Location(Bukkit.getWorld(lobbyWorld), lobbyPosition.getX(),lobbyPosition.getY(),lobbyPosition.getZ())); for(PotionEffect effect : player.getActivePotionEffects()){ player.removePotionEffect(effect.getType()); } @@ -50,6 +56,7 @@ public class Stop implements ICommand { Packet.setGlow(player, temp, false); } } + Functions.unloadMap("hideandseek_"+spawnWorld); } public String getUsage() { |