diff options
Diffstat (limited to 'src/main/java/net/tylermurphy/hideAndSeek/commands')
8 files changed, 437 insertions, 0 deletions
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/commands/About.java b/src/main/java/net/tylermurphy/hideAndSeek/commands/About.java new file mode 100644 index 0000000..91cc430 --- /dev/null +++ b/src/main/java/net/tylermurphy/hideAndSeek/commands/About.java @@ -0,0 +1,30 @@ +package net.tylermurphy.hideAndSeek.commands; + +import org.bukkit.ChatColor; +import org.bukkit.command.CommandSender; + +import net.tylermurphy.hideAndSeek.ICommand; + +public class About implements ICommand { + + public void execute(CommandSender sender, String[] args) { + sender.sendMessage( + String.format("%s%sHide and Seek %s(1.0.0%s)\n", ChatColor.AQUA, ChatColor.BOLD, ChatColor.GRAY,ChatColor.WHITE,ChatColor.GRAY) + + String.format("%sAuthor: %s[KenshinEto]\n", ChatColor.GRAY, ChatColor.WHITE) + + String.format("%sHelp Command: %s/hs %shelp", ChatColor.GRAY, ChatColor.AQUA, ChatColor.WHITE) + ); + } + + public String getLabel() { + return "about"; + } + + public String getUsage() { + return ""; + } + + public String getDescription() { + return "Get information about the plugin"; + } + +} diff --git a/src/main/java/net/tylermurphy/hideAndSeek/commands/EnableBorder.java b/src/main/java/net/tylermurphy/hideAndSeek/commands/EnableBorder.java new file mode 100644 index 0000000..4aa44ad --- /dev/null +++ b/src/main/java/net/tylermurphy/hideAndSeek/commands/EnableBorder.java @@ -0,0 +1,45 @@ +package net.tylermurphy.hideAndSeek.commands; + +import org.bukkit.command.CommandSender; + +import net.tylermurphy.hideAndSeek.ICommand; +import net.tylermurphy.hideAndSeek.manager.WorldborderManager; + +import static net.tylermurphy.hideAndSeek.Store.*; + +public class EnableBorder implements ICommand { + + public void execute(CommandSender sender, String[] args) { + if(worldborderPosition == null) { + sender.sendMessage(errorPrefix + "Please setup worldborder info before enabling"); + return; + } + boolean bool; + try { bool = Boolean.parseBoolean(args[0]); } catch (Exception e) { + sender.sendMessage(errorPrefix + "Please enter true or false"); + return; + } + if(spawnPosition != null && worldborderPosition != null && spawnPosition.distance(worldborderPosition) > 100) { + sender.sendMessage(errorPrefix + "Cannot enable worldborder, spawn position is outside 100 blocks from worldborder"); + return; + } + sender.sendMessage(messagePrefix + "Set worldborder to "+args[0]); + getConfig().set("borderEnabled", bool); + worldborderEnabled = bool; + saveConfig(); + WorldborderManager.reset(); + } + + public String getLabel() { + return "enableBorder"; + } + + public String getUsage() { + return "<true/false>"; + } + + public String getDescription() { + return "Enables or disables worldborder"; + } + +} diff --git a/src/main/java/net/tylermurphy/hideAndSeek/commands/Help.java b/src/main/java/net/tylermurphy/hideAndSeek/commands/Help.java new file mode 100644 index 0000000..1839e41 --- /dev/null +++ b/src/main/java/net/tylermurphy/hideAndSeek/commands/Help.java @@ -0,0 +1,32 @@ +package net.tylermurphy.hideAndSeek.commands; + +import org.bukkit.command.CommandSender; + +import net.md_5.bungee.api.ChatColor; +import net.tylermurphy.hideAndSeek.ICommand; +import net.tylermurphy.hideAndSeek.manager.CommandManager; + +public class Help implements ICommand { + + public void execute(CommandSender sender, String[] args) { + String message = ""; + for(ICommand command : CommandManager.COMMAND_REGISTER.values()) { + message += String.format("%s/hs %s%s %s%s\n %s%s%s", ChatColor.AQUA, ChatColor.WHITE, command.getLabel().toLowerCase(), ChatColor.BLUE, command.getUsage(), ChatColor.GRAY, ChatColor.ITALIC, command.getDescription()+"\n"); + } + message = message.substring(0, message.length()-2); + sender.sendMessage(message); + } + + public String getLabel() { + return "help"; + } + + public String getUsage() { + return ""; + } + + public String getDescription() { + return "Get the commands for the plugin"; + } + +} diff --git a/src/main/java/net/tylermurphy/hideAndSeek/commands/SetBorder.java b/src/main/java/net/tylermurphy/hideAndSeek/commands/SetBorder.java new file mode 100644 index 0000000..07e69bb --- /dev/null +++ b/src/main/java/net/tylermurphy/hideAndSeek/commands/SetBorder.java @@ -0,0 +1,68 @@ +package net.tylermurphy.hideAndSeek.commands; + +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import org.bukkit.util.Vector; + +import net.tylermurphy.hideAndSeek.ICommand; +import net.tylermurphy.hideAndSeek.manager.WorldborderManager; + +import static net.tylermurphy.hideAndSeek.Store.*; + +public class SetBorder implements ICommand { + + public void execute(CommandSender sender, String[] args) { + if(spawnPosition == null) { + sender.sendMessage(errorPrefix + "Please set spawn position first"); + return; + } + if(args.length < 2) { + sender.sendMessage(errorPrefix + "Please enter worldborder size and delay"); + return; + } + int num,delay; + try { num = Integer.parseInt(args[0]); } catch (Exception e) { + sender.sendMessage(errorPrefix + "Invalid integer: "+args[0]); + return; + } + try { delay = Integer.parseInt(args[1]); } catch (Exception e) { + sender.sendMessage(errorPrefix + "Invalid integer: "+args[1]); + return; + } + if(num < 100) { + sender.sendMessage(errorPrefix + "Worldborder cannot be smaller than 100 blocks."); + return; + } + Vector newWorldborderPosition = new Vector(); + Player player = (Player) sender; + newWorldborderPosition.setX(player.getLocation().getBlockX()); + newWorldborderPosition.setY(0); + newWorldborderPosition.setZ(player.getLocation().getBlockZ()); + if(spawnPosition.distance(newWorldborderPosition) > 100) { + sender.sendMessage(errorPrefix + "Spawn position must be 100 from worldborder center"); + return; + } + worldborderPosition = newWorldborderPosition; + worldborderSize = num; + worldborderDelay = delay; + sender.sendMessage(messagePrefix + "Set border center to current location, size to "+num+", and delay to "+delay); + getConfig().set("borderPosition", newWorldborderPosition); + getConfig().set("borderSize", num); + getConfig().set("borderDelay", delay); + saveConfig(); + WorldborderManager.reset(); + } + + public String getLabel() { + return "setBorder"; + } + + public String getUsage() { + return "<size> <delay>"; + } + + public String getDescription() { + return "Sets worldboarder's center location, size in blocks, and delay in minutes"; + } + +} diff --git a/src/main/java/net/tylermurphy/hideAndSeek/commands/SetSeeker.java b/src/main/java/net/tylermurphy/hideAndSeek/commands/SetSeeker.java new file mode 100644 index 0000000..948b899 --- /dev/null +++ b/src/main/java/net/tylermurphy/hideAndSeek/commands/SetSeeker.java @@ -0,0 +1,43 @@ +package net.tylermurphy.hideAndSeek.commands; + +import static net.tylermurphy.hideAndSeek.Store.*; + +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +import net.tylermurphy.hideAndSeek.ICommand; + +public class SetSeeker implements ICommand { + + public void execute(CommandSender sender, String[] args) { + String playerName; + if(args.length < 1) { + playerName = sender.getName(); + } else { + playerName = args[0]; + } + Player player = playerList.get(playerName); + if(player == null) { + sender.sendMessage(errorPrefix + "Invalid player: " + playerName); + return; + } + for(Player temp : playerList.values()) { + Hider.addEntry(temp.getName()); + } + Seeker.addEntry(player.getName()); + sender.sendMessage(String.format("%s Set %s as the seaker.", messagePrefix, args[0])); + } + + public String getLabel() { + return "setSeeker"; + } + + public String getUsage() { + return "<player>"; + } + + public String getDescription() { + return "Sets the current or select player as the seeker"; + } + +} diff --git a/src/main/java/net/tylermurphy/hideAndSeek/commands/SetSpawnLocation.java b/src/main/java/net/tylermurphy/hideAndSeek/commands/SetSpawnLocation.java new file mode 100644 index 0000000..821d469 --- /dev/null +++ b/src/main/java/net/tylermurphy/hideAndSeek/commands/SetSpawnLocation.java @@ -0,0 +1,45 @@ +package net.tylermurphy.hideAndSeek.commands; + +import org.bukkit.Bukkit; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import org.bukkit.util.Vector; + +import net.tylermurphy.hideAndSeek.ICommand; + +import static net.tylermurphy.hideAndSeek.Store.*; + +public class SetSpawnLocation implements ICommand { + + public void execute(CommandSender sender, String[] args) { + Vector newSpawnPosition = new Vector(); + Player player = (Player) sender; + newSpawnPosition.setX(player.getLocation().getBlockX()); + newSpawnPosition.setY(player.getLocation().getBlockY()); + newSpawnPosition.setZ(player.getLocation().getBlockZ()); + if(worldborderEnabled && spawnPosition.distance(worldborderPosition) > 100) { + sender.sendMessage(errorPrefix + "Spawn position must be 100 from worldborder center"); + return; + } + spawnPosition = newSpawnPosition; + status = "Standby"; + sender.sendMessage(messagePrefix + "Set spawn position to current location"); + getConfig().set("spawnPosition", newSpawnPosition); + saveConfig(); + Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), String.format("setworldspawn %s %s %s", player.getLocation().getBlockX(), player.getLocation().getBlockY(), player.getLocation().getBlockZ())); + Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), String.format("spawnpoint @a %s %s %s", player.getLocation().getBlockX(), player.getLocation().getBlockY(), player.getLocation().getBlockZ())); + } + + public String getLabel() { + return "setspawn"; + } + + public String getUsage() { + return ""; + } + + public String getDescription() { + return "Sets hide and seeks spawn location to current position"; + } + +} diff --git a/src/main/java/net/tylermurphy/hideAndSeek/commands/Start.java b/src/main/java/net/tylermurphy/hideAndSeek/commands/Start.java new file mode 100644 index 0000000..8dc0f5f --- /dev/null +++ b/src/main/java/net/tylermurphy/hideAndSeek/commands/Start.java @@ -0,0 +1,111 @@ +package net.tylermurphy.hideAndSeek.commands; + +import org.bukkit.Bukkit; + +import org.bukkit.GameMode; +import org.bukkit.Location; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; + +import net.tylermurphy.hideAndSeek.ICommand; +import net.tylermurphy.hideAndSeek.Main; +import net.tylermurphy.hideAndSeek.manager.TauntManager; +import net.tylermurphy.hideAndSeek.manager.WorldborderManager; + +import static net.tylermurphy.hideAndSeek.Store.*; + +import java.util.HashMap; + +public class Start implements ICommand { + + public void execute(CommandSender sender, String[] args) { + if(status.equals("Setup")) { + sender.sendMessage(errorPrefix + "Please set spawn location first"); + return; + } + if(!status.equals("Standby")) { + sender.sendMessage(errorPrefix + "Game is already in session"); + return; + } + if(Hider.getSize() < 1) { + sender.sendMessage(errorPrefix + "No Hiders were found"); + return; + } + if(Seeker.getSize() < 1) { + sender.sendMessage(errorPrefix + "No Seekers were found"); + return; + } + playerData = new HashMap<String,HashMap<String,Integer>>(); + for(Player player : playerList.values()) { + resetPlayerData(player.getName(),true); + player.getInventory().clear(); + player.setGameMode(GameMode.ADVENTURE); + player.teleport(new Location(player.getWorld(), spawnPosition.getX(),spawnPosition.getY(),spawnPosition.getZ())); + for(PotionEffect effect : player.getActivePotionEffects()){ + player.removePotionEffect(effect.getType()); + } + } + for(String playerName : Seeker.getEntries()) { + Player player = playerList.get(playerName); + if(player != null) { + player.addPotionEffect(new PotionEffect(PotionEffectType.BLINDNESS,1000000,127,false,false)); + player.addPotionEffect(new PotionEffect(PotionEffectType.SLOW,1000000,127,false,false)); + } + } + for(String playerName : Hider.getEntries()) { + Player player = playerList.get(playerName); + if(player != null) { + player.addPotionEffect(new PotionEffect(PotionEffectType.SPEED,1000000,5,false,false)); + } + } + WorldborderManager.reset(); + status = "Starting"; + startTaskId = Bukkit.getServer().getScheduler().runTaskAsynchronously(Main.plugin, new Runnable(){ + public void run() { + int temp = gameId; + Bukkit.getServer().broadcastMessage(messagePrefix + "Hiders have 30 seconds to hide!"); + try { Thread.sleep(10*1000); } catch (InterruptedException e) {} + if(temp != gameId) return; + Bukkit.getServer().broadcastMessage(messagePrefix + "Hiders have 20 seconds to hide!"); + try { Thread.sleep(10*1000); } catch (InterruptedException e) {} + if(temp != gameId) return; + Bukkit.getServer().broadcastMessage(messagePrefix + "Hiders have 10 seconds to hide!"); + try { Thread.sleep(5*1000); } catch (InterruptedException e) {} + if(temp != gameId) return; + Bukkit.getServer().broadcastMessage(messagePrefix + "Hiders have 5 seconds to hide!"); + try { Thread.sleep(2*1000); } catch (InterruptedException e) {} + if(temp != gameId) return; + Bukkit.getServer().broadcastMessage(messagePrefix + "Hiders have 3 seconds to hide!"); + try { Thread.sleep(1*1000); } catch (InterruptedException e) {} + if(temp != gameId) return; + Bukkit.getServer().broadcastMessage(messagePrefix + "Hiders have 2 seconds to hide!"); + try { Thread.sleep(1*1000); } catch (InterruptedException e) {} + if(temp != gameId) return; + Bukkit.getServer().broadcastMessage(messagePrefix + "Hiders have 1 seconds to hide!"); + try { Thread.sleep(1*1000); } catch (InterruptedException e) {} + if(temp != gameId) return; + Bukkit.getServer().broadcastMessage(messagePrefix + "Attetion SEEKERS, its time to find the hiders!"); + status = "Playing"; + } + }).getTaskId(); + if(worldborderEnabled) { + WorldborderManager.schedule(); + } + TauntManager.schedule(); + } + + public String getLabel() { + return "start"; + } + + public String getUsage() { + return ""; + } + + public String getDescription() { + return "Starts the game"; + } + +} diff --git a/src/main/java/net/tylermurphy/hideAndSeek/commands/Stop.java b/src/main/java/net/tylermurphy/hideAndSeek/commands/Stop.java new file mode 100644 index 0000000..a1758c7 --- /dev/null +++ b/src/main/java/net/tylermurphy/hideAndSeek/commands/Stop.java @@ -0,0 +1,63 @@ +package net.tylermurphy.hideAndSeek.commands; + +import static net.tylermurphy.hideAndSeek.Store.*; + +import org.bukkit.Bukkit; +import org.bukkit.GameMode; +import org.bukkit.Location; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; + +import net.tylermurphy.hideAndSeek.ICommand; +import net.tylermurphy.hideAndSeek.manager.WorldborderManager; + +public class Stop implements ICommand { + + public void execute(CommandSender sender, String[] args) { + if(status.equals("Starting") || status.equals("Playing")) { + onStop(true); + + } else { + sender.sendMessage(errorPrefix + "There is no game in progress"); + return; + } + } + + public String getLabel() { + return "stop"; + } + + public static void onStop(boolean forced) { + if(status.equals("Standby")) return; + if(forced) { + Bukkit.broadcastMessage(messagePrefix + "Game has been force stopped."); + } else { + Bukkit.broadcastMessage(messagePrefix + "Game over! All hiders have been found."); + } + status = "Standby"; + Bukkit.getServer().getScheduler().cancelTask(startTaskId); + for(Player player : playerList.values()) { + player.setGameMode(GameMode.ADVENTURE); + Hider.addEntry(player.getName()); + player.getInventory().clear(); + player.teleport(new Location(player.getWorld(), spawnPosition.getX(),spawnPosition.getY(),spawnPosition.getZ())); + for(PotionEffect effect : player.getActivePotionEffects()){ + player.removePotionEffect(effect.getType()); + } + player.addPotionEffect(new PotionEffect(PotionEffectType.HEAL, 1, 100)); + } + WorldborderManager.reset(); + gameId++; + } + + public String getUsage() { + return ""; + } + + public String getDescription() { + return "Stops the game"; + } + +} |