From f1379a94754b68cc3904d2b96b5815854d5565c1 Mon Sep 17 00:00:00 2001 From: Tyler Murphy Date: Tue, 31 Aug 2021 21:55:27 -0400 Subject: 1.3.0 beta 5 --- .../tylermurphy/hideAndSeek/CommandHandler.java | 67 ----- .../hideAndSeek/CommandTabCompleter.java | 40 --- .../java/net/tylermurphy/hideAndSeek/Main.java | 26 +- .../java/net/tylermurphy/hideAndSeek/Store.java | 17 +- .../hideAndSeek/bukkit/CommandHandler.java | 67 +++++ .../hideAndSeek/bukkit/EventListener.java | 274 +++++++++++++++++++++ .../hideAndSeek/bukkit/TabCompleter.java | 40 +++ .../net/tylermurphy/hideAndSeek/bukkit/Tick.java | 81 ++++++ .../net/tylermurphy/hideAndSeek/command/About.java | 30 +++ .../net/tylermurphy/hideAndSeek/command/Help.java | 32 +++ .../tylermurphy/hideAndSeek/command/Reload.java | 33 +++ .../tylermurphy/hideAndSeek/command/SaveMap.java | 106 ++++++++ .../tylermurphy/hideAndSeek/command/SetBorder.java | 86 +++++++ .../hideAndSeek/command/SetSpawnLocation.java | 53 ++++ .../net/tylermurphy/hideAndSeek/command/Start.java | 179 ++++++++++++++ .../net/tylermurphy/hideAndSeek/command/Stop.java | 63 +++++ .../tylermurphy/hideAndSeek/commands/About.java | 30 --- .../net/tylermurphy/hideAndSeek/commands/Help.java | 32 --- .../tylermurphy/hideAndSeek/commands/Reload.java | 29 --- .../tylermurphy/hideAndSeek/commands/SaveMap.java | 106 -------- .../hideAndSeek/commands/SetBorder.java | 86 ------- .../hideAndSeek/commands/SetSpawnLocation.java | 53 ---- .../tylermurphy/hideAndSeek/commands/Start.java | 221 ----------------- .../net/tylermurphy/hideAndSeek/commands/Stop.java | 62 ----- .../hideAndSeek/events/EventListener.java | 260 ------------------- .../tylermurphy/hideAndSeek/events/EventTick.java | 169 ------------- .../net/tylermurphy/hideAndSeek/events/Glow.java | 69 ++++++ .../net/tylermurphy/hideAndSeek/events/Taunt.java | 100 ++++++++ .../hideAndSeek/events/Worldborder.java | 43 ++++ .../tylermurphy/hideAndSeek/util/Functions.java | 49 +++- 30 files changed, 1330 insertions(+), 1173 deletions(-) delete mode 100644 src/main/java/net/tylermurphy/hideAndSeek/CommandHandler.java delete mode 100644 src/main/java/net/tylermurphy/hideAndSeek/CommandTabCompleter.java create mode 100644 src/main/java/net/tylermurphy/hideAndSeek/bukkit/CommandHandler.java create mode 100644 src/main/java/net/tylermurphy/hideAndSeek/bukkit/EventListener.java create mode 100644 src/main/java/net/tylermurphy/hideAndSeek/bukkit/TabCompleter.java create mode 100644 src/main/java/net/tylermurphy/hideAndSeek/bukkit/Tick.java create mode 100644 src/main/java/net/tylermurphy/hideAndSeek/command/About.java create mode 100644 src/main/java/net/tylermurphy/hideAndSeek/command/Help.java create mode 100644 src/main/java/net/tylermurphy/hideAndSeek/command/Reload.java create mode 100644 src/main/java/net/tylermurphy/hideAndSeek/command/SaveMap.java create mode 100644 src/main/java/net/tylermurphy/hideAndSeek/command/SetBorder.java create mode 100644 src/main/java/net/tylermurphy/hideAndSeek/command/SetSpawnLocation.java create mode 100644 src/main/java/net/tylermurphy/hideAndSeek/command/Start.java create mode 100644 src/main/java/net/tylermurphy/hideAndSeek/command/Stop.java delete mode 100644 src/main/java/net/tylermurphy/hideAndSeek/commands/About.java delete mode 100644 src/main/java/net/tylermurphy/hideAndSeek/commands/Help.java delete mode 100644 src/main/java/net/tylermurphy/hideAndSeek/commands/Reload.java delete mode 100644 src/main/java/net/tylermurphy/hideAndSeek/commands/SaveMap.java delete mode 100644 src/main/java/net/tylermurphy/hideAndSeek/commands/SetBorder.java delete mode 100644 src/main/java/net/tylermurphy/hideAndSeek/commands/SetSpawnLocation.java delete mode 100644 src/main/java/net/tylermurphy/hideAndSeek/commands/Start.java delete mode 100644 src/main/java/net/tylermurphy/hideAndSeek/commands/Stop.java delete mode 100644 src/main/java/net/tylermurphy/hideAndSeek/events/EventListener.java delete mode 100644 src/main/java/net/tylermurphy/hideAndSeek/events/EventTick.java create mode 100644 src/main/java/net/tylermurphy/hideAndSeek/events/Glow.java create mode 100644 src/main/java/net/tylermurphy/hideAndSeek/events/Taunt.java create mode 100644 src/main/java/net/tylermurphy/hideAndSeek/events/Worldborder.java (limited to 'src/main') diff --git a/src/main/java/net/tylermurphy/hideAndSeek/CommandHandler.java b/src/main/java/net/tylermurphy/hideAndSeek/CommandHandler.java deleted file mode 100644 index ade208d..0000000 --- a/src/main/java/net/tylermurphy/hideAndSeek/CommandHandler.java +++ /dev/null @@ -1,67 +0,0 @@ -package net.tylermurphy.hideAndSeek; - -import static net.tylermurphy.hideAndSeek.Store.*; - -import java.util.Arrays; -import java.util.LinkedHashMap; -import java.util.Map; - -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -import net.tylermurphy.hideAndSeek.commands.*; -import net.tylermurphy.hideAndSeek.util.ICommand; - -public class CommandHandler { - - public static Map COMMAND_REGISTER = new LinkedHashMap(); - - private static void registerCommand(ICommand command) { - if(!COMMAND_REGISTER.containsKey(command.getLabel())) { - COMMAND_REGISTER.put(command.getLabel().toLowerCase(), command); - } - } - - public static void registerCommands() { - registerCommand(new About()); - registerCommand(new Help()); - registerCommand(new Start()); - registerCommand(new Stop()); - registerCommand(new SetSpawnLocation()); - registerCommand(new SetBorder()); - registerCommand(new Reload()); - registerCommand(new SaveMap()); - } - - public static boolean handleCommand(CommandSender sender, Command cmd, String label, String[] args) { - if(sender instanceof Player == false) { - sender.sendMessage(errorPrefix + "This command can only be run as a player."); - } else if(args.length < 1 || !COMMAND_REGISTER.containsKey(args[0].toLowerCase()) ) { - if(permissionsRequired && !sender.hasPermission("hideandseek.about")) { - sender.sendMessage(errorPrefix + "You are not allowed to run this command."); - } else { - COMMAND_REGISTER.get("about").execute(sender, null); - } - } else { - if(!args[0].toLowerCase().equals("about") && !args[0].toLowerCase().equals("help") && runningBackup) { - sender.sendMessage(errorPrefix + "Map save is currently in progress. Try again later."); - } else if(permissionsRequired && !sender.hasPermission("hideandseek."+args[0].toLowerCase())) { - sender.sendMessage(errorPrefix + "You are not allowed to run this command."); - } else { - try { - COMMAND_REGISTER.get(args[0].toLowerCase()).execute(sender,Arrays.copyOfRange(args, 1, args.length)); - } catch (Exception e) { - sender.sendMessage(errorPrefix + "An error has occured."); - e.printStackTrace(); - } - } - } - return true; - } - - public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - return CommandHandler.handleCommand(sender, command, label, args); - } - -} diff --git a/src/main/java/net/tylermurphy/hideAndSeek/CommandTabCompleter.java b/src/main/java/net/tylermurphy/hideAndSeek/CommandTabCompleter.java deleted file mode 100644 index cec59af..0000000 --- a/src/main/java/net/tylermurphy/hideAndSeek/CommandTabCompleter.java +++ /dev/null @@ -1,40 +0,0 @@ -package net.tylermurphy.hideAndSeek; - -import java.util.ArrayList; -import java.util.List; -import java.util.stream.Collectors; - -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; - -public class CommandTabCompleter{ - - public static List handleTabComplete(CommandSender sender, Command command, String label, String[] args) { - if(args.length == 1) { - return new ArrayList(CommandHandler.COMMAND_REGISTER.keySet()) - .stream() - .filter(handle -> sender.hasPermission("hideandseek."+handle.toLowerCase())) - .collect(Collectors.toList()); - } else if(args.length > 1) { - if(!CommandHandler.COMMAND_REGISTER.containsKey(args[0].toLowerCase())) { - return null; - } else { - String[] usage = CommandHandler.COMMAND_REGISTER.get(args[0].toLowerCase()).getUsage().split(" "); - if(args.length - 2 < usage.length) { - String parameter = usage[args.length-2]; - if(parameter.equals("")) { - return null; - } else { - List temp = new ArrayList(); - temp.add(parameter.replace("<", "").replace(">", "")); - return temp; - } - } else { - return null; - } - } - } - return null; - } - -} diff --git a/src/main/java/net/tylermurphy/hideAndSeek/Main.java b/src/main/java/net/tylermurphy/hideAndSeek/Main.java index 3e1e4b7..de6b043 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/Main.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/Main.java @@ -12,15 +12,27 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.event.Listener; import org.bukkit.plugin.java.JavaPlugin; +import org.bukkit.scheduler.BukkitTask; -import net.tylermurphy.hideAndSeek.events.EventListener; -import net.tylermurphy.hideAndSeek.events.EventTick; +import net.tylermurphy.hideAndSeek.bukkit.CommandHandler; +import net.tylermurphy.hideAndSeek.bukkit.EventListener; +import net.tylermurphy.hideAndSeek.bukkit.TabCompleter; +import net.tylermurphy.hideAndSeek.bukkit.Tick; +import net.tylermurphy.hideAndSeek.events.Glow; +import net.tylermurphy.hideAndSeek.events.Taunt; +import net.tylermurphy.hideAndSeek.events.Worldborder; public class Main extends JavaPlugin implements Listener { public static Main plugin; public static File root; + public static Taunt taunt; + public static Glow glow; + public static Worldborder worldborder; + + private BukkitTask onTickTask; + public void onEnable() { plugin = this; @@ -41,10 +53,10 @@ public class Main extends JavaPlugin implements Listener { root = this.getServer().getWorldContainer(); // Start Tick Timer - Bukkit.getServer().getScheduler().runTaskTimer(this, new Runnable(){ + onTickTask = Bukkit.getServer().getScheduler().runTaskTimer(this, new Runnable(){ public void run(){ try{ - EventTick.onTick(); + Tick.onTick(); } catch (Exception e) { e.printStackTrace(); } @@ -53,12 +65,16 @@ public class Main extends JavaPlugin implements Listener { } + public void onDisable() { + onTickTask.cancel(); + } + public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { return CommandHandler.handleCommand(sender, cmd, label, args); } public List onTabComplete(CommandSender sender, Command command, String label, String[] args) { - return CommandTabCompleter.handleTabComplete(sender, command, label, args); + return TabCompleter.handleTabComplete(sender, command, label, args); } } diff --git a/src/main/java/net/tylermurphy/hideAndSeek/Store.java b/src/main/java/net/tylermurphy/hideAndSeek/Store.java index b7350a6..f7b3905 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/Store.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/Store.java @@ -18,13 +18,18 @@ public class Store { public static Map playerList = new HashMap(); + public static List + Hider, + Seeker, + Spectator; + public static Scoreboard board; public static Team - Hider, - Seeker, - Spectator; + HiderTeam, + SeekerTeam, + SpectatorTeam; public static String messagePrefix, @@ -35,8 +40,7 @@ public class Store { gameoverPrefix, warningPrefix, spawnWorld, - status = "Standby", - tauntPlayer = ""; + status = "Standby"; public static Vector spawnPosition, @@ -57,12 +61,10 @@ public class Store { interactableTrapdoors, interactableFencegate, worldborderEnabled = false, - decreaseBorder = false, runningBackup = false; public static int minPlayers, - glowTime = 0, gameId = 0, worldborderSize, worldborderDelay, @@ -128,6 +130,7 @@ public class Store { worldborderDelay = Math.max(1,getConfig().getInt("worldBorder.delay")); worldborderEnabled = getConfig().getBoolean("worldBorder.enabled"); blockedCommands = getConfig().getStringList("blockedCommands"); + blockedCommands.add("team"); //Prefix char SYMBOLE = '\u00A7'; diff --git a/src/main/java/net/tylermurphy/hideAndSeek/bukkit/CommandHandler.java b/src/main/java/net/tylermurphy/hideAndSeek/bukkit/CommandHandler.java new file mode 100644 index 0000000..73bfd08 --- /dev/null +++ b/src/main/java/net/tylermurphy/hideAndSeek/bukkit/CommandHandler.java @@ -0,0 +1,67 @@ +package net.tylermurphy.hideAndSeek.bukkit; + +import static net.tylermurphy.hideAndSeek.Store.*; + +import java.util.Arrays; +import java.util.LinkedHashMap; +import java.util.Map; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +import net.tylermurphy.hideAndSeek.command.*; +import net.tylermurphy.hideAndSeek.util.ICommand; + +public class CommandHandler { + + public static Map COMMAND_REGISTER = new LinkedHashMap(); + + private static void registerCommand(ICommand command) { + if(!COMMAND_REGISTER.containsKey(command.getLabel())) { + COMMAND_REGISTER.put(command.getLabel().toLowerCase(), command); + } + } + + public static void registerCommands() { + registerCommand(new About()); + registerCommand(new Help()); + registerCommand(new Start()); + registerCommand(new Stop()); + registerCommand(new SetSpawnLocation()); + registerCommand(new SetBorder()); + registerCommand(new Reload()); + registerCommand(new SaveMap()); + } + + public static boolean handleCommand(CommandSender sender, Command cmd, String label, String[] args) { + if(sender instanceof Player == false) { + sender.sendMessage(errorPrefix + "This command can only be run as a player."); + } else if(args.length < 1 || !COMMAND_REGISTER.containsKey(args[0].toLowerCase()) ) { + if(permissionsRequired && !sender.hasPermission("hideandseek.about")) { + sender.sendMessage(errorPrefix + "You are not allowed to run this command."); + } else { + COMMAND_REGISTER.get("about").execute(sender, null); + } + } else { + if(!args[0].toLowerCase().equals("about") && !args[0].toLowerCase().equals("help") && runningBackup) { + sender.sendMessage(errorPrefix + "Map save is currently in progress. Try again later."); + } else if(permissionsRequired && !sender.hasPermission("hideandseek."+args[0].toLowerCase())) { + sender.sendMessage(errorPrefix + "You are not allowed to run this command."); + } else { + try { + COMMAND_REGISTER.get(args[0].toLowerCase()).execute(sender,Arrays.copyOfRange(args, 1, args.length)); + } catch (Exception e) { + sender.sendMessage(errorPrefix + "An error has occured."); + e.printStackTrace(); + } + } + } + return true; + } + + public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { + return CommandHandler.handleCommand(sender, command, label, args); + } + +} diff --git a/src/main/java/net/tylermurphy/hideAndSeek/bukkit/EventListener.java b/src/main/java/net/tylermurphy/hideAndSeek/bukkit/EventListener.java new file mode 100644 index 0000000..c46dc87 --- /dev/null +++ b/src/main/java/net/tylermurphy/hideAndSeek/bukkit/EventListener.java @@ -0,0 +1,274 @@ +package net.tylermurphy.hideAndSeek.bukkit; + +import static net.tylermurphy.hideAndSeek.Store.*; + +import org.bukkit.Bukkit; +import org.bukkit.GameMode; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.attribute.Attribute; +import org.bukkit.entity.ArmorStand; +import org.bukkit.entity.ItemFrame; +import org.bukkit.entity.Painting; +import org.bukkit.entity.Player; +import org.bukkit.entity.Snowball; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.entity.EntityDamageByEntityEvent; +import org.bukkit.event.entity.EntityDamageEvent; +import org.bukkit.event.entity.EntityRegainHealthEvent; +import org.bukkit.event.entity.EntityRegainHealthEvent.RegainReason; +import org.bukkit.event.entity.FoodLevelChangeEvent; +import org.bukkit.event.entity.ProjectileLaunchEvent; +import org.bukkit.event.hanging.HangingBreakByEntityEvent; +import org.bukkit.event.player.PlayerCommandPreprocessEvent; +import org.bukkit.event.player.PlayerInteractEntityEvent; +import org.bukkit.event.player.PlayerInteractEvent; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerKickEvent; +import org.bukkit.event.player.PlayerQuitEvent; +import org.bukkit.potion.PotionEffect; + +import net.md_5.bungee.api.ChatColor; +import net.tylermurphy.hideAndSeek.Main; +import net.tylermurphy.hideAndSeek.util.Functions; +import net.tylermurphy.hideAndSeek.util.Packet; + +public class EventListener implements Listener { + + @EventHandler + public void onPlayerJoin(PlayerJoinEvent event) { + if(status.equals("Playing") || status.equals("Starting")) { + Spectator.add(event.getPlayer().getName()); + SpectatorTeam.addEntry(event.getPlayer().getName()); + event.getPlayer().sendMessage(messagePrefix + "You have joined mid game, and thus have been placed on the spectator team."); + event.getPlayer().setGameMode(GameMode.SPECTATOR); + event.getPlayer().getInventory().clear(); + for(PotionEffect effect : event.getPlayer().getActivePotionEffects()){ + event.getPlayer().removePotionEffect(effect.getType()); + } + event.getPlayer().teleport(new Location(Bukkit.getWorld("hideandseek_"+spawnWorld), spawnPosition.getX(),spawnPosition.getY(),spawnPosition.getZ())); + } else if(status.equals("Setup") || status.equals("Standby")) { + Hider.add(event.getPlayer().getName()); + HiderTeam.addEntry(event.getPlayer().getName()); + event.getPlayer().setGameMode(GameMode.ADVENTURE); + event.getPlayer().teleport(new Location(Bukkit.getWorld(spawnWorld), spawnPosition.getX(),spawnPosition.getY(),spawnPosition.getZ())); + } + playerList.put(event.getPlayer().getName(), event.getPlayer()); + } + + @EventHandler + public void onQuit(PlayerQuitEvent event) { + if(!playerList.containsKey(event.getPlayer().getName())) return; + playerList.remove(event.getPlayer().getName()); + Hider.remove(event.getPlayer().getName()); + HiderTeam.removeEntry(event.getPlayer().getName()); + Seeker.remove(event.getPlayer().getName()); + SeekerTeam.removeEntry(event.getPlayer().getName()); + Spectator.remove(event.getPlayer().getName()); + SpectatorTeam.removeEntry(event.getPlayer().getName()); + } + + @EventHandler + public void onKick(PlayerKickEvent event) { + if(!playerList.containsKey(event.getPlayer().getName())) return; + playerList.remove(event.getPlayer().getName()); + Hider.remove(event.getPlayer().getName()); + HiderTeam.removeEntry(event.getPlayer().getName()); + Seeker.remove(event.getPlayer().getName()); + SeekerTeam.removeEntry(event.getPlayer().getName()); + Spectator.remove(event.getPlayer().getName()); + SpectatorTeam.removeEntry(event.getPlayer().getName()); + } + + @EventHandler + public void onEntityDamage(EntityDamageEvent event) { + if(event.getEntity() instanceof Player) { + if(!status.equals("Playing")) { + event.setCancelled(true); + return; + } + Player player = (Player) event.getEntity(); + if(player.getHealth()-event.getDamage() < 0) { + if(spawnPosition == null) return; + event.setCancelled(true); + player.setHealth(player.getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue()); + player.teleport(new Location(Bukkit.getWorld("hideandseek_"+spawnWorld), spawnPosition.getX(), spawnPosition.getY(), spawnPosition.getZ())); + Packet.playSound(player, Sound.ENTITY_PLAYER_DEATH, 1, 1); + if(Hider.contains(event.getEntity().getName())) { + Bukkit.broadcastMessage(String.format(messagePrefix + "%s%s%s was found and became a seeker", ChatColor.GOLD, event.getEntity().getName(), ChatColor.WHITE)); + } + if(Seeker.contains(event.getEntity().getName())) { + Bukkit.broadcastMessage(String.format(messagePrefix + "%s%s%s was killed", ChatColor.RED, event.getEntity().getName(), ChatColor.WHITE)); + } + Seeker.add(player.getName()); + Hider.remove(player.getName()); + SeekerTeam.addEntry(player.getName()); + Functions.resetPlayer(player); + for(Player temp : playerList.values()) { + Packet.setGlow(player, temp, false); + } + } + } + + } + + @EventHandler + public void onEntityDamageByEntity(EntityDamageByEntityEvent event) { + if(event.getEntity() instanceof ArmorStand) { + if(unbreakableArmorstands) { + if(event.getDamager() instanceof Player) { + Player player = (Player) event.getDamager(); + if(status.equals("Playing") || status.equals("Starting") || !player.hasPermission("hideandseek.blockbypass")) { + System.out.println('t'); + event.setCancelled(true); + } + } else { + event.setCancelled(true); + } + } + } + } + + @EventHandler + public void onPlayerInteractEntity(PlayerInteractEntityEvent event) { + if(!interactableArmorstands) { + if(event.getRightClicked() instanceof ArmorStand) { + if(status.equals("Playing") || status.equals("Starting") || !event.getPlayer().hasPermission("hideandseek.blockbypass")) { + event.setCancelled(true); + } + } + } + if(!interactableItemframes) { + if(event.getRightClicked() instanceof ItemFrame) { + if(status.equals("Playing") || status.equals("Starting") || !event.getPlayer().hasPermission("hideandseek.blockbypass")) { + event.setCancelled(true); + } + } + } + } + + @EventHandler + public void onPlayerInteractBlock(PlayerInteractEvent event) { + if(!interactableDoors) { + if( + event.getClickedBlock().getType() == Material.ACACIA_DOOR || + event.getClickedBlock().getType() == Material.BIRCH_DOOR || + event.getClickedBlock().getType() == Material.CRIMSON_DOOR || + event.getClickedBlock().getType() == Material.DARK_OAK_DOOR || + event.getClickedBlock().getType() == Material.IRON_DOOR || + event.getClickedBlock().getType() == Material.JUNGLE_DOOR || + event.getClickedBlock().getType() == Material.OAK_DOOR || + event.getClickedBlock().getType() == Material.SPRUCE_DOOR || + event.getClickedBlock().getType() == Material.WARPED_DOOR + ) { + if(status.equals("Playing") || status.equals("Starting") || !event.getPlayer().hasPermission("hideandseek.blockbypass")) { + event.setCancelled(true); + } + } + } + if(!interactableTrapdoors) { + if( + event.getClickedBlock().getType() == Material.ACACIA_TRAPDOOR || + event.getClickedBlock().getType() == Material.BIRCH_TRAPDOOR || + event.getClickedBlock().getType() == Material.CRIMSON_TRAPDOOR || + event.getClickedBlock().getType() == Material.DARK_OAK_TRAPDOOR || + event.getClickedBlock().getType() == Material.IRON_TRAPDOOR || + event.getClickedBlock().getType() == Material.JUNGLE_TRAPDOOR || + event.getClickedBlock().getType() == Material.OAK_TRAPDOOR || + event.getClickedBlock().getType() == Material.SPRUCE_TRAPDOOR || + event.getClickedBlock().getType() == Material.WARPED_TRAPDOOR + ) { + if(status.equals("Playing") || status.equals("Starting") || !event.getPlayer().hasPermission("hideandseek.blockbypass")) { + event.setCancelled(true); + } + } + } + if(!interactableFencegate) { + if( + event.getClickedBlock().getType() == Material.ACACIA_FENCE_GATE || + event.getClickedBlock().getType() == Material.BIRCH_FENCE_GATE || + event.getClickedBlock().getType() == Material.CRIMSON_FENCE_GATE || + event.getClickedBlock().getType() == Material.DARK_OAK_FENCE_GATE || + event.getClickedBlock().getType() == Material.JUNGLE_FENCE_GATE || + event.getClickedBlock().getType() == Material.OAK_FENCE_GATE || + event.getClickedBlock().getType() == Material.SPRUCE_FENCE_GATE || + event.getClickedBlock().getType() == Material.WARPED_FENCE_GATE + ) { + if(status.equals("Playing") || status.equals("Starting") || !event.getPlayer().hasPermission("hideandseek.blockbypass")) { + event.setCancelled(true); + } + } + } + } + + @EventHandler + public void onHangingBreakByEntity(HangingBreakByEntityEvent event) { + if(event.getEntity() instanceof ItemFrame) { + if(unbreakableItemframes) { + if(event.getRemover() instanceof Player) { + Player player = (Player) event.getRemover(); + if(status.equals("Playing") || status.equals("Starting") || !player.hasPermission("hideandseek.blockbypass")) { + event.setCancelled(true); + } + } else { + event.setCancelled(true); + } + + } + } + if(event.getEntity() instanceof Painting) { + if(unbreakableArmorstands) { + if(event.getRemover() instanceof Player) { + Player player = (Player) event.getRemover(); + if(status.equals("Playing") || status.equals("Starting") || !player.hasPermission("hideandseek.blockbypass")) { + event.setCancelled(true); + } + } else { + event.setCancelled(true); + } + } + } + } + + @EventHandler + public void onProjectile(ProjectileLaunchEvent event) { + if(!status.equals("Playing")) return; + if(event.getEntity() instanceof Snowball) { + Snowball snowball = (Snowball) event.getEntity(); + if(snowball.getShooter() instanceof Player) { + Player player = (Player) snowball.getShooter(); + if(Hider.contains(player.getName())) { + Main.glow.onProjectilve(); + snowball.remove(); + player.getInventory().remove(Material.SNOWBALL); + } + } + } + } + + @EventHandler + public void onFoodLevelChange(FoodLevelChangeEvent event) { + event.setCancelled(true); + } + + @EventHandler + public void onPlayerRegainHealth(EntityRegainHealthEvent event) { + if(event.getRegainReason() == RegainReason.SATIATED || event.getRegainReason() == RegainReason.REGEN) + event.setCancelled(true); + } + + @EventHandler + public void onPlayerCommandPreProccess(PlayerCommandPreprocessEvent event) { + if(status.equals("Setup") || status.equals("Standby")) return; + String handle = event.getMessage().split(" ")[0].substring(1); + for(String blocked : blockedCommands) { + if(handle.equalsIgnoreCase(blocked) || handle.equalsIgnoreCase("minecraft:"+blocked)) { + event.setCancelled(true); + event.getPlayer().sendMessage(errorPrefix + "This command is blocked during gameplay!"); + break; + } + } + } +} diff --git a/src/main/java/net/tylermurphy/hideAndSeek/bukkit/TabCompleter.java b/src/main/java/net/tylermurphy/hideAndSeek/bukkit/TabCompleter.java new file mode 100644 index 0000000..2a88178 --- /dev/null +++ b/src/main/java/net/tylermurphy/hideAndSeek/bukkit/TabCompleter.java @@ -0,0 +1,40 @@ +package net.tylermurphy.hideAndSeek.bukkit; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; + +public class TabCompleter{ + + public static List handleTabComplete(CommandSender sender, Command command, String label, String[] args) { + if(args.length == 1) { + return new ArrayList(CommandHandler.COMMAND_REGISTER.keySet()) + .stream() + .filter(handle -> sender.hasPermission("hideandseek."+handle.toLowerCase())) + .collect(Collectors.toList()); + } else if(args.length > 1) { + if(!CommandHandler.COMMAND_REGISTER.containsKey(args[0].toLowerCase())) { + return null; + } else { + String[] usage = CommandHandler.COMMAND_REGISTER.get(args[0].toLowerCase()).getUsage().split(" "); + if(args.length - 2 < usage.length) { + String parameter = usage[args.length-2]; + if(parameter.equals("")) { + return null; + } else { + List temp = new ArrayList(); + temp.add(parameter.replace("<", "").replace(">", "")); + return temp; + } + } else { + return null; + } + } + } + return null; + } + +} diff --git a/src/main/java/net/tylermurphy/hideAndSeek/bukkit/Tick.java b/src/main/java/net/tylermurphy/hideAndSeek/bukkit/Tick.java new file mode 100644 index 0000000..eccaf39 --- /dev/null +++ b/src/main/java/net/tylermurphy/hideAndSeek/bukkit/Tick.java @@ -0,0 +1,81 @@ +package net.tylermurphy.hideAndSeek.bukkit; + +import static net.tylermurphy.hideAndSeek.Store.*; + + +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.Sound; +import org.bukkit.entity.Player; + +import net.tylermurphy.hideAndSeek.command.Stop; +import net.tylermurphy.hideAndSeek.util.Functions; +import net.tylermurphy.hideAndSeek.util.Packet; + +public class Tick { + + static int tick = 0; + + public static void onTick() { + + if(board == null) { + Functions.loadScoreboard(); + } + + if(status.equals("Starting")) { + onStarting(); + } else if(status.equals("Playing")) { + onPlaying(); + } + + tick ++; + + if(( status.equals("Starting") || status.equals("Playing") ) && Hider.size() < 1) { + Bukkit.broadcastMessage(gameoverPrefix + "All hiders have been found."); + Stop.onStop(); + } + if(( status.equals("Starting") || status.equals("Playing") ) && Seeker.size() < 1) { + Bukkit.broadcastMessage(abortPrefix + "All seekers have quit."); + Stop.onStop(); + } + } + + private static void onStarting() { + for(String playerName : Seeker) { + Player player = playerList.get(playerName); + if(player != null) { + player.teleport(new Location(Bukkit.getWorld("hideandseek_"+spawnWorld), spawnPosition.getX(),spawnPosition.getY(),spawnPosition.getZ())); + } + } + } + + private static void onPlaying() { + for(String playerName : Hider) { + Player player = playerList.get(playerName); + int distance = 100; + for(String seekerName : Seeker) { + Player seeker = playerList.get(seekerName); + int temp = (int) player.getLocation().distance(seeker.getLocation()); + if(distance > temp) { + distance = temp; + } + } + switch(tick%10) { + case 0: + if(distance < 30) Packet.playSound(player, Sound.BLOCK_NOTE_BLOCK_BASEDRUM, .5f, 1f); + if(distance < 10) Packet.playSound(player, Sound.BLOCK_NOTE_BLOCK_BIT, .3f, 1f); + break; + case 3: + if(distance < 30) Packet.playSound(player, Sound.BLOCK_NOTE_BLOCK_BASEDRUM, .3f, 1f); + if(distance < 10) Packet.playSound(player, Sound.BLOCK_NOTE_BLOCK_BIT, .3f, 1f); + break; + case 6: + if(distance < 10) Packet.playSound(player, Sound.BLOCK_NOTE_BLOCK_BIT, .3f, 1f); + break; + case 9: + if(distance < 20) Packet.playSound(player, Sound.BLOCK_NOTE_BLOCK_BIT, .3f, 1f); + break; + } + } + } +} \ No newline at end of file diff --git a/src/main/java/net/tylermurphy/hideAndSeek/command/About.java b/src/main/java/net/tylermurphy/hideAndSeek/command/About.java new file mode 100644 index 0000000..3c4a8f0 --- /dev/null +++ b/src/main/java/net/tylermurphy/hideAndSeek/command/About.java @@ -0,0 +1,30 @@ +package net.tylermurphy.hideAndSeek.command; + +import org.bukkit.ChatColor; +import org.bukkit.command.CommandSender; + +import net.tylermurphy.hideAndSeek.util.ICommand; + +public class About implements ICommand { + + public void execute(CommandSender sender, String[] args) { + sender.sendMessage( + String.format("%s%sHide and Seek %s(1.3.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/command/Help.java b/src/main/java/net/tylermurphy/hideAndSeek/command/Help.java new file mode 100644 index 0000000..f33717e --- /dev/null +++ b/src/main/java/net/tylermurphy/hideAndSeek/command/Help.java @@ -0,0 +1,32 @@ +package net.tylermurphy.hideAndSeek.command; + +import org.bukkit.command.CommandSender; + +import net.md_5.bungee.api.ChatColor; +import net.tylermurphy.hideAndSeek.bukkit.CommandHandler; +import net.tylermurphy.hideAndSeek.util.ICommand; + +public class Help implements ICommand { + + public void execute(CommandSender sender, String[] args) { + String message = ""; + for(ICommand command : CommandHandler.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()-1); + 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/command/Reload.java b/src/main/java/net/tylermurphy/hideAndSeek/command/Reload.java new file mode 100644 index 0000000..1b1f1d5 --- /dev/null +++ b/src/main/java/net/tylermurphy/hideAndSeek/command/Reload.java @@ -0,0 +1,33 @@ +package net.tylermurphy.hideAndSeek.command; + +import org.bukkit.command.CommandSender; + +import net.tylermurphy.hideAndSeek.Store; +import net.tylermurphy.hideAndSeek.util.Functions; +import net.tylermurphy.hideAndSeek.util.ICommand; + +import static net.tylermurphy.hideAndSeek.Store.*; + +public class Reload implements ICommand { + + public void execute(CommandSender sender, String[] args) { + Store.loadConfig(); + try { + Functions.loadScoreboard(); + } catch(Exception e) {} + sender.sendMessage(messagePrefix + "Reloaded the config"); + } + + public String getLabel() { + return "reload"; + } + + public String getUsage() { + return ""; + } + + public String getDescription() { + return "Reloads the config"; + } + +} diff --git a/src/main/java/net/tylermurphy/hideAndSeek/command/SaveMap.java b/src/main/java/net/tylermurphy/hideAndSeek/command/SaveMap.java new file mode 100644 index 0000000..2956c80 --- /dev/null +++ b/src/main/java/net/tylermurphy/hideAndSeek/command/SaveMap.java @@ -0,0 +1,106 @@ +package net.tylermurphy.hideAndSeek.command; + +import static net.tylermurphy.hideAndSeek.Store.*; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.util.ArrayList; +import java.util.Arrays; + +import org.bukkit.Bukkit; +import org.bukkit.command.CommandSender; +import org.bukkit.scheduler.BukkitRunnable; + +import net.tylermurphy.hideAndSeek.Main; +import net.tylermurphy.hideAndSeek.util.ICommand; + +public class SaveMap implements ICommand { + + public void execute(CommandSender sender, String[] args) { + if(spawnPosition.getBlockX() == 0 && spawnPosition.getBlockY() == 0 && spawnPosition.getBlockZ() == 0) { + sender.sendMessage(errorPrefix + "Please set spawn location first"); + return; + } + sender.sendMessage(messagePrefix + "Starting map save"); + sender.sendMessage(warningPrefix + "All commands will be disabled when the save is in progress. Do not turn off the server."); + Bukkit.getServer().getWorld(spawnWorld).save(); + BukkitRunnable runnable = new BukkitRunnable() { + public void run() { + File current = new File(Main.root+File.separator+spawnWorld); + if(current.exists()) { + File temp_destenation = new File(Main.root+File.separator+"temp_hideandseek_"+spawnWorld); + File destenation = new File(Main.root+File.separator+"hideandseek_"+spawnWorld); + copyFileStructure(current, temp_destenation); + if(destenation.exists()) { + deleteDirectory(destenation); + destenation.mkdir(); + } + temp_destenation.renameTo(destenation); + sender.sendMessage(messagePrefix + "Map save complete"); + runningBackup = false; + } else { + sender.sendMessage(errorPrefix + "Coudnt find current map"); + } + } + }; + runnable.runTaskAsynchronously(Main.plugin); + runningBackup = true; + } + + private static void copyFileStructure(File source, File target){ + try { + ArrayList ignore = new ArrayList<>(Arrays.asList("uid.dat", "session.lock")); + if(!ignore.contains(source.getName())) { + if(source.isDirectory()) { + if(!target.exists()) + if (!target.mkdirs()) + throw new IOException("Couldn't create world directory!"); + String files[] = source.list(); + for (String file : files) { + File srcFile = new File(source, file); + File destFile = new File(target, file); + copyFileStructure(srcFile, destFile); + } + } else { + InputStream in = new FileInputStream(source); + OutputStream out = new FileOutputStream(target); + byte[] buffer = new byte[1024]; + int length; + while ((length = in.read(buffer)) > 0) + out.write(buffer, 0, length); + in.close(); + out.close(); + } + } + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + private boolean deleteDirectory(File directoryToBeDeleted) { + File[] allContents = directoryToBeDeleted.listFiles(); + if (allContents != null) { + for (File file : allContents) { + deleteDirectory(file); + } + } + return directoryToBeDeleted.delete(); + } + + public String getLabel() { + return "saveMap"; + } + + public String getUsage() { + return ""; + } + + public String getDescription() { + return "Saves current map for the game. May lag server."; + } + +} diff --git a/src/main/java/net/tylermurphy/hideAndSeek/command/SetBorder.java b/src/main/java/net/tylermurphy/hideAndSeek/command/SetBorder.java new file mode 100644 index 0000000..e8ad2c9 --- /dev/null +++ b/src/main/java/net/tylermurphy/hideAndSeek/command/SetBorder.java @@ -0,0 +1,86 @@ +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.Functions; +import net.tylermurphy.hideAndSeek.util.ICommand; + +public class SetBorder implements ICommand { + + public void execute(CommandSender sender, String[] args) { + if(!status.equals("Standby")) { + sender.sendMessage(errorPrefix + "Game is currently in session"); + return; + } + if(spawnPosition == null) { + sender.sendMessage(errorPrefix + "Please set spawn position first"); + return; + } + if(args.length < 2) { + worldborderEnabled = false; + Map temp = new HashMap(); + temp.put("enabled", false); + addToSection("worldBorder",temp); + saveConfig(); + sender.sendMessage(messagePrefix + "Disabled worldborder."); + Functions.resetWorldborder(spawnWorld); + 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; + worldborderEnabled = true; + Map temp = new HashMap(); + temp.put("x", worldborderPosition.getBlockX()); + temp.put("z", worldborderPosition.getBlockZ()); + temp.put("delay", worldborderDelay); + temp.put("size", worldborderSize); + temp.put("enabled", true); + addToSection("worldBorder",temp); + sender.sendMessage(messagePrefix + "Set border center to current location, size to "+num+", and delay to "+delay); + saveConfig(); + Functions.resetWorldborder(spawnWorld); + } + + public String getLabel() { + return "setBorder"; + } + + public String getUsage() { + return " "; + } + + public String getDescription() { + return "Sets worldboarder's center location, size in blocks, and delay in minutes per shrink. Add no arguments to disable."; + } + +} diff --git a/src/main/java/net/tylermurphy/hideAndSeek/command/SetSpawnLocation.java b/src/main/java/net/tylermurphy/hideAndSeek/command/SetSpawnLocation.java new file mode 100644 index 0000000..62d6bc9 --- /dev/null +++ b/src/main/java/net/tylermurphy/hideAndSeek/command/SetSpawnLocation.java @@ -0,0 +1,53 @@ +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 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(!status.equals("Standby")) { + sender.sendMessage(errorPrefix + "Game is currently in session"); + return; + } + if(worldborderEnabled && spawnPosition.distance(worldborderPosition) > 100) { + sender.sendMessage(errorPrefix + "Spawn position must be 100 from worldborder center"); + return; + } + spawnPosition = newSpawnPosition; + sender.sendMessage(messagePrefix + "Set spawn position to current location"); + Map temp = new HashMap(); + temp.put("x", spawnPosition.getX()); + temp.put("y", spawnPosition.getY()); + temp.put("z", spawnPosition.getZ()); + temp.put("world", player.getLocation().getWorld().getName()); + addToSection("spawn",temp); + saveConfig(); + } + + 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/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(); + Seeker = new ArrayList(); + Spectator = new ArrayList(); + 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 ""; + } + + public String getDescription() { + return "Starts the game either with a random seeker or chosen one"; + } + +} diff --git a/src/main/java/net/tylermurphy/hideAndSeek/command/Stop.java b/src/main/java/net/tylermurphy/hideAndSeek/command/Stop.java new file mode 100644 index 0000000..c956d3d --- /dev/null +++ b/src/main/java/net/tylermurphy/hideAndSeek/command/Stop.java @@ -0,0 +1,63 @@ +package net.tylermurphy.hideAndSeek.command; + +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.util.Functions; +import net.tylermurphy.hideAndSeek.util.ICommand; +import net.tylermurphy.hideAndSeek.util.Packet; + +public class Stop implements ICommand { + + public void execute(CommandSender sender, String[] args) { + if(status.equals("Starting") || status.equals("Playing")) { + Bukkit.broadcastMessage(abortPrefix + "Game has been force stopped."); + onStop(); + + } else { + sender.sendMessage(errorPrefix + "There is no game in progress"); + return; + } + } + + public String getLabel() { + return "stop"; + } + + public static void onStop() { + if(status.equals("Standby")) return; + status = "Standby"; + gameId++; + Functions.resetWorldborder("hideandseek_"+spawnWorld); + for(Player player : playerList.values()) { + player.setGameMode(GameMode.ADVENTURE); + Hider.add(player.getName()); + HiderTeam.addEntry(player.getName()); + player.getInventory().clear(); + player.teleport(new Location(Bukkit.getWorld(spawnWorld), spawnPosition.getX(),spawnPosition.getY(),spawnPosition.getZ())); + for(PotionEffect effect : player.getActivePotionEffects()){ + player.removePotionEffect(effect.getType()); + } + player.addPotionEffect(new PotionEffect(PotionEffectType.HEAL, 1, 100)); + for(Player temp : playerList.values()) { + Packet.setGlow(player, temp, false); + } + } + } + + public String getUsage() { + return ""; + } + + public String getDescription() { + return "Stops the game"; + } + +} diff --git a/src/main/java/net/tylermurphy/hideAndSeek/commands/About.java b/src/main/java/net/tylermurphy/hideAndSeek/commands/About.java deleted file mode 100644 index 76cd28b..0000000 --- a/src/main/java/net/tylermurphy/hideAndSeek/commands/About.java +++ /dev/null @@ -1,30 +0,0 @@ -package net.tylermurphy.hideAndSeek.commands; - -import org.bukkit.ChatColor; -import org.bukkit.command.CommandSender; - -import net.tylermurphy.hideAndSeek.util.ICommand; - -public class About implements ICommand { - - public void execute(CommandSender sender, String[] args) { - sender.sendMessage( - String.format("%s%sHide and Seek %s(1.3.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/Help.java b/src/main/java/net/tylermurphy/hideAndSeek/commands/Help.java deleted file mode 100644 index a998a11..0000000 --- a/src/main/java/net/tylermurphy/hideAndSeek/commands/Help.java +++ /dev/null @@ -1,32 +0,0 @@ -package net.tylermurphy.hideAndSeek.commands; - -import org.bukkit.command.CommandSender; - -import net.md_5.bungee.api.ChatColor; -import net.tylermurphy.hideAndSeek.CommandHandler; -import net.tylermurphy.hideAndSeek.util.ICommand; - -public class Help implements ICommand { - - public void execute(CommandSender sender, String[] args) { - String message = ""; - for(ICommand command : CommandHandler.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()-1); - 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/Reload.java b/src/main/java/net/tylermurphy/hideAndSeek/commands/Reload.java deleted file mode 100644 index 04128c5..0000000 --- a/src/main/java/net/tylermurphy/hideAndSeek/commands/Reload.java +++ /dev/null @@ -1,29 +0,0 @@ -package net.tylermurphy.hideAndSeek.commands; - -import org.bukkit.command.CommandSender; - -import net.tylermurphy.hideAndSeek.Store; -import net.tylermurphy.hideAndSeek.util.ICommand; - -import static net.tylermurphy.hideAndSeek.Store.*; - -public class Reload implements ICommand { - - public void execute(CommandSender sender, String[] args) { - Store.loadConfig(); - sender.sendMessage(messagePrefix + "Reloaded the config"); - } - - public String getLabel() { - return "reload"; - } - - public String getUsage() { - return ""; - } - - public String getDescription() { - return "Reloads the config"; - } - -} diff --git a/src/main/java/net/tylermurphy/hideAndSeek/commands/SaveMap.java b/src/main/java/net/tylermurphy/hideAndSeek/commands/SaveMap.java deleted file mode 100644 index 37ead8a..0000000 --- a/src/main/java/net/tylermurphy/hideAndSeek/commands/SaveMap.java +++ /dev/null @@ -1,106 +0,0 @@ -package net.tylermurphy.hideAndSeek.commands; - -import static net.tylermurphy.hideAndSeek.Store.*; - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.util.ArrayList; -import java.util.Arrays; - -import org.bukkit.Bukkit; -import org.bukkit.command.CommandSender; -import org.bukkit.scheduler.BukkitRunnable; - -import net.tylermurphy.hideAndSeek.Main; -import net.tylermurphy.hideAndSeek.util.ICommand; - -public class SaveMap implements ICommand { - - public void execute(CommandSender sender, String[] args) { - if(spawnPosition.getBlockX() == 0 && spawnPosition.getBlockY() == 0 && spawnPosition.getBlockZ() == 0) { - sender.sendMessage(errorPrefix + "Please set spawn location first"); - return; - } - sender.sendMessage(messagePrefix + "Starting map save"); - sender.sendMessage(warningPrefix + "All commands will be disabled when the save is in progress. Do not turn off the server."); - Bukkit.getServer().getWorld(spawnWorld).save(); - BukkitRunnable runnable = new BukkitRunnable() { - public void run() { - File current = new File(Main.root+File.separator+spawnWorld); - if(current.exists()) { - File temp_destenation = new File(Main.root+File.separator+"temp_hideandseek_"+spawnWorld); - File destenation = new File(Main.root+File.separator+"hideandseek_"+spawnWorld); - copyFileStructure(current, temp_destenation); - if(destenation.exists()) { - deleteDirectory(destenation); - destenation.mkdir(); - } - temp_destenation.renameTo(destenation); - sender.sendMessage(messagePrefix + "Map save complete"); - runningBackup = false; - } else { - sender.sendMessage(errorPrefix + "Coudnt find current map"); - } - } - }; - runnable.runTaskAsynchronously(Main.plugin); - runningBackup = true; - } - - private static void copyFileStructure(File source, File target){ - try { - ArrayList ignore = new ArrayList<>(Arrays.asList("uid.dat", "session.lock")); - if(!ignore.contains(source.getName())) { - if(source.isDirectory()) { - if(!target.exists()) - if (!target.mkdirs()) - throw new IOException("Couldn't create world directory!"); - String files[] = source.list(); - for (String file : files) { - File srcFile = new File(source, file); - File destFile = new File(target, file); - copyFileStructure(srcFile, destFile); - } - } else { - InputStream in = new FileInputStream(source); - OutputStream out = new FileOutputStream(target); - byte[] buffer = new byte[1024]; - int length; - while ((length = in.read(buffer)) > 0) - out.write(buffer, 0, length); - in.close(); - out.close(); - } - } - } catch (IOException e) { - throw new RuntimeException(e); - } - } - - private boolean deleteDirectory(File directoryToBeDeleted) { - File[] allContents = directoryToBeDeleted.listFiles(); - if (allContents != null) { - for (File file : allContents) { - deleteDirectory(file); - } - } - return directoryToBeDeleted.delete(); - } - - public String getLabel() { - return "saveMap"; - } - - public String getUsage() { - return ""; - } - - public String getDescription() { - return "Saves current map for the game. May lag server."; - } - -} diff --git a/src/main/java/net/tylermurphy/hideAndSeek/commands/SetBorder.java b/src/main/java/net/tylermurphy/hideAndSeek/commands/SetBorder.java deleted file mode 100644 index ae99c7a..0000000 --- a/src/main/java/net/tylermurphy/hideAndSeek/commands/SetBorder.java +++ /dev/null @@ -1,86 +0,0 @@ -package net.tylermurphy.hideAndSeek.commands; - -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.Functions; -import net.tylermurphy.hideAndSeek.util.ICommand; - -public class SetBorder implements ICommand { - - public void execute(CommandSender sender, String[] args) { - if(!status.equals("Standby")) { - sender.sendMessage(errorPrefix + "Game is currently in session"); - return; - } - if(spawnPosition == null) { - sender.sendMessage(errorPrefix + "Please set spawn position first"); - return; - } - if(args.length < 2) { - worldborderEnabled = false; - Map temp = new HashMap(); - temp.put("enabled", false); - addToSection("worldBorder",temp); - saveConfig(); - sender.sendMessage(messagePrefix + "Disabled worldborder."); - Functions.resetWorldborder(); - 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; - worldborderEnabled = true; - Map temp = new HashMap(); - temp.put("x", worldborderPosition.getBlockX()); - temp.put("z", worldborderPosition.getBlockZ()); - temp.put("delay", worldborderDelay); - temp.put("size", worldborderSize); - temp.put("enabled", true); - addToSection("worldBorder",temp); - sender.sendMessage(messagePrefix + "Set border center to current location, size to "+num+", and delay to "+delay); - saveConfig(); - Functions.resetWorldborder(); - } - - public String getLabel() { - return "setBorder"; - } - - public String getUsage() { - return " "; - } - - public String getDescription() { - return "Sets worldboarder's center location, size in blocks, and delay in minutes per shrink. Add no arguments to disable."; - } - -} diff --git a/src/main/java/net/tylermurphy/hideAndSeek/commands/SetSpawnLocation.java b/src/main/java/net/tylermurphy/hideAndSeek/commands/SetSpawnLocation.java deleted file mode 100644 index 18e3703..0000000 --- a/src/main/java/net/tylermurphy/hideAndSeek/commands/SetSpawnLocation.java +++ /dev/null @@ -1,53 +0,0 @@ -package net.tylermurphy.hideAndSeek.commands; - -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 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(!status.equals("Standby")) { - sender.sendMessage(errorPrefix + "Game is currently in session"); - return; - } - if(worldborderEnabled && spawnPosition.distance(worldborderPosition) > 100) { - sender.sendMessage(errorPrefix + "Spawn position must be 100 from worldborder center"); - return; - } - spawnPosition = newSpawnPosition; - sender.sendMessage(messagePrefix + "Set spawn position to current location"); - Map temp = new HashMap(); - temp.put("x", spawnPosition.getX()); - temp.put("y", spawnPosition.getY()); - temp.put("z", spawnPosition.getZ()); - temp.put("world", player.getLocation().getWorld().getName()); - addToSection("spawn",temp); - saveConfig(); - } - - 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 deleted file mode 100644 index a8eec85..0000000 --- a/src/main/java/net/tylermurphy/hideAndSeek/commands/Start.java +++ /dev/null @@ -1,221 +0,0 @@ -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; -import org.bukkit.entity.Player; -import org.bukkit.potion.PotionEffect; -import org.bukkit.potion.PotionEffectType; - -import net.tylermurphy.hideAndSeek.Main; -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.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; - } - for(Player temp : playerList.values()) { - Hider.addEntry(temp.getName()); - } - Seeker.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()); - } - } - //Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), String.format("spawnpoint @a %s %s %s", spawnPosition.getBlockX(), spawnPosition.getBlockY(), spawnPosition.getBlockZ())); - 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)); - } - } - Functions.resetWorldborder(); - 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); - } - } - }, 20 * 30); - - if(worldborderEnabled) { - scheduleWorldborder(); - } - 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() { - return "start"; - } - - public String getUsage() { - return ""; - } - - public String getDescription() { - return "Starts the game either with a random seeker or chosen one"; - } - -} diff --git a/src/main/java/net/tylermurphy/hideAndSeek/commands/Stop.java b/src/main/java/net/tylermurphy/hideAndSeek/commands/Stop.java deleted file mode 100644 index b709120..0000000 --- a/src/main/java/net/tylermurphy/hideAndSeek/commands/Stop.java +++ /dev/null @@ -1,62 +0,0 @@ -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.util.Functions; -import net.tylermurphy.hideAndSeek.util.ICommand; -import net.tylermurphy.hideAndSeek.util.Packet; - -public class Stop implements ICommand { - - public void execute(CommandSender sender, String[] args) { - if(status.equals("Starting") || status.equals("Playing")) { - Bukkit.broadcastMessage(abortPrefix + "Game has been force stopped."); - onStop(); - - } else { - sender.sendMessage(errorPrefix + "There is no game in progress"); - return; - } - } - - public String getLabel() { - return "stop"; - } - - public static void onStop() { - if(status.equals("Standby")) return; - status = "Standby"; - gameId++; - for(Player player : playerList.values()) { - player.setGameMode(GameMode.ADVENTURE); - Hider.addEntry(player.getName()); - player.getInventory().clear(); - player.teleport(new Location(Bukkit.getWorld(spawnWorld), spawnPosition.getX(),spawnPosition.getY(),spawnPosition.getZ())); - for(PotionEffect effect : player.getActivePotionEffects()){ - player.removePotionEffect(effect.getType()); - } - player.addPotionEffect(new PotionEffect(PotionEffectType.HEAL, 1, 100)); - for(Player temp : playerList.values()) { - Packet.setGlow(player, temp, false); - } - } - Functions.resetWorldborder(); - } - - public String getUsage() { - return ""; - } - - public String getDescription() { - return "Stops the game"; - } - -} diff --git a/src/main/java/net/tylermurphy/hideAndSeek/events/EventListener.java b/src/main/java/net/tylermurphy/hideAndSeek/events/EventListener.java deleted file mode 100644 index 46cf676..0000000 --- a/src/main/java/net/tylermurphy/hideAndSeek/events/EventListener.java +++ /dev/null @@ -1,260 +0,0 @@ -package net.tylermurphy.hideAndSeek.events; - -import static net.tylermurphy.hideAndSeek.Store.*; - -import org.bukkit.Bukkit; -import org.bukkit.GameMode; -import org.bukkit.Location; -import org.bukkit.Material; -import org.bukkit.Sound; -import org.bukkit.attribute.Attribute; -import org.bukkit.entity.ArmorStand; -import org.bukkit.entity.ItemFrame; -import org.bukkit.entity.Painting; -import org.bukkit.entity.Player; -import org.bukkit.entity.Snowball; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; -import org.bukkit.event.entity.EntityDamageByEntityEvent; -import org.bukkit.event.entity.EntityDamageEvent; -import org.bukkit.event.entity.EntityRegainHealthEvent; -import org.bukkit.event.entity.EntityRegainHealthEvent.RegainReason; -import org.bukkit.event.entity.FoodLevelChangeEvent; -import org.bukkit.event.entity.ProjectileLaunchEvent; -import org.bukkit.event.hanging.HangingBreakByEntityEvent; -import org.bukkit.event.player.PlayerCommandPreprocessEvent; -import org.bukkit.event.player.PlayerInteractEntityEvent; -import org.bukkit.event.player.PlayerInteractEvent; -import org.bukkit.event.player.PlayerJoinEvent; -import org.bukkit.event.player.PlayerQuitEvent; -import org.bukkit.potion.PotionEffect; - -import net.md_5.bungee.api.ChatColor; -import net.tylermurphy.hideAndSeek.Main; -import net.tylermurphy.hideAndSeek.util.Functions; -import net.tylermurphy.hideAndSeek.util.Packet; - -public class EventListener implements Listener { - - @EventHandler - public void onPlayerJoin(PlayerJoinEvent event) { - if(status.equals("Playing") || status.equals("Starting")) { - Spectator.addEntry(event.getPlayer().getName()); - event.getPlayer().sendMessage(messagePrefix + "You have joined mid game, and thus have been placed on the spectator team."); - event.getPlayer().setGameMode(GameMode.SPECTATOR); - event.getPlayer().getInventory().clear(); - for(PotionEffect effect : event.getPlayer().getActivePotionEffects()){ - event.getPlayer().removePotionEffect(effect.getType()); - } - event.getPlayer().teleport(new Location(Bukkit.getWorld("hideandseek_"+spawnWorld), spawnPosition.getX(),spawnPosition.getY(),spawnPosition.getZ())); - } else if(status.equals("Setup") || status.equals("Standby")) { - Hider.addEntry(event.getPlayer().getName()); - event.getPlayer().setGameMode(GameMode.ADVENTURE); - event.getPlayer().teleport(new Location(Bukkit.getWorld(spawnWorld), spawnPosition.getX(),spawnPosition.getY(),spawnPosition.getZ())); - } - playerList.put(event.getPlayer().getName(), event.getPlayer()); - } - - @EventHandler - public void onQuit(PlayerQuitEvent event) { - playerList.remove(event.getPlayer().getName()); - Hider.removeEntry(event.getPlayer().getName()); - Seeker.removeEntry(event.getPlayer().getName()); - Spectator.removeEntry(event.getPlayer().getName()); - } - - @EventHandler - public void onEntityDamage(EntityDamageEvent event) { - if(event.getEntity() instanceof Player) { - if(!status.equals("Playing")) { - event.setCancelled(true); - return; - } - Player player = (Player) event.getEntity(); - if(player.getHealth()-event.getDamage() < 0) { - if(spawnPosition == null) return; - event.setCancelled(true); - player.setHealth(player.getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue()); - player.teleport(new Location(Bukkit.getWorld("hideandseek_"+spawnWorld), spawnPosition.getX(), spawnPosition.getY(), spawnPosition.getZ())); - Packet.playSound(player, Sound.ENTITY_PLAYER_DEATH, 1, 1); - if(Hider.hasEntry(event.getEntity().getName())) { - Bukkit.broadcastMessage(String.format(messagePrefix + "%s%s%s has died and became a seeker", ChatColor.GOLD, event.getEntity().getName(), ChatColor.WHITE)); - } - if(Seeker.hasEntry(event.getEntity().getName())) { - Bukkit.broadcastMessage(String.format(messagePrefix + "%s%s%s has been beat by a hider", ChatColor.RED, event.getEntity().getName(), ChatColor.WHITE)); - } - Seeker.addEntry(player.getName()); - Functions.resetPlayer(player); - for(Player temp : playerList.values()) { - Packet.setGlow(player, temp, false); - } - } - } - - } - - @EventHandler - public void onEntityDamageByEntity(EntityDamageByEntityEvent event) { - if(event.getEntity() instanceof ArmorStand) { - if(unbreakableArmorstands) { - if(event.getDamager() instanceof Player) { - Player player = (Player) event.getDamager(); - if(status.equals("Playing") || status.equals("Starting") || !player.hasPermission("hideandseek.blockbypass")) { - System.out.println('t'); - event.setCancelled(true); - } - } else { - event.setCancelled(true); - } - } - } - } - - @EventHandler - public void onPlayerInteractEntity(PlayerInteractEntityEvent event) { - if(!interactableArmorstands) { - if(event.getRightClicked() instanceof ArmorStand) { - if(status.equals("Playing") || status.equals("Starting") || !event.getPlayer().hasPermission("hideandseek.blockbypass")) { - event.setCancelled(true); - } - } - } - if(!interactableItemframes) { - if(event.getRightClicked() instanceof ItemFrame) { - if(status.equals("Playing") || status.equals("Starting") || !event.getPlayer().hasPermission("hideandseek.blockbypass")) { - event.setCancelled(true); - } - } - } - } - - @EventHandler - public void onPlayerInteractBlock(PlayerInteractEvent event) { - if(!interactableDoors) { - if( - event.getClickedBlock().getType() == Material.ACACIA_DOOR || - event.getClickedBlock().getType() == Material.BIRCH_DOOR || - event.getClickedBlock().getType() == Material.CRIMSON_DOOR || - event.getClickedBlock().getType() == Material.DARK_OAK_DOOR || - event.getClickedBlock().getType() == Material.IRON_DOOR || - event.getClickedBlock().getType() == Material.JUNGLE_DOOR || - event.getClickedBlock().getType() == Material.OAK_DOOR || - event.getClickedBlock().getType() == Material.SPRUCE_DOOR || - event.getClickedBlock().getType() == Material.WARPED_DOOR - ) { - if(status.equals("Playing") || status.equals("Starting") || !event.getPlayer().hasPermission("hideandseek.blockbypass")) { - event.setCancelled(true); - } - } - } - if(!interactableTrapdoors) { - if( - event.getClickedBlock().getType() == Material.ACACIA_TRAPDOOR || - event.getClickedBlock().getType() == Material.BIRCH_TRAPDOOR || - event.getClickedBlock().getType() == Material.CRIMSON_TRAPDOOR || - event.getClickedBlock().getType() == Material.DARK_OAK_TRAPDOOR || - event.getClickedBlock().getType() == Material.IRON_TRAPDOOR || - event.getClickedBlock().getType() == Material.JUNGLE_TRAPDOOR || - event.getClickedBlock().getType() == Material.OAK_TRAPDOOR || - event.getClickedBlock().getType() == Material.SPRUCE_TRAPDOOR || - event.getClickedBlock().getType() == Material.WARPED_TRAPDOOR - ) { - if(status.equals("Playing") || status.equals("Starting") || !event.getPlayer().hasPermission("hideandseek.blockbypass")) { - event.setCancelled(true); - } - } - } - if(!interactableFencegate) { - if( - event.getClickedBlock().getType() == Material.ACACIA_FENCE_GATE || - event.getClickedBlock().getType() == Material.BIRCH_FENCE_GATE || - event.getClickedBlock().getType() == Material.CRIMSON_FENCE_GATE || - event.getClickedBlock().getType() == Material.DARK_OAK_FENCE_GATE || - event.getClickedBlock().getType() == Material.JUNGLE_FENCE_GATE || - event.getClickedBlock().getType() == Material.OAK_FENCE_GATE || - event.getClickedBlock().getType() == Material.SPRUCE_FENCE_GATE || - event.getClickedBlock().getType() == Material.WARPED_FENCE_GATE - ) { - if(status.equals("Playing") || status.equals("Starting") || !event.getPlayer().hasPermission("hideandseek.blockbypass")) { - event.setCancelled(true); - } - } - } - } - - @EventHandler - public void onHangingBreakByEntity(HangingBreakByEntityEvent event) { - if(event.getEntity() instanceof ItemFrame) { - if(unbreakableItemframes) { - if(event.getRemover() instanceof Player) { - Player player = (Player) event.getRemover(); - if(status.equals("Playing") || status.equals("Starting") || !player.hasPermission("hideandseek.blockbypass")) { - event.setCancelled(true); - } - } else { - event.setCancelled(true); - } - - } - } - if(event.getEntity() instanceof Painting) { - if(unbreakableArmorstands) { - if(event.getRemover() instanceof Player) { - Player player = (Player) event.getRemover(); - if(status.equals("Playing") || status.equals("Starting") || !player.hasPermission("hideandseek.blockbypass")) { - event.setCancelled(true); - } - } else { - event.setCancelled(true); - } - } - } - } - - @EventHandler - public void onProjectile(ProjectileLaunchEvent event) { - if(!status.equals("Playing")) return; - if(event.getEntity() instanceof Snowball) { - Snowball snowball = (Snowball) event.getEntity(); - if(snowball.getShooter() instanceof Player) { - Player player = (Player) snowball.getShooter(); - if(Hider.hasEntry(player.getName())) { - glowTime++; - snowball.remove(); - player.getInventory().remove(Material.SNOWBALL); - int temp = gameId; - Bukkit.getServer().getScheduler().runTaskLater(Main.plugin, new Runnable() { - public void run() { - if(temp != gameId) return; - glowTime--; - } - }, 20 * 30); - } - } - } - } - - @EventHandler - public void onFoodLevelChange(FoodLevelChangeEvent event) { - event.setCancelled(true); - } - - @EventHandler - public void onPlayerRegainHealth(EntityRegainHealthEvent event) { - if(event.getRegainReason() == RegainReason.SATIATED || event.getRegainReason() == RegainReason.REGEN) - event.setCancelled(true); - } - - @EventHandler - public void onPlayerCommandPreProccess(PlayerCommandPreprocessEvent event) { - if(status.equals("Setup") || status.equals("Standby")) return; - String handle = event.getMessage().split(" ")[0].substring(1); - for(String blocked : blockedCommands) { - if(handle.equalsIgnoreCase(blocked) || handle.equalsIgnoreCase("minecraft:"+blocked)) { - event.setCancelled(true); - event.getPlayer().sendMessage(errorPrefix + "This command is blocked during gameplay!"); - break; - } - } - } -} diff --git a/src/main/java/net/tylermurphy/hideAndSeek/events/EventTick.java b/src/main/java/net/tylermurphy/hideAndSeek/events/EventTick.java deleted file mode 100644 index 042b0a3..0000000 --- a/src/main/java/net/tylermurphy/hideAndSeek/events/EventTick.java +++ /dev/null @@ -1,169 +0,0 @@ -package net.tylermurphy.hideAndSeek.events; - -import static net.tylermurphy.hideAndSeek.Store.*; - -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.Color; -import org.bukkit.FireworkEffect; -import org.bukkit.Location; -import org.bukkit.Sound; -import org.bukkit.World; -import org.bukkit.WorldBorder; -import org.bukkit.entity.EntityType; -import org.bukkit.entity.Firework; -import org.bukkit.entity.Player; -import org.bukkit.inventory.meta.FireworkMeta; -import org.bukkit.scoreboard.Scoreboard; -import org.bukkit.scoreboard.ScoreboardManager; -import org.bukkit.scoreboard.Team.Option; -import org.bukkit.scoreboard.Team.OptionStatus; - -import net.tylermurphy.hideAndSeek.commands.Stop; -import net.tylermurphy.hideAndSeek.util.Packet; - -public class EventTick { - - static int tick = 0; - - public static void onTick() { - - if(board == null) { - ScoreboardManager manager = Bukkit.getScoreboardManager(); - Scoreboard mainBoard = manager.getMainScoreboard(); - - try { mainBoard.registerNewTeam("Seeker");} catch(Exception e) {} - Seeker = mainBoard.getTeam("Seeker"); - Seeker.setColor(ChatColor.RED); - if(nametagsVisible) - Seeker.setOption(Option.NAME_TAG_VISIBILITY, OptionStatus.FOR_OTHER_TEAMS); - else - Seeker.setOption(Option.NAME_TAG_VISIBILITY, OptionStatus.NEVER); - Seeker.setAllowFriendlyFire(false); - - try { mainBoard.registerNewTeam("Hider");} catch(Exception e) {} - Hider = mainBoard.getTeam("Hider"); - Hider.setColor(ChatColor.GOLD); - if(nametagsVisible) - Hider.setOption(Option.NAME_TAG_VISIBILITY, OptionStatus.FOR_OWN_TEAM); - else - Hider.setOption(Option.NAME_TAG_VISIBILITY, OptionStatus.NEVER); - Hider.setAllowFriendlyFire(false); - - try { mainBoard.registerNewTeam("Spectator");} catch(Exception e) {} - Spectator = mainBoard.getTeam("Spectator"); - Spectator.setColor(ChatColor.GRAY); - Spectator.setOption(Option.NAME_TAG_VISIBILITY, OptionStatus.NEVER); - Spectator.setAllowFriendlyFire(false); - - board = mainBoard; - } - - for(String entry : Hider.getEntries()) { - if(!playerList.containsKey(entry)) { - Hider.removeEntry(entry); - } - } - - for(String entry : Seeker.getEntries()) { - if(!playerList.containsKey(entry)) { - Seeker.removeEntry(entry); - } - } - - for(String entry : Spectator.getEntries()) { - if(!playerList.containsKey(entry)) { - Spectator.removeEntry(entry); - } - } - - if(status.equals("Starting")) { - onStarting(); - } else if(status.equals("Playing")) { - onPlaying(); - } - - tick ++; - - if(( status.equals("Starting") || status.equals("Playing") ) && Hider.getSize() < 1) { - Bukkit.broadcastMessage(gameoverPrefix + "All hiders have been found."); - Stop.onStop(); - } - if(( status.equals("Starting") || status.equals("Playing") ) && Seeker.getSize() < 1) { - Bukkit.broadcastMessage(abortPrefix + "All seekers have quit."); - Stop.onStop(); - } - } - - private static void onStarting() { - for(String playerName : Seeker.getEntries()) { - Player player = playerList.get(playerName); - if(player != null) { - player.teleport(new Location(Bukkit.getWorld("hideandseek_"+spawnWorld), spawnPosition.getX(),spawnPosition.getY(),spawnPosition.getZ())); - } - } - } - - private static void onPlaying() { - if(decreaseBorder) { - World world = Bukkit.getWorld("world"); - WorldBorder border = world.getWorldBorder(); - border.setSize(border.getSize()-100,30); - decreaseBorder = false; - } - if(!tauntPlayer.equals("")) { - Player taunted = playerList.get(tauntPlayer); - if(taunted != null) { - Firework fw = (Firework) taunted.getLocation().getWorld().spawnEntity(taunted.getLocation(), EntityType.FIREWORK); - FireworkMeta fwm = fw.getFireworkMeta(); - fwm.setPower(4); - fwm.addEffect(FireworkEffect.builder() - .withColor(Color.BLUE) - .withColor(Color.RED) - .withColor(Color.YELLOW) - .with(FireworkEffect.Type.STAR) - .with(FireworkEffect.Type.BALL) - .with(FireworkEffect.Type.BALL_LARGE) - .flicker(true) - .withTrail() - .build()); - fw.setFireworkMeta(fwm); - Bukkit.getServer().broadcastMessage(tauntPrefix + " Taunt has been activated"); - } - tauntPlayer = ""; - } - for(String playerName : Hider.getEntries()) { - Player player = playerList.get(playerName); - int distance = 100; - for(String seekerName : Seeker.getEntries()) { - Player seeker = playerList.get(seekerName); - int temp = (int) player.getLocation().distance(seeker.getLocation()); - if(distance > temp) { - distance = temp; - } - if(glowTime > 0) { - Packet.setGlow(player, seeker, true); - } else { - Packet.setGlow(player, seeker, false); - } - } - switch(tick%10) { - case 0: - if(distance < 30) Packet.playSound(player, Sound.BLOCK_NOTE_BLOCK_BASEDRUM, .5f, 1f); - if(distance < 10) Packet.playSound(player, Sound.BLOCK_NOTE_BLOCK_BIT, .3f, 1f); - break; - case 3: - if(distance < 30) Packet.playSound(player, Sound.BLOCK_NOTE_BLOCK_BASEDRUM, .3f, 1f); - if(distance < 10) Packet.playSound(player, Sound.BLOCK_NOTE_BLOCK_BIT, .3f, 1f); - break; - case 6: - if(distance < 10) Packet.playSound(player, Sound.BLOCK_NOTE_BLOCK_BIT, .3f, 1f); - break; - case 9: - if(distance < 20) Packet.playSound(player, Sound.BLOCK_NOTE_BLOCK_BIT, .3f, 1f); - break; - } - } - } - -} diff --git a/src/main/java/net/tylermurphy/hideAndSeek/events/Glow.java b/src/main/java/net/tylermurphy/hideAndSeek/events/Glow.java new file mode 100644 index 0000000..ec94803 --- /dev/null +++ b/src/main/java/net/tylermurphy/hideAndSeek/events/Glow.java @@ -0,0 +1,69 @@ +package net.tylermurphy.hideAndSeek.events; + +import static net.tylermurphy.hideAndSeek.Store.*; + +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; + +import net.tylermurphy.hideAndSeek.Main; +import net.tylermurphy.hideAndSeek.util.Packet; + +public class Glow { + + private final int temp; + private int glowTime; + private boolean running; + + public Glow(int temp) { + this.temp = temp; + this.glowTime = 0; + } + + public void onProjectilve() { + glowTime++; + if(!running) + startGlow(); + } + + private void startGlow() { + running = true; + for(String hiderName : Hider) { + Player hider = playerList.get(hiderName); + if(hider == null) continue; + for(String seekerName : Seeker) { + Player seeker = playerList.get(seekerName); + if(seeker == null) continue; + Packet.setGlow(hider, seeker, true); + } + } + waitGlow(); + } + + private void waitGlow() { + Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(Main.plugin, new Runnable() { + public void run() { + if(temp != gameId) return; + glowTime--; + glowTime = Math.max(glowTime, 0); + if(glowTime == 0) { + stopGlow(); + } else { + waitGlow(); + } + } + }, 20*30); + } + + private void stopGlow() { + for(String hiderName : Hider) { + Player hider = playerList.get(hiderName); + if(hider == null) continue; + for(String seekerName : Seeker) { + Player seeker = playerList.get(seekerName); + if(seeker == null) continue; + Packet.setGlow(hider, seeker, false); + } + } + } + +} diff --git a/src/main/java/net/tylermurphy/hideAndSeek/events/Taunt.java b/src/main/java/net/tylermurphy/hideAndSeek/events/Taunt.java new file mode 100644 index 0000000..f2f09a1 --- /dev/null +++ b/src/main/java/net/tylermurphy/hideAndSeek/events/Taunt.java @@ -0,0 +1,100 @@ +package net.tylermurphy.hideAndSeek.events; + +import static net.tylermurphy.hideAndSeek.Store.*; + +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.Color; +import org.bukkit.FireworkEffect; +import org.bukkit.entity.EntityType; +import org.bukkit.entity.Firework; +import org.bukkit.entity.Player; +import org.bukkit.inventory.meta.FireworkMeta; + +import net.tylermurphy.hideAndSeek.Main; + +public class Taunt { + + private final int temp; + private String tauntPlayer; + + public Taunt(int temp) { + this.temp = temp; + } + + public void schedule() { + Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(Main.plugin, new Runnable() { + public void run() { + tryTaunt(); + } + },20*60*5); + } + + private void waitTaunt() { + Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(Main.plugin, new Runnable() { + public void run() { + tryTaunt(); + } + },20*60); + } + + private void tryTaunt() { + if(temp != gameId) return; + if(Math.random() > .8) { + executeTaunt(); + } else { + Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(Main.plugin, new Runnable() { + public void run() { + tryTaunt(); + } + },20*60); + } + } + + private void executeTaunt() { + Player taunted = null; + int rand = (int) (Math.random()*Hider.size()); + for(Player player : playerList.values()) { + if(Hider.contains(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"); + tauntPlayer = taunted.getName(); + Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(Main.plugin, new Runnable() { + public void run() { + if(temp != gameId) return; + Player taunted = playerList.get(tauntPlayer); + if(taunted != null) { + Firework fw = (Firework) taunted.getLocation().getWorld().spawnEntity(taunted.getLocation(), EntityType.FIREWORK); + FireworkMeta fwm = fw.getFireworkMeta(); + fwm.setPower(4); + fwm.addEffect(FireworkEffect.builder() + .withColor(Color.BLUE) + .withColor(Color.RED) + .withColor(Color.YELLOW) + .with(FireworkEffect.Type.STAR) + .with(FireworkEffect.Type.BALL) + .with(FireworkEffect.Type.BALL_LARGE) + .flicker(true) + .withTrail() + .build()); + fw.setFireworkMeta(fwm); + Bukkit.getServer().broadcastMessage(tauntPrefix + " Taunt has been activated"); + } + tauntPlayer = ""; + waitTaunt(); + } + },20*30); + } else { + waitTaunt(); + } + } + +} diff --git a/src/main/java/net/tylermurphy/hideAndSeek/events/Worldborder.java b/src/main/java/net/tylermurphy/hideAndSeek/events/Worldborder.java new file mode 100644 index 0000000..5e64381 --- /dev/null +++ b/src/main/java/net/tylermurphy/hideAndSeek/events/Worldborder.java @@ -0,0 +1,43 @@ +package net.tylermurphy.hideAndSeek.events; + +import org.bukkit.Bukkit; +import org.bukkit.World; +import org.bukkit.WorldBorder; + +import net.tylermurphy.hideAndSeek.Main; + +import static net.tylermurphy.hideAndSeek.Store.*; + +public class Worldborder { + + private final int temp; + + public Worldborder(int temp) { + this.temp = temp; + } + + public void schedule() { + Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(Main.plugin, new Runnable() { + public void run() { + decreaceWorldborder(); + } + },20*60*worldborderDelay); + } + + private void decreaceWorldborder() { + if(temp != gameId) return; + if(currentWorldborderSize-100 > 100) { + Bukkit.getServer().broadcastMessage(worldborderPrefix + "Worldborder decreacing by 100 blocks over the next 30s"); + currentWorldborderSize -= 100; + World world = Bukkit.getWorld("hideandseek_"+spawnWorld); + WorldBorder border = world.getWorldBorder(); + border.setSize(border.getSize()-100,30); + Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(Main.plugin, new Runnable() { + public void run() { + decreaceWorldborder(); + } + },20*60*worldborderDelay); + } + } + +} diff --git a/src/main/java/net/tylermurphy/hideAndSeek/util/Functions.java b/src/main/java/net/tylermurphy/hideAndSeek/util/Functions.java index 57ae441..55ff03a 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/util/Functions.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/util/Functions.java @@ -6,6 +6,7 @@ import java.util.ArrayList; import java.util.List; import org.bukkit.Bukkit; +import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.World; import org.bukkit.WorldBorder; @@ -19,6 +20,10 @@ import org.bukkit.potion.PotionData; import org.bukkit.potion.PotionEffect; import org.bukkit.potion.PotionEffectType; import org.bukkit.potion.PotionType; +import org.bukkit.scoreboard.Scoreboard; +import org.bukkit.scoreboard.ScoreboardManager; +import org.bukkit.scoreboard.Team.Option; +import org.bukkit.scoreboard.Team.OptionStatus; import net.tylermurphy.hideAndSeek.Main; @@ -30,7 +35,7 @@ public class Functions { player.removePotionEffect(effect.getType()); } player.addPotionEffect(new PotionEffect(PotionEffectType.DOLPHINS_GRACE, 1000000, 1, false, false)); - if(Seeker.getEntries().contains(player.getName())){ + if(Seeker.contains(player.getName())){ ItemStack diamondSword = new ItemStack(Material.DIAMOND_SWORD,1); diamondSword.addEnchantment(Enchantment.DAMAGE_ALL, 1); ItemMeta diamondSwordMeta = diamondSword.getItemMeta(); @@ -51,7 +56,7 @@ public class Functions { player.addPotionEffect(new PotionEffect(PotionEffectType.SLOW_FALLING, 1000000, 1, false, false)); player.addPotionEffect(new PotionEffect(PotionEffectType.WATER_BREATHING, 1000000, 10, false, false)); } - else if(Hider.getEntries().contains(player.getName())){ + else if(Hider.contains(player.getName())){ ItemStack stoneSword = new ItemStack(Material.STONE_SWORD,1); stoneSword.addEnchantment(Enchantment.DAMAGE_ALL, 2); ItemMeta stoneSwordMeta = stoneSword.getItemMeta(); @@ -87,15 +92,15 @@ public class Functions { } } - public static void resetWorldborder() { + public static void resetWorldborder(String worldName) { if(worldborderEnabled) { - World world = Bukkit.getWorld("world"); + World world = Bukkit.getWorld(worldName); WorldBorder border = world.getWorldBorder(); border.setSize(worldborderSize); border.setCenter(worldborderPosition.getX(), worldborderPosition.getZ()); currentWorldborderSize = worldborderSize; } else { - World world = Bukkit.getWorld("world"); + World world = Bukkit.getWorld(worldName); WorldBorder border = world.getWorldBorder(); border.setSize(30000000); border.setCenter(0, 0); @@ -119,5 +124,37 @@ public class Functions { unloadMap(mapname); loadMap(mapname); } + + public static void loadScoreboard() { + + ScoreboardManager manager = Bukkit.getScoreboardManager(); + Scoreboard mainBoard = manager.getMainScoreboard(); + + try { mainBoard.registerNewTeam("Seeker");} catch(Exception e) {} + SeekerTeam = mainBoard.getTeam("Seeker"); + SeekerTeam.setColor(ChatColor.RED); + if(nametagsVisible) + SeekerTeam.setOption(Option.NAME_TAG_VISIBILITY, OptionStatus.FOR_OTHER_TEAMS); + else + SeekerTeam.setOption(Option.NAME_TAG_VISIBILITY, OptionStatus.NEVER); + SeekerTeam.setAllowFriendlyFire(false); + + try { mainBoard.registerNewTeam("Hider");} catch(Exception e) {} + HiderTeam = mainBoard.getTeam("Hider"); + HiderTeam.setColor(ChatColor.GOLD); + if(nametagsVisible) + HiderTeam.setOption(Option.NAME_TAG_VISIBILITY, OptionStatus.FOR_OWN_TEAM); + else + HiderTeam.setOption(Option.NAME_TAG_VISIBILITY, OptionStatus.NEVER); + HiderTeam.setAllowFriendlyFire(false); + + try { mainBoard.registerNewTeam("Spectator");} catch(Exception e) {} + SpectatorTeam = mainBoard.getTeam("Spectator"); + SpectatorTeam.setColor(ChatColor.GRAY); + SpectatorTeam.setOption(Option.NAME_TAG_VISIBILITY, OptionStatus.NEVER); + SpectatorTeam.setAllowFriendlyFire(false); + + board = mainBoard; + } -} +} \ No newline at end of file -- cgit v1.2.3-freya