summaryrefslogtreewikicommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorTyler Murphy <tylermurphy534@gmail.com>2022-08-16 20:08:04 -0400
committerTyler Murphy <tylermurphy534@gmail.com>2022-08-16 20:08:04 -0400
commit0bbf648c458edfa189f5edbd5615544c4040b684 (patch)
tree12d39d7e1e2c09e0db81c7c3d1313ec79b01991a /src/main/java
parentFix Board Join Exceptions on 1.8, and fixed Failed to Select Seeker (diff)
downloadkenshinshideandseek-0bbf648c458edfa189f5edbd5615544c4040b684.tar.gz
kenshinshideandseek-0bbf648c458edfa189f5edbd5615544c4040b684.tar.bz2
kenshinshideandseek-0bbf648c458edfa189f5edbd5615544c4040b684.zip
delayed respawn
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/configuration/Config.java10
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/game/Game.java7
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/game/listener/DamageHandler.java14
3 files changed, 26 insertions, 5 deletions
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/configuration/Config.java b/src/main/java/net/tylermurphy/hideAndSeek/configuration/Config.java
index 853b6a2..a71369f 100644
--- a/src/main/java/net/tylermurphy/hideAndSeek/configuration/Config.java
+++ b/src/main/java/net/tylermurphy/hideAndSeek/configuration/Config.java
@@ -93,7 +93,8 @@ public class Config {
mapSaveEnabled,
allowNaturalCauses,
saveInventory,
- blockhuntEnabled;
+ blockhuntEnabled,
+ delayedRespawn;
public static int
minPlayers,
@@ -119,7 +120,8 @@ public class Config {
lobbyItemStartPosition,
flightToggleItemPosition,
teleportItemPosition,
- solidifyTime;
+ solidifyTime,
+ delayedRespawnDelay;
public static float
seekerPingLeadingVolume,
@@ -365,6 +367,10 @@ public class Config {
Main.getInstance().getLogger().warning("databaseType: "+databaseType+" is not a valid configuration option!");
databaseType = "SQLITE";
}
+
+ delayedRespawn = config.getBoolean("delayedRespawn.enabled");
+ delayedRespawnDelay = Math.max(0,config.getInt("delayedRespawn.delay"));
+
}
public static void addToConfig(String path, Object value) {
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/game/Game.java b/src/main/java/net/tylermurphy/hideAndSeek/game/Game.java
index 7c5eaf2..71c3e84 100644
--- a/src/main/java/net/tylermurphy/hideAndSeek/game/Game.java
+++ b/src/main/java/net/tylermurphy/hideAndSeek/game/Game.java
@@ -254,7 +254,12 @@ public class Game {
if (startingTimer == 0) {
message = message("START").toString();
status = Status.PLAYING;
- board.getPlayers().forEach(player -> PlayerLoader.resetPlayer(player, board));
+ 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()));
+ }
+ });
} else if (startingTimer == 1){
message = message("START_COUNTDOWN_LAST").addAmount(startingTimer).toString();
} else {
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 cb4cba5..d03d5d6 100644
--- a/src/main/java/net/tylermurphy/hideAndSeek/game/listener/DamageHandler.java
+++ b/src/main/java/net/tylermurphy/hideAndSeek/game/listener/DamageHandler.java
@@ -80,7 +80,7 @@ public class DamageHandler implements Listener {
return;
}
// Players cannot take damage while game is not in session
- if (board.contains(player) && (game.getStatus() == Status.STANDBY || game.getStatus() == Status.STARTING)){
+ if (board.contains(player) && game.getStatus() != Status.PLAYING){
event.setCancelled(true);
return;
}
@@ -97,7 +97,17 @@ public class DamageHandler implements Listener {
// Reveal player if they are disguised
Main.getInstance().getDisguiser().reveal(player);
// Teleport player to seeker spawn
- player.teleport(new Location(Bukkit.getWorld(game.getGameWorld()), spawnPosition.getX(), spawnPosition.getY(), spawnPosition.getZ()));
+ if(delayedRespawn){
+ player.teleport(new Location(Bukkit.getWorld(game.getGameWorld()), seekerLobbyPosition.getX(), seekerLobbyPosition.getY(), seekerLobbyPosition.getZ()));
+ 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()));
+ }
+ }, delayedRespawnDelay * 20L);
+ } else {
+ player.teleport(new Location(Bukkit.getWorld(game.getGameWorld()), spawnPosition.getX(), spawnPosition.getY(), spawnPosition.getZ()));
+ }
// Add leaderboard stats
board.addDeath(player.getUniqueId());
if (attacker != null) board.addKill(attacker.getUniqueId());