diff options
author | Tyler Murphy <tylermurphy534@gmail.com> | 2021-08-13 16:49:36 -0400 |
---|---|---|
committer | Tyler Murphy <tylermurphy534@gmail.com> | 2021-08-13 16:49:36 -0400 |
commit | 173d4b0e6a1eca9d088b0bcf8b81c82494d658d6 (patch) | |
tree | 0ea188aae579b99336b0df331422868cc9279e22 /src/main/java/net/tylermurphy/hideAndSeek/manager | |
download | kenshinshideandseek-173d4b0e6a1eca9d088b0bcf8b81c82494d658d6.tar.gz kenshinshideandseek-173d4b0e6a1eca9d088b0bcf8b81c82494d658d6.tar.bz2 kenshinshideandseek-173d4b0e6a1eca9d088b0bcf8b81c82494d658d6.zip |
1.0.0
Diffstat (limited to 'src/main/java/net/tylermurphy/hideAndSeek/manager')
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"); + } + } + +} |