summaryrefslogtreewikicommitdiff
path: root/src/main/java/net/tylermurphy/hideAndSeek/commands
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/net/tylermurphy/hideAndSeek/commands')
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/commands/About.java30
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/commands/EnableBorder.java45
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/commands/Help.java32
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/commands/SetBorder.java68
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/commands/SetSeeker.java43
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/commands/SetSpawnLocation.java45
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/commands/Start.java111
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/commands/Stop.java63
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";
+ }
+
+}