diff options
author | Tyler Murphy <tylermurphy534@gmail.com> | 2021-10-17 22:53:32 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-10-17 22:53:32 -0400 |
commit | 3ad77301c9e5d05e630fac97090c792c9a46ba5f (patch) | |
tree | ee3506b113bf347e64dfac50930b688eed781453 /src/main/java/net/tylermurphy/hideAndSeek/bukkit | |
parent | 1.3.0 beta 5 (diff) | |
parent | lobby bug fixes, titles, game time (diff) | |
download | kenshinshideandseek-3ad77301c9e5d05e630fac97090c792c9a46ba5f.tar.gz kenshinshideandseek-3ad77301c9e5d05e630fac97090c792c9a46ba5f.tar.bz2 kenshinshideandseek-3ad77301c9e5d05e630fac97090c792c9a46ba5f.zip |
Merge pull request #7 from tylermurphy534/1.3.0beta6
1.3.0beta6
Diffstat (limited to 'src/main/java/net/tylermurphy/hideAndSeek/bukkit')
3 files changed, 89 insertions, 181 deletions
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/bukkit/CommandHandler.java b/src/main/java/net/tylermurphy/hideAndSeek/bukkit/CommandHandler.java index 73bfd08..f15e68b 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/bukkit/CommandHandler.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/bukkit/CommandHandler.java @@ -26,12 +26,17 @@ public class CommandHandler { public static void registerCommands() { registerCommand(new About()); registerCommand(new Help()); + registerCommand(new Setup()); registerCommand(new Start()); registerCommand(new Stop()); registerCommand(new SetSpawnLocation()); + registerCommand(new SetLobbyLocation()); + registerCommand(new SetExitLocation()); registerCommand(new SetBorder()); registerCommand(new Reload()); registerCommand(new SaveMap()); + registerCommand(new Join()); + registerCommand(new Leave()); } public static boolean handleCommand(CommandSender sender, Command cmd, String label, String[] args) { diff --git a/src/main/java/net/tylermurphy/hideAndSeek/bukkit/EventListener.java b/src/main/java/net/tylermurphy/hideAndSeek/bukkit/EventListener.java index c46dc87..1136ea4 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/bukkit/EventListener.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/bukkit/EventListener.java @@ -8,9 +8,7 @@ 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.Entity; import org.bukkit.entity.Player; import org.bukkit.entity.Snowball; import org.bukkit.event.EventHandler; @@ -21,10 +19,6 @@ 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.PlayerKickEvent; import org.bukkit.event.player.PlayerQuitEvent; @@ -39,23 +33,33 @@ public class EventListener implements Listener { @EventHandler public void onPlayerJoin(PlayerJoinEvent event) { + event.getPlayer().setLevel(0); + if(!Functions.setup()) return; + HiderTeam.removeEntry(event.getPlayer().getName()); + SeekerTeam.removeEntry(event.getPlayer().getName()); + SpectatorTeam.removeEntry(event.getPlayer().getName()); if(status.equals("Playing") || status.equals("Starting")) { - Spectator.add(event.getPlayer().getName()); - SpectatorTeam.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()); + if(event.getPlayer().getWorld().getName().equals("hideandseek_"+spawnWorld)) { + Spectator.add(event.getPlayer().getName()); + SpectatorTeam.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())); + } + if(event.getPlayer().getWorld().getName().equals(spawnWorld)) { + event.getPlayer().teleport(new Location(Bukkit.getWorld(exitWorld), exitPosition.getX(), exitPosition.getY(), exitPosition.getZ())); + event.getPlayer().setGameMode(GameMode.ADVENTURE); } - event.getPlayer().teleport(new Location(Bukkit.getWorld("hideandseek_"+spawnWorld), spawnPosition.getX(),spawnPosition.getY(),spawnPosition.getZ())); } else if(status.equals("Setup") || status.equals("Standby")) { - Hider.add(event.getPlayer().getName()); - HiderTeam.addEntry(event.getPlayer().getName()); - event.getPlayer().setGameMode(GameMode.ADVENTURE); - event.getPlayer().teleport(new Location(Bukkit.getWorld(spawnWorld), spawnPosition.getX(),spawnPosition.getY(),spawnPosition.getZ())); + if(Functions.playerInProtectedWorld(event.getPlayer())){ + event.getPlayer().teleport(new Location(Bukkit.getWorld(exitWorld), exitPosition.getX(), exitPosition.getY(), exitPosition.getZ())); + event.getPlayer().setGameMode(GameMode.ADVENTURE); + } } - playerList.put(event.getPlayer().getName(), event.getPlayer()); } @EventHandler @@ -85,10 +89,22 @@ public class EventListener implements Listener { @EventHandler public void onEntityDamage(EntityDamageEvent event) { if(event.getEntity() instanceof Player) { + Player p = (Player) event.getEntity(); + if(!playerList.containsKey(p.getName())) return; if(!status.equals("Playing")) { event.setCancelled(true); return; } + Player attacker = null; + if(event instanceof EntityDamageByEntityEvent) { + Entity damager = ((EntityDamageByEntityEvent)event).getDamager(); + if(damager instanceof Player) { + attacker = (Player) damager; + if(Hider.contains(attacker.getName()) && Hider.contains(p.getName())) event.setCancelled(true); + if(Seeker.contains(attacker.getName()) && Seeker.contains(p.getName())) event.setCancelled(true); + if(Spectator.contains(attacker.getName())) event.setCancelled(true); + } + } Player player = (Player) event.getEntity(); if(player.getHealth()-event.getDamage() < 0) { if(spawnPosition == null) return; @@ -96,138 +112,20 @@ public class EventListener implements Listener { 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.contains(event.getEntity().getName())) { - Bukkit.broadcastMessage(String.format(messagePrefix + "%s%s%s was found and became a seeker", ChatColor.GOLD, event.getEntity().getName(), ChatColor.WHITE)); - } if(Seeker.contains(event.getEntity().getName())) { Bukkit.broadcastMessage(String.format(messagePrefix + "%s%s%s was killed", ChatColor.RED, event.getEntity().getName(), ChatColor.WHITE)); } - Seeker.add(player.getName()); - Hider.remove(player.getName()); - SeekerTeam.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); + if(Hider.contains(event.getEntity().getName())) { + if(attacker == null) { + Functions.broadcastMessage(String.format(messagePrefix + "%s%s%s was found and became a seeker", ChatColor.GOLD, event.getEntity().getName(), ChatColor.WHITE)); + } else { + Functions.broadcastMessage(String.format(messagePrefix + "%s%s%s was found by %s%s%s and became a seeker", ChatColor.GOLD, event.getEntity().getName(), ChatColor.WHITE, ChatColor.RED, attacker.getName(), ChatColor.WHITE)); } - } else { - event.setCancelled(true); + Hider.remove(player.getName()); + Seeker.add(player.getName()); + SeekerTeam.addEntry(player.getName()); } + Functions.resetPlayer(player); } } } @@ -238,6 +136,7 @@ public class EventListener implements Listener { if(event.getEntity() instanceof Snowball) { Snowball snowball = (Snowball) event.getEntity(); if(snowball.getShooter() instanceof Player) { + if(!Functions.playerInProtectedWorld((Player) snowball.getShooter())) return; Player player = (Player) snowball.getShooter(); if(Hider.contains(player.getName())) { Main.glow.onProjectilve(); @@ -250,25 +149,19 @@ public class EventListener implements Listener { @EventHandler public void onFoodLevelChange(FoodLevelChangeEvent event) { - event.setCancelled(true); + if(event.getEntity() instanceof Player) { + if(!playerList.containsKey(event.getEntity().getName())) return; + event.setCancelled(true); + } } @EventHandler public void onPlayerRegainHealth(EntityRegainHealthEvent event) { - if(event.getRegainReason() == RegainReason.SATIATED || event.getRegainReason() == RegainReason.REGEN) - event.setCancelled(true); + if(event.getRegainReason() == RegainReason.SATIATED || event.getRegainReason() == RegainReason.REGEN) { + if(event.getEntity() instanceof Player) { + if(!playerList.containsKey(event.getEntity().getName())) return; + 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/bukkit/Tick.java b/src/main/java/net/tylermurphy/hideAndSeek/bukkit/Tick.java index eccaf39..7224210 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/bukkit/Tick.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/bukkit/Tick.java @@ -2,9 +2,7 @@ package net.tylermurphy.hideAndSeek.bukkit; import static net.tylermurphy.hideAndSeek.Store.*; - import org.bukkit.Bukkit; -import org.bukkit.Location; import org.bukkit.Sound; import org.bukkit.entity.Player; @@ -22,34 +20,31 @@ public class Tick { Functions.loadScoreboard(); } - if(status.equals("Starting")) { - onStarting(); - } else if(status.equals("Playing")) { + if(status.equals("Standby")) { + tick = 0; + } + + if(status.equals("Playing")) { onPlaying(); } - tick ++; - if(( status.equals("Starting") || status.equals("Playing") ) && Hider.size() < 1) { - Bukkit.broadcastMessage(gameoverPrefix + "All hiders have been found."); + if(announceMessagesToNonPlayers) Bukkit.broadcastMessage(gameoverPrefix + "All hiders have been found."); + else Functions.broadcastMessage(gameoverPrefix + "All hiders have been found."); Stop.onStop(); } if(( status.equals("Starting") || status.equals("Playing") ) && Seeker.size() < 1) { - Bukkit.broadcastMessage(abortPrefix + "All seekers have quit."); + if(announceMessagesToNonPlayers) Bukkit.broadcastMessage(abortPrefix + "All seekers have quit."); + else Functions.broadcastMessage(abortPrefix + "All seekers have quit."); Stop.onStop(); } - } - - private static void onStarting() { - for(String playerName : Seeker) { - 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() { + + tick ++; + for(String playerName : Hider) { Player player = playerList.get(playerName); int distance = 100; @@ -76,6 +71,21 @@ public class Tick { if(distance < 20) Packet.playSound(player, Sound.BLOCK_NOTE_BLOCK_BIT, .3f, 1f); break; } + + } + + if(tick%20 == 0) { + if(gameLength > 0) { + timeLeft--; + for(Player player : playerList.values()) { + player.setLevel(timeLeft); + } + if(timeLeft < 1) { + if(announceMessagesToNonPlayers) Bukkit.broadcastMessage(gameoverPrefix + "Seekers ran out of time. Hiders win!"); + else Functions.broadcastMessage(gameoverPrefix + "Seekers ran out of time. Hiders win!"); + Stop.onStop(); + } + } } } }
\ No newline at end of file |