localization

This commit is contained in:
Tyler Murphy 2021-10-22 20:03:15 -04:00
parent 91311dd23d
commit 0015592730
25 changed files with 336 additions and 144 deletions

View file

@ -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();

View file

@ -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));

View file

@ -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);
}

View file

@ -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();
}
}

View file

@ -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()));
}

View file

@ -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()));

View file

@ -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() {

View file

@ -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"));
}
}
};

View file

@ -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);
}

View file

@ -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<String, Object> temp = new HashMap<String,Object>();
temp.put("x", exitPosition.getX());
temp.put("y", exitPosition.getY());

View file

@ -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<String, Object> temp = new HashMap<String,Object>();
temp.put("x", lobbyPosition.getX());
temp.put("y", lobbyPosition.getY());

View file

@ -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<String, Object> temp = new HashMap<String,Object>();
temp.put("x", spawnPosition.getX());
temp.put("y", spawnPosition.getY());

View file

@ -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);
}
}

View file

@ -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);

View file

@ -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;
}
}

View file

@ -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"),

View file

@ -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<String,LocalizationString> LOCAL = new HashMap<String,LocalizationString>();
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;
}
}

View file

@ -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;
}
}

View file

@ -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();

View file

@ -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();

View file

@ -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<String> Hider, Seeker, Spectator;

View file

@ -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;

View file

@ -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'

View file

@ -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"

View file

@ -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