diff options
author | Tyler Murphy <tylermurphy534@gmail.com> | 2021-08-27 17:20:07 -0400 |
---|---|---|
committer | Tyler Murphy <tylermurphy534@gmail.com> | 2021-08-27 17:20:07 -0400 |
commit | 0154a34f1dc240652908810314167a44638c847e (patch) | |
tree | 4f4e4a7dac2581ee8b32644cb30c3f852a1b8e8d /src/main/java/net/tylermurphy/hideAndSeek/commands/Start.java | |
parent | 1.3.0 beta 2, bug fixes, added more block settings, added more config options (diff) | |
download | kenshinshideandseek-0154a34f1dc240652908810314167a44638c847e.tar.gz kenshinshideandseek-0154a34f1dc240652908810314167a44638c847e.tar.bz2 kenshinshideandseek-0154a34f1dc240652908810314167a44638c847e.zip |
add world rollback and other stuff
Diffstat (limited to 'src/main/java/net/tylermurphy/hideAndSeek/commands/Start.java')
-rw-r--r-- | src/main/java/net/tylermurphy/hideAndSeek/commands/Start.java | 87 |
1 files changed, 79 insertions, 8 deletions
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/commands/Start.java b/src/main/java/net/tylermurphy/hideAndSeek/commands/Start.java index 063ba35..a8eec85 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/commands/Start.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/commands/Start.java @@ -1,7 +1,7 @@ package net.tylermurphy.hideAndSeek.commands; import org.bukkit.Bukkit; - +import org.bukkit.ChatColor; import org.bukkit.GameMode; import org.bukkit.Location; import org.bukkit.command.CommandSender; @@ -15,24 +15,35 @@ import net.tylermurphy.hideAndSeek.util.ICommand; import static net.tylermurphy.hideAndSeek.Store.*; +import java.io.File; import java.util.Random; public class Start implements ICommand { public void execute(CommandSender sender, String[] args) { - if(status.equals("Setup")) { + 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; } - if(!status.equals("Standby")) { - sender.sendMessage(errorPrefix + "Game is already in session"); + 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(); @@ -52,7 +63,7 @@ public class Start implements ICommand { for(Player player : playerList.values()) { player.getInventory().clear(); player.setGameMode(GameMode.ADVENTURE); - player.teleport(new Location(Bukkit.getWorld(spawnWorld), spawnPosition.getX(),spawnPosition.getY(),spawnPosition.getZ())); + player.teleport(new Location(Bukkit.getWorld("hideandseek_"+spawnWorld), spawnPosition.getX(),spawnPosition.getY(),spawnPosition.getZ())); for(PotionEffect effect : player.getActivePotionEffects()){ player.removePotionEffect(effect.getType()); } @@ -130,9 +141,69 @@ public class Start implements ICommand { }, 20 * 30); if(worldborderEnabled) { - Functions.scheduleWorldborder(); + scheduleWorldborder(); } - Functions.scheduleTaunt(); + scheduleTaunt(); + + } + + private static void scheduleTaunt() { + Bukkit.getServer().getScheduler().runTaskAsynchronously(Main.plugin, new Runnable(){ + + public void run() { + int temp = gameId; + while(true) { + if(tauntPlayer != null && !tauntPlayer.equals("")) { + try { Thread.sleep(1000); } catch (InterruptedException e) {} + if(gameId != temp) break; + continue; + } + try { Thread.sleep(1000*60); } catch (InterruptedException e) {} + if(gameId != temp) break; + if(Math.random() > .8) { + Player taunted = null; + int rand = (int) (Math.random()*Hider.getEntries().size()); + for(Player player : playerList.values()) { + if(Hider.hasEntry(player.getName())) { + rand--; + if(rand==0) { + taunted = player; + break; + } + } + } + if(taunted != null) { + taunted.sendMessage(ChatColor.RED + "" + ChatColor.ITALIC + "Oh no! You have been chosed to be taunted."); + Bukkit.getServer().broadcastMessage(tauntPrefix + " A random hider will be taunted in the next 30s"); + try { Thread.sleep(1000*30); } catch (InterruptedException e) {} + if(gameId != temp) break; + tauntPlayer = taunted.getName(); + } + } + } + } + }); + } + + private static void scheduleWorldborder() { + + Bukkit.getServer().getScheduler().runTaskAsynchronously(Main.plugin, new Runnable(){ + + public void run() { + int temp = gameId; + while(true) { + try { Thread.sleep(1000*60*worldborderDelay); } catch (InterruptedException e) {} + if(gameId != temp) break; + if(currentWorldborderSize-100 > 100) { + Bukkit.getServer().broadcastMessage(worldborderPrefix + "Worldborder decreacing by 100 blocks over the next 30s"); + currentWorldborderSize -= 100; + decreaseBorder = true; + } else { + break; + } + } + } + }); } public String getLabel() { |