diff options
Diffstat (limited to 'src/main/java/net/tylermurphy/hideAndSeek/manager/EventManager.java')
-rw-r--r-- | src/main/java/net/tylermurphy/hideAndSeek/manager/EventManager.java | 56 |
1 files changed, 41 insertions, 15 deletions
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/manager/EventManager.java b/src/main/java/net/tylermurphy/hideAndSeek/manager/EventManager.java index 129d684..9983202 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/manager/EventManager.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/manager/EventManager.java @@ -5,26 +5,29 @@ 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.PlayerDeathEvent; +import org.bukkit.event.entity.EntityDamageEvent; +import org.bukkit.event.entity.EntityRegainHealthEvent; +import org.bukkit.event.entity.EntityRegainHealthEvent.RegainReason; 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 EventManager implements Listener { - + @EventHandler public void onPlayerJoin(PlayerJoinEvent event) { - if(Bukkit.getScoreboardManager() != null && board == null) { - BoardManager.loadScoreboard(); - } 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."); @@ -49,18 +52,28 @@ public class EventManager implements Listener { } @EventHandler - public void onDeath(PlayerDeathEvent event) { - if(status.equals("Playing")) { - if(Hider.hasEntry(event.getEntity().getName())) { - Bukkit.getServer().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.getServer().broadcastMessage(String.format(messagePrefix + "%s%s%s has been beat by a hider", ChatColor.RED, event.getEntity().getName(), ChatColor.WHITE)); + public void onPlayerDamage(EntityDamageEvent event) { + if(event.getEntity() instanceof Player) { + 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(status.equals("Playing")) { + Functions.resetPlayer(player); + 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.giveItems(event.getEntity()); - Seeker.addEntry(event.getEntity().getName()); } + } @EventHandler @@ -73,9 +86,22 @@ public class EventManager implements Listener { 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 onPlayerRegainHealth(EntityRegainHealthEvent event) { + if(event.getRegainReason() == RegainReason.SATIATED || event.getRegainReason() == RegainReason.REGEN) + event.setCancelled(true); + } } |