summaryrefslogtreewikicommitdiff
diff options
context:
space:
mode:
authorTyler Murphy <tylermurphy534@gmail.com>2021-10-17 22:52:57 -0400
committerTyler Murphy <tylermurphy534@gmail.com>2021-10-17 22:52:57 -0400
commitd37ad3fc4500cf4d35db718bdaf964bad03840e4 (patch)
treeee3506b113bf347e64dfac50930b688eed781453
parentfixed possible exception on player join (diff)
downloadkenshinshideandseek-d37ad3fc4500cf4d35db718bdaf964bad03840e4.tar.gz
kenshinshideandseek-d37ad3fc4500cf4d35db718bdaf964bad03840e4.tar.bz2
kenshinshideandseek-d37ad3fc4500cf4d35db718bdaf964bad03840e4.zip
lobby bug fixes, titles, game time
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/Main.java6
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/Store.java99
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/bukkit/CommandHandler.java2
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/bukkit/EventListener.java235
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/bukkit/Tick.java46
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/command/Join.java39
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/command/Leave.java21
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/command/Reload.java5
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/command/SetExitLocation.java49
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/command/SetLobbyLocation.java3
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/command/SetSpawnLocation.java2
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/command/Setup.java57
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/command/Start.java40
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/command/Stop.java11
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/util/Functions.java24
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/util/Packet.java2
16 files changed, 313 insertions, 328 deletions
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/Main.java b/src/main/java/net/tylermurphy/hideAndSeek/Main.java
index de6b043..67c9d16 100644
--- a/src/main/java/net/tylermurphy/hideAndSeek/Main.java
+++ b/src/main/java/net/tylermurphy/hideAndSeek/Main.java
@@ -1,7 +1,5 @@
package net.tylermurphy.hideAndSeek;
-import static net.tylermurphy.hideAndSeek.Store.*;
-
import java.io.File;
import java.util.List;
@@ -9,7 +7,6 @@ import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
-import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.scheduler.BukkitTask;
@@ -39,9 +36,6 @@ public class Main extends JavaPlugin implements Listener {
// Setup Initial Player Count
getServer().getPluginManager().registerEvents(new EventListener(), this);
- for (Player player : Bukkit.getServer().getOnlinePlayers()) {
- playerList.put(player.getName(), player);
- }
// Init Configuration
Store.loadConfig();
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/Store.java b/src/main/java/net/tylermurphy/hideAndSeek/Store.java
index ec64323..537ad7b 100644
--- a/src/main/java/net/tylermurphy/hideAndSeek/Store.java
+++ b/src/main/java/net/tylermurphy/hideAndSeek/Store.java
@@ -1,13 +1,11 @@
package net.tylermurphy.hideAndSeek;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
-import org.bukkit.Location;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.entity.Player;
@@ -20,13 +18,11 @@ public class Store {
public static Map<String,Player>
playerList = new HashMap<String,Player>();
- public static Map<String,Location>
- playerLastLocationList = new HashMap<String,Location>();
-
public static List<String>
Hider = new ArrayList<String>(),
Seeker = new ArrayList<String>(),
- Spectator = new ArrayList<String>();
+ Spectator = new ArrayList<String>(),
+ Deaths = new ArrayList<String>();
public static Scoreboard
board;
@@ -45,30 +41,21 @@ public class Store {
gameoverPrefix,
warningPrefix,
spawnWorld,
+ exitWorld,
+ lobbyWorld,
status = "Standby";
- public static Vector
+ public static Vector
spawnPosition,
lobbyPosition,
+ exitPosition,
worldborderPosition;
- public static List<String>
- blockedCommands;
-
public static boolean
nametagsVisible,
permissionsRequired,
- lobbyManualJoin,
- lobbyAnnounced,
+ announceMessagesToNonPlayers,
lobbyStarted = false,
- unbreakableArmorstands,
- unbreakablePaintings,
- unbreakableItemframes,
- interactableArmorstands,
- interactableItemframes,
- interactableDoors,
- interactableTrapdoors,
- interactableFencegate,
worldborderEnabled = false,
runningBackup = false;
@@ -77,7 +64,9 @@ public class Store {
gameId = 0,
worldborderSize,
worldborderDelay,
- currentWorldborderSize;
+ currentWorldborderSize,
+ gameLength,
+ timeLeft = 0;
public static FileConfiguration getConfig() {
return Main.plugin.getConfig();
@@ -92,16 +81,11 @@ public class Store {
Main.plugin.reloadConfig();
//Default
- getConfig().addDefault("spawn.x", 0);
- getConfig().addDefault("spawn.y", 0);
- getConfig().addDefault("spawn.z", 0);
- getConfig().addDefault("spawn.world", "world");
getConfig().addDefault("worldBorder.x", 0);
getConfig().addDefault("worldBorder.z", 0);
getConfig().addDefault("worldBorder.delay", 10);
getConfig().addDefault("worldBorder.size", 500);
getConfig().addDefault("worldBorder.enabled", false);
- getConfig().addDefault("blockedCommands", Arrays.asList("whisper","msg"));
getConfig().addDefault("prefix.default", "&9Hide and Seek > &f");
getConfig().addDefault("prefix.error", "&cError > &f");
getConfig().addDefault("prefix.taunt", "&eTaunt > &f");
@@ -111,35 +95,46 @@ public class Store {
getConfig().addDefault("prefix.warning", "&cWarning > &f");
getConfig().addDefault("nametagsVisible", false);
getConfig().addDefault("permissionsRequired", true);
- getConfig().addDefault("lobby.manualJoin", false);
- getConfig().addDefault("lobby.announceJoinAndLeave", false);
- getConfig().addDefault("lobby.spawn.x", 0);
- getConfig().addDefault("lobby.spawn.y", 0);
- getConfig().addDefault("lobby.spawn.z", 0);
- getConfig().addDefault("blockSettings.unbreakable.painting", false);
- getConfig().addDefault("blockSettings.unbreakable.armorstand", false);
- getConfig().addDefault("blockSettings.unbreakable.itemframe", false);
- getConfig().addDefault("blockSettings.interactable.armorstand", true);
- getConfig().addDefault("blockSettings.interactable.itemframe", true);
- getConfig().addDefault("blockSettings.interactable.door", true);
- getConfig().addDefault("blockSettings.interactable.trapdoor", true);
- getConfig().addDefault("blockSettings.interactable.fence", true);
+ getConfig().addDefault("announceMessagesToNonPlayers", false);
+ getConfig().addDefault("spawns.lobby.x", 0);
+ getConfig().addDefault("spawns.lobby.y", 0);
+ getConfig().addDefault("spawns.lobby.z", 0);
+ getConfig().addDefault("spawns.lobby.world", "world");
+ getConfig().addDefault("spawns.exit.x", 0);
+ getConfig().addDefault("spawns.exit.y", 0);
+ getConfig().addDefault("spawns.exit.z", 0);
+ getConfig().addDefault("spawns.exit.world", "world");
+ getConfig().addDefault("spawns.game.x", 0);
+ getConfig().addDefault("spawns.game.y", 0);
+ getConfig().addDefault("spawns.game.z", 0);
+ getConfig().addDefault("spawns.game.world", "world");
getConfig().addDefault("minPlayers", 2);
+ getConfig().addDefault("gameLength", 600);
//Spawn
spawnPosition = new Vector(
- getConfig().getDouble("spawn.x"),
- Math.max(0,Math.min(255,getConfig().getDouble("spawn.y"))),
- getConfig().getDouble("spawn.z")
+ getConfig().getDouble("spawns.game.x"),
+ Math.max(0,Math.min(255,getConfig().getDouble("spawns.game.y"))),
+ getConfig().getDouble("spawns.game.z")
);
- spawnWorld = getConfig().getString("spawn.world");
+ spawnWorld = getConfig().getString("spawns.game.world");
///Lobby
lobbyPosition = new Vector(
- getConfig().getDouble("lobby.spawn.x"),
- Math.max(0,Math.min(255,getConfig().getDouble("lobby.spawn.y"))),
- getConfig().getDouble("lobby.spawn.z")
+ getConfig().getDouble("spawns.lobby.x"),
+ Math.max(0,Math.min(255,getConfig().getDouble("spawns.lobby.y"))),
+ getConfig().getDouble("spawns.lobby.z")
+ );
+ lobbyWorld = getConfig().getString("spawns.lobby.world");
+
+ announceMessagesToNonPlayers = getConfig().getBoolean("announceMessagesToNonPlayers");
+
+ exitPosition = new Vector(
+ getConfig().getDouble("spawns.exit.x"),
+ Math.max(0,Math.min(255,getConfig().getDouble("spawns.exit.y"))),
+ getConfig().getDouble("spawns.exit.z")
);
+ exitWorld = getConfig().getString("spawns.exit.world");
//World border
worldborderPosition = new Vector(
@@ -150,8 +145,6 @@ public class Store {
worldborderSize = Math.max(100,getConfig().getInt("worldBorder.size"));
worldborderDelay = Math.max(1,getConfig().getInt("worldBorder.delay"));
worldborderEnabled = getConfig().getBoolean("worldBorder.enabled");
- blockedCommands = getConfig().getStringList("blockedCommands");
- blockedCommands.add("team");
//Prefix
char SYMBOLE = '\u00A7';
@@ -168,16 +161,8 @@ public class Store {
//Other
nametagsVisible = getConfig().getBoolean("nametagsVisible");
permissionsRequired = getConfig().getBoolean("permissionsRequired");
- lobbyManualJoin = getConfig().getBoolean("lobby.manualJoin");
- unbreakablePaintings = getConfig().getBoolean("blockSettings.unbreakable.painting");
- unbreakableArmorstands = getConfig().getBoolean("blockSettings.unbreakable.armorstand");
- unbreakableItemframes = getConfig().getBoolean("blockSettings.unbreakable.itemframe");
- interactableArmorstands = getConfig().getBoolean("blockSettings.interactable.armorstand");
- interactableItemframes = getConfig().getBoolean("blockSettings.interactable.itemframe");
- interactableDoors = getConfig().getBoolean("blockSettings.interactable.door");
- interactableTrapdoors = getConfig().getBoolean("blockSettings.interactable.trapdoor");
- interactableFencegate = getConfig().getBoolean("blockSettings.interactable.fence");
minPlayers = Math.max(2,getConfig().getInt("minPlayers"));
+ gameLength = getConfig().getInt("gameLength");
getConfig().options().copyDefaults(true);
saveConfig();
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/bukkit/CommandHandler.java b/src/main/java/net/tylermurphy/hideAndSeek/bukkit/CommandHandler.java
index f688881..f15e68b 100644
--- a/src/main/java/net/tylermurphy/hideAndSeek/bukkit/CommandHandler.java
+++ b/src/main/java/net/tylermurphy/hideAndSeek/bukkit/CommandHandler.java
@@ -26,10 +26,12 @@ 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());
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/bukkit/EventListener.java b/src/main/java/net/tylermurphy/hideAndSeek/bukkit/EventListener.java
index 40167c4..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,39 +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")) {
- if(lobbyManualJoin) {
- event.getPlayer().teleport(new Location(Bukkit.getWorld(spawnWorld), spawnPosition.getX(),spawnPosition.getY(),spawnPosition.getZ()));
- if(event.getPlayer().getWorld().getName().equals("hideandseek_"+spawnWorld)) {
- return;
- } else return;
+ 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()));
}
- 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(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")) {
- if (lobbyManualJoin) {
- if(event.getPlayer().getWorld().getName().equals("hideandseek_"+spawnWorld)){
- if(lobbyPosition.getBlockX() != 0 || lobbyPosition.getBlockY() != 0 || lobbyPosition.getBlockZ() != 0) {
- event.getPlayer().teleport(new Location(Bukkit.getWorld(spawnWorld), lobbyPosition.getX(),lobbyPosition.getY(),lobbyPosition.getZ()));
- }
- return;
- }
- }
- Hider.add(event.getPlayer().getName());
- HiderTeam.addEntry(event.getPlayer().getName());
- event.getPlayer().setGameMode(GameMode.ADVENTURE);
- if(lobbyPosition.getBlockX() != 0 || lobbyPosition.getBlockY() != 0 || lobbyPosition.getBlockZ() != 0) {
- event.getPlayer().teleport(new Location(Bukkit.getWorld(spawnWorld), lobbyPosition.getX(),lobbyPosition.getY(),lobbyPosition.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
@@ -101,11 +89,22 @@ public class EventListener implements Listener {
@EventHandler
public void onEntityDamage(EntityDamageEvent event) {
if(event.getEntity() instanceof Player) {
- if(!Functions.playerInProtectedWorld((Player) event.getEntity())) return;
+ 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;
@@ -113,144 +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) {
- if(!Functions.playerInProtectedWorld((Player) event.getDamager())) return;
- 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(!Functions.playerInProtectedWorld((Player) event.getPlayer())) return;
- 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(!Functions.playerInProtectedWorld((Player) event.getPlayer())) return;
- 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(!Functions.playerInProtectedWorld((Player) event.getPlayer())) return;
- 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) {
- if(!Functions.playerInProtectedWorld((Player) event.getRemover())) return;
- 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) {
- if(!Functions.playerInProtectedWorld((Player) event.getRemover())) return;
- 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);
}
}
}
@@ -275,9 +150,8 @@ public class EventListener implements Listener {
@EventHandler
public void onFoodLevelChange(FoodLevelChangeEvent event) {
if(event.getEntity() instanceof Player) {
- if(playerList.containsKey(event.getEntity().getName())) {
- event.setCancelled(true);
- }
+ if(!playerList.containsKey(event.getEntity().getName())) return;
+ event.setCancelled(true);
}
}
@@ -285,24 +159,9 @@ public class EventListener implements Listener {
public void onPlayerRegainHealth(EntityRegainHealthEvent event) {
if(event.getRegainReason() == RegainReason.SATIATED || event.getRegainReason() == RegainReason.REGEN) {
if(event.getEntity() instanceof Player) {
- if(playerList.containsKey(event.getEntity().getName())) {
- event.setCancelled(true);
- }
+ if(!playerList.containsKey(event.getEntity().getName())) return;
+ event.setCancelled(true);
}
}
}
-
- @EventHandler
- public void onPlayerCommandPreProccess(PlayerCommandPreprocessEvent event) {
- if(status.equals("Setup") || status.equals("Standby")) return;
- if(!playerList.containsKey(event.getPlayer().getName())) 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
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/command/Join.java b/src/main/java/net/tylermurphy/hideAndSeek/command/Join.java
index 6dffe60..5168e25 100644
--- a/src/main/java/net/tylermurphy/hideAndSeek/command/Join.java
+++ b/src/main/java/net/tylermurphy/hideAndSeek/command/Join.java
@@ -1,10 +1,13 @@
package net.tylermurphy.hideAndSeek.command;
import org.bukkit.Bukkit;
+import org.bukkit.GameMode;
import org.bukkit.Location;
+import org.bukkit.attribute.Attribute;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
+import net.tylermurphy.hideAndSeek.util.Functions;
import net.tylermurphy.hideAndSeek.util.ICommand;
import static net.tylermurphy.hideAndSeek.Store.*;
@@ -12,16 +15,8 @@ import static net.tylermurphy.hideAndSeek.Store.*;
public class Join implements ICommand {
public void execute(CommandSender sender, String[] args) {
- if(!lobbyManualJoin) {
- sender.sendMessage(errorPrefix + "Manual join/leave isnt enabled in this server");
- return;
- }
- if(!status.equals("Standby")) {
- sender.sendMessage(errorPrefix + "Game is currently in session");
- return;
- }
- if(!lobbyStarted) {
- sender.sendMessage(errorPrefix + "There is currently no lobby in session");
+ if(!Functions.setup()) {
+ sender.sendMessage(errorPrefix + "Game is not setup. Run /hs setup to see what you needed to do");
return;
}
Player player = Bukkit.getServer().getPlayer(sender.getName());
@@ -30,15 +25,27 @@ public class Join implements ICommand {
return;
}
if(playerList.containsKey(player.getName())){
- sender.sendMessage(errorPrefix + "You are already in the lobby");
+ sender.sendMessage(errorPrefix + "You are already in the lobby/game");
return;
}
playerList.put(player.getName(), player);
- Hider.add(player.getName());
- HiderTeam.addEntry(player.getName());
- playerLastLocationList.put(player.getName(), player.getLocation());
- player.teleport(new Location(Bukkit.getWorld(spawnWorld), spawnPosition.getX(),spawnPosition.getY(),spawnPosition.getZ()));
- if(lobbyAnnounced) Bukkit.broadcastMessage(messagePrefix + sender.getName() + " has joined the HideAndSeek lobby");
+ if(status.equals("Standby")) {
+ Hider.add(player.getName());
+ HiderTeam.addEntry(player.getName());
+ if(announceMessagesToNonPlayers) Bukkit.broadcastMessage(messagePrefix + sender.getName() + " has joined the HideAndSeek lobby");
+ else Functions.broadcastMessage(messagePrefix + sender.getName() + " has joined the HideAndSeek lobby");
+ player.teleport(new Location(Bukkit.getWorld(lobbyWorld), lobbyPosition.getX(),lobbyPosition.getY(),lobbyPosition.getZ()));
+ player.setGameMode(GameMode.ADVENTURE);
+ } else {
+ Spectator.add(player.getName());
+ SpectatorTeam.addEntry(player.getName());
+ player.sendMessage(messagePrefix + "You have joined mid game and became a spectator");
+ player.setGameMode(GameMode.SPECTATOR);
+ player.teleport(new Location(Bukkit.getWorld("hideandseek_"+spawnWorld), spawnPosition.getX(),spawnPosition.getY(),spawnPosition.getZ()));
+ }
+
+ player.setFoodLevel(20);
+ player.setHealth(player.getAttribute(Attribute.GENERIC_MAX_HEALTH).getBaseValue());
}
public String getLabel() {
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/command/Leave.java b/src/main/java/net/tylermurphy/hideAndSeek/command/Leave.java
index 5015516..4dec452 100644
--- a/src/main/java/net/tylermurphy/hideAndSeek/command/Leave.java
+++ b/src/main/java/net/tylermurphy/hideAndSeek/command/Leave.java
@@ -1,9 +1,11 @@
package net.tylermurphy.hideAndSeek.command;
import org.bukkit.Bukkit;
+import org.bukkit.Location;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
+import net.tylermurphy.hideAndSeek.util.Functions;
import net.tylermurphy.hideAndSeek.util.ICommand;
import static net.tylermurphy.hideAndSeek.Store.*;
@@ -11,16 +13,8 @@ import static net.tylermurphy.hideAndSeek.Store.*;
public class Leave implements ICommand {
public void execute(CommandSender sender, String[] args) {
- if(!lobbyManualJoin) {
- sender.sendMessage(errorPrefix + "Manual join/leave isnt enabled in this server");
- return;
- }
- if(!status.equals("Standby")) {
- sender.sendMessage(errorPrefix + "Game is currently in session");
- return;
- }
- if(!lobbyStarted) {
- sender.sendMessage(errorPrefix + "There is currently no lobby in session");
+ if(!Functions.setup()) {
+ sender.sendMessage(errorPrefix + "Game is not setup. Run /hs setup to see what you needed to do");
return;
}
Player player = Bukkit.getServer().getPlayer(sender.getName());
@@ -32,13 +26,16 @@ public class Leave implements ICommand {
sender.sendMessage(errorPrefix + "You are currently not in the lobby");
return;
}
+ if(!Seeker.contains(player.getName())) {
+ if(announceMessagesToNonPlayers) Bukkit.broadcastMessage(messagePrefix + sender.getName() + " has left the HideAndSeek lobby");
+ else Functions.broadcastMessage(messagePrefix + sender.getName() + " has left the HideAndSeek lobby");
+ }
playerList.remove(player.getName());
Hider.remove(player.getName());
Seeker.remove(player.getName());
HiderTeam.removeEntry(player.getName());
SeekerTeam.removeEntry(player.getName());
- player.teleport(playerLastLocationList.get(player.getName()));
- if(lobbyAnnounced) Bukkit.broadcastMessage(messagePrefix + sender.getName() + " has left the HideAndSeek lobby");
+ player.teleport(new Location(Bukkit.getWorld(exitWorld), exitPosition.getX(), exitPosition.getY(), exitPosition.getZ()));
}
public String getLabel() {
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/command/Reload.java b/src/main/java/net/tylermurphy/hideAndSeek/command/Reload.java
index d333f6c..438ab26 100644
--- a/src/main/java/net/tylermurphy/hideAndSeek/command/Reload.java
+++ b/src/main/java/net/tylermurphy/hideAndSeek/command/Reload.java
@@ -1,6 +1,5 @@
package net.tylermurphy.hideAndSeek.command;
-import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@@ -25,10 +24,6 @@ public class Reload implements ICommand {
} catch(Exception e) {}
sender.sendMessage(messagePrefix + "Reloaded the config");
playerList = new HashMap<String,Player>();
- if(!lobbyManualJoin) {
- for(Player p : Bukkit.getOnlinePlayers())
- playerList.put(p.getName(), p);
- }
}
public String getLabel() {
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/command/SetExitLocation.java b/src/main/java/net/tylermurphy/hideAndSeek/command/SetExitLocation.java
new file mode 100644
index 0000000..3f872a1
--- /dev/null
+++ b/src/main/java/net/tylermurphy/hideAndSeek/command/SetExitLocation.java
@@ -0,0 +1,49 @@
+package net.tylermurphy.hideAndSeek.command;
+
+import static net.tylermurphy.hideAndSeek.Store.*;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+import org.bukkit.util.Vector;
+
+import net.tylermurphy.hideAndSeek.util.ICommand;
+
+public class SetExitLocation implements ICommand {
+
+ public void execute(CommandSender sender, String[] args) {
+ Vector newExitPosition = new Vector();
+ Player player = (Player) sender;
+ newExitPosition.setX(player.getLocation().getBlockX());
+ newExitPosition.setY(player.getLocation().getBlockY());
+ newExitPosition.setZ(player.getLocation().getBlockZ());
+ if(!status.equals("Standby")) {
+ sender.sendMessage(errorPrefix + "Game is currently in session");
+ return;
+ }
+ exitPosition = newExitPosition;
+ sender.sendMessage(messagePrefix + "Set exit position to current location");
+ Map<String, Object> temp = new HashMap<String,Object>();
+ temp.put("x", exitPosition.getX());
+ temp.put("y", exitPosition.getY());
+ temp.put("z", exitPosition.getZ());
+ temp.put("world", player.getLocation().getWorld().getName());
+ addToSection("spawns.exit",temp);
+ saveConfig();
+ }
+
+ public String getLabel() {
+ return "setexit";
+ }
+
+ public String getUsage() {
+ return "";
+ }
+
+ public String getDescription() {
+ return "Sets hide and seeks exit location to current position and world";
+ }
+
+}
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/command/SetLobbyLocation.java b/src/main/java/net/tylermurphy/hideAndSeek/command/SetLobbyLocation.java
index 299a227..7cb13fc 100644
--- a/src/main/java/net/tylermurphy/hideAndSeek/command/SetLobbyLocation.java
+++ b/src/main/java/net/tylermurphy/hideAndSeek/command/SetLobbyLocation.java
@@ -29,7 +29,8 @@ public class SetLobbyLocation implements ICommand {
temp.put("x", lobbyPosition.getX());
temp.put("y", lobbyPosition.getY());
temp.put("z", lobbyPosition.getZ());
- addToSection("lobby.spawn",temp);
+ temp.put("world", player.getLocation().getWorld().getName());
+ addToSection("spawns.lobby",temp);
saveConfig();
}
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/command/SetSpawnLocation.java b/src/main/java/net/tylermurphy/hideAndSeek/command/SetSpawnLocation.java
index 62d6bc9..0114e21 100644
--- a/src/main/java/net/tylermurphy/hideAndSeek/command/SetSpawnLocation.java
+++ b/src/main/java/net/tylermurphy/hideAndSeek/command/SetSpawnLocation.java
@@ -34,7 +34,7 @@ public class SetSpawnLocation implements ICommand {
temp.put("y", spawnPosition.getY());
temp.put("z", spawnPosition.getZ());
temp.put("world", player.getLocation().getWorld().getName());
- addToSection("spawn",temp);
+ addToSection("spawns.game",temp);
saveConfig();
}
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/command/Setup.java b/src/main/java/net/tylermurphy/hideAndSeek/command/Setup.java
new file mode 100644
index 0000000..f071bee
--- /dev/null
+++ b/src/main/java/net/tylermurphy/hideAndSeek/command/Setup.java
@@ -0,0 +1,57 @@
+package net.tylermurphy.hideAndSeek.command;
+
+import org.bukkit.command.CommandSender;
+
+import net.md_5.bungee.api.ChatColor;
+import net.tylermurphy.hideAndSeek.Main;
+import net.tylermurphy.hideAndSeek.util.ICommand;
+
+import static net.tylermurphy.hideAndSeek.Store.*;
+
+import java.io.File;
+
+public class Setup implements ICommand {
+
+ public void execute(CommandSender sender, String[] args) {
+
+ String message = String.format("%s%sThe following is needed for setup...", ChatColor.WHITE, ChatColor.BOLD);
+ int count = 0;
+
+ if(spawnPosition.getBlockX() == 0 && spawnPosition.getBlockY() == 0 && spawnPosition.getBlockZ() == 0) {
+ message = String.format("%s\n%s%s-%s%s", message, ChatColor.RED, ChatColor.BOLD, ChatColor.WHITE, "Game spawn isnt set, /hs setspawn");
+ count++;
+ }
+ if(lobbyPosition.getBlockX() == 0 && lobbyPosition.getBlockY() == 0 && lobbyPosition.getBlockZ() == 0) {
+ message = String.format("%s\n%s%s-%s%s", message, ChatColor.RED, ChatColor.BOLD, ChatColor.WHITE, "Lobby spawn isnt set, /hs setlobby");
+ sender.sendMessage(errorPrefix + "Please set lobby location first");
+ count++;
+ }
+ if(exitPosition.getBlockX() == 0 && exitPosition.getBlockY() == 0 && exitPosition.getBlockZ() == 0) {
+ message = String.format("%s\n%s%s-%s%s", message, ChatColor.RED, ChatColor.BOLD, ChatColor.WHITE, "Quit/exit teleport location isnt set, /hs setexit");
+ count++;
+ }
+ File destenation = new File(Main.root+File.separator+"hideandseek_"+spawnWorld);
+ if(!destenation.exists()) {
+ message = String.format("%s\n%s%s-%s%s", message, ChatColor.RED, ChatColor.BOLD, ChatColor.WHITE, "Hide and seek map isnt saved, /hs savemap (after /hs setspawn)");
+ count++;
+ }
+ if(count < 1) {
+ sender.sendMessage(messagePrefix + "Everything is setup and ready to go!");
+ } else {
+ sender.sendMessage(message);
+ }
+ }
+
+ public String getLabel() {
+ return "setup";
+ }
+
+ public String getUsage() {
+ return "";
+ }
+
+ public String getDescription() {
+ return "Shows what needs to be setup";
+ }
+
+} \ No newline at end of file
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/command/Start.java b/src/main/java/net/tylermurphy/hideAndSeek/command/Start.java
index fb715d6..cd0c956 100644
--- a/src/main/java/net/tylermurphy/hideAndSeek/command/Start.java
+++ b/src/main/java/net/tylermurphy/hideAndSeek/command/Start.java
@@ -8,6 +8,7 @@ import org.bukkit.entity.Player;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
+import net.md_5.bungee.api.ChatColor;
import net.tylermurphy.hideAndSeek.Main;
import net.tylermurphy.hideAndSeek.events.Glow;
import net.tylermurphy.hideAndSeek.events.Taunt;
@@ -17,40 +18,33 @@ import net.tylermurphy.hideAndSeek.util.ICommand;
import static net.tylermurphy.hideAndSeek.Store.*;
-import java.io.File;
import java.util.ArrayList;
import java.util.Random;
public class Start implements ICommand {
public void execute(CommandSender sender, String[] args) {
- if(!status.equals("Standby")) {
- sender.sendMessage(errorPrefix + "Game is already in session");
- return;
- }
- if(spawnPosition.getBlockX() == 0 && spawnPosition.getBlockY() == 0 && spawnPosition.getBlockZ() == 0) {
- sender.sendMessage(errorPrefix + "Please set spawn location first");
+ if(!Functions.setup()) {
+ sender.sendMessage(errorPrefix + "Game is not setup. Run /hs setup to see what you needed to do");
return;
}
- if(lobbyPosition.getBlockX() == 0 && lobbyPosition.getBlockY() == 0 && lobbyPosition.getBlockZ() == 0) {
- sender.sendMessage(errorPrefix + "Please set lobby location first");
+ if(!status.equals("Standby")) {
+ sender.sendMessage(errorPrefix + "Game is already in session");
return;
}
- File destenation = new File(Main.root+File.separator+"hideandseek_"+spawnWorld);
- if(!destenation.exists()) {
- sender.sendMessage(errorPrefix + "Please set map save first");
+ if(!playerList.containsKey(sender.getName())) {
+ sender.sendMessage(errorPrefix + "You are not in the lobby");
return;
- } else {
- if(Bukkit.getServer().getWorld("hideandseek_"+spawnWorld) != null) {
- Functions.rollback("hideandseek_"+spawnWorld);
- } else {
- Functions.loadMap("hideandseek_"+spawnWorld);
- }
}
if(playerList.size() < minPlayers) {
sender.sendMessage(errorPrefix + "You must have at least "+minPlayers+" players to start");
return;
}
+ if(Bukkit.getServer().getWorld("hideandseek_"+spawnWorld) != null) {
+ Functions.rollback("hideandseek_"+spawnWorld);
+ } else {
+ Functions.loadMap("hideandseek_"+spawnWorld);
+ }
String seekerName;
if(args.length < 1) {
seekerName = playerList.values().stream().skip(new Random().nextInt(playerList.values().size())).findFirst().get().getName();
@@ -65,6 +59,7 @@ public class Start implements ICommand {
Hider = new ArrayList<String>();
Seeker = new ArrayList<String>();
Spectator = new ArrayList<String>();
+ Deaths = new ArrayList<String>();
for(Player temp : playerList.values()) {
if(temp.getName().equals(seeker.getName()))
continue;
@@ -87,12 +82,14 @@ public class Start implements ICommand {
if(player != null) {
player.addPotionEffect(new PotionEffect(PotionEffectType.BLINDNESS,1000000,127,false,false));
player.addPotionEffect(new PotionEffect(PotionEffectType.SLOW,1000000,127,false,false));
+ player.sendTitle(ChatColor.RED + "" + ChatColor.BOLD + "SEEKER", ChatColor.WHITE + "Eliminate all hiders", 10, 70, 20);
}
}
for(String playerName : Hider) {
Player player = playerList.get(playerName);
if(player != null) {
player.addPotionEffect(new PotionEffect(PotionEffectType.SPEED,1000000,5,false,false));
+ player.sendTitle(ChatColor.GOLD + "" + ChatColor.BOLD + "HIDER", ChatColor.WHITE + "Hide away from the seekers", 10, 70, 20);
}
}
Functions.resetWorldborder("hideandseek_"+spawnWorld);
@@ -163,6 +160,13 @@ public class Start implements ICommand {
Main.taunt.schedule();
Main.glow = new Glow(gameId);
+
+ if(gameLength > 0) {
+ timeLeft = gameLength;
+ for(Player player : playerList.values()) {
+ player.setLevel(timeLeft);
+ }
+ }
}
}, 20 * 30);
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/command/Stop.java b/src/main/java/net/tylermurphy/hideAndSeek/command/Stop.java
index 2b96809..9c1e3d7 100644
--- a/src/main/java/net/tylermurphy/hideAndSeek/command/Stop.java
+++ b/src/main/java/net/tylermurphy/hideAndSeek/command/Stop.java
@@ -17,8 +17,13 @@ import net.tylermurphy.hideAndSeek.util.Packet;
public class Stop implements ICommand {
public void execute(CommandSender sender, String[] args) {
+ if(!Functions.setup()) {
+ sender.sendMessage(errorPrefix + "Game is not setup. Run /hs setup to see what you needed to do");
+ return;
+ }
if(status.equals("Starting") || status.equals("Playing")) {
- Bukkit.broadcastMessage(abortPrefix + "Game has been force stopped.");
+ if(announceMessagesToNonPlayers) Bukkit.broadcastMessage(abortPrefix + "Game has been force stopped.");
+ else Functions.broadcastMessage(abortPrefix + "Game has been force stopped.");
onStop();
} else {
@@ -38,10 +43,11 @@ public class Stop implements ICommand {
Functions.resetWorldborder("hideandseek_"+spawnWorld);
for(Player player : playerList.values()) {
player.setGameMode(GameMode.ADVENTURE);
+ player.setLevel(0);
Hider.add(player.getName());
HiderTeam.addEntry(player.getName());
player.getInventory().clear();
- player.teleport(new Location(Bukkit.getWorld(spawnWorld), lobbyPosition.getX(),lobbyPosition.getY(),lobbyPosition.getZ()));
+ player.teleport(new Location(Bukkit.getWorld(lobbyWorld), lobbyPosition.getX(),lobbyPosition.getY(),lobbyPosition.getZ()));
for(PotionEffect effect : player.getActivePotionEffects()){
player.removePotionEffect(effect.getType());
}
@@ -50,6 +56,7 @@ public class Stop implements ICommand {
Packet.setGlow(player, temp, false);
}
}
+ Functions.unloadMap("hideandseek_"+spawnWorld);
}
public String getUsage() {
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/util/Functions.java b/src/main/java/net/tylermurphy/hideAndSeek/util/Functions.java
index fd2eeac..149e9ac 100644
--- a/src/main/java/net/tylermurphy/hideAndSeek/util/Functions.java
+++ b/src/main/java/net/tylermurphy/hideAndSeek/util/Functions.java
@@ -2,6 +2,7 @@ package net.tylermurphy.hideAndSeek.util;
import static net.tylermurphy.hideAndSeek.Store.*;
+import java.io.File;
import java.util.ArrayList;
import java.util.List;
@@ -137,7 +138,6 @@ public class Functions {
SeekerTeam.setOption(Option.NAME_TAG_VISIBILITY, OptionStatus.FOR_OTHER_TEAMS);
else
SeekerTeam.setOption(Option.NAME_TAG_VISIBILITY, OptionStatus.NEVER);
- SeekerTeam.setAllowFriendlyFire(false);
try { mainBoard.registerNewTeam("Hider");} catch(Exception e) {}
HiderTeam = mainBoard.getTeam("Hider");
@@ -146,13 +146,11 @@ public class Functions {
HiderTeam.setOption(Option.NAME_TAG_VISIBILITY, OptionStatus.FOR_OWN_TEAM);
else
HiderTeam.setOption(Option.NAME_TAG_VISIBILITY, OptionStatus.NEVER);
- HiderTeam.setAllowFriendlyFire(false);
try { mainBoard.registerNewTeam("Spectator");} catch(Exception e) {}
SpectatorTeam = mainBoard.getTeam("Spectator");
SpectatorTeam.setColor(ChatColor.GRAY);
SpectatorTeam.setOption(Option.NAME_TAG_VISIBILITY, OptionStatus.NEVER);
- SpectatorTeam.setAllowFriendlyFire(false);
board = mainBoard;
}
@@ -166,5 +164,25 @@ public class Functions {
player.sendMessage(message);
}
}
+
+ public static boolean setup() {
+
+ if(spawnPosition.getBlockX() == 0 && spawnPosition.getBlockY() == 0 && spawnPosition.getBlockZ() == 0) {
+ return false;
+ }
+ if(lobbyPosition.getBlockX() == 0 && lobbyPosition.getBlockY() == 0 && lobbyPosition.getBlockZ() == 0) {
+ return false;
+ }
+ if(exitPosition.getBlockX() == 0 && exitPosition.getBlockY() == 0 && exitPosition.getBlockZ() == 0) {
+ return false;
+ }
+ File destenation = new File(Main.root+File.separator+"hideandseek_"+spawnWorld);
+ if(!destenation.exists()) {
+ return false;
+ }
+
+ return true;
+
+ }
} \ No newline at end of file
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/util/Packet.java b/src/main/java/net/tylermurphy/hideAndSeek/util/Packet.java
index d93116d..564916a 100644
--- a/src/main/java/net/tylermurphy/hideAndSeek/util/Packet.java
+++ b/src/main/java/net/tylermurphy/hideAndSeek/util/Packet.java
@@ -52,5 +52,5 @@ public class Packet {
e.printStackTrace();
}
}
-
+
}