summaryrefslogtreewikicommitdiff
path: root/src/main/java/net/tylermurphy/hideAndSeek/game
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/net/tylermurphy/hideAndSeek/game')
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/game/Game.java19
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/game/PlayerLoader.java8
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/game/events/Border.java7
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/game/listener/DamageHandler.java12
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/game/listener/JoinLeaveHandler.java17
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/game/listener/MovementHandler.java4
6 files changed, 38 insertions, 29 deletions
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/game/Game.java b/src/main/java/net/tylermurphy/hideAndSeek/game/Game.java
index 0e54184..e238caf 100644
--- a/src/main/java/net/tylermurphy/hideAndSeek/game/Game.java
+++ b/src/main/java/net/tylermurphy/hideAndSeek/game/Game.java
@@ -98,8 +98,8 @@ public class Game {
public void start() {
try {
- Optional<Player> rand = board.getPlayers().stream().skip(new Random().nextInt(board.size())).findFirst();
- Player seeker = rand.orElse(board.getPlayers().get(0));
+ int rand = (int) (Math.random() * board.getPlayers().size());
+ Player seeker = board.getPlayers().get(rand);
start(seeker);
} catch (Exception e){
Main.getInstance().getLogger().warning("Failed to select random seeker.");
@@ -148,7 +148,7 @@ public class Game {
board.remove(player);
handleBungeeLeave(player);
} else {
- player.teleport(currentMap.getLobby());
+ currentMap.getLobby().teleport(player);
board.createLobbyBoard(player);
board.addHider(player);
PlayerLoader.joinPlayer(player, currentMap);
@@ -210,7 +210,7 @@ public class Game {
out.writeUTF(leaveServer);
player.sendPluginMessage(Main.getInstance(), "BungeeCord", out.toByteArray());
} else {
- player.teleport(exitPosition);
+ exitPosition.teleport(player);
}
}
@@ -251,7 +251,7 @@ public class Game {
board.getPlayers().forEach(player -> {
PlayerLoader.resetPlayer(player, board);
if(board.isSeeker(player)){
- player.teleport(currentMap.getGameSpawn());
+ currentMap.getGameSpawn().teleport(player);
}
});
} else if (startingTimer == 1){
@@ -325,8 +325,8 @@ public class Game {
}
}
- public Map getCurrentMap() {
- return currentMap;
+ public boolean isCurrentMapValid() {
+ return currentMap != null && !currentMap.isNotSetup();
}
public boolean checkCurrentMap() {
@@ -339,9 +339,8 @@ public class Game {
this.currentMap = map;
}
- public String getGameWorld() {
- if(currentMap == null) return null;
- else return currentMap.getGameSpawnName();
+ public Map getCurrentMap() {
+ return currentMap;
}
private void checkWinConditions() {
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/game/PlayerLoader.java b/src/main/java/net/tylermurphy/hideAndSeek/game/PlayerLoader.java
index d830972..10157cd 100644
--- a/src/main/java/net/tylermurphy/hideAndSeek/game/PlayerLoader.java
+++ b/src/main/java/net/tylermurphy/hideAndSeek/game/PlayerLoader.java
@@ -40,7 +40,7 @@ import static net.tylermurphy.hideAndSeek.configuration.Localization.message;
public class PlayerLoader {
public static void loadHider(Player player, Map map){
- player.teleport(map.getGameSpawn());
+ map.getGameSpawn().teleport(player);
loadPlayer(player);
player.addPotionEffect(new PotionEffect(PotionEffectType.SPEED,1000000,5,false,false));
Titles.sendTitle(player, 10, 70, 20, ChatColor.WHITE + "" + message("HIDER_TEAM_NAME"), ChatColor.WHITE + message("HIDERS_SUBTITLE").toString());
@@ -50,13 +50,13 @@ public class PlayerLoader {
}
public static void loadSeeker(Player player, Map map){
- player.teleport(map.getGameSeekerLobby());
+ map.getGameSeekerLobby().teleport(player);
loadPlayer(player);
Titles.sendTitle(player, 10, 70, 20, ChatColor.WHITE + "" + message("SEEKER_TEAM_NAME"), ChatColor.WHITE + message("SEEKERS_SUBTITLE").toString());
}
public static void loadSpectator(Player player, Map map){
- player.teleport(map.getGameSpawn());
+ map.getGameSpawn().teleport(player);
loadPlayer(player);
player.setAllowFlight(true);
player.setFlying(true);
@@ -114,7 +114,7 @@ public class PlayerLoader {
}
public static void joinPlayer(Player player, Map map){
- player.teleport(map.getLobby());
+ map.getLobby().teleport(player);
loadPlayer(player);
if (lobbyStartItem != null && (!lobbyItemStartAdmin || player.hasPermission("hideandseek.start")))
player.getInventory().setItem(lobbyItemStartPosition, lobbyStartItem);
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/game/events/Border.java b/src/main/java/net/tylermurphy/hideAndSeek/game/events/Border.java
index f7ab581..9f7b5bf 100644
--- a/src/main/java/net/tylermurphy/hideAndSeek/game/events/Border.java
+++ b/src/main/java/net/tylermurphy/hideAndSeek/game/events/Border.java
@@ -34,6 +34,7 @@ public class Border {
private void decreaseWorldBorder() {
if (currentSize == 100) return;
+ if(map.getGameSpawn().load() == null) return;
int change = (int) map.getWorldBorderData().getZ();
if (currentSize-change < 100) {
change = currentSize-100;
@@ -41,14 +42,14 @@ public class Border {
running = true;
Main.getInstance().getGame().broadcastMessage(worldBorderPrefix + message("WORLDBORDER_DECREASING").addAmount(change));
currentSize -= map.getWorldBorderData().getZ();
- org.bukkit.WorldBorder border = map.getGameSpawn().getWorld().getWorldBorder();
+ org.bukkit.WorldBorder border = map.getGameSpawn().load().getWorldBorder();
border.setSize(border.getSize()-change,30);
delay = 30;
}
public void resetWorldBorder() {
- if(map.getGameSpawn().getWorld() == null) return;
- org.bukkit.WorldBorder border = map.getGameSpawn().getWorld().getWorldBorder();
+ if(map.getGameSpawn().load() == null) return;
+ org.bukkit.WorldBorder border = map.getGameSpawn().load().getWorldBorder();
if (map.isWorldBorderEnabled()) {
border.setSize(map.getWorldBorderData().getX());
border.setCenter(map.getWorldBorderPos().getX(), map.getWorldBorderPos().getY());
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/game/listener/DamageHandler.java b/src/main/java/net/tylermurphy/hideAndSeek/game/listener/DamageHandler.java
index d6eceb2..37537d6 100644
--- a/src/main/java/net/tylermurphy/hideAndSeek/game/listener/DamageHandler.java
+++ b/src/main/java/net/tylermurphy/hideAndSeek/game/listener/DamageHandler.java
@@ -31,7 +31,7 @@ public class DamageHandler implements Listener {
Player player = (Player) event.getEntity();
Player attacker = null;
// If map is not setup we won't be able to process on it :o
- if (game.getCurrentMap() == null || game.getCurrentMap().isNotSetup()) { return; }
+ if (!game.isCurrentMapValid()) { return; }
// If there is an attacker, find them
if (event instanceof EntityDamageByEntityEvent) {
if (((EntityDamageByEntityEvent) event).getDamager() instanceof Player)
@@ -70,9 +70,9 @@ public class DamageHandler implements Listener {
if (board.isSpectator(player)) {
event.setCancelled(true);
if (Main.getInstance().supports(18) && player.getLocation().getBlockY() < -64) {
- player.teleport(game.getCurrentMap().getGameSpawn());
+ game.getCurrentMap().getGameSpawn().teleport(player);
} else if (!Main.getInstance().supports(18) && player.getLocation().getY() < 0) {
- player.teleport(game.getCurrentMap().getGameSpawn());
+ game.getCurrentMap().getGameSpawn().teleport(player);
}
return;
}
@@ -95,15 +95,15 @@ public class DamageHandler implements Listener {
Main.getInstance().getDisguiser().reveal(player);
// Teleport player to seeker spawn
if(delayedRespawn){
- player.teleport(game.getCurrentMap().getGameSeekerLobby());
+ game.getCurrentMap().getGameSeekerLobby().teleport(player);
player.sendMessage(messagePrefix + message("RESPAWN_NOTICE").addAmount(delayedRespawnDelay));
Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(Main.getInstance(), () -> {
if(game.getStatus() == Status.PLAYING){
- player.teleport(game.getCurrentMap().getGameSpawn());
+ game.getCurrentMap().getGameSpawn().teleport(player);
}
}, delayedRespawnDelay * 20L);
} else {
- player.teleport(game.getCurrentMap().getGameSpawn());
+ game.getCurrentMap().getGameSpawn().teleport(player);
}
// Add leaderboard stats
board.addDeath(player.getUniqueId());
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/game/listener/JoinLeaveHandler.java b/src/main/java/net/tylermurphy/hideAndSeek/game/listener/JoinLeaveHandler.java
index 9af8629..d8534a3 100644
--- a/src/main/java/net/tylermurphy/hideAndSeek/game/listener/JoinLeaveHandler.java
+++ b/src/main/java/net/tylermurphy/hideAndSeek/game/listener/JoinLeaveHandler.java
@@ -15,6 +15,8 @@ import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.inventory.ItemStack;
import static net.tylermurphy.hideAndSeek.configuration.Config.*;
+import static net.tylermurphy.hideAndSeek.configuration.Localization.message;
+
public class JoinLeaveHandler implements Listener {
@EventHandler(priority = EventPriority.HIGHEST)
@@ -26,18 +28,25 @@ public class JoinLeaveHandler implements Listener {
removeItems(event.getPlayer());
if (Main.getInstance().getGame().checkCurrentMap()) return;
if (autoJoin) {
+ if (Main.getInstance().getGame().checkCurrentMap()) {
+ event.getPlayer().sendMessage(errorPrefix + message("GAME_SETUP"));
+ return;
+ }
Main.getInstance().getGame().join(event.getPlayer());
} else if (teleportToExit) {
- if (event.getPlayer().getWorld().getName().equals(Main.getInstance().getGame().getGameWorld()) || event.getPlayer().getWorld().getName().equals(Main.getInstance().getGame().getCurrentMap().getLobby().getWorld().getName())) {
- event.getPlayer().teleport(exitPosition);
+ if (
+ event.getPlayer().getWorld().getName().equals(Main.getInstance().getGame().getCurrentMap().getLobbyName()) ||
+ event.getPlayer().getWorld().getName().equals(Main.getInstance().getGame().getCurrentMap().getGameSpawnName())
+ ) {
+ exitPosition.teleport(event.getPlayer());
event.getPlayer().setGameMode(GameMode.ADVENTURE);
}
} else {
- if (mapSaveEnabled && event.getPlayer().getWorld().getName().equals(Main.getInstance().getGame().getGameWorld())) {
+ if (mapSaveEnabled && event.getPlayer().getWorld().getName().equals(Main.getInstance().getGame().getCurrentMap().getGameSpawnName())) {
if (Main.getInstance().getGame().getStatus() != Status.STANDBY && Main.getInstance().getGame().getStatus() != Status.ENDING) {
Main.getInstance().getGame().join(event.getPlayer());
} else {
- event.getPlayer().teleport(exitPosition);
+ exitPosition.teleport(event.getPlayer());
event.getPlayer().setGameMode(GameMode.ADVENTURE);
}
}
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/game/listener/MovementHandler.java b/src/main/java/net/tylermurphy/hideAndSeek/game/listener/MovementHandler.java
index 2558763..1dd6cfc 100644
--- a/src/main/java/net/tylermurphy/hideAndSeek/game/listener/MovementHandler.java
+++ b/src/main/java/net/tylermurphy/hideAndSeek/game/listener/MovementHandler.java
@@ -49,8 +49,8 @@ public class MovementHandler implements Listener {
private void checkBounds(PlayerMoveEvent event){
if (!Main.getInstance().getBoard().contains(event.getPlayer())) return;
- if (!event.getPlayer().getWorld().getName().equals(Main.getInstance().getGame().getGameWorld())) return;
- if (!event.getTo().getWorld().getName().equals(Main.getInstance().getGame().getGameWorld())) return;
+ if (!event.getPlayer().getWorld().getName().equals(Main.getInstance().getGame().getCurrentMap().getGameSpawnName())) return;
+ if (!event.getTo().getWorld().getName().equals(Main.getInstance().getGame().getCurrentMap().getGameSpawnName())) return;
if (event.getPlayer().hasPermission("hideandseek.leavebounds")) return;
Map map = Main.getInstance().getGame().getCurrentMap();
if (event.getTo().getBlockX() < map.getBoundsMin().getBlockX() || event.getTo().getBlockX() > map.getBoundsMax().getBlockX() || event.getTo().getBlockZ() < map.getBoundsMin().getZ() || event.getTo().getBlockZ() > map.getBoundsMax().getZ()) {