summaryrefslogtreewikicommitdiff
path: root/src/main/java/net/tylermurphy/hideAndSeek/game
diff options
context:
space:
mode:
authorTyler Murphy <tylermurphy534@gmail.com>2022-10-30 15:39:34 -0400
committerTyler Murphy <tylermurphy534@gmail.com>2022-10-30 15:39:34 -0400
commit667a365e7b406063617e336798ec95a0e524e2b1 (patch)
tree6c0e9c96474801be2c41ab6bb201b53ef4e2fe97 /src/main/java/net/tylermurphy/hideAndSeek/game
parentUpdate 'README.md' (diff)
downloadkenshinshideandseek-667a365e7b406063617e336798ec95a0e524e2b1.tar.gz
kenshinshideandseek-667a365e7b406063617e336798ec95a0e524e2b1.tar.bz2
kenshinshideandseek-667a365e7b406063617e336798ec95a0e524e2b1.zip
start adding multi map support
Diffstat (limited to 'src/main/java/net/tylermurphy/hideAndSeek/game')
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/game/Board.java5
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/game/Disguiser.java12
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/game/Game.java74
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/game/PlayerLoader.java34
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/game/events/Border.java43
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/game/listener/DamageHandler.java16
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/game/listener/InteractHandler.java2
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/game/listener/InventoryHandler.java28
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/game/listener/JoinLeaveHandler.java14
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/game/listener/MovementHandler.java11
10 files changed, 114 insertions, 125 deletions
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/game/Board.java b/src/main/java/net/tylermurphy/hideAndSeek/game/Board.java
index 55dfa3c..18cad40 100644
--- a/src/main/java/net/tylermurphy/hideAndSeek/game/Board.java
+++ b/src/main/java/net/tylermurphy/hideAndSeek/game/Board.java
@@ -35,7 +35,6 @@ import java.util.stream.Collectors;
import static net.tylermurphy.hideAndSeek.configuration.Config.*;
import static net.tylermurphy.hideAndSeek.configuration.Localization.message;
-@SuppressWarnings("deprecation")
public class Board {
private final List<String> Hider = new ArrayList<>(), Seeker = new ArrayList<>(), Spectator = new ArrayList<>();
@@ -244,7 +243,7 @@ public class Board {
Status status = Main.getInstance().getGame().getStatus();
Taunt taunt = Main.getInstance().getGame().getTaunt();
- Border worldBorder = Main.getInstance().getGame().getBorder();
+ Border worldBorder = Main.getInstance().getGame().getCurrentMap().getWorldBorder();
Glow glow = Main.getInstance().getGame().getGlow();
int i = 0;
@@ -259,7 +258,7 @@ public class Board {
String value = getTeam(player);
board.setLine(String.valueOf(i), line.replace("{TEAM}", value));
} else if (line.contains("{BORDER}")) {
- if (!worldBorderEnabled) continue;
+ if (!Main.getInstance().getGame().getCurrentMap().isWorldBorderEnabled()) continue;
if (worldBorder == null || status == Status.STARTING) {
board.setLine(String.valueOf(i), line.replace("{BORDER}", BORDER_COUNTING.replace("{AMOUNT}", "0")));
} else if (!worldBorder.isRunning()) {
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/game/Disguiser.java b/src/main/java/net/tylermurphy/hideAndSeek/game/Disguiser.java
index 2f8cbf6..dabb735 100644
--- a/src/main/java/net/tylermurphy/hideAndSeek/game/Disguiser.java
+++ b/src/main/java/net/tylermurphy/hideAndSeek/game/Disguiser.java
@@ -2,17 +2,17 @@ package net.tylermurphy.hideAndSeek.game;
import static net.tylermurphy.hideAndSeek.configuration.Config.*;
+import net.tylermurphy.hideAndSeek.configuration.Map;
import net.tylermurphy.hideAndSeek.game.util.Disguise;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.Nullable;
import java.util.HashMap;
-import java.util.Map;
public class Disguiser {
- private final Map<Player, Disguise> disguises;
+ private final HashMap<Player, Disguise> disguises;
public Disguiser(){
this.disguises = new HashMap<>();
@@ -35,7 +35,7 @@ public class Disguiser {
}
public void check(){
- for(Map.Entry<Player, Disguise> set : disguises.entrySet()){
+ for(HashMap.Entry<Player, Disguise> set : disguises.entrySet()){
Disguise disguise = set.getValue();
Player player = set.getKey();
if(!player.isOnline()) {
@@ -47,9 +47,9 @@ public class Disguiser {
}
}
- public void disguise(Player player, Material material){
- if(!blockhuntEnabled){
- player.sendMessage(errorPrefix + "Please enable blockhunt in config.yml to enable disguises. Blockhunt does not work on 1.8");
+ public void disguise(Player player, Material material, Map map){
+ if(!map.isBlockHuntEnabled()){
+ player.sendMessage(errorPrefix + "Please enable blockhunt in this map inside maps.yml to enable disguises. Blockhunt does not work on 1.8");
return;
}
if(disguises.containsKey(player)){
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/game/Game.java b/src/main/java/net/tylermurphy/hideAndSeek/game/Game.java
index 71c3e84..2f86849 100644
--- a/src/main/java/net/tylermurphy/hideAndSeek/game/Game.java
+++ b/src/main/java/net/tylermurphy/hideAndSeek/game/Game.java
@@ -24,18 +24,17 @@ import com.cryptomorin.xseries.messages.Titles;
import com.google.common.io.ByteArrayDataOutput;
import com.google.common.io.ByteStreams;
import net.tylermurphy.hideAndSeek.Main;
-import net.tylermurphy.hideAndSeek.game.events.Border;
+import net.tylermurphy.hideAndSeek.configuration.Map;
+import net.tylermurphy.hideAndSeek.configuration.Maps;
import net.tylermurphy.hideAndSeek.game.events.Glow;
import net.tylermurphy.hideAndSeek.game.events.Taunt;
import net.tylermurphy.hideAndSeek.game.listener.RespawnHandler;
import net.tylermurphy.hideAndSeek.game.util.*;
-import net.tylermurphy.hideAndSeek.world.WorldLoader;
import org.bukkit.*;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
-import java.io.File;
import java.util.*;
import java.util.stream.Collectors;
@@ -46,24 +45,25 @@ public class Game {
private final Taunt taunt;
private final Glow glow;
- private final Border worldBorder;
- private final WorldLoader worldLoader;
private final Board board;
private Status status;
+ private Map currentMap;
+
private int gameTick;
private int lobbyTimer;
private int startingTimer;
private int gameTimer;
private boolean hiderLeft;
- public Game(Board board){
+ public Game(Board board) {
+
+ this.currentMap = Maps.getRandomMap();
+
this.taunt = new Taunt();
this.glow = new Glow();
- this.worldBorder = new Border();
- this.worldLoader = new WorldLoader(spawnWorld);
this.status = Status.STANDBY;
@@ -92,18 +92,10 @@ public class Game {
return glow;
}
- public Border getBorder(){
- return worldBorder;
- }
-
public Taunt getTaunt(){
return taunt;
}
- public WorldLoader getWorldLoader(){
- return worldLoader;
- }
-
public void start() {
try {
Optional<Player> rand = board.getPlayers().stream().skip(new Random().nextInt(board.size())).findFirst();
@@ -115,17 +107,17 @@ public class Game {
}
public void start(Player seeker) {
- if (mapSaveEnabled) worldLoader.rollback();
+ if (mapSaveEnabled) currentMap.getWorldLoader().rollback();
board.reload();
board.addSeeker(seeker);
- PlayerLoader.loadSeeker(seeker, getGameWorld());
+ PlayerLoader.loadSeeker(seeker, currentMap);
board.getPlayers().forEach(player -> {
if(board.isSeeker(player)) return;
board.addHider(player);
- PlayerLoader.loadHider(player, getGameWorld());
+ PlayerLoader.loadHider(player, currentMap);
});
board.getPlayers().forEach(board::createGameBoard);
- worldBorder.resetWorldBorder(getGameWorld());
+ currentMap.getWorldBorder().resetWorldBorder();
if (gameLength > 0) gameTimer = gameLength;
status = Status.STARTING;
startingTimer = 30;
@@ -147,21 +139,21 @@ public class Game {
public void end() {
board.getPlayers().forEach(PlayerLoader::unloadPlayer);
- worldBorder.resetWorldBorder(getGameWorld());
+ currentMap.getWorldBorder().resetWorldBorder();
board.getPlayers().forEach(player -> {
if (leaveOnEnd) {
board.removeBoard(player);
board.remove(player);
handleBungeeLeave(player);
} else {
- player.teleport(new Location(Bukkit.getWorld(lobbyWorld), lobbyPosition.getX(),lobbyPosition.getY(),lobbyPosition.getZ()));
+ player.teleport(currentMap.getLobby());
board.createLobbyBoard(player);
board.addHider(player);
- PlayerLoader.joinPlayer(player);
+ PlayerLoader.joinPlayer(player, currentMap);
}
});
RespawnHandler.temp_loc.clear();
- if (mapSaveEnabled) worldLoader.unloadMap();
+ if (mapSaveEnabled) currentMap.getWorldLoader().unloadMap();
board.reloadLobbyBoards();
status = Status.ENDED;
}
@@ -172,14 +164,14 @@ public class Game {
ItemStack[] data = player.getInventory().getContents();
Main.getInstance().getDatabase().getInventoryData().saveInventory(player.getUniqueId(), data);
}
- PlayerLoader.joinPlayer(player);
+ PlayerLoader.joinPlayer(player, currentMap);
board.addHider(player);
board.createLobbyBoard(player);
board.reloadLobbyBoards();
if (announceMessagesToNonPlayers) Bukkit.broadcastMessage(messagePrefix + message("GAME_JOIN").addPlayer(player));
else broadcastMessage(messagePrefix + message("GAME_JOIN").addPlayer(player));
} else {
- PlayerLoader.loadSpectator(player, getGameWorld());
+ PlayerLoader.loadSpectator(player, currentMap);
board.addSpectator(player);
board.createGameBoard(player);
player.sendMessage(messagePrefix + message("GAME_JOIN_SPECTATOR"));
@@ -216,12 +208,12 @@ public class Game {
out.writeUTF(leaveServer);
player.sendPluginMessage(Main.getInstance(), "BungeeCord", out.toByteArray());
} else {
- player.teleport(new Location(Bukkit.getWorld(exitWorld), exitPosition.getX(), exitPosition.getY(), exitPosition.getZ()));
+ player.teleport(exitPosition);
}
}
public void onTick() {
- if (isNotSetup()) return;
+ if (currentMap.isNotSetup()) return;
if (status == Status.STANDBY) whileWaiting();
else if (status == Status.STARTING) whileStarting();
else if (status == Status.PLAYING) whilePlaying();
@@ -257,7 +249,7 @@ public class Game {
board.getPlayers().forEach(player -> {
PlayerLoader.resetPlayer(player, board);
if(board.isSeeker(player)){
- player.teleport(new Location(Bukkit.getWorld(getGameWorld()), spawnPosition.getX(), spawnPosition.getY(), spawnPosition.getZ()));
+ player.teleport(currentMap.getSpawn());
}
});
} else if (startingTimer == 1){
@@ -317,7 +309,7 @@ public class Game {
board.reloadGameBoards();
gameTimer--;
}
- if (worldBorderEnabled) worldBorder.update();
+ if (currentMap.isWorldBorderEnabled()) currentMap.getWorldBorder().update();
if (tauntEnabled) taunt.update();
if (glowEnabled || alwaysGlow) glow.update();
}
@@ -331,21 +323,17 @@ public class Game {
}
}
- public boolean isNotSetup() {
- if (spawnPosition.getBlockX() == 0 && spawnPosition.getBlockY() == 0 && spawnPosition.getBlockZ() == 0) return true;
- if (lobbyPosition.getBlockX() == 0 && lobbyPosition.getBlockY() == 0 && lobbyPosition.getBlockZ() == 0) return true;
- if (exitPosition.getBlockX() == 0 && exitPosition.getBlockY() == 0 && exitPosition.getBlockZ() == 0) return true;
- if (seekerLobbyPosition.getBlockX() == 0 && seekerLobbyPosition.getBlockY() == 0 && seekerLobbyPosition.getBlockZ() == 0) return true;
- if (mapSaveEnabled) {
- File destination = new File(Main.getInstance().getWorldContainer() + File.separator + getGameWorld());
- if (!destination.exists()) return true;
- }
- return saveMinX == 0 || saveMinZ == 0 || saveMaxX == 0 || saveMaxZ == 0;
+ public Map getCurrentMap() {
+ return currentMap;
+ }
+
+ public void setCurrentMap(Map map) {
+ this.currentMap = map;
}
- public String getGameWorld() {
- if (mapSaveEnabled) return "hideandseek_"+spawnWorld;
- else return spawnWorld;
+ public World getGameWorld() {
+ if(currentMap == null || currentMap.getSpawn() == null) return null;
+ else return currentMap.getSpawn().getWorld();
}
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 eedfabe..83f4eee 100644
--- a/src/main/java/net/tylermurphy/hideAndSeek/game/PlayerLoader.java
+++ b/src/main/java/net/tylermurphy/hideAndSeek/game/PlayerLoader.java
@@ -23,9 +23,8 @@ import com.cryptomorin.xseries.messages.Titles;
import net.md_5.bungee.api.ChatColor;
import net.tylermurphy.hideAndSeek.Main;
import net.tylermurphy.hideAndSeek.configuration.Items;
-import org.bukkit.Bukkit;
+import net.tylermurphy.hideAndSeek.configuration.Map;
import org.bukkit.GameMode;
-import org.bukkit.Location;
import org.bukkit.attribute.Attribute;
import org.bukkit.attribute.AttributeInstance;
import org.bukkit.entity.Player;
@@ -35,30 +34,29 @@ import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import static net.tylermurphy.hideAndSeek.configuration.Config.*;
-import static net.tylermurphy.hideAndSeek.configuration.Config.lobbyPosition;
import static net.tylermurphy.hideAndSeek.configuration.Localization.message;
@SuppressWarnings("deprecation")
public class PlayerLoader {
- public static void loadHider(Player player, String gameWorld){
- player.teleport(new Location(Bukkit.getWorld(gameWorld), spawnPosition.getX(),spawnPosition.getY(),spawnPosition.getZ()));
+ public static void loadHider(Player player, Map map){
+ player.teleport(map.getSpawn());
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());
- if(blockhuntEnabled){
- openBlockHuntPicker(player);
+ if(map.isBlockHuntEnabled()){
+ openBlockHuntPicker(player, map);
}
}
- public static void loadSeeker(Player player, String gameWorld){
- player.teleport(new Location(Bukkit.getWorld(gameWorld), seekerLobbyPosition.getX(),seekerLobbyPosition.getY(),seekerLobbyPosition.getZ()));
+ public static void loadSeeker(Player player, Map map){
+ player.teleport(map.getSeekerLobby());
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, String gameWorld){
- player.teleport(new Location(Bukkit.getWorld(gameWorld), spawnPosition.getX(),spawnPosition.getY(),spawnPosition.getZ()));
+ public static void loadSpectator(Player player, Map map){
+ player.teleport(map.getSpawn());
loadPlayer(player);
player.setAllowFlight(true);
player.setFlying(true);
@@ -115,8 +113,8 @@ public class PlayerLoader {
player.setFallDistance(0.0F);
}
- public static void joinPlayer(Player player){
- player.teleport(new Location(Bukkit.getWorld(lobbyWorld), lobbyPosition.getX(),lobbyPosition.getY(),lobbyPosition.getZ()));
+ public static void joinPlayer(Player player, Map map){
+ player.teleport(map.getLobby());
loadPlayer(player);
if (lobbyStartItem != null && (!lobbyItemStartAdmin || player.hasPermission("hideandseek.start")))
player.getInventory().setItem(lobbyItemStartPosition, lobbyStartItem);
@@ -143,11 +141,11 @@ public class PlayerLoader {
}
}
- public static void openBlockHuntPicker(Player player){
- int slots = ((blockhuntBlocks.size()-1)/9)*9+9;
- Inventory inventory = Main.getInstance().getServer().createInventory(null, slots, "Select a Block");
- for(int i=0;i<blockhuntBlocks.size();i++){
- inventory.setItem(i, new ItemStack(blockhuntBlocks.get(i)));
+ public static void openBlockHuntPicker(Player player, Map map){
+ int slots = ((map.getBlockHunt().size()-1)/9)*9+9;
+ Inventory inventory = Main.getInstance().getServer().createInventory(null, slots, "Select a Block: " + map.getName());
+ for(int i=0;i<map.getBlockHunt().size();i++){
+ inventory.setItem(i, new ItemStack(map.getBlockHunt().get(i)));
}
player.openInventory(inventory);
}
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 647c4b6..9fb7e13 100644
--- a/src/main/java/net/tylermurphy/hideAndSeek/game/events/Border.java
+++ b/src/main/java/net/tylermurphy/hideAndSeek/game/events/Border.java
@@ -1,8 +1,7 @@
package net.tylermurphy.hideAndSeek.game.events;
import net.tylermurphy.hideAndSeek.Main;
-import org.bukkit.Bukkit;
-import org.bukkit.World;
+import net.tylermurphy.hideAndSeek.configuration.Map;
import static net.tylermurphy.hideAndSeek.configuration.Config.*;
import static net.tylermurphy.hideAndSeek.configuration.Localization.message;
@@ -11,9 +10,13 @@ public class Border {
private int delay;
private boolean running;
+ private final Map map;
+ private int currentSize;
- public Border() {
- delay = 60 * worldBorderDelay;
+ public Border(Map map) {
+ this.map = map;
+ this.delay = (int) (60 * map.getWorldBorderData().getY());
+ this.currentSize = (int) map.getWorldBorderData().getX();
}
public void update() {
@@ -21,7 +24,7 @@ public class Border {
Main.getInstance().getGame().broadcastMessage(worldBorderPrefix + message("WORLDBORDER_WARN"));
} else if (delay == 0) {
if (running) {
- delay = 60 * worldBorderDelay;
+ delay = (int) (60 * map.getWorldBorderData().getY());
running = false;
}
else decreaseWorldBorder();
@@ -30,34 +33,30 @@ public class Border {
}
private void decreaseWorldBorder() {
- if (currentWorldborderSize == 100) return;
- int change = worldBorderChange;
- if (currentWorldborderSize-worldBorderChange < 100) {
- change = currentWorldborderSize-100;
+ if (currentSize == 100) return;
+ int change = (int) map.getWorldBorderData().getZ();
+ if (currentSize-change < 100) {
+ change = currentSize-100;
}
running = true;
Main.getInstance().getGame().broadcastMessage(worldBorderPrefix + message("WORLDBORDER_DECREASING").addAmount(change));
- currentWorldborderSize -= worldBorderChange;
- World world = Bukkit.getWorld(Main.getInstance().getGame().getGameWorld());
- assert world != null;
- org.bukkit.WorldBorder border = world.getWorldBorder();
+ currentSize -= map.getWorldBorderData().getZ();
+ org.bukkit.WorldBorder border = map.getSpawn().getWorld().getWorldBorder();
border.setSize(border.getSize()-change,30);
delay = 30;
}
- public void resetWorldBorder(String worldName) {
- World world = Bukkit.getWorld(worldName);
- assert world != null;
- org.bukkit.WorldBorder border = world.getWorldBorder();
- if (worldBorderEnabled) {
- border.setSize(worldBorderSize);
- border.setCenter(worldBorderPosition.getX(), worldBorderPosition.getZ());
- currentWorldborderSize = worldBorderSize;
+ public void resetWorldBorder() {
+ org.bukkit.WorldBorder border = map.getSpawn().getWorld().getWorldBorder();
+ if (map.isWorldBorderEnabled()) {
+ border.setSize(map.getWorldBorderData().getX());
+ border.setCenter(map.getWorldBorderPos().getX(), map.getWorldBorderPos().getY());
+ currentSize = (int) map.getWorldBorderData().getX();
} else {
border.setSize(30000000);
border.setCenter(0, 0);
}
- delay = 60 * worldBorderDelay;
+ delay = (int) (60 * map.getWorldBorderData().getY());
}
public int getDelay() {
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 d03d5d6..cd63fd8 100644
--- a/src/main/java/net/tylermurphy/hideAndSeek/game/listener/DamageHandler.java
+++ b/src/main/java/net/tylermurphy/hideAndSeek/game/listener/DamageHandler.java
@@ -7,7 +7,6 @@ import net.tylermurphy.hideAndSeek.game.Game;
import net.tylermurphy.hideAndSeek.game.PlayerLoader;
import net.tylermurphy.hideAndSeek.game.util.Status;
import org.bukkit.Bukkit;
-import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.entity.Projectile;
import org.bukkit.event.EventHandler;
@@ -18,7 +17,6 @@ import org.bukkit.event.entity.EntityDamageEvent;
import org.bukkit.event.entity.PlayerDeathEvent;
import static net.tylermurphy.hideAndSeek.configuration.Config.*;
-import static net.tylermurphy.hideAndSeek.configuration.Config.spawnPosition;
import static net.tylermurphy.hideAndSeek.configuration.Localization.message;
public class DamageHandler implements Listener {
@@ -32,8 +30,8 @@ public class DamageHandler implements Listener {
// Define variables
Player player = (Player) event.getEntity();
Player attacker = null;
- // If no spawn position, we won't be able to manage their death :o
- if (spawnPosition == null) { return; }
+ // If map is not setup we won't be able to process on it :o
+ if (game.getCurrentMap().isNotSetup()) { return; }
// If there is an attacker, find them
if (event instanceof EntityDamageByEntityEvent) {
if (((EntityDamageByEntityEvent) event).getDamager() instanceof Player)
@@ -73,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(new Location(Bukkit.getWorld(game.getGameWorld()), spawnPosition.getX(), spawnPosition.getY(), spawnPosition.getZ()));
+ player.teleport(game.getCurrentMap().getSpawn());
} else if (!Main.getInstance().supports(18) && player.getLocation().getY() < 0) {
- player.teleport(new Location(Bukkit.getWorld(game.getGameWorld()), spawnPosition.getX(), spawnPosition.getY(), spawnPosition.getZ()));
+ player.teleport(game.getCurrentMap().getSpawn());
}
return;
}
@@ -98,15 +96,15 @@ public class DamageHandler implements Listener {
Main.getInstance().getDisguiser().reveal(player);
// Teleport player to seeker spawn
if(delayedRespawn){
- player.teleport(new Location(Bukkit.getWorld(game.getGameWorld()), seekerLobbyPosition.getX(), seekerLobbyPosition.getY(), seekerLobbyPosition.getZ()));
+ player.teleport(game.getCurrentMap().getSeekerLobby());
player.sendMessage(messagePrefix + message("RESPAWN_NOTICE").addAmount(delayedRespawnDelay));
Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(Main.getInstance(), () -> {
if(game.getStatus() == Status.PLAYING){
- player.teleport(new Location(Bukkit.getWorld(game.getGameWorld()), spawnPosition.getX(), spawnPosition.getY(), spawnPosition.getZ()));
+ player.teleport(game.getCurrentMap().getSpawn());
}
}, delayedRespawnDelay * 20L);
} else {
- player.teleport(new Location(Bukkit.getWorld(game.getGameWorld()), spawnPosition.getX(), spawnPosition.getY(), spawnPosition.getZ()));
+ player.teleport(game.getCurrentMap().getSpawn());
}
// 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 3440780..1f2c388 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().isNotSetup()) {
+ if (Main.getInstance().getGame().getCurrentMap().isNotSetup()) {
event.getPlayer().sendMessage(errorPrefix + message("GAME_SETUP"));
return;
}
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/game/listener/InventoryHandler.java b/src/main/java/net/tylermurphy/hideAndSeek/game/listener/InventoryHandler.java
index e72bea0..2439b2b 100644
--- a/src/main/java/net/tylermurphy/hideAndSeek/game/listener/InventoryHandler.java
+++ b/src/main/java/net/tylermurphy/hideAndSeek/game/listener/InventoryHandler.java
@@ -24,6 +24,8 @@ import static net.tylermurphy.hideAndSeek.configuration.Config.*;
import com.cryptomorin.xseries.XMaterial;
import net.tylermurphy.hideAndSeek.Main;
import net.tylermurphy.hideAndSeek.command.Debug;
+import net.tylermurphy.hideAndSeek.configuration.Map;
+import net.tylermurphy.hideAndSeek.configuration.Maps;
import net.tylermurphy.hideAndSeek.game.util.Status;
import org.bukkit.Material;
import org.bukkit.entity.Player;
@@ -79,17 +81,22 @@ public class InventoryHandler implements Listener {
private void checkForBlockHuntMenu(InventoryClickEvent event){
boolean test;
+ String mapName;
if(Main.getInstance().supports(14)){
- test = event.getView().getTitle().equals("Select a Block");
+ test = event.getView().getTitle().startsWith("Select a Block: ");
+ mapName = event.getView().getTitle().substring("Select a Block: ".length());
} else {
- test = event.getInventory().getName().equals("Select a Block");
+ test = event.getInventory().getName().startsWith("Select a Block: ");
+ mapName = event.getInventory().getName().substring("Select a Block: ".length());
}
if(!test) return;
event.setCancelled(true);
- Material mat = blockhuntBlocks.get(event.getRawSlot());
+ Map map = Maps.getMap(mapName);
+ if(map == null) return;
+ Material mat = map.getBlockHunt().get(event.getRawSlot());
if(mat == null) return;
Player player = (Player) event.getWhoClicked();
- Main.getInstance().getDisguiser().disguise(player, mat);
+ Main.getInstance().getDisguiser().disguise(player, mat, map);
player.closeInventory();
}
@@ -97,17 +104,22 @@ public class InventoryHandler implements Listener {
public void onInventoryClose(InventoryCloseEvent event){
if (!(event.getPlayer() instanceof Player)) return;
boolean test;
+ String mapName;
if(Main.getInstance().supports(14)){
- test = event.getView().getTitle().equals("Select a Block");
+ test = event.getView().getTitle().startsWith("Select a Block: ");
+ mapName = event.getView().getTitle().substring("Select a Block: ".length());
} else {
- test = event.getInventory().getName().equals("Select a Block");
+ test = event.getInventory().getName().startsWith("Select a Block: ");
+ mapName = event.getInventory().getName().substring("Select a Block: ".length());
}
if(!test) return;
- Material mat = blockhuntBlocks.get(0);
+ Map map = Maps.getMap(mapName);
+ if(map == null) return;
+ Material mat = map.getBlockHunt().get(0);
if(mat == null) return;
Player player = (Player) event.getPlayer();
if(Main.getInstance().getDisguiser().disguised(player)) return;
- Main.getInstance().getDisguiser().disguise(player, mat);
+ Main.getInstance().getDisguiser().disguise(player, mat, map);
player.closeInventory();
}
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 6d88ebf..0ad95b5 100644
--- a/src/main/java/net/tylermurphy/hideAndSeek/game/listener/JoinLeaveHandler.java
+++ b/src/main/java/net/tylermurphy/hideAndSeek/game/listener/JoinLeaveHandler.java
@@ -4,9 +4,7 @@ import net.tylermurphy.hideAndSeek.Main;
import net.tylermurphy.hideAndSeek.configuration.Items;
import net.tylermurphy.hideAndSeek.game.PlayerLoader;
import net.tylermurphy.hideAndSeek.game.util.Status;
-import org.bukkit.Bukkit;
import org.bukkit.GameMode;
-import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
@@ -17,8 +15,6 @@ import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.inventory.ItemStack;
import static net.tylermurphy.hideAndSeek.configuration.Config.*;
-import static net.tylermurphy.hideAndSeek.configuration.Config.exitPosition;
-
public class JoinLeaveHandler implements Listener {
@EventHandler(priority = EventPriority.HIGHEST)
@@ -28,20 +24,20 @@ public class JoinLeaveHandler implements Listener {
}
Main.getInstance().getBoard().remove(event.getPlayer());
removeItems(event.getPlayer());
- if (Main.getInstance().getGame().isNotSetup()) return;
+ if (Main.getInstance().getGame().getCurrentMap().isNotSetup()) return;
if (autoJoin) {
Main.getInstance().getGame().join(event.getPlayer());
} else if (teleportToExit) {
- if (event.getPlayer().getWorld().getName().equals(Main.getInstance().getGame().getGameWorld()) || event.getPlayer().getWorld().getName().equals(lobbyWorld)) {
- event.getPlayer().teleport(new Location(Bukkit.getWorld(exitWorld), exitPosition.getX(), exitPosition.getY(), exitPosition.getZ()));
+ if (event.getPlayer().getWorld().getName().equals(Main.getInstance().getGame().getGameWorld().getName()) || 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())) {
+ if (mapSaveEnabled && event.getPlayer().getWorld().getName().equals(Main.getInstance().getGame().getGameWorld().getName())) {
if (Main.getInstance().getGame().getStatus() != Status.STANDBY && Main.getInstance().getGame().getStatus() != Status.ENDING) {
Main.getInstance().getGame().join(event.getPlayer());
} else {
- event.getPlayer().teleport(new Location(Bukkit.getWorld(exitWorld), exitPosition.getX(), exitPosition.getY(), exitPosition.getZ()));
+ event.getPlayer().teleport(exitPosition);
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 e6e32f6..966f581 100644
--- a/src/main/java/net/tylermurphy/hideAndSeek/game/listener/MovementHandler.java
+++ b/src/main/java/net/tylermurphy/hideAndSeek/game/listener/MovementHandler.java
@@ -2,6 +2,7 @@ package net.tylermurphy.hideAndSeek.game.listener;
import com.google.common.collect.Sets;
import net.tylermurphy.hideAndSeek.Main;
+import net.tylermurphy.hideAndSeek.configuration.Map;
import net.tylermurphy.hideAndSeek.game.listener.events.PlayerJumpEvent;
import org.bukkit.Material;
import org.bukkit.event.EventHandler;
@@ -12,9 +13,6 @@ import org.bukkit.event.player.PlayerMoveEvent;
import java.util.Set;
import java.util.UUID;
-import static net.tylermurphy.hideAndSeek.configuration.Config.*;
-import static net.tylermurphy.hideAndSeek.configuration.Config.saveMaxZ;
-
public class MovementHandler implements Listener {
private final Set<UUID> prevPlayersOnGround = Sets.newHashSet();
@@ -51,10 +49,11 @@ 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().getGameWorld().getName())) return;
+ if (!event.getTo().getWorld().getName().equals(Main.getInstance().getGame().getGameWorld().getName())) return;
if (event.getPlayer().hasPermission("hideandseek.leavebounds")) return;
- if (event.getTo().getBlockX() < saveMinX || event.getTo().getBlockX() > saveMaxX || event.getTo().getBlockZ() < saveMinZ || event.getTo().getBlockZ() > saveMaxZ) {
+ 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()) {
event.setCancelled(true);
}
}