summaryrefslogtreewikicommitdiff
path: root/src/main/java/net/tylermurphy/hideAndSeek/command/Start.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/net/tylermurphy/hideAndSeek/command/Start.java')
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/command/Start.java179
1 files changed, 179 insertions, 0 deletions
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/command/Start.java b/src/main/java/net/tylermurphy/hideAndSeek/command/Start.java
new file mode 100644
index 0000000..a49ce41
--- /dev/null
+++ b/src/main/java/net/tylermurphy/hideAndSeek/command/Start.java
@@ -0,0 +1,179 @@
+package net.tylermurphy.hideAndSeek.command;
+
+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.Main;
+import net.tylermurphy.hideAndSeek.events.Glow;
+import net.tylermurphy.hideAndSeek.events.Taunt;
+import net.tylermurphy.hideAndSeek.events.Worldborder;
+import net.tylermurphy.hideAndSeek.util.Functions;
+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");
+ return;
+ }
+ if(spawnPosition.getBlockX() == 0 && spawnPosition.getBlockY() == 0 && spawnPosition.getBlockZ() == 0) {
+ sender.sendMessage(errorPrefix + "Please set spawn location first");
+ return;
+ }
+ File destenation = new File(Main.root+File.separator+"hideandseek_"+spawnWorld);
+ if(!destenation.exists()) {
+ sender.sendMessage(errorPrefix + "Please set map save first");
+ 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;
+ }
+ String seekerName;
+ if(args.length < 1) {
+ seekerName = playerList.values().stream().skip(new Random().nextInt(playerList.values().size())).findFirst().get().getName();
+ } else {
+ seekerName = args[0];
+ }
+ Player seeker = playerList.get(seekerName);
+ if(seeker == null) {
+ sender.sendMessage(errorPrefix + "Invalid player: " + seekerName);
+ return;
+ }
+ Hider = new ArrayList<String>();
+ Seeker = new ArrayList<String>();
+ Spectator = new ArrayList<String>();
+ for(Player temp : playerList.values()) {
+ if(temp.getName().equals(seeker.getName()))
+ continue;
+ Hider.add(temp.getName());
+ HiderTeam.addEntry(temp.getName());
+ }
+ Seeker.add(seeker.getName());
+ SeekerTeam.addEntry(seeker.getName());
+
+ for(Player player : playerList.values()) {
+ player.getInventory().clear();
+ player.setGameMode(GameMode.ADVENTURE);
+ player.teleport(new Location(Bukkit.getWorld("hideandseek_"+spawnWorld), spawnPosition.getX(),spawnPosition.getY(),spawnPosition.getZ()));
+ for(PotionEffect effect : player.getActivePotionEffects()){
+ player.removePotionEffect(effect.getType());
+ }
+ }
+ for(String playerName : Seeker) {
+ 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) {
+ Player player = playerList.get(playerName);
+ if(player != null) {
+ player.addPotionEffect(new PotionEffect(PotionEffectType.SPEED,1000000,5,false,false));
+ }
+ }
+ Functions.resetWorldborder("hideandseek_"+spawnWorld);
+ status = "Starting";
+ int temp = gameId;
+ Bukkit.getServer().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!");
+ }
+ }, 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!");
+ }
+ }, 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!");
+ }
+ }, 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!");
+ }
+ }, 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!");
+ }
+ }, 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!");
+ }
+ }, 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!");
+ status = "Playing";
+ for(Player player : playerList.values()) {
+ Functions.resetPlayer(player);
+ }
+ Main.worldborder = null;
+ Main.taunt = null;
+ Main.glow = null;
+
+ if(worldborderEnabled) {
+ Main.worldborder = new Worldborder(gameId);
+ Main.worldborder.schedule();
+ }
+
+ Main.taunt = new Taunt(gameId);
+ Main.taunt.schedule();
+
+ Main.glow = new Glow(gameId);
+ }
+ }, 20 * 30);
+
+ }
+
+ public String getLabel() {
+ return "start";
+ }
+
+ public String getUsage() {
+ return "<player>";
+ }
+
+ public String getDescription() {
+ return "Starts the game either with a random seeker or chosen one";
+ }
+
+}