summaryrefslogtreewikicommitdiff
path: root/src/main
diff options
context:
space:
mode:
Diffstat (limited to '')
-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
-rw-r--r--src/main/resources/config.yml8
-rw-r--r--src/main/resources/lang/localization_de-DE.yml1
-rw-r--r--src/main/resources/lang/localization_en-US.yml1
6 files changed, 36 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());
diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml
index b648c8b..1d61cdc 100644
--- a/src/main/resources/config.yml
+++ b/src/main/resources/config.yml
@@ -100,6 +100,14 @@ mapSaveEnabled: true
# default: false
saveInventory: false
+# By default, if you die in game, you will have to wait [delay] seconds until you respawn. This make is so that if you are killed as a seeker, you cannot
+# instally go to where the Hider that killed you was. Or if you were a Hider and died, you cant instally go to where you know other Hiders are. It gives some
+# breathing room. This can be disabled.
+# default: true
+delayedRespawn:
+ enabled: true
+ delay: 5
+
# How you want to store game data. If you are running a single server, sqlite is fine, as no setup is necessary.
# But if you want the data to go across multiple servers, you can switch it to mysql.
# WARNING: Data is not saved across databases. You have to migrate the data yourself!
diff --git a/src/main/resources/lang/localization_de-DE.yml b/src/main/resources/lang/localization_de-DE.yml
index 4e6e74e..75523b2 100644
--- a/src/main/resources/lang/localization_de-DE.yml
+++ b/src/main/resources/lang/localization_de-DE.yml
@@ -74,6 +74,7 @@ Localization:
BLOCKED_COMMAND: "Command blocked by Kenshin's Hide And Seek"
FLYING_ENABLED: "Fliegen aktiviert"
FLYING_DISABLED: "Fliegen deaktiviert"
+ RESPAWN_NOTICE: "Du wirst in {AMOUNT} Sekunden respawnen."
# DO NOT EDIT IT OR IT MAY BREAK OR RESET FILE
version: 3
diff --git a/src/main/resources/lang/localization_en-US.yml b/src/main/resources/lang/localization_en-US.yml
index ef3fe88..02bc942 100644
--- a/src/main/resources/lang/localization_en-US.yml
+++ b/src/main/resources/lang/localization_en-US.yml
@@ -75,6 +75,7 @@ Localization:
BLOCKED_COMMAND: "Command blocked by Hide And Seek plugin."
FLYING_ENABLED: "&l&bFlying Enabled"
FLYING_DISABLED: "&l&bFlying Disabled"
+ RESPAWN_NOTICE: "You will respawn in {AMOUNT} seconds."
# DO NOT EDIT IT OR IT MAY BREAK OR RESET FILE
version: 3