option to disable mapsave
This commit is contained in:
parent
bd37044e10
commit
134444243a
9 changed files with 48 additions and 22 deletions
|
@ -36,6 +36,10 @@ public class SaveMap implements ICommand {
|
||||||
public static boolean runningBackup = false;
|
public static boolean runningBackup = false;
|
||||||
|
|
||||||
public void execute(CommandSender sender, String[] args) {
|
public void execute(CommandSender sender, String[] args) {
|
||||||
|
if(!mapSaveEnabled){
|
||||||
|
sender.sendMessage(errorPrefix + message("MAPSAVE_DISABLED"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
if(Game.status != Status.STANDBY) {
|
if(Game.status != Status.STANDBY) {
|
||||||
sender.sendMessage(errorPrefix + message("GAME_INPROGRESS"));
|
sender.sendMessage(errorPrefix + message("GAME_INPROGRESS"));
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -56,7 +56,7 @@ public class SetSpawnLocation implements ICommand {
|
||||||
if(world == null){
|
if(world == null){
|
||||||
throw new RuntimeException("Unable to get world: " + spawnWorld);
|
throw new RuntimeException("Unable to get world: " + spawnWorld);
|
||||||
}
|
}
|
||||||
if(!world.getName().equals(spawnWorld)){
|
if(mapSaveEnabled && !world.getName().equals(spawnWorld)){
|
||||||
Game.worldLoader.unloadMap();
|
Game.worldLoader.unloadMap();
|
||||||
Game.worldLoader = new WorldLoader(world.getName());
|
Game.worldLoader = new WorldLoader(world.getName());
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
|
|
||||||
package net.tylermurphy.hideAndSeek.command;
|
package net.tylermurphy.hideAndSeek.command;
|
||||||
|
|
||||||
|
import net.tylermurphy.hideAndSeek.game.Game;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
|
|
||||||
import net.tylermurphy.hideAndSeek.Main;
|
import net.tylermurphy.hideAndSeek.Main;
|
||||||
|
@ -51,11 +52,13 @@ public class Setup implements ICommand {
|
||||||
msg = msg + "\n" + message("SETUP_BOUNDS");
|
msg = msg + "\n" + message("SETUP_BOUNDS");
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
File destenation = new File(Main.root+File.separator+"hideandseek_"+spawnWorld);
|
if(mapSaveEnabled) {
|
||||||
|
File destenation = new File(Main.root + File.separator + Game.getGameWorld());
|
||||||
if (!destenation.exists()) {
|
if (!destenation.exists()) {
|
||||||
msg = msg + "\n" + message("SETUP_SAVEMAP");
|
msg = msg + "\n" + message("SETUP_SAVEMAP");
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
if(count < 1) {
|
if(count < 1) {
|
||||||
sender.sendMessage(messagePrefix + message("SETUP_COMPLETE"));
|
sender.sendMessage(messagePrefix + message("SETUP_COMPLETE"));
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -78,7 +78,8 @@ public class Config {
|
||||||
seekerPing,
|
seekerPing,
|
||||||
bungeeLeave,
|
bungeeLeave,
|
||||||
lobbyItemStartAdmin,
|
lobbyItemStartAdmin,
|
||||||
leaveOnEnd;
|
leaveOnEnd,
|
||||||
|
mapSaveEnabled;
|
||||||
|
|
||||||
public static int
|
public static int
|
||||||
minPlayers,
|
minPlayers,
|
||||||
|
@ -201,6 +202,7 @@ public class Config {
|
||||||
saveMinZ = config.getInt("bounds.min.z");
|
saveMinZ = config.getInt("bounds.min.z");
|
||||||
saveMaxX = config.getInt("bounds.max.x");
|
saveMaxX = config.getInt("bounds.max.x");
|
||||||
saveMaxZ = config.getInt("bounds.max.z");
|
saveMaxZ = config.getInt("bounds.max.z");
|
||||||
|
mapSaveEnabled = config.getBoolean("mapSaveEnabled");
|
||||||
|
|
||||||
//Taunt
|
//Taunt
|
||||||
tauntEnabled = config.getBoolean("taunt.enabled");
|
tauntEnabled = config.getBoolean("taunt.enabled");
|
||||||
|
|
|
@ -61,12 +61,12 @@ public class EventListener implements Listener {
|
||||||
if(autoJoin){
|
if(autoJoin){
|
||||||
Game.join(event.getPlayer());
|
Game.join(event.getPlayer());
|
||||||
} else if(teleportToExit) {
|
} else if(teleportToExit) {
|
||||||
if (event.getPlayer().getWorld().getName().equals("hideandseek_" + spawnWorld) || event.getPlayer().getWorld().getName().equals(lobbyWorld)) {
|
if (event.getPlayer().getWorld().getName().equals(Game.getGameWorld()) || event.getPlayer().getWorld().getName().equals(lobbyWorld)) {
|
||||||
event.getPlayer().teleport(new Location(Bukkit.getWorld(exitWorld), exitPosition.getX(), exitPosition.getY(), exitPosition.getZ()));
|
event.getPlayer().teleport(new Location(Bukkit.getWorld(exitWorld), exitPosition.getX(), exitPosition.getY(), exitPosition.getZ()));
|
||||||
event.getPlayer().setGameMode(GameMode.ADVENTURE);
|
event.getPlayer().setGameMode(GameMode.ADVENTURE);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (event.getPlayer().getWorld().getName().equals("hideandseek_" + spawnWorld)) {
|
if (event.getPlayer().getWorld().getName().equals(Game.getGameWorld())) {
|
||||||
if(Game.status != Status.STANDBY){
|
if(Game.status != Status.STANDBY){
|
||||||
Game.join(event.getPlayer());
|
Game.join(event.getPlayer());
|
||||||
} else {
|
} else {
|
||||||
|
@ -115,10 +115,10 @@ public class EventListener implements Listener {
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGHEST)
|
@EventHandler(priority = EventPriority.HIGHEST)
|
||||||
public void onMove(PlayerMoveEvent event){
|
public void onMove(PlayerMoveEvent event){
|
||||||
if(!event.getPlayer().getWorld().getName().equals("hideandseek_" + spawnWorld)) return;
|
if(!event.getPlayer().getWorld().getName().equals(Game.getGameWorld())) return;
|
||||||
if(event.getPlayer().hasPermission("hideandseek.leavebounds")) return;
|
if(event.getPlayer().hasPermission("hideandseek.leavebounds")) return;
|
||||||
if(event.getTo() == null || event.getTo().getWorld() == null) return;
|
if(event.getTo() == null || event.getTo().getWorld() == null) return;
|
||||||
if(!event.getTo().getWorld().getName().equals("hideandseek_" + spawnWorld)) return;
|
if(!event.getTo().getWorld().getName().equals(Game.getGameWorld())) return;
|
||||||
if(event.getTo().getBlockX() < saveMinX || event.getTo().getBlockX() > saveMaxX || event.getTo().getBlockZ() < saveMinZ || event.getTo().getBlockZ() > saveMaxZ){
|
if(event.getTo().getBlockX() < saveMinX || event.getTo().getBlockX() > saveMaxX || event.getTo().getBlockZ() < saveMinZ || event.getTo().getBlockZ() > saveMaxZ){
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
|
@ -211,7 +211,7 @@ public class EventListener implements Listener {
|
||||||
} else {
|
} else {
|
||||||
player.setHealth(player.getMaxHealth());
|
player.setHealth(player.getMaxHealth());
|
||||||
}
|
}
|
||||||
player.teleport(new Location(Bukkit.getWorld("hideandseek_" + spawnWorld), spawnPosition.getX(), spawnPosition.getY(), spawnPosition.getZ()));
|
player.teleport(new Location(Bukkit.getWorld(Game.getGameWorld()), spawnPosition.getX(), spawnPosition.getY(), spawnPosition.getZ()));
|
||||||
if(Version.atLeast("1.9")){
|
if(Version.atLeast("1.9")){
|
||||||
XSound.ENTITY_PLAYER_DEATH.play(player, 1, 1);
|
XSound.ENTITY_PLAYER_DEATH.play(player, 1, 1);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -89,7 +89,7 @@ public class Game {
|
||||||
|
|
||||||
public static void start(Player seeker){
|
public static void start(Player seeker){
|
||||||
if(status == Status.STARTING || status == Status.PLAYING) return;
|
if(status == Status.STARTING || status == Status.PLAYING) return;
|
||||||
if(worldLoader.getWorld() != null) {
|
if(mapSaveEnabled && worldLoader.getWorld() != null) {
|
||||||
worldLoader.rollback();
|
worldLoader.rollback();
|
||||||
} else {
|
} else {
|
||||||
worldLoader.loadMap();
|
worldLoader.loadMap();
|
||||||
|
@ -105,7 +105,7 @@ public class Game {
|
||||||
for(Player player : Board.getPlayers()) {
|
for(Player player : Board.getPlayers()) {
|
||||||
player.getInventory().clear();
|
player.getInventory().clear();
|
||||||
player.setGameMode(GameMode.ADVENTURE);
|
player.setGameMode(GameMode.ADVENTURE);
|
||||||
player.teleport(new Location(Bukkit.getWorld("hideandseek_"+spawnWorld), spawnPosition.getX(),spawnPosition.getY(),spawnPosition.getZ()));
|
player.teleport(new Location(Bukkit.getWorld(getGameWorld()), spawnPosition.getX(),spawnPosition.getY(),spawnPosition.getZ()));
|
||||||
for(PotionEffect effect : player.getActivePotionEffects()){
|
for(PotionEffect effect : player.getActivePotionEffects()){
|
||||||
player.removePotionEffect(effect.getType());
|
player.removePotionEffect(effect.getType());
|
||||||
}
|
}
|
||||||
|
@ -125,7 +125,7 @@ public class Game {
|
||||||
if (glowEnabled)
|
if (glowEnabled)
|
||||||
glow = new Glow();
|
glow = new Glow();
|
||||||
worldBorder = new Border();
|
worldBorder = new Border();
|
||||||
worldBorder.resetWorldborder("hideandseek_"+spawnWorld);
|
worldBorder.resetWorldborder(getGameWorld());
|
||||||
if(gameLength > 0)
|
if(gameLength > 0)
|
||||||
timeLeft = gameLength;
|
timeLeft = gameLength;
|
||||||
for(Player player : Board.getPlayers())
|
for(Player player : Board.getPlayers())
|
||||||
|
@ -184,7 +184,7 @@ public class Game {
|
||||||
winners.add(Board.getFirstSeeker().getUniqueId());
|
winners.add(Board.getFirstSeeker().getUniqueId());
|
||||||
Database.playerInfo.addWins(players, winners, type);
|
Database.playerInfo.addWins(players, winners, type);
|
||||||
}
|
}
|
||||||
worldBorder.resetWorldborder("hideandseek_"+spawnWorld);
|
worldBorder.resetWorldborder(getGameWorld());
|
||||||
for(Player player : Board.getPlayers()) {
|
for(Player player : Board.getPlayers()) {
|
||||||
if(Version.atLeast("1.9")){
|
if(Version.atLeast("1.9")){
|
||||||
for(Player temp : Board.getPlayers()) {
|
for(Player temp : Board.getPlayers()) {
|
||||||
|
@ -220,7 +220,7 @@ public class Game {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
EventListener.temp_loc.clear();
|
EventListener.temp_loc.clear();
|
||||||
worldLoader.unloadMap();
|
if(mapSaveEnabled) worldLoader.unloadMap();
|
||||||
Board.reloadLobbyBoards();
|
Board.reloadLobbyBoards();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -228,11 +228,18 @@ public class Game {
|
||||||
if(spawnPosition.getBlockX() == 0 && spawnPosition.getBlockY() == 0 && spawnPosition.getBlockZ() == 0) return true;
|
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(lobbyPosition.getBlockX() == 0 && lobbyPosition.getBlockY() == 0 && lobbyPosition.getBlockZ() == 0) return true;
|
||||||
if(exitPosition.getBlockX() == 0 && exitPosition.getBlockY() == 0 && exitPosition.getBlockZ() == 0) return true;
|
if(exitPosition.getBlockX() == 0 && exitPosition.getBlockY() == 0 && exitPosition.getBlockZ() == 0) return true;
|
||||||
File destenation = new File(Main.root+File.separator+"hideandseek_"+spawnWorld);
|
if(mapSaveEnabled) {
|
||||||
|
File destenation = new File(Main.root + File.separator + getGameWorld());
|
||||||
if (!destenation.exists()) return true;
|
if (!destenation.exists()) return true;
|
||||||
|
}
|
||||||
return saveMinX == 0 || saveMinZ == 0 || saveMaxX == 0 || saveMaxZ == 0;
|
return saveMinX == 0 || saveMinZ == 0 || saveMaxX == 0 || saveMaxZ == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static String getGameWorld(){
|
||||||
|
if(mapSaveEnabled) return "hideandseek_"+spawnWorld;
|
||||||
|
else return spawnWorld;
|
||||||
|
}
|
||||||
|
|
||||||
public static void onTick() {
|
public static void onTick() {
|
||||||
if(isNotSetup()) return;
|
if(isNotSetup()) return;
|
||||||
if(status == Status.STANDBY) whileWaiting();
|
if(status == Status.STANDBY) whileWaiting();
|
||||||
|
@ -294,7 +301,7 @@ public class Game {
|
||||||
player.sendMessage(messagePrefix + message("GAME_JOIN_SPECTATOR"));
|
player.sendMessage(messagePrefix + message("GAME_JOIN_SPECTATOR"));
|
||||||
player.setGameMode(GameMode.SPECTATOR);
|
player.setGameMode(GameMode.SPECTATOR);
|
||||||
Board.createGameBoard(player);
|
Board.createGameBoard(player);
|
||||||
player.teleport(new Location(Bukkit.getWorld("hideandseek_"+spawnWorld), spawnPosition.getX(),spawnPosition.getY(),spawnPosition.getZ()));
|
player.teleport(new Location(Bukkit.getWorld(getGameWorld()), spawnPosition.getX(),spawnPosition.getY(),spawnPosition.getZ()));
|
||||||
Titles.sendTitle(player, 10, 70, 20, ChatColor.GRAY + "" + ChatColor.BOLD + "SPECTATING", ChatColor.WHITE + message("SPECTATOR_SUBTITLE").toString());
|
Titles.sendTitle(player, 10, 70, 20, ChatColor.GRAY + "" + ChatColor.BOLD + "SPECTATING", ChatColor.WHITE + message("SPECTATOR_SUBTITLE").toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -601,7 +608,7 @@ class Border {
|
||||||
running = true;
|
running = true;
|
||||||
broadcastMessage(worldborderPrefix + message("WORLDBORDER_DECREASING").addAmount(change));
|
broadcastMessage(worldborderPrefix + message("WORLDBORDER_DECREASING").addAmount(change));
|
||||||
currentWorldborderSize -= worldborderChange;
|
currentWorldborderSize -= worldborderChange;
|
||||||
World world = Bukkit.getWorld("hideandseek_"+spawnWorld);
|
World world = Bukkit.getWorld(Game.getGameWorld());
|
||||||
assert world != null;
|
assert world != null;
|
||||||
org.bukkit.WorldBorder border = world.getWorldBorder();
|
org.bukkit.WorldBorder border = world.getWorldBorder();
|
||||||
border.setSize(border.getSize()-change,30);
|
border.setSize(border.getSize()-change,30);
|
||||||
|
|
|
@ -60,12 +60,12 @@ teleportToExit: false
|
||||||
# Normally when the game ends, players are set back to the lobby to play another game.
|
# Normally when the game ends, players are set back to the lobby to play another game.
|
||||||
# You can disable this, and empty the lobby after the game finishes. This is like everyone
|
# You can disable this, and empty the lobby after the game finishes. This is like everyone
|
||||||
# running /hs leave at the end of the game. Players will leave either to the exit position
|
# running /hs leave at the end of the game. Players will leave either to the exit position
|
||||||
# or another server depending what you have `leaveType` set too.
|
# or another server depending on what you have `leaveType` set too.
|
||||||
# default: false
|
# default: false
|
||||||
leaveOnEnd: false
|
leaveOnEnd: false
|
||||||
|
|
||||||
# What do you want to happen when a player leaves the lobby. If you are running a single server, maybe you want to send
|
# What do you want to happen when a player leaves the lobby. If you are running a single server, maybe you want to send
|
||||||
# them to the world hub. But if you are running a bungee-cord or velocity server, maybe you want to send them to the servers
|
# them to the world hub. But if you are running a bungee-cord or velocity server, maybe you want to send them to the servers'
|
||||||
# hub.
|
# hub.
|
||||||
#
|
#
|
||||||
# EXIT - Sends the player to the specified exit position set by /hs setexit
|
# EXIT - Sends the player to the specified exit position set by /hs setexit
|
||||||
|
@ -79,6 +79,14 @@ leaveType: EXIT
|
||||||
# players too.
|
# players too.
|
||||||
leaveServer: hub
|
leaveServer: hub
|
||||||
|
|
||||||
|
# By default, the plugin forces you to use a map save to protect from changes to a map thought a game play though. It copies your
|
||||||
|
# hide-and-seek world to a separate world, and loads the game there to contain the game in an isolated and backed up map This allows you to
|
||||||
|
# not worry about your hide-and-seek map from changing, as all changes are made are in a separate world file that doesn't get saved. Once the game
|
||||||
|
# ends, it unloads the map and doesn't save. Then reloads the duplicate to the original state, rolling back the map for the next game.
|
||||||
|
# It is highly recommended that you keep this set to true unless you have other means of protecting your hide-and-seek map.
|
||||||
|
# default: true
|
||||||
|
mapSaveEnabled: true
|
||||||
|
|
||||||
# The worldborder closes every interval, which is evey [delay] in minutes.
|
# The worldborder closes every interval, which is evey [delay] in minutes.
|
||||||
# Thw worldborder starts at [size], and decreases 100 blocks every interval.
|
# Thw worldborder starts at [size], and decreases 100 blocks every interval.
|
||||||
# x & z are the center location. [enabled] is whenever the border is enabled.
|
# x & z are the center location. [enabled] is whenever the border is enabled.
|
||||||
|
|
|
@ -30,6 +30,7 @@ Localization:
|
||||||
MAPSAVE_WARNING: "All commands will be disabled whenthe save is in progress. Do not turn off the server."
|
MAPSAVE_WARNING: "All commands will be disabled whenthe save is in progress. Do not turn off the server."
|
||||||
MAPSAVE_END: "Speichervorgang abgeschlossen."
|
MAPSAVE_END: "Speichervorgang abgeschlossen."
|
||||||
MAPSAVE_ERROR: "Aktuelle Weltkarte konnte nicht gefunden werden."
|
MAPSAVE_ERROR: "Aktuelle Weltkarte konnte nicht gefunden werden."
|
||||||
|
MAPSAVE_DISABLED: "Mapsave ist in config.yml deaktiviert."
|
||||||
WORLDBORDER_DISABLE: "World Border ausgeschaltet."
|
WORLDBORDER_DISABLE: "World Border ausgeschaltet."
|
||||||
WORLDBORDER_INVALID_INPUT: "Ungültiger Wert: {AMOUNT}"
|
WORLDBORDER_INVALID_INPUT: "Ungültiger Wert: {AMOUNT}"
|
||||||
WORLDBORDER_MIN_SIZE: "World Border darf nicht geringer als 100 Blöcke sein."
|
WORLDBORDER_MIN_SIZE: "World Border darf nicht geringer als 100 Blöcke sein."
|
||||||
|
|
|
@ -30,6 +30,7 @@ Localization:
|
||||||
MAPSAVE_WARNING: "All commands will be disabled when the save is in progress. Do not turn off the server."
|
MAPSAVE_WARNING: "All commands will be disabled when the save is in progress. Do not turn off the server."
|
||||||
MAPSAVE_END: "Map save complete."
|
MAPSAVE_END: "Map save complete."
|
||||||
MAPSAVE_ERROR: "Couldn't find current map."
|
MAPSAVE_ERROR: "Couldn't find current map."
|
||||||
|
MAPSAVE_DISABLED: "Mapsave is disabled in config.yml."
|
||||||
WORLDBORDER_DISABLE: "Disabled world border."
|
WORLDBORDER_DISABLE: "Disabled world border."
|
||||||
WORLDBORDER_INVALID_INPUT: "Invalid integer {AMOUNT}."
|
WORLDBORDER_INVALID_INPUT: "Invalid integer {AMOUNT}."
|
||||||
WORLDBORDER_MIN_SIZE: "World border cannot be smaller than 100 blocks."
|
WORLDBORDER_MIN_SIZE: "World border cannot be smaller than 100 blocks."
|
||||||
|
|
Loading…
Reference in a new issue