delayed respawn
This commit is contained in:
parent
7a082c860e
commit
0bbf648c45
6 changed files with 36 additions and 5 deletions
|
@ -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) {
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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());
|
||||
|
|
|
@ -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!
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue