diff options
Diffstat (limited to 'src/main/java/net/tylermurphy/hideAndSeek/events')
5 files changed, 212 insertions, 429 deletions
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); + } + } + +} |