summaryrefslogtreewikicommitdiff
path: root/src/main/java/net/tylermurphy/hideAndSeek/manager
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/net/tylermurphy/hideAndSeek/manager')
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/manager/BoardManager.java40
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/manager/CommandManager.java60
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/manager/EventManager.java49
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/manager/TauntManager.java52
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/manager/TickManager.java241
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/manager/WorldborderManager.java44
6 files changed, 486 insertions, 0 deletions
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/manager/BoardManager.java b/src/main/java/net/tylermurphy/hideAndSeek/manager/BoardManager.java
new file mode 100644
index 0000000..db618b5
--- /dev/null
+++ b/src/main/java/net/tylermurphy/hideAndSeek/manager/BoardManager.java
@@ -0,0 +1,40 @@
+package net.tylermurphy.hideAndSeek.manager;
+
+import static net.tylermurphy.hideAndSeek.Store.*;
+
+import org.bukkit.Bukkit;
+import org.bukkit.ChatColor;
+import org.bukkit.scoreboard.Scoreboard;
+import org.bukkit.scoreboard.ScoreboardManager;
+import org.bukkit.scoreboard.Team.Option;
+import org.bukkit.scoreboard.Team.OptionStatus;
+
+public class BoardManager {
+
+ public static void loadScoreboard() {
+
+ ScoreboardManager manager = Bukkit.getScoreboardManager();
+ Scoreboard mainBoard = manager.getMainScoreboard();
+
+ try { mainBoard.registerNewTeam("Seeker");} catch(Exception e) {}
+ Seeker = mainBoard.getTeam("Seeker");
+ Seeker.setColor(ChatColor.RED);
+ 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);
+ 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;
+ }
+
+}
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/manager/CommandManager.java b/src/main/java/net/tylermurphy/hideAndSeek/manager/CommandManager.java
new file mode 100644
index 0000000..b50247a
--- /dev/null
+++ b/src/main/java/net/tylermurphy/hideAndSeek/manager/CommandManager.java
@@ -0,0 +1,60 @@
+package net.tylermurphy.hideAndSeek.manager;
+
+import java.util.Arrays;
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import net.tylermurphy.hideAndSeek.ICommand;
+import net.tylermurphy.hideAndSeek.commands.*;
+
+import static net.tylermurphy.hideAndSeek.Store.*;
+
+public class CommandManager implements CommandExecutor {
+
+ public static Map<String,ICommand> COMMAND_REGISTER = new LinkedHashMap<String,ICommand>();
+
+ 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 SetSeeker());
+ registerCommand(new SetSpawnLocation());
+ registerCommand(new SetBorder());
+ registerCommand(new EnableBorder());
+ }
+
+ 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.get("about").execute(sender, new String[0]);
+ } else if(!COMMAND_REGISTER.containsKey(args[0].toLowerCase())) {
+ COMMAND_REGISTER.get("about").execute(sender, Arrays.copyOfRange(args, 1, args.length));
+ } 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 CommandManager.handleCommand(sender, command, label, args);
+ }
+
+}
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/manager/EventManager.java b/src/main/java/net/tylermurphy/hideAndSeek/manager/EventManager.java
new file mode 100644
index 0000000..fbce79c
--- /dev/null
+++ b/src/main/java/net/tylermurphy/hideAndSeek/manager/EventManager.java
@@ -0,0 +1,49 @@
+package net.tylermurphy.hideAndSeek.manager;
+
+import static net.tylermurphy.hideAndSeek.Store.*;
+
+import org.bukkit.GameMode;
+import org.bukkit.Location;
+import org.bukkit.event.EventHandler;
+import org.bukkit.event.Listener;
+import org.bukkit.event.entity.PlayerDeathEvent;
+import org.bukkit.event.player.PlayerJoinEvent;
+import org.bukkit.event.player.PlayerQuitEvent;
+import org.bukkit.potion.PotionEffect;
+
+public class EventManager implements Listener {
+
+ @EventHandler
+ public void onPlayerJoin(PlayerJoinEvent event) {
+ if(status.equals("Playing") || status.equals("Starting")) {
+ Spectator.addEntry(event.getPlayer().getName());
+ resetPlayerData(event.getPlayer().getName(), false);
+ 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(event.getPlayer().getWorld(), spawnPosition.getX(),spawnPosition.getY(),spawnPosition.getZ()));
+ }
+ playerList.put(event.getPlayer().getName(), event.getPlayer());
+ if(board == null) BoardManager.loadScoreboard();
+ }
+
+ @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 onDeath(PlayerDeathEvent event) {
+ if(status.equals("Playing")) {
+ setPlayerData(event.getEntity().getName(), "Death", 1);
+ setPlayerData(event.getEntity().getName(), "GiveStatus", 1);
+ }
+ }
+
+}
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/manager/TauntManager.java b/src/main/java/net/tylermurphy/hideAndSeek/manager/TauntManager.java
new file mode 100644
index 0000000..6465e44
--- /dev/null
+++ b/src/main/java/net/tylermurphy/hideAndSeek/manager/TauntManager.java
@@ -0,0 +1,52 @@
+package net.tylermurphy.hideAndSeek.manager;
+
+import static net.tylermurphy.hideAndSeek.Store.*;
+
+import org.bukkit.Bukkit;
+import org.bukkit.ChatColor;
+import org.bukkit.entity.Player;
+
+import net.tylermurphy.hideAndSeek.Main;
+
+public class TauntManager {
+
+public static void schedule() {
+
+ 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() > .9) {
+ 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(ChatColor.YELLOW + "Taunt >" + ChatColor.WHITE + " 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();
+ }
+ }
+ }
+ }
+ });
+ }
+
+}
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/manager/TickManager.java b/src/main/java/net/tylermurphy/hideAndSeek/manager/TickManager.java
new file mode 100644
index 0000000..8ebe34b
--- /dev/null
+++ b/src/main/java/net/tylermurphy/hideAndSeek/manager/TickManager.java
@@ -0,0 +1,241 @@
+package net.tylermurphy.hideAndSeek.manager;
+
+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.Material;
+import org.bukkit.enchantments.Enchantment;
+import org.bukkit.entity.EntityType;
+import org.bukkit.entity.Firework;
+import org.bukkit.entity.Player;
+import org.bukkit.inventory.ItemStack;
+import org.bukkit.inventory.meta.FireworkMeta;
+import org.bukkit.inventory.meta.ItemMeta;
+import org.bukkit.inventory.meta.PotionMeta;
+import org.bukkit.potion.PotionData;
+import org.bukkit.potion.PotionEffect;
+import org.bukkit.potion.PotionEffectType;
+import org.bukkit.potion.PotionType;
+import org.bukkit.scoreboard.Team.Option;
+import org.bukkit.scoreboard.Team.OptionStatus;
+
+import net.tylermurphy.hideAndSeek.commands.Stop;
+
+public class TickManager {
+
+ static int tick = 0;
+
+ public static void onTick() {
+
+ if(board == null) return;
+
+ checkTeams();
+
+ if(status.equals("Standby") || status.equals("Setup")) {
+ onStandby();
+ } else if(status.equals("Starting")) {
+ onStarting();
+ } else if(status.equals("Playing")) {
+ onPlaying();
+ }
+
+ tick ++;
+ tick %= 10;
+
+ if(Hider.getSize() < 1) {
+ Stop.onStop(false);
+ }
+ if(Seeker.getSize() < 1) {
+ Stop.onStop(false);
+ }
+ }
+
+ private static void checkTeams() {
+
+ try { Hider.getSize(); }
+ catch (Exception e) {
+ board.registerNewTeam("Hider");
+ Hider = board.getTeam("Hider");
+ Hider.setColor(ChatColor.GOLD);
+ Hider.setOption(Option.NAME_TAG_VISIBILITY, OptionStatus.NEVER);
+ Hider.setAllowFriendlyFire(false);
+ }
+
+ try { Seeker.getSize(); }
+ catch (Exception e) {
+ board.registerNewTeam("Seeker");
+ Seeker = board.getTeam("Seeker");
+ Seeker.setColor(ChatColor.RED);
+ Seeker.setOption(Option.NAME_TAG_VISIBILITY, OptionStatus.NEVER);
+ Seeker.setAllowFriendlyFire(false);
+ }
+
+ try { Spectator.getSize(); }
+ catch (Exception e) {
+ board.registerNewTeam("Spectator");
+ Spectator = board.getTeam("Spectator");
+ Spectator.setColor(ChatColor.GRAY);
+ Spectator.setOption(Option.NAME_TAG_VISIBILITY, OptionStatus.NEVER);
+ Spectator.setAllowFriendlyFire(false);
+ }
+
+ 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);
+ }
+ }
+ }
+
+ private static void onStandby() {
+ for(Player player : playerList.values()) {
+ player.addPotionEffect(new PotionEffect(PotionEffectType.REGENERATION, 1000000, 127, false, false));
+ }
+ }
+
+ private static void onStarting() {
+ for(String playerName : Seeker.getEntries()) {
+ Player player = playerList.get(playerName);
+ if(player != null) {
+ player.teleport(new Location(player.getWorld(), spawnPosition.getX(),spawnPosition.getY(),spawnPosition.getZ()));
+ }
+ }
+ }
+
+ private static void onPlaying() {
+ if(decreaseBorder) {
+ Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), "worldborder add -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(2);
+ 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(ChatColor.YELLOW + "Taunt >" + ChatColor.WHITE + " Taunt has been activated");
+ }
+ tauntPlayer = "";
+ }
+ for(Player player : playerList.values()) {
+ player.addPotionEffect(new PotionEffect(PotionEffectType.DOLPHINS_GRACE, 1000000, 1, false, false));
+ if(getPlayerData(player.getName(),"GiveStatus") > 0) {
+ setPlayerData(player.getName(),"GiveStatus",0);
+ player.getInventory().clear();
+ for(PotionEffect effect : player.getActivePotionEffects()){
+ player.removePotionEffect(effect.getType());
+ }
+ if(Seeker.getEntries().contains(player.getName())){
+ ItemStack diamondSword = new ItemStack(Material.DIAMOND_SWORD,1);
+ diamondSword.addEnchantment(Enchantment.DAMAGE_ALL, 1);
+ ItemMeta diamondSwordMeta = diamondSword.getItemMeta();
+ diamondSwordMeta.setDisplayName("Seeker Sword");
+ diamondSwordMeta.setUnbreakable(true);
+ diamondSword.setItemMeta(diamondSwordMeta);
+ player.getInventory().addItem(diamondSword);
+
+ ItemStack wackyStick = new ItemStack(Material.STICK,1);
+ wackyStick.addUnsafeEnchantment(Enchantment.KNOCKBACK, 3);
+ ItemMeta wackyStickMeta = wackyStick.getItemMeta();
+ wackyStickMeta.setDisplayName("Wacky Stick");
+ wackyStick.setItemMeta(wackyStickMeta);
+ player.getInventory().addItem(wackyStick);
+ }
+ else if(Hider.getEntries().contains(player.getName())){
+ ItemStack stoneSword = new ItemStack(Material.STONE_SWORD,1);
+ stoneSword.addEnchantment(Enchantment.DAMAGE_ALL, 2);
+ ItemMeta stoneSwordMeta = stoneSword.getItemMeta();
+ stoneSwordMeta.setDisplayName("Hider Sword");
+ stoneSwordMeta.setUnbreakable(true);
+ stoneSword.setItemMeta(stoneSwordMeta);
+ player.getInventory().addItem(stoneSword);
+
+ ItemStack splashPotion = new ItemStack(Material.SPLASH_POTION,1);
+ PotionMeta splashPotionMeta = (PotionMeta) splashPotion.getItemMeta();
+ splashPotionMeta.setBasePotionData(new PotionData(PotionType.REGEN));
+ splashPotion.setItemMeta(splashPotionMeta);
+ player.getInventory().addItem(splashPotion);
+
+ ItemStack potion = new ItemStack(Material.POTION,2);
+ PotionMeta potionMeta = (PotionMeta) potion.getItemMeta();
+ potionMeta.setBasePotionData(new PotionData(PotionType.INSTANT_HEAL));
+ potion.setItemMeta(potionMeta);
+ player.getInventory().addItem(potion);
+ }
+ }
+ if(getPlayerData(player.getName(),"Death") > 0) {
+ setPlayerData(player.getName(),"Death",0);
+ Seeker.addEntry(player.getName());
+ }
+ }
+ for(String playerName : Seeker.getEntries()) {
+ Player player = playerList.get(playerName);
+ if(player != null) {
+ player.addPotionEffect(new PotionEffect(PotionEffectType.SPEED, 1000000, 2, false, false));
+ player.addPotionEffect(new PotionEffect(PotionEffectType.JUMP, 1000000, 1, false, false));
+ player.addPotionEffect(new PotionEffect(PotionEffectType.SLOW_FALLING, 1000000, 1, false, false));
+ player.addPotionEffect(new PotionEffect(PotionEffectType.WATER_BREATHING, 1000000, 10, false, false));
+ }
+ }
+ for(String playerName : Hider.getEntries()) {
+ Player player = playerList.get(playerName);
+ if(player != null) {
+ player.addPotionEffect(new PotionEffect(PotionEffectType.WATER_BREATHING, 1000000, 1, false, false));
+ }
+ 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;
+ }
+ }
+ int x = player.getLocation().getBlockX();
+ int y = player.getLocation().getBlockY();
+ int z = player.getLocation().getBlockZ();
+ switch(tick) {
+ case 0:
+ if(distance < 30) Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), String.format("playsound minecraft:block.note_block.basedrum master %s %s %s %s .5 1",player.getName(),x,y,z));
+ if(distance < 10) Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), String.format("playsound minecraft:block.note_block.bit master %s %s %s %s .3 1",player.getName(),x,y,z));
+ break;
+ case 3:
+ if(distance < 30) Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), String.format("playsound minecraft:block.note_block.basedrum master %s %s %s %s 3.31",player.getName(),x,y,z));
+ if(distance < 10) Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), String.format("playsound minecraft:block.note_block.bit master %s %s %s %s .3 1",player.getName(),x,y,z));
+ break;
+ case 6:
+ if(distance < 10) Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), String.format("playsound minecraft:block.note_block.bit master %s %s %s %s .3 1",player.getName(),x,y,z));
+ break;
+ case 9:
+ if(distance < 20) Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), String.format("playsound minecraft:block.note_block.bit master %s %s %s %s .3 1",player.getName(),x,y,z));
+ break;
+ }
+ }
+ }
+
+}
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/manager/WorldborderManager.java b/src/main/java/net/tylermurphy/hideAndSeek/manager/WorldborderManager.java
new file mode 100644
index 0000000..aa0011c
--- /dev/null
+++ b/src/main/java/net/tylermurphy/hideAndSeek/manager/WorldborderManager.java
@@ -0,0 +1,44 @@
+package net.tylermurphy.hideAndSeek.manager;
+
+import static net.tylermurphy.hideAndSeek.Store.*;
+
+import org.bukkit.Bukkit;
+
+import net.md_5.bungee.api.ChatColor;
+import net.tylermurphy.hideAndSeek.Main;
+
+public class WorldborderManager {
+
+ public static void schedule() {
+
+ 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(ChatColor.RED + "World Border> " + ChatColor.WHITE + "Worldborder decreacing by 100 blocks over the next 30s");
+ currentWorldborderSize -= 100;
+ decreaseBorder = true;
+ } else {
+ break;
+ }
+ }
+ }
+ });
+ }
+
+ public static void reset() {
+ if(worldborderEnabled) {
+ Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), "worldborder set "+worldborderSize);
+ Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), String.format("worldborder center %s %s",worldborderPosition.getBlockX(),worldborderPosition.getBlockZ()));
+ currentWorldborderSize = worldborderSize;
+ } else {
+ Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), "worldborder set 30000000");
+ Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), "worldborder center 0 0");
+ }
+ }
+
+}