summaryrefslogtreewikicommitdiff
path: root/src/main/java/net/tylermurphy/hideAndSeek/game
diff options
context:
space:
mode:
authortylermurphy534 <tylermurphy534@gmail.com>2022-10-30 21:40:59 -0400
committertylermurphy534 <tylermurphy534@gmail.com>2022-10-30 21:40:59 -0400
commit1325e042a6e7af37669bcd32e9d7a133f2ae22e6 (patch)
treee6703c90dcdbefac6954a1f2023b78892c0dc788 /src/main/java/net/tylermurphy/hideAndSeek/game
parentstart adding multi map support (diff)
downloadkenshinshideandseek-1325e042a6e7af37669bcd32e9d7a133f2ae22e6.tar.gz
kenshinshideandseek-1325e042a6e7af37669bcd32e9d7a133f2ae22e6.tar.bz2
kenshinshideandseek-1325e042a6e7af37669bcd32e9d7a133f2ae22e6.zip
finish beta build of multi map support
Diffstat (limited to 'src/main/java/net/tylermurphy/hideAndSeek/game')
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/game/Game.java24
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/game/PlayerLoader.java6
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/game/events/Border.java5
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/game/listener/DamageHandler.java12
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/game/listener/InteractHandler.java2
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/game/listener/JoinLeaveHandler.java6
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/game/listener/MovementHandler.java4
7 files changed, 36 insertions, 23 deletions
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/game/Game.java b/src/main/java/net/tylermurphy/hideAndSeek/game/Game.java
index 2f86849..53e61df 100644
--- a/src/main/java/net/tylermurphy/hideAndSeek/game/Game.java
+++ b/src/main/java/net/tylermurphy/hideAndSeek/game/Game.java
@@ -59,8 +59,12 @@ public class Game {
private boolean hiderLeft;
public Game(Board board) {
+ this(Maps.getRandomMap(), board);
+ }
- this.currentMap = Maps.getRandomMap();
+ public Game(Map map, Board board) {
+
+ this.currentMap = map;
this.taunt = new Taunt();
this.glow = new Glow();
@@ -140,6 +144,8 @@ public class Game {
public void end() {
board.getPlayers().forEach(PlayerLoader::unloadPlayer);
currentMap.getWorldBorder().resetWorldBorder();
+ Map nextMap = Maps.getRandomMap();
+ if(nextMap != null) this.currentMap = nextMap;
board.getPlayers().forEach(player -> {
if (leaveOnEnd) {
board.removeBoard(player);
@@ -213,7 +219,7 @@ public class Game {
}
public void onTick() {
- if (currentMap.isNotSetup()) return;
+ if (currentMap == null || currentMap.isNotSetup()) return;
if (status == Status.STANDBY) whileWaiting();
else if (status == Status.STARTING) whileStarting();
else if (status == Status.PLAYING) whilePlaying();
@@ -249,7 +255,7 @@ public class Game {
board.getPlayers().forEach(player -> {
PlayerLoader.resetPlayer(player, board);
if(board.isSeeker(player)){
- player.teleport(currentMap.getSpawn());
+ player.teleport(currentMap.getGameSpawn());
}
});
} else if (startingTimer == 1){
@@ -327,13 +333,19 @@ public class Game {
return currentMap;
}
+ public boolean checkCurrentMap() {
+ if(currentMap != null) return false;
+ this.currentMap = Maps.getRandomMap();
+ return this.currentMap == null;
+ }
+
public void setCurrentMap(Map map) {
this.currentMap = map;
}
- public World getGameWorld() {
- if(currentMap == null || currentMap.getSpawn() == null) return null;
- else return currentMap.getSpawn().getWorld();
+ public String getGameWorld() {
+ if(currentMap == null) return null;
+ else return currentMap.getGameSpawnName();
}
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 83f4eee..d830972 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.getSpawn());
+ player.teleport(map.getGameSpawn());
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.getSeekerLobby());
+ player.teleport(map.getGameSeekerLobby());
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.getSpawn());
+ player.teleport(map.getGameSpawn());
loadPlayer(player);
player.setAllowFlight(true);
player.setFlying(true);
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 9fb7e13..f7ab581 100644
--- a/src/main/java/net/tylermurphy/hideAndSeek/game/events/Border.java
+++ b/src/main/java/net/tylermurphy/hideAndSeek/game/events/Border.java
@@ -41,13 +41,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.getSpawn().getWorld().getWorldBorder();
+ org.bukkit.WorldBorder border = map.getGameSpawn().getWorld().getWorldBorder();
border.setSize(border.getSize()-change,30);
delay = 30;
}
public void resetWorldBorder() {
- org.bukkit.WorldBorder border = map.getSpawn().getWorld().getWorldBorder();
+ if(map.getGameSpawn().getWorld() == null) return;
+ org.bukkit.WorldBorder border = map.getGameSpawn().getWorld().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 cd63fd8..08a5a80 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().isNotSetup()) { return; }
+ if (game.getCurrentMap() == null || game.getCurrentMap().isNotSetup()) { return; }
// If there is an attacker, find them
if (event instanceof EntityDamageByEntityEvent) {
if (((EntityDamageByEntityEvent) event).getDamager() instanceof Player)
@@ -71,9 +71,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().getSpawn());
+ player.teleport(game.getCurrentMap().getGameSpawn());
} else if (!Main.getInstance().supports(18) && player.getLocation().getY() < 0) {
- player.teleport(game.getCurrentMap().getSpawn());
+ player.teleport(game.getCurrentMap().getGameSpawn());
}
return;
}
@@ -96,15 +96,15 @@ public class DamageHandler implements Listener {
Main.getInstance().getDisguiser().reveal(player);
// Teleport player to seeker spawn
if(delayedRespawn){
- player.teleport(game.getCurrentMap().getSeekerLobby());
+ player.teleport(game.getCurrentMap().getGameSeekerLobby());
player.sendMessage(messagePrefix + message("RESPAWN_NOTICE").addAmount(delayedRespawnDelay));
Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(Main.getInstance(), () -> {
if(game.getStatus() == Status.PLAYING){
- player.teleport(game.getCurrentMap().getSpawn());
+ player.teleport(game.getCurrentMap().getGameSpawn());
}
}, delayedRespawnDelay * 20L);
} else {
- player.teleport(game.getCurrentMap().getSpawn());
+ player.teleport(game.getCurrentMap().getGameSpawn());
}
// Add leaderboard stats
board.addDeath(player.getUniqueId());
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/game/listener/InteractHandler.java b/src/main/java/net/tylermurphy/hideAndSeek/game/listener/InteractHandler.java
index 1f2c388..0326391 100644
--- a/src/main/java/net/tylermurphy/hideAndSeek/game/listener/InteractHandler.java
+++ b/src/main/java/net/tylermurphy/hideAndSeek/game/listener/InteractHandler.java
@@ -50,7 +50,7 @@ public class InteractHandler implements Listener {
if (temp.isSimilar(lobbyStartItem) && event.getPlayer().hasPermission("hideandseek.start")) {
event.setCancelled(true);
- if (Main.getInstance().getGame().getCurrentMap().isNotSetup()) {
+ if (Main.getInstance().getGame().checkCurrentMap()) {
event.getPlayer().sendMessage(errorPrefix + message("GAME_SETUP"));
return;
}
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 0ad95b5..9af8629 100644
--- a/src/main/java/net/tylermurphy/hideAndSeek/game/listener/JoinLeaveHandler.java
+++ b/src/main/java/net/tylermurphy/hideAndSeek/game/listener/JoinLeaveHandler.java
@@ -24,16 +24,16 @@ public class JoinLeaveHandler implements Listener {
}
Main.getInstance().getBoard().remove(event.getPlayer());
removeItems(event.getPlayer());
- if (Main.getInstance().getGame().getCurrentMap().isNotSetup()) return;
+ if (Main.getInstance().getGame().checkCurrentMap()) return;
if (autoJoin) {
Main.getInstance().getGame().join(event.getPlayer());
} else if (teleportToExit) {
- if (event.getPlayer().getWorld().getName().equals(Main.getInstance().getGame().getGameWorld().getName()) || event.getPlayer().getWorld().getName().equals(Main.getInstance().getGame().getCurrentMap().getLobby().getWorld().getName())) {
+ 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);
event.getPlayer().setGameMode(GameMode.ADVENTURE);
}
} else {
- if (mapSaveEnabled && event.getPlayer().getWorld().getName().equals(Main.getInstance().getGame().getGameWorld().getName())) {
+ if (mapSaveEnabled && event.getPlayer().getWorld().getName().equals(Main.getInstance().getGame().getGameWorld())) {
if (Main.getInstance().getGame().getStatus() != Status.STANDBY && Main.getInstance().getGame().getStatus() != Status.ENDING) {
Main.getInstance().getGame().join(event.getPlayer());
} else {
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 966f581..2558763 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().getName())) return;
- if (!event.getTo().getWorld().getName().equals(Main.getInstance().getGame().getGameWorld().getName())) 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().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()) {