diff options
author | Tyler Murphy <tylermurphy534@gmail.com> | 2021-08-23 13:57:50 -0400 |
---|---|---|
committer | Tyler Murphy <tylermurphy534@gmail.com> | 2021-08-23 13:57:50 -0400 |
commit | 93dd4cfcc4e89448eb69d00b9a55145121467aa5 (patch) | |
tree | e73e8ad0eb3bb61cd358c2f93c65d65188c2e49c /src/main/java/net/tylermurphy/hideAndSeek/events | |
parent | severe give items bug fix (diff) | |
download | kenshinshideandseek-93dd4cfcc4e89448eb69d00b9a55145121467aa5.tar.gz kenshinshideandseek-93dd4cfcc4e89448eb69d00b9a55145121467aa5.tar.bz2 kenshinshideandseek-93dd4cfcc4e89448eb69d00b9a55145121467aa5.zip |
refactoring, command restructure, bug fixes, glow rewrite
Diffstat (limited to 'src/main/java/net/tylermurphy/hideAndSeek/events')
-rw-r--r-- | src/main/java/net/tylermurphy/hideAndSeek/events/EventListener.java | 115 | ||||
-rw-r--r-- | src/main/java/net/tylermurphy/hideAndSeek/events/EventTick.java | 139 |
2 files changed, 254 insertions, 0 deletions
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/events/EventListener.java b/src/main/java/net/tylermurphy/hideAndSeek/events/EventListener.java new file mode 100644 index 0000000..7c095b1 --- /dev/null +++ b/src/main/java/net/tylermurphy/hideAndSeek/events/EventListener.java @@ -0,0 +1,115 @@ +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.Player; +import org.bukkit.entity.Snowball; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +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.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; + +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(event.getPlayer().getWorld(), spawnPosition.getX(),spawnPosition.getY(),spawnPosition.getZ())); + } else if(status.equals("Setup") || status.equals("Standby")) { + Hider.addEntry(event.getPlayer().getName()); + } + 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 onPlayerDamage(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(player.getWorld(), spawnPosition.getX(), spawnPosition.getY(), spawnPosition.getZ())); + Functions.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 become 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); + } + } + + } + + @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); + } +} diff --git a/src/main/java/net/tylermurphy/hideAndSeek/events/EventTick.java b/src/main/java/net/tylermurphy/hideAndSeek/events/EventTick.java new file mode 100644 index 0000000..a0bf36a --- /dev/null +++ b/src/main/java/net/tylermurphy/hideAndSeek/events/EventTick.java @@ -0,0 +1,139 @@ +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.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; + +import net.tylermurphy.hideAndSeek.commands.Stop; +import net.tylermurphy.hideAndSeek.util.Functions; + +public class EventTick { + + static int tick = 0; + + public static void onTick() { + + if(board == null) { + Functions.loadScoreboard(); + } + + Functions.emptyOfflinePlayers(); + + if(status.equals("Starting")) { + onStarting(); + } else if(status.equals("Playing")) { + onPlaying(); + } + + tick ++; + + if(( status.equals("Starting") || status.equals("Playing") ) && Hider.getSize() < 1) { + Bukkit.broadcastMessage(messagePrefix + "Game over! All hiders have been found."); + Stop.onStop(); + } + if(( status.equals("Starting") || status.equals("Playing") ) && Seeker.getSize() < 1) { + Bukkit.broadcastMessage(messagePrefix + "Game has ended as 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(player.getWorld(), 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(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)); + } + 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; + } + if(glowTime > 0) { + Functions.setGlow(player, seeker, true); + } else { + Functions.setGlow(player, seeker, false); + } + } + switch(tick%10) { + case 0: + if(distance < 30) Functions.playSound(player, Sound.BLOCK_NOTE_BLOCK_BASEDRUM, .5f, 1f); + if(distance < 10) Functions.playSound(player, Sound.BLOCK_NOTE_BLOCK_BIT, .3f, 1f); + break; + case 3: + if(distance < 30) Functions.playSound(player, Sound.BLOCK_NOTE_BLOCK_BASEDRUM, .3f, 1f); + if(distance < 10) Functions.playSound(player, Sound.BLOCK_NOTE_BLOCK_BIT, .3f, 1f); + break; + case 6: + if(distance < 10) Functions.playSound(player, Sound.BLOCK_NOTE_BLOCK_BIT, .3f, 1f); + break; + case 9: + if(distance < 20) Functions.playSound(player, Sound.BLOCK_NOTE_BLOCK_BIT, .3f, 1f); + break; + } + } + } + +} |