From 0015592730f936350718ec61cd522c6dea3fe9c1 Mon Sep 17 00:00:00 2001 From: Tyler Murphy Date: Fri, 22 Oct 2021 20:03:15 -0400 Subject: [PATCH] localization --- .../net/tylermurphy/hideAndSeek/Main.java | 14 +++-- .../hideAndSeek/bukkit/CommandHandler.java | 11 ++-- .../hideAndSeek/bukkit/EventListener.java | 10 +-- .../tylermurphy/hideAndSeek/bukkit/Tick.java | 15 ++--- .../tylermurphy/hideAndSeek/command/Join.java | 17 +++--- .../hideAndSeek/command/Leave.java | 15 ++--- .../hideAndSeek/command/Reload.java | 12 ++-- .../hideAndSeek/command/SaveMap.java | 15 ++--- .../hideAndSeek/command/SetBorder.java | 19 +++--- .../hideAndSeek/command/SetExitLocation.java | 7 ++- .../hideAndSeek/command/SetLobbyLocation.java | 7 ++- .../hideAndSeek/command/SetSpawnLocation.java | 9 +-- .../hideAndSeek/command/Setup.java | 19 +++--- .../hideAndSeek/command/Start.java | 33 +++++----- .../tylermurphy/hideAndSeek/command/Stop.java | 9 +-- .../{ => configuration}/Config.java | 35 +---------- .../configuration/Localization.java | 37 +++++++++++ .../configuration/LocalizationString.java | 48 +++++++++++++++ .../tylermurphy/hideAndSeek/events/Taunt.java | 10 +-- .../hideAndSeek/events/Worldborder.java | 7 ++- .../tylermurphy/hideAndSeek/util/Board.java | 4 +- .../tylermurphy/hideAndSeek/util/Util.java | 2 +- src/main/resources/config.yml | 61 +++++++++++++++++++ src/main/resources/localization.yml | 50 +++++++++++++++ src/main/resources/plugin.yml | 14 +++-- 25 files changed, 336 insertions(+), 144 deletions(-) rename src/main/java/net/tylermurphy/hideAndSeek/{ => configuration}/Config.java (70%) create mode 100644 src/main/java/net/tylermurphy/hideAndSeek/configuration/Localization.java create mode 100644 src/main/java/net/tylermurphy/hideAndSeek/configuration/LocalizationString.java create mode 100644 src/main/resources/config.yml create mode 100644 src/main/resources/localization.yml diff --git a/src/main/java/net/tylermurphy/hideAndSeek/Main.java b/src/main/java/net/tylermurphy/hideAndSeek/Main.java index 6bdc8d2..30d0233 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/Main.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/Main.java @@ -18,6 +18,8 @@ import net.tylermurphy.hideAndSeek.bukkit.CommandHandler; import net.tylermurphy.hideAndSeek.bukkit.EventListener; import net.tylermurphy.hideAndSeek.bukkit.TabCompleter; import net.tylermurphy.hideAndSeek.bukkit.Tick; +import net.tylermurphy.hideAndSeek.configuration.Config; +import net.tylermurphy.hideAndSeek.configuration.Localization; import net.tylermurphy.hideAndSeek.events.Glow; import net.tylermurphy.hideAndSeek.events.Taunt; import net.tylermurphy.hideAndSeek.events.Worldborder; @@ -26,7 +28,7 @@ import net.tylermurphy.hideAndSeek.util.Board; public class Main extends JavaPlugin implements Listener { public static Main plugin; - public static File root; + public static File root, data; public Taunt taunt; public Glow glow; @@ -49,15 +51,19 @@ public class Main extends JavaPlugin implements Listener { // Setup Initial Player Count getServer().getPluginManager().registerEvents(new EventListener(), this); + // Get Data Folder + root = this.getServer().getWorldContainer(); + data = this.getDataFolder(); + // Init Configuration + Main.plugin.saveResource("localization.yml", false); + Main.plugin.saveResource("config.yml", false); Config.loadConfig(); + Localization.init(); // Register Commands CommandHandler.registerCommands(); - // Get Data Folder - root = this.getServer().getWorldContainer(); - //Board board = new Board(); board.reload(); diff --git a/src/main/java/net/tylermurphy/hideAndSeek/bukkit/CommandHandler.java b/src/main/java/net/tylermurphy/hideAndSeek/bukkit/CommandHandler.java index af44954..2001df6 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/bukkit/CommandHandler.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/bukkit/CommandHandler.java @@ -1,6 +1,7 @@ package net.tylermurphy.hideAndSeek.bukkit; -import static net.tylermurphy.hideAndSeek.Config.*; +import static net.tylermurphy.hideAndSeek.configuration.Config.*; +import static net.tylermurphy.hideAndSeek.configuration.Localization.*; import java.util.Arrays; import java.util.LinkedHashMap; @@ -40,18 +41,18 @@ public class CommandHandler { public static boolean handleCommand(CommandSender sender, Command cmd, String label, String[] args) { if(sender instanceof Player == false) { - sender.sendMessage(errorPrefix + "This command can only be run as a player."); + sender.sendMessage(errorPrefix + message("COMMAND_PLAYER_ONLY")); } else if(args.length < 1 || !COMMAND_REGISTER.containsKey(args[0].toLowerCase()) ) { if(permissionsRequired && !sender.hasPermission("hideandseek.about")) { - sender.sendMessage(errorPrefix + "You are not allowed to run this command."); + sender.sendMessage(errorPrefix + LOCAL.get("")); } else { COMMAND_REGISTER.get("about").execute(sender, null); } } else { if(!args[0].toLowerCase().equals("about") && !args[0].toLowerCase().equals("help") && SaveMap.runningBackup) { - sender.sendMessage(errorPrefix + "Map save is currently in progress. Try again later."); + sender.sendMessage(errorPrefix + message("MAPSAVE_INPROGRESS")); } else if(permissionsRequired && !sender.hasPermission("hideandseek."+args[0].toLowerCase())) { - sender.sendMessage(errorPrefix + "You are not allowed to run this command."); + sender.sendMessage(errorPrefix + message("COMMAND_NOT_ALLOWED")); } else { try { COMMAND_REGISTER.get(args[0].toLowerCase()).execute(sender,Arrays.copyOfRange(args, 1, args.length)); diff --git a/src/main/java/net/tylermurphy/hideAndSeek/bukkit/EventListener.java b/src/main/java/net/tylermurphy/hideAndSeek/bukkit/EventListener.java index c50fbe4..c0ee5eb 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/bukkit/EventListener.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/bukkit/EventListener.java @@ -1,6 +1,6 @@ package net.tylermurphy.hideAndSeek.bukkit; -import static net.tylermurphy.hideAndSeek.Config.*; +import static net.tylermurphy.hideAndSeek.configuration.Config.*; import org.bukkit.Bukkit; import org.bukkit.GameMode; @@ -24,11 +24,11 @@ import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerKickEvent; import org.bukkit.event.player.PlayerQuitEvent; -import net.md_5.bungee.api.ChatColor; import net.tylermurphy.hideAndSeek.util.Packet; import net.tylermurphy.hideAndSeek.util.Util; import net.tylermurphy.hideAndSeek.Main; import net.tylermurphy.hideAndSeek.command.Start; +import static net.tylermurphy.hideAndSeek.configuration.Localization.*; public class EventListener implements Listener { @@ -79,13 +79,13 @@ public class EventListener implements Listener { player.teleport(new Location(Bukkit.getWorld("hideandseek_"+spawnWorld), spawnPosition.getX(), spawnPosition.getY(), spawnPosition.getZ())); Packet.playSound(player, Sound.ENTITY_PLAYER_DEATH, 1, 1); if(Main.plugin.board.isSeeker(player)) { - Bukkit.broadcastMessage(String.format(messagePrefix + "%s%s%s was killed", ChatColor.RED, event.getEntity().getName(), ChatColor.WHITE)); + Bukkit.broadcastMessage(message("GAME_PLAYER_DEATH").addPlayer(event.getEntity()).toString()); } if(Main.plugin.board.isHider(player)) { if(attacker == null) { - Util.broadcastMessage(String.format(messagePrefix + "%s%s%s was found and became a seeker", ChatColor.GOLD, event.getEntity().getName(), ChatColor.WHITE)); + Util.broadcastMessage(message("GAME_PLAYER_FOUND").addPlayer(event.getEntity()).toString()); } else { - Util.broadcastMessage(String.format(messagePrefix + "%s%s%s was found by %s%s%s and became a seeker", ChatColor.GOLD, event.getEntity().getName(), ChatColor.WHITE, ChatColor.RED, attacker.getName(), ChatColor.WHITE)); + Util.broadcastMessage(message("GAME_PLAYER_FOUND_BY").addPlayer(event.getEntity()).addPlayer(attacker).toString()); } Main.plugin.board.addSeeker(player); } diff --git a/src/main/java/net/tylermurphy/hideAndSeek/bukkit/Tick.java b/src/main/java/net/tylermurphy/hideAndSeek/bukkit/Tick.java index a876df1..a75ce53 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/bukkit/Tick.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/bukkit/Tick.java @@ -1,6 +1,6 @@ package net.tylermurphy.hideAndSeek.bukkit; -import static net.tylermurphy.hideAndSeek.Config.*; +import static net.tylermurphy.hideAndSeek.configuration.Config.*; import org.bukkit.Bukkit; import org.bukkit.Sound; @@ -10,6 +10,7 @@ import net.tylermurphy.hideAndSeek.Main; import net.tylermurphy.hideAndSeek.command.Stop; import net.tylermurphy.hideAndSeek.util.Packet; import net.tylermurphy.hideAndSeek.util.Util; +import static net.tylermurphy.hideAndSeek.configuration.Localization.*; public class Tick { @@ -21,13 +22,13 @@ public class Tick { else if(Main.plugin.status.equals("Playing")) onPlaying(); if(( Main.plugin.status.equals("Starting") || Main.plugin.status.equals("Playing") ) && Main.plugin.board.sizeHider() < 1) { - if(announceMessagesToNonPlayers) Bukkit.broadcastMessage(gameoverPrefix + "All hiders have been found."); - else Util.broadcastMessage(gameoverPrefix + "All hiders have been found."); + if(announceMessagesToNonPlayers) Bukkit.broadcastMessage(gameoverPrefix + message("GAME_GAMEOVER_HIDERS_FOUND")); + else Util.broadcastMessage(gameoverPrefix + message("GAME_GAMEOVER_HIDERS_FOUND")); Stop.onStop(); } if(( Main.plugin.status.equals("Starting") || Main.plugin.status.equals("Playing") ) && Main.plugin.board.sizeSeeker() < 1) { - if(announceMessagesToNonPlayers) Bukkit.broadcastMessage(abortPrefix + "All seekers have quit."); - else Util.broadcastMessage(abortPrefix + "All seekers have quit."); + if(announceMessagesToNonPlayers) Bukkit.broadcastMessage(abortPrefix + message("GAME_GAMEOVER_SEEKERS_QUIT")); + else Util.broadcastMessage(abortPrefix + message("GAME_GAMEOVER_SEEKERS_QUIT")); Stop.onStop(); } @@ -73,8 +74,8 @@ public class Tick { player.setLevel(Main.plugin.timeLeft); } if(Main.plugin.timeLeft < 1) { - if(announceMessagesToNonPlayers) Bukkit.broadcastMessage(gameoverPrefix + "Seekers ran out of time. Hiders win!"); - else Util.broadcastMessage(gameoverPrefix + "Seekers ran out of time. Hiders win!"); + if(announceMessagesToNonPlayers) Bukkit.broadcastMessage(gameoverPrefix + message("GAME_GAMEOVER_TIME")); + else Util.broadcastMessage(gameoverPrefix + message("GAME_GAMEOVER_TIME")); Stop.onStop(); } } diff --git a/src/main/java/net/tylermurphy/hideAndSeek/command/Join.java b/src/main/java/net/tylermurphy/hideAndSeek/command/Join.java index 3ad24b8..9e77381 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/command/Join.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/command/Join.java @@ -1,5 +1,7 @@ package net.tylermurphy.hideAndSeek.command; +import static net.tylermurphy.hideAndSeek.configuration.Config.*; + import org.bukkit.Bukkit; import org.bukkit.GameMode; import org.bukkit.Location; @@ -9,36 +11,35 @@ import org.bukkit.entity.Player; import net.tylermurphy.hideAndSeek.Main; import net.tylermurphy.hideAndSeek.util.Util; - -import static net.tylermurphy.hideAndSeek.Config.*; +import static net.tylermurphy.hideAndSeek.configuration.Localization.*; public class Join implements ICommand { public void execute(CommandSender sender, String[] args) { if(!Util.isSetup()) { - sender.sendMessage(errorPrefix + "Game is not setup. Run /hs setup to see what you needed to do"); + sender.sendMessage(errorPrefix + message("GAME_SETUP")); return; } Player player = Bukkit.getServer().getPlayer(sender.getName()); if(player == null) { - sender.sendMessage(errorPrefix + "An internal error has occured"); + sender.sendMessage(errorPrefix + message("COMMAND_ERROR")); return; } if(Main.plugin.board.isPlayer(player)){ - sender.sendMessage(errorPrefix + "You are already in the lobby/game"); + sender.sendMessage(errorPrefix + message("GAME_INGAME")); return; } if(Main.plugin.status.equals("Standby")) { Main.plugin.board.addHider(player); - if(announceMessagesToNonPlayers) Bukkit.broadcastMessage(messagePrefix + sender.getName() + " has joined the HideAndSeek lobby"); - else Util.broadcastMessage(messagePrefix + sender.getName() + " has joined the HideAndSeek lobby"); + if(announceMessagesToNonPlayers) Bukkit.broadcastMessage(messagePrefix + message("GAME_JOIN").addPlayer(player)); + else Util.broadcastMessage(messagePrefix + message("GAME_JOIN").addPlayer(player)); player.teleport(new Location(Bukkit.getWorld(lobbyWorld), lobbyPosition.getX(),lobbyPosition.getY(),lobbyPosition.getZ())); player.setGameMode(GameMode.ADVENTURE); Main.plugin.board.reloadLobbyBoards(); } else { Main.plugin.board.addSeeker(player); - player.sendMessage(messagePrefix + "You have joined mid game and became a spectator"); + player.sendMessage(messagePrefix + message("GAME_JOIN_SPECTATOR")); player.setGameMode(GameMode.SPECTATOR); player.teleport(new Location(Bukkit.getWorld("hideandseek_"+spawnWorld), spawnPosition.getX(),spawnPosition.getY(),spawnPosition.getZ())); } diff --git a/src/main/java/net/tylermurphy/hideAndSeek/command/Leave.java b/src/main/java/net/tylermurphy/hideAndSeek/command/Leave.java index 4144da7..73dafbd 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/command/Leave.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/command/Leave.java @@ -1,5 +1,7 @@ package net.tylermurphy.hideAndSeek.command; +import static net.tylermurphy.hideAndSeek.configuration.Config.*; + import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.command.CommandSender; @@ -7,27 +9,26 @@ import org.bukkit.entity.Player; import net.tylermurphy.hideAndSeek.Main; import net.tylermurphy.hideAndSeek.util.Util; - -import static net.tylermurphy.hideAndSeek.Config.*; +import static net.tylermurphy.hideAndSeek.configuration.Localization.*; public class Leave implements ICommand { public void execute(CommandSender sender, String[] args) { if(!Util.isSetup()) { - sender.sendMessage(errorPrefix + "Game is not setup. Run /hs setup to see what you needed to do"); + sender.sendMessage(errorPrefix + message("GAME_SETUP")); return; } Player player = Bukkit.getServer().getPlayer(sender.getName()); if(player == null) { - sender.sendMessage(errorPrefix + "An internal error has occured"); + sender.sendMessage(errorPrefix + message("COMMAND_ERROR")); return; } if(!Main.plugin.board.isPlayer(player)) { - sender.sendMessage(errorPrefix + "You are currently not in the lobby"); + sender.sendMessage(errorPrefix + message("GAME_NOT_INGAME")); return; } - if(announceMessagesToNonPlayers) Bukkit.broadcastMessage(messagePrefix + sender.getName() + " has left the HideAndSeek lobby"); - else Util.broadcastMessage(messagePrefix + sender.getName() + " has left the HideAndSeek lobby"); + if(announceMessagesToNonPlayers) Bukkit.broadcastMessage(messagePrefix + message("GAME_LEAVE").addPlayer(player)); + else Util.broadcastMessage(messagePrefix + message("GAME_LEAVE").addPlayer(player)); Main.plugin.board.removeBoard(player); Main.plugin.board.remove(player); player.teleport(new Location(Bukkit.getWorld(exitWorld), exitPosition.getX(), exitPosition.getY(), exitPosition.getZ())); diff --git a/src/main/java/net/tylermurphy/hideAndSeek/command/Reload.java b/src/main/java/net/tylermurphy/hideAndSeek/command/Reload.java index 55147d6..cf580c9 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/command/Reload.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/command/Reload.java @@ -1,22 +1,26 @@ package net.tylermurphy.hideAndSeek.command; +import static net.tylermurphy.hideAndSeek.configuration.Config.*; + import org.bukkit.command.CommandSender; import net.tylermurphy.hideAndSeek.Main; -import net.tylermurphy.hideAndSeek.Config; +import net.tylermurphy.hideAndSeek.configuration.Config; +import net.tylermurphy.hideAndSeek.configuration.Localization; -import static net.tylermurphy.hideAndSeek.Config.*; +import static net.tylermurphy.hideAndSeek.configuration.Localization.*; public class Reload implements ICommand { public void execute(CommandSender sender, String[] args) { if(!Main.plugin.status.equals("Standby")) { - sender.sendMessage(errorPrefix + "Game is currently in session"); + sender.sendMessage(errorPrefix + message("GAME_INPROGRESS")); return; } Config.loadConfig(); - sender.sendMessage(messagePrefix + "Reloaded the config"); + Localization.init(); + sender.sendMessage(messagePrefix + message("CONFIG_RELOAD")); } public String getLabel() { diff --git a/src/main/java/net/tylermurphy/hideAndSeek/command/SaveMap.java b/src/main/java/net/tylermurphy/hideAndSeek/command/SaveMap.java index f6fe228..a2554d1 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/command/SaveMap.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/command/SaveMap.java @@ -1,6 +1,6 @@ package net.tylermurphy.hideAndSeek.command; -import static net.tylermurphy.hideAndSeek.Config.*; +import static net.tylermurphy.hideAndSeek.configuration.Config.*; import java.io.File; import java.io.FileInputStream; @@ -16,6 +16,7 @@ import org.bukkit.command.CommandSender; import org.bukkit.scheduler.BukkitRunnable; import net.tylermurphy.hideAndSeek.Main; +import static net.tylermurphy.hideAndSeek.configuration.Localization.*; public class SaveMap implements ICommand { @@ -23,15 +24,15 @@ public class SaveMap implements ICommand { public void execute(CommandSender sender, String[] args) { if(!Main.plugin.status.equals("Standby")) { - sender.sendMessage(errorPrefix + "Game is currently in session"); + sender.sendMessage(errorPrefix + message("GAME_INPROGRESS")); return; } if(spawnPosition.getBlockX() == 0 && spawnPosition.getBlockY() == 0 && spawnPosition.getBlockZ() == 0) { - sender.sendMessage(errorPrefix + "Please set spawn location first"); + sender.sendMessage(errorPrefix + message("ERROR_GAME_SPAWN")); return; } - sender.sendMessage(messagePrefix + "Starting map save"); - sender.sendMessage(warningPrefix + "All commands will be disabled when the save is in progress. Do not turn off the server."); + sender.sendMessage(messagePrefix + message("MAPSAVE_START")); + sender.sendMessage(warningPrefix + message("MAPSAVE_WARNING")); Bukkit.getServer().getWorld(spawnWorld).save(); BukkitRunnable runnable = new BukkitRunnable() { public void run() { @@ -45,10 +46,10 @@ public class SaveMap implements ICommand { destenation.mkdir(); } temp_destenation.renameTo(destenation); - sender.sendMessage(messagePrefix + "Map save complete"); + sender.sendMessage(messagePrefix + message("MAPSAVE_END")); runningBackup = false; } else { - sender.sendMessage(errorPrefix + "Coudnt find current map"); + sender.sendMessage(errorPrefix + message("MAPSAVE_ERROR")); } } }; diff --git a/src/main/java/net/tylermurphy/hideAndSeek/command/SetBorder.java b/src/main/java/net/tylermurphy/hideAndSeek/command/SetBorder.java index d453871..25e0a87 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/command/SetBorder.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/command/SetBorder.java @@ -1,6 +1,6 @@ package net.tylermurphy.hideAndSeek.command; -import static net.tylermurphy.hideAndSeek.Config.*; +import static net.tylermurphy.hideAndSeek.configuration.Config.*; import java.util.HashMap; import java.util.Map; @@ -11,16 +11,17 @@ import org.bukkit.util.Vector; import net.tylermurphy.hideAndSeek.Main; import net.tylermurphy.hideAndSeek.events.Worldborder; +import static net.tylermurphy.hideAndSeek.configuration.Localization.*; public class SetBorder implements ICommand { public void execute(CommandSender sender, String[] args) { if(!Main.plugin.status.equals("Standby")) { - sender.sendMessage(errorPrefix + "Game is currently in session"); + sender.sendMessage(errorPrefix + message("GAME_INPROGRESS")); return; } if(spawnPosition == null) { - sender.sendMessage(errorPrefix + "Please set spawn position first"); + sender.sendMessage(errorPrefix + message("ERROR_GAME_SPAWN")); return; } if(args.length < 2) { @@ -29,21 +30,21 @@ public class SetBorder implements ICommand { temp.put("enabled", false); addToSection("worldBorder",temp); saveConfig(); - sender.sendMessage(messagePrefix + "Disabled worldborder."); + sender.sendMessage(messagePrefix + message("WORLDBORDER_DISABLE")); Worldborder.resetWorldborder(spawnWorld); return; } int num,delay; try { num = Integer.parseInt(args[0]); } catch (Exception e) { - sender.sendMessage(errorPrefix + "Invalid integer: "+args[0]); + sender.sendMessage(errorPrefix + message("WORLDBORDER_INVALID_INPUT").addAmount(args[0])); return; } try { delay = Integer.parseInt(args[1]); } catch (Exception e) { - sender.sendMessage(errorPrefix + "Invalid integer: "+args[1]); + sender.sendMessage(errorPrefix + message("WORLDBORDER_INVALID_INPUT").addAmount(args[1])); return; } if(num < 100) { - sender.sendMessage(errorPrefix + "Worldborder cannot be smaller than 100 blocks."); + sender.sendMessage(errorPrefix + message("WORLDBORDER_MIN_SIZE")); return; } Vector newWorldborderPosition = new Vector(); @@ -52,7 +53,7 @@ public class SetBorder implements ICommand { newWorldborderPosition.setY(0); newWorldborderPosition.setZ(player.getLocation().getBlockZ()); if(spawnPosition.distance(newWorldborderPosition) > 100) { - sender.sendMessage(errorPrefix + "Spawn position must be 100 from worldborder center"); + sender.sendMessage(errorPrefix + message("WORLDBORDER_POSITION")); return; } worldborderPosition = newWorldborderPosition; @@ -66,7 +67,7 @@ public class SetBorder implements ICommand { temp.put("size", worldborderSize); temp.put("enabled", true); addToSection("worldBorder",temp); - sender.sendMessage(messagePrefix + "Set border center to current location, size to "+num+", and delay to "+delay); + sender.sendMessage(messagePrefix + message("WORLDBORDER_ENABLE").addAmount(num).addAmount(delay)); saveConfig(); Worldborder.resetWorldborder(spawnWorld); } diff --git a/src/main/java/net/tylermurphy/hideAndSeek/command/SetExitLocation.java b/src/main/java/net/tylermurphy/hideAndSeek/command/SetExitLocation.java index 2808948..e82d0e4 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/command/SetExitLocation.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/command/SetExitLocation.java @@ -1,6 +1,6 @@ package net.tylermurphy.hideAndSeek.command; -import static net.tylermurphy.hideAndSeek.Config.*; +import static net.tylermurphy.hideAndSeek.configuration.Config.*; import java.util.HashMap; import java.util.Map; @@ -10,6 +10,7 @@ import org.bukkit.entity.Player; import org.bukkit.util.Vector; import net.tylermurphy.hideAndSeek.Main; +import static net.tylermurphy.hideAndSeek.configuration.Localization.*; public class SetExitLocation implements ICommand { @@ -20,11 +21,11 @@ public class SetExitLocation implements ICommand { newExitPosition.setY(player.getLocation().getBlockY()); newExitPosition.setZ(player.getLocation().getBlockZ()); if(!Main.plugin.status.equals("Standby")) { - sender.sendMessage(errorPrefix + "Game is currently in session"); + sender.sendMessage(errorPrefix + message("GAME_INPROGRESS")); return; } exitPosition = newExitPosition; - sender.sendMessage(messagePrefix + "Set exit position to current location"); + sender.sendMessage(messagePrefix + message("EXIT_SPAWN")); Map temp = new HashMap(); temp.put("x", exitPosition.getX()); temp.put("y", exitPosition.getY()); diff --git a/src/main/java/net/tylermurphy/hideAndSeek/command/SetLobbyLocation.java b/src/main/java/net/tylermurphy/hideAndSeek/command/SetLobbyLocation.java index 75de0e5..31cad53 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/command/SetLobbyLocation.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/command/SetLobbyLocation.java @@ -1,6 +1,6 @@ package net.tylermurphy.hideAndSeek.command; -import static net.tylermurphy.hideAndSeek.Config.*; +import static net.tylermurphy.hideAndSeek.configuration.Config.*; import java.util.HashMap; import java.util.Map; @@ -10,6 +10,7 @@ import org.bukkit.entity.Player; import org.bukkit.util.Vector; import net.tylermurphy.hideAndSeek.Main; +import static net.tylermurphy.hideAndSeek.configuration.Localization.*; public class SetLobbyLocation implements ICommand { @@ -20,11 +21,11 @@ public class SetLobbyLocation implements ICommand { newLobbyPosition.setY(player.getLocation().getBlockY()); newLobbyPosition.setZ(player.getLocation().getBlockZ()); if(!Main.plugin.status.equals("Standby")) { - sender.sendMessage(errorPrefix + "Game is currently in session"); + sender.sendMessage(errorPrefix + message("GAME_INPROGRESS")); return; } lobbyPosition = newLobbyPosition; - sender.sendMessage(messagePrefix + "Set lobby position to current location"); + sender.sendMessage(messagePrefix + message("LOBBY_SPAWN")); Map temp = new HashMap(); temp.put("x", lobbyPosition.getX()); temp.put("y", lobbyPosition.getY()); diff --git a/src/main/java/net/tylermurphy/hideAndSeek/command/SetSpawnLocation.java b/src/main/java/net/tylermurphy/hideAndSeek/command/SetSpawnLocation.java index a940ac3..45ee758 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/command/SetSpawnLocation.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/command/SetSpawnLocation.java @@ -1,6 +1,6 @@ package net.tylermurphy.hideAndSeek.command; -import static net.tylermurphy.hideAndSeek.Config.*; +import static net.tylermurphy.hideAndSeek.configuration.Config.*; import java.util.HashMap; import java.util.Map; @@ -10,6 +10,7 @@ import org.bukkit.entity.Player; import org.bukkit.util.Vector; import net.tylermurphy.hideAndSeek.Main; +import static net.tylermurphy.hideAndSeek.configuration.Localization.*; public class SetSpawnLocation implements ICommand { @@ -20,15 +21,15 @@ public class SetSpawnLocation implements ICommand { newSpawnPosition.setY(player.getLocation().getBlockY()); newSpawnPosition.setZ(player.getLocation().getBlockZ()); if(!Main.plugin.status.equals("Standby")) { - sender.sendMessage(errorPrefix + "Game is currently in session"); + sender.sendMessage(errorPrefix + message("GAME_INPROGRESS")); return; } if(worldborderEnabled && spawnPosition.distance(worldborderPosition) > 100) { - sender.sendMessage(errorPrefix + "Spawn position must be 100 from worldborder center"); + sender.sendMessage(errorPrefix + message("WORLDBORDER_POSITION")); return; } spawnPosition = newSpawnPosition; - sender.sendMessage(messagePrefix + "Set spawn position to current location"); + sender.sendMessage(messagePrefix + message("GAME_SPAWN")); Map temp = new HashMap(); temp.put("x", spawnPosition.getX()); temp.put("y", spawnPosition.getY()); diff --git a/src/main/java/net/tylermurphy/hideAndSeek/command/Setup.java b/src/main/java/net/tylermurphy/hideAndSeek/command/Setup.java index 1580f3f..8be0141 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/command/Setup.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/command/Setup.java @@ -2,42 +2,41 @@ package net.tylermurphy.hideAndSeek.command; import org.bukkit.command.CommandSender; -import net.md_5.bungee.api.ChatColor; import net.tylermurphy.hideAndSeek.Main; -import static net.tylermurphy.hideAndSeek.Config.*; +import static net.tylermurphy.hideAndSeek.configuration.Config.*; import java.io.File; +import static net.tylermurphy.hideAndSeek.configuration.Localization.*; public class Setup implements ICommand { public void execute(CommandSender sender, String[] args) { - String message = String.format("%s%sThe following is needed for setup...", ChatColor.WHITE, ChatColor.BOLD); + String msg = message("SETUP").toString(); int count = 0; if(spawnPosition.getBlockX() == 0 && spawnPosition.getBlockY() == 0 && spawnPosition.getBlockZ() == 0) { - message = String.format("%s\n%s%s-%s%s", message, ChatColor.RED, ChatColor.BOLD, ChatColor.WHITE, "Game spawn isnt set, /hs setspawn"); + msg = msg + "\n" + message("SETUP_GAME").toString(); count++; } if(lobbyPosition.getBlockX() == 0 && lobbyPosition.getBlockY() == 0 && lobbyPosition.getBlockZ() == 0) { - message = String.format("%s\n%s%s-%s%s", message, ChatColor.RED, ChatColor.BOLD, ChatColor.WHITE, "Lobby spawn isnt set, /hs setlobby"); - sender.sendMessage(errorPrefix + "Please set lobby location first"); + msg = msg + "\n" + message("SETUP_LOBBY").toString(); count++; } if(exitPosition.getBlockX() == 0 && exitPosition.getBlockY() == 0 && exitPosition.getBlockZ() == 0) { - message = String.format("%s\n%s%s-%s%s", message, ChatColor.RED, ChatColor.BOLD, ChatColor.WHITE, "Quit/exit teleport location isnt set, /hs setexit"); + msg = msg + "\n" + message("SETUP_EXIT").toString(); count++; } File destenation = new File(Main.root+File.separator+"hideandseek_"+spawnWorld); if(!destenation.exists()) { - message = String.format("%s\n%s%s-%s%s", message, ChatColor.RED, ChatColor.BOLD, ChatColor.WHITE, "Hide and seek map isnt saved, /hs savemap (after /hs setspawn)"); + msg = msg + "\n" + message("SETUP_MAPSAVE").toString(); count++; } if(count < 1) { - sender.sendMessage(messagePrefix + "Everything is setup and ready to go!"); + sender.sendMessage(messagePrefix + message("SETUP_COMPLETE")); } else { - sender.sendMessage(message); + sender.sendMessage(msg); } } diff --git a/src/main/java/net/tylermurphy/hideAndSeek/command/Start.java b/src/main/java/net/tylermurphy/hideAndSeek/command/Start.java index 9d75401..89cbc09 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/command/Start.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/command/Start.java @@ -1,4 +1,5 @@ package net.tylermurphy.hideAndSeek.command; +import static net.tylermurphy.hideAndSeek.configuration.Localization.*; import org.bukkit.Bukkit; import org.bukkit.GameMode; @@ -22,7 +23,7 @@ import net.tylermurphy.hideAndSeek.events.Taunt; import net.tylermurphy.hideAndSeek.events.Worldborder; import net.tylermurphy.hideAndSeek.util.Util; -import static net.tylermurphy.hideAndSeek.Config.*; +import static net.tylermurphy.hideAndSeek.configuration.Config.*; import java.util.ArrayList; import java.util.List; @@ -32,19 +33,19 @@ public class Start implements ICommand { public void execute(CommandSender sender, String[] args) { if(!Util.isSetup()) { - sender.sendMessage(errorPrefix + "Game is not setup. Run /hs setup to see what you needed to do"); + sender.sendMessage(errorPrefix + message("GAME_SETUP")); return; } if(!Main.plugin.status.equals("Standby")) { - sender.sendMessage(errorPrefix + "Game is already in session"); + sender.sendMessage(errorPrefix + message("GAME_INPROGRESS")); return; } if(!Main.plugin.board.isPlayer(sender)) { - sender.sendMessage(errorPrefix + "You are not in the lobby"); + sender.sendMessage(errorPrefix + message("GAME_NOT_INGAME")); return; } if(Main.plugin.board.size() < minPlayers) { - sender.sendMessage(errorPrefix + "You must have at least "+minPlayers+" players to start"); + sender.sendMessage(errorPrefix + message("START_MIN_PLAYERS").addAmount(minPlayers)); return; } if(Bukkit.getServer().getWorld("hideandseek_"+spawnWorld) != null) { @@ -60,7 +61,7 @@ public class Start implements ICommand { } Player seeker = Main.plugin.board.getPlayer(seekerName); if(seeker == null) { - sender.sendMessage(errorPrefix + "Invalid player: " + seekerName); + sender.sendMessage(errorPrefix + message("START_INVALID_NAME").addPlayer(seekerName)); return; } Main.plugin.board.reload(); @@ -82,27 +83,27 @@ public class Start implements ICommand { for(Player player : Main.plugin.board.getSeekers()) { player.addPotionEffect(new PotionEffect(PotionEffectType.BLINDNESS,1000000,127,false,false)); player.addPotionEffect(new PotionEffect(PotionEffectType.SLOW,1000000,127,false,false)); - player.sendTitle(ChatColor.RED + "" + ChatColor.BOLD + "SEEKER", ChatColor.WHITE + "Eliminate all hiders", 10, 70, 20); + player.sendTitle(ChatColor.RED + "" + ChatColor.BOLD + "SEEKER", ChatColor.WHITE + message("SEEKERS_SUBTITLE").toString(), 10, 70, 20); } for(Player player : Main.plugin.board.getHiders()) { player.addPotionEffect(new PotionEffect(PotionEffectType.SPEED,1000000,5,false,false)); - player.sendTitle(ChatColor.GOLD + "" + ChatColor.BOLD + "HIDER", ChatColor.WHITE + "Hide away from the seekers", 10, 70, 20); + player.sendTitle(ChatColor.GOLD + "" + ChatColor.BOLD + "HIDER", ChatColor.WHITE + message("HIDERS_SUBTITLE").toString(), 10, 70, 20); } Worldborder.resetWorldborder("hideandseek_"+spawnWorld); Main.plugin.board.reloadGameBoards(); Main.plugin.status = "Starting"; int temp = Main.plugin.gameId; - Util.broadcastMessage(messagePrefix + "Hiders have 30 seconds to hide!"); - Util.sendDelayedMessage(messagePrefix + "Hiders have 20 seconds to hide!", Main.plugin.gameId, 20 * 10); - Util.sendDelayedMessage(messagePrefix + "Hiders have 10 seconds to hide!", Main.plugin.gameId, 20 * 20); - Util.sendDelayedMessage(messagePrefix + "Hiders have 5 seconds to hide!", Main.plugin.gameId, 20 * 25); - Util.sendDelayedMessage(messagePrefix + "Hiders have 3 seconds to hide!", Main.plugin.gameId, 20 * 27); - Util.sendDelayedMessage(messagePrefix + "Hiders have 2 seconds to hide!", Main.plugin.gameId, 20 * 28); - Util.sendDelayedMessage(messagePrefix + "Hiders have 1 seconds to hide!", Main.plugin.gameId, 20 * 29); + Util.broadcastMessage(messagePrefix + message("START_COUNTDOWN").addAmount(30)); + Util.sendDelayedMessage(messagePrefix + message("START_COUNTDOWN").addAmount(20), Main.plugin.gameId, 20 * 10); + Util.sendDelayedMessage(messagePrefix + message("START_COUNTDOWN").addAmount(10), Main.plugin.gameId, 20 * 20); + Util.sendDelayedMessage(messagePrefix + message("START_COUNTDOWN").addAmount(5), Main.plugin.gameId, 20 * 25); + Util.sendDelayedMessage(messagePrefix + message("START_COUNTDOWN").addAmount(3), Main.plugin.gameId, 20 * 27); + Util.sendDelayedMessage(messagePrefix + message("START_COUNTDOWN").addAmount(2), Main.plugin.gameId, 20 * 28); + Util.sendDelayedMessage(messagePrefix + message("START_COUNTDOWN").addAmount(1), Main.plugin.gameId, 20 * 29); Bukkit.getServer().getScheduler().runTaskLater(Main.plugin, new Runnable() { public void run() { if(temp != Main.plugin.gameId) return; - Util.broadcastMessage(messagePrefix + "Attetion SEEKERS, its time to find the hiders!"); + Util.broadcastMessage(messagePrefix + message("START")); Main.plugin.status = "Playing"; for(Player player : Main.plugin.board.getPlayers()) { resetPlayer(player); diff --git a/src/main/java/net/tylermurphy/hideAndSeek/command/Stop.java b/src/main/java/net/tylermurphy/hideAndSeek/command/Stop.java index e2cb563..810c071 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/command/Stop.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/command/Stop.java @@ -1,6 +1,6 @@ package net.tylermurphy.hideAndSeek.command; -import static net.tylermurphy.hideAndSeek.Config.*; +import static net.tylermurphy.hideAndSeek.configuration.Config.*; import org.bukkit.Bukkit; import org.bukkit.GameMode; @@ -14,6 +14,7 @@ import net.tylermurphy.hideAndSeek.Main; import net.tylermurphy.hideAndSeek.events.Worldborder; import net.tylermurphy.hideAndSeek.util.Packet; import net.tylermurphy.hideAndSeek.util.Util; +import static net.tylermurphy.hideAndSeek.configuration.Localization.*; public class Stop implements ICommand { @@ -23,12 +24,12 @@ public class Stop implements ICommand { return; } if(Main.plugin.status.equals("Starting") || Main.plugin.status.equals("Playing")) { - if(announceMessagesToNonPlayers) Bukkit.broadcastMessage(abortPrefix + "Game has been force stopped."); - else Util.broadcastMessage(abortPrefix + "Game has been force stopped."); + if(announceMessagesToNonPlayers) Bukkit.broadcastMessage(abortPrefix + message("STOP")); + else Util.broadcastMessage(abortPrefix + message("STOP")); onStop(); } else { - sender.sendMessage(errorPrefix + "There is no game in progress"); + sender.sendMessage(errorPrefix + message("GAME_NOT_INPROGRESS")); return; } } diff --git a/src/main/java/net/tylermurphy/hideAndSeek/Config.java b/src/main/java/net/tylermurphy/hideAndSeek/configuration/Config.java similarity index 70% rename from src/main/java/net/tylermurphy/hideAndSeek/Config.java rename to src/main/java/net/tylermurphy/hideAndSeek/configuration/Config.java index fe83dd1..83b6ceb 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/Config.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/configuration/Config.java @@ -1,4 +1,4 @@ -package net.tylermurphy.hideAndSeek; +package net.tylermurphy.hideAndSeek.configuration; import java.util.Map; import java.util.Map.Entry; @@ -7,6 +7,8 @@ import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.util.Vector; +import net.tylermurphy.hideAndSeek.Main; + public class Config { public static String @@ -52,37 +54,6 @@ public class Config { Main.plugin.reloadConfig(); - //Default - getConfig().addDefault("worldBorder.x", 0); - getConfig().addDefault("worldBorder.z", 0); - getConfig().addDefault("worldBorder.delay", 10); - getConfig().addDefault("worldBorder.size", 500); - getConfig().addDefault("worldBorder.enabled", false); - getConfig().addDefault("prefix.default", "&9Hide and Seek > &f"); - getConfig().addDefault("prefix.error", "&cError > &f"); - getConfig().addDefault("prefix.taunt", "&eTaunt > &f"); - getConfig().addDefault("prefix.border", "&cWorld Border > &f"); - getConfig().addDefault("prefix.abort", "&cAbort > &f"); - getConfig().addDefault("prefix.gameover", "&aGame Over > &f"); - getConfig().addDefault("prefix.warning", "&cWarning > &f"); - getConfig().addDefault("nametagsVisible", false); - getConfig().addDefault("permissionsRequired", true); - getConfig().addDefault("announceMessagesToNonPlayers", false); - getConfig().addDefault("spawns.lobby.x", 0); - getConfig().addDefault("spawns.lobby.y", 0); - getConfig().addDefault("spawns.lobby.z", 0); - getConfig().addDefault("spawns.lobby.world", "world"); - getConfig().addDefault("spawns.exit.x", 0); - getConfig().addDefault("spawns.exit.y", 0); - getConfig().addDefault("spawns.exit.z", 0); - getConfig().addDefault("spawns.exit.world", "world"); - getConfig().addDefault("spawns.game.x", 0); - getConfig().addDefault("spawns.game.y", 0); - getConfig().addDefault("spawns.game.z", 0); - getConfig().addDefault("spawns.game.world", "world"); - getConfig().addDefault("minPlayers", 2); - getConfig().addDefault("gameLength", 600); - //Spawn spawnPosition = new Vector( getConfig().getDouble("spawns.game.x"), diff --git a/src/main/java/net/tylermurphy/hideAndSeek/configuration/Localization.java b/src/main/java/net/tylermurphy/hideAndSeek/configuration/Localization.java new file mode 100644 index 0000000..6e25a20 --- /dev/null +++ b/src/main/java/net/tylermurphy/hideAndSeek/configuration/Localization.java @@ -0,0 +1,37 @@ +package net.tylermurphy.hideAndSeek.configuration; + +import java.io.File; +import java.util.HashMap; +import java.util.Map; + +import org.bukkit.configuration.file.YamlConfiguration; + +import net.md_5.bungee.api.ChatColor; +import net.tylermurphy.hideAndSeek.Main; + +public class Localization { + + public static final Map LOCAL = new HashMap(); + + static YamlConfiguration config; + + public static boolean init() { + Main.plugin.saveResource("localization.yml", false); + String path = Main.data.getAbsolutePath()+File.separator + "localization.yml"; + config = YamlConfiguration.loadConfiguration(new File(path)); + for(String key : config.getConfigurationSection("Localization").getKeys(false)) { + LOCAL.put( + key, + new LocalizationString( ChatColor.translateAlternateColorCodes('&', config.getString("Localization."+key) ) ) + ); + } + return true; + } + + public static LocalizationString message(String key) { + LocalizationString temp = LOCAL.get(key); + if(temp == null) + return new LocalizationString(key+" missing from localization.yml"); + return temp; + } +} diff --git a/src/main/java/net/tylermurphy/hideAndSeek/configuration/LocalizationString.java b/src/main/java/net/tylermurphy/hideAndSeek/configuration/LocalizationString.java new file mode 100644 index 0000000..fd0e020 --- /dev/null +++ b/src/main/java/net/tylermurphy/hideAndSeek/configuration/LocalizationString.java @@ -0,0 +1,48 @@ +package net.tylermurphy.hideAndSeek.configuration; + +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Entity; + +public class LocalizationString { + + String message; + + public LocalizationString(String message) { + this.message = message; + } + + public LocalizationString addPlayer(Entity player) { + this.message = message.replaceFirst("\\{PLAYER\\}", player.getName()); + return this; + } + + public LocalizationString addPlayer(CommandSender player) { + this.message = message.replaceFirst("\\{PLAYER\\}", player.getName()); + return this; + } + + public LocalizationString addPlayer(String player) { + this.message = message.replaceFirst("\\{PLAYER\\}", player); + return this; + } + + public LocalizationString addAmount(Integer value) { + this.message = message.replaceFirst("\\{AMOUNT\\}", value.toString()); + return this; + } + + public LocalizationString addAmount(String value) { + this.message = message.replaceFirst("\\{AMOUNT\\}", value.toString()); + return this; + } + + public LocalizationString addAmount(Float value) { + this.message = message.replaceFirst("\\{AMOUNT\\}", value.toString()); + return this; + } + + public String toString() { + return message; + } + +} diff --git a/src/main/java/net/tylermurphy/hideAndSeek/events/Taunt.java b/src/main/java/net/tylermurphy/hideAndSeek/events/Taunt.java index 4ce7dc4..8413cc2 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/events/Taunt.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/events/Taunt.java @@ -1,9 +1,8 @@ package net.tylermurphy.hideAndSeek.events; -import static net.tylermurphy.hideAndSeek.Config.*; +import static net.tylermurphy.hideAndSeek.configuration.Config.*; import org.bukkit.Bukkit; -import org.bukkit.ChatColor; import org.bukkit.Color; import org.bukkit.FireworkEffect; import org.bukkit.entity.EntityType; @@ -13,6 +12,7 @@ import org.bukkit.inventory.meta.FireworkMeta; import net.tylermurphy.hideAndSeek.Main; import net.tylermurphy.hideAndSeek.util.Util; +import static net.tylermurphy.hideAndSeek.configuration.Localization.*; public class Taunt { @@ -65,8 +65,8 @@ public class Taunt { } } if(taunted != null) { - taunted.sendMessage(ChatColor.RED + "" + ChatColor.ITALIC + "Oh no! You have been chosed to be taunted."); - Util.broadcastMessage(tauntPrefix + " A random hider will be taunted in the next 30s"); + taunted.sendMessage(message("TAUNTED").toString()); + Util.broadcastMessage(tauntPrefix + message("TAUNT")); tauntPlayer = taunted.getName(); Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(Main.plugin, new Runnable() { public void run() { @@ -87,7 +87,7 @@ public class Taunt { .withTrail() .build()); fw.setFireworkMeta(fwm); - Util.broadcastMessage(tauntPrefix + " Taunt has been activated"); + Util.broadcastMessage(tauntPrefix + message("TAUNT_ACTIVATE")); } tauntPlayer = ""; waitTaunt(); diff --git a/src/main/java/net/tylermurphy/hideAndSeek/events/Worldborder.java b/src/main/java/net/tylermurphy/hideAndSeek/events/Worldborder.java index 70c4986..5884a94 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/events/Worldborder.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/events/Worldborder.java @@ -1,5 +1,8 @@ package net.tylermurphy.hideAndSeek.events; +import static net.tylermurphy.hideAndSeek.configuration.Localization.*; +import static net.tylermurphy.hideAndSeek.configuration.Config.*; + import org.bukkit.Bukkit; import org.bukkit.World; import org.bukkit.WorldBorder; @@ -7,8 +10,6 @@ import org.bukkit.WorldBorder; import net.tylermurphy.hideAndSeek.Main; import net.tylermurphy.hideAndSeek.util.Util; -import static net.tylermurphy.hideAndSeek.Config.*; - public class Worldborder { private final int temp; @@ -28,7 +29,7 @@ public class Worldborder { private void decreaceWorldborder() { if(temp != Main.plugin.gameId) return; if(currentWorldborderSize-100 > 100) { - Util.broadcastMessage(worldborderPrefix + "Worldborder decreacing by 100 blocks over the next 30s"); + Util.broadcastMessage(worldborderPrefix + message("WORLDBORDER_DECREASING")); currentWorldborderSize -= 100; World world = Bukkit.getWorld("hideandseek_"+spawnWorld); WorldBorder border = world.getWorldBorder(); diff --git a/src/main/java/net/tylermurphy/hideAndSeek/util/Board.java b/src/main/java/net/tylermurphy/hideAndSeek/util/Board.java index 472e326..17a60b1 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/util/Board.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/util/Board.java @@ -1,5 +1,7 @@ package net.tylermurphy.hideAndSeek.util; +import static net.tylermurphy.hideAndSeek.configuration.Config.*; + import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -20,8 +22,6 @@ import org.bukkit.scoreboard.Team.OptionStatus; import net.tylermurphy.hideAndSeek.Main; -import static net.tylermurphy.hideAndSeek.Config.*; - public class Board { private List Hider, Seeker, Spectator; diff --git a/src/main/java/net/tylermurphy/hideAndSeek/util/Util.java b/src/main/java/net/tylermurphy/hideAndSeek/util/Util.java index ee158dc..028b217 100644 --- a/src/main/java/net/tylermurphy/hideAndSeek/util/Util.java +++ b/src/main/java/net/tylermurphy/hideAndSeek/util/Util.java @@ -1,6 +1,6 @@ package net.tylermurphy.hideAndSeek.util; -import static net.tylermurphy.hideAndSeek.Config.*; +import static net.tylermurphy.hideAndSeek.configuration.Config.*; import java.io.File; diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml new file mode 100644 index 0000000..368bca4 --- /dev/null +++ b/src/main/resources/config.yml @@ -0,0 +1,61 @@ +# How long in seconds will the game last, set it < 1 to disable +# default: 1200 aka 20min +gameLength: 1200 + +# Announce join/leave/game over messages to people not playing the game +# default: true +announceMessagesToNonPlayers: true + +# Allow Hiders to see their own teams nametags as well as seekers. Seekers can never see nametags regardless. +# default: false +nametagsVisible: false + +# Require bukkit permessions though a plugin to run commands, recomended on large servers +# default: true +permissionsRequired: true + +# Minimum ammount of players to start the game. Cannot go lower than 2. +# default: 2 +minPlayers: 2 + +# Spawn locations where players are teleported +spawns: + # Location where players are teleported into the game (/hs start) + game: + x: 0 + y: 0 + z: 0 + world: world + # Location where players are teleported into the lobby (/hs join) + lobby: + x: 0 + y: 0 + z: 0 + world: world + # Location where players are teleported when they exit (/hs leave) + exit: + x: 0 + y: 0 + z: 0 + world: world + +# The worldborder closes every interval, whish is evey [delay] in minutes. +# Thw worldborder stharts at [size], and decreaces 100 blocks every interval. +# x & z are the center location. [enabled] is whenever the border is enabled. +worldBorder: + x: 0 + z: 0 + delay: 10 + size: 500 + enabled: false + +# The message prefixes displayed before messages. The message contents themselvs +# can be changed in localization.yml. +prefix: + default: '&9Hide and Seek > &f' + error: '&cError > &f' + taunt: '&eTaunt > &f' + border: '&cWorld Border > &f' + abort: '&cAbort > &f' + gameover: '&aGame Over > &f' + warning: '&cWarning > &f' \ No newline at end of file diff --git a/src/main/resources/localization.yml b/src/main/resources/localization.yml new file mode 100644 index 0000000..cf2fd30 --- /dev/null +++ b/src/main/resources/localization.yml @@ -0,0 +1,50 @@ +Localization: + COMMAND_PLAYER_ONLY: "This command can only be run as a player." + COMMAND_NOT_ALLOWED: "You are not allowed to run this command." + COMMAND_ERROR: "An internal error has occoured." + GAME_PLAYER_DEATH: "&c{PLAYER}&f was killed." + GAME_PLAYER_FOUND: "&e{PLAYER}&f was found and became a seeker." + GAME_PLAYER_FOUND_BY: "&e{PLAYER}&f was found by &c{PLAYER}&f and became a seeker." + GAME_GAMEOVER_HIDERS_FOUND: "All hiders have been found." + GAME_GAMEOVER_SEEKERS_QUIT: "All seekers have quit." + GAME_GAMEOVER_TIME: "Seekers ran out of time. Hiders win!" + GAME_SETUP: "Game is not setup. Run /hs setup to see what you need to do." + GAME_INGAME: "You are already in the lobby/game." + GAME_NOT_INGAME: "You are not in a lobby/game." + GAME_INPROGRESS: "There is currently a game inprogress." + GAME_NOT_INPROGRESS: "There is no game inprogress." + GAME_JOIN: "{PLAYER} has joined the HideAndSeek lobby." + GAME_JOIN_SPECTATOR: "You have joined midgame and are now a spectator." + GAME_LEAVE: "{PLAYER} has left the HideAndSeek lobby." + CONFIG_RELOAD: "Reloaded the config." + MAPSAVE_INPROGRESS: "Map save is currently in progress. Try again later." + MAPSAVE_START: "Starting map save." + MAPSAVE_WARNING: "All commands will be disabled whenthe save is in progress. Do not turn off the server." + MAPSAVE_END: "Map save complete." + MAPSAVE_ERROR: "Coudnt find current map." + WORLDBORDER_DISABLE: "Disabled worldborder." + WORLDBORDER_INVALID_INPUT: "Invalid integer {AMOUNT}." + WORLDBORDER_MIN_SIZE: "Worldborder cannot be smaller than 100 blocks." + WORLDBORDER_POSITION: "Spawn position must be 100 from worldborder center." + WORLDBORDER_ENABLE: "Set border center to current location, size to {AMOUNT}, and delay to {AMOUNT}." + WORLDBORDER_DECREASING: "Worlderborder decreasing by 100 blocks over the next 30s." + TAUNTED: "$c$oOh no! You have been chosen to be taunted." + TAUNT: "A random hider will be taunted in the next 30s." + TAUNT_ACTIVATE: "Taunt has been activated." + ERROR_GAME_SPAWN: "Please set game spawn location first" + SETUP: "&f&lThe following is needed for setup..." + SETUP_GAME: "&c&l- &fGame spawn isnt set, /hs setspawn" + SETUP_LOBBY: "&c&l- &fLobby spawn isnt set, /hs setlobby" + SETUP_EXIT: "&c&l- &fQuit/exit teleport location isnt set, /hs setexit" + SETUP_SAVEMAP: "&c&l- &fHide and seek map isnt saved, /hs savemap (after /hs setspawn)" + SETUP_COMPLETE: "Everything is setup and ready to go!" + GAME_SPAWN: "Set game spawn position to current location" + LOBBY_SPAWN: "Set lobby position to current location" + EXIT_SPAWN: "Set exit position to current location" + START_MIN_PLAYERS: "You must have at least {AMOUNT} players to start." + START_INVALID_NAME: "Invalid player: {PLAYER}." + START_COUNTDOWN: "Hiders have {AMOUNT} seconds to hide!" + START: "Attetion SEEKERS, its time to fin the hiders!" + STOP: "Game has been force stopped" + HIDERS_SUBTITLE: "Hide away from the seekers" + SEEKERS_SUBTITLE: "Eliminate all hiders" diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 1feeaf7..200d799 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -8,7 +8,7 @@ depend: [ProtocolLib] commands: hideandseek: description: Hide and Seek command - usage: /hideandseek [about|help|start|stop|setspawn|setseeker] + usage: /hideandseek [command] aliases: hs permissions: hideandseek.*: @@ -20,10 +20,11 @@ permissions: hideandseek.setborder: true hideandseek.setspawn: true hideandseek.setlobby: true + hideandseek.setexit: true + hideandseek.setup: true hideandseek.start: true hideandseek.stop: true hideandseek.savemap: true - hideandseek.blockbypass: true hideandseek.join: true hideandseek.leave: true hideandseek.about: @@ -44,6 +45,12 @@ permissions: hideandseek.setlobby: description: Allows you to set the game lobby point default: op + hideandseek.setexit: + description: Allows you to set the game exit point + default: op + hideandseek.setup: + description: Allows you to see what needs to be setup for the plugin to function + default: op hideandseek.start: description: Allows you to start the game default: op @@ -53,9 +60,6 @@ permissions: hideandseek.savemap: description: Allows you to set the current game map default: op - hideandseek.blockbypass: - description: Allows you to bypass the block break prevention - default: op hideandseek.join: description: Allows you to join the game manual lobby default: true