summaryrefslogtreewikicommitdiff
path: root/src/main/java/net/tylermurphy/hideAndSeek/util
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/net/tylermurphy/hideAndSeek/util')
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/util/Board.java64
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/util/CommandHandler.java73
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/util/TabCompleter.java41
-rw-r--r--src/main/java/net/tylermurphy/hideAndSeek/util/Util.java2
4 files changed, 141 insertions, 39 deletions
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/util/Board.java b/src/main/java/net/tylermurphy/hideAndSeek/util/Board.java
index 9d856b5..6b0c7b5 100644
--- a/src/main/java/net/tylermurphy/hideAndSeek/util/Board.java
+++ b/src/main/java/net/tylermurphy/hideAndSeek/util/Board.java
@@ -8,6 +8,7 @@ import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
+import net.tylermurphy.hideAndSeek.game.Status;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
@@ -25,8 +26,8 @@ import net.tylermurphy.hideAndSeek.Main;
public class Board {
private List<String> Hider, Seeker, Spectator;
- private Map<String, Player> playerList = new HashMap<String,Player>();
- private Map<String, CustomBoard> customBoards = new HashMap<String, CustomBoard>();
+ private Map<String, Player> playerList = new HashMap<>();
+ private Map<String, CustomBoard> customBoards = new HashMap<>();
public boolean isPlayer(Player player) {
return playerList.containsKey(player.getName());
@@ -120,31 +121,9 @@ public class Board {
}
public void reload() {
- Hider = new ArrayList<String>();
- Seeker = new ArrayList<String>();
- Spectator = new ArrayList<String>();
- }
-
- public void reset() {
- Hider.clear();
- Seeker.clear();
- Spectator.clear();
- }
-
- private void createTeamsForBoard(Scoreboard board) {
- Team hiderTeam = board.registerNewTeam("Hider");
- for(String name : Hider)
- hiderTeam.addEntry(name);
- Team seekerTeam = board.registerNewTeam("Seeker");
- for(String name : Seeker)
- seekerTeam.addEntry(name);
- if(nametagsVisible) {
- hiderTeam.setOption(Option.NAME_TAG_VISIBILITY, OptionStatus.FOR_OWN_TEAM);
- seekerTeam.setOption(Option.NAME_TAG_VISIBILITY, OptionStatus.FOR_OTHER_TEAMS);
- } else {
- hiderTeam.setOption(Option.NAME_TAG_VISIBILITY, OptionStatus.NEVER);
- seekerTeam.setOption(Option.NAME_TAG_VISIBILITY, OptionStatus.NEVER);
- }
+ Hider = new ArrayList<>();
+ Seeker = new ArrayList<>();
+ Spectator = new ArrayList<>();
}
public void createLobbyBoard(Player player) {
@@ -157,12 +136,20 @@ public class Board {
board = new CustomBoard(player, "&l&eHIDE AND SEEK");
board.updateTeams();
}
- board.setLine("hiders", ChatColor.BOLD + "" + ChatColor.YELLOW + "HIDER%" + ChatColor.WHITE + getHiderPercent());
- board.setLine("seekers", ChatColor.BOLD + "" + ChatColor.RED + "SEEKER%" + ChatColor.WHITE + getSeekerPercent());
+ board.setLine("hiders", ChatColor.BOLD + "" + ChatColor.YELLOW + "HIDER %" + ChatColor.WHITE + getHiderPercent());
+ board.setLine("seekers", ChatColor.BOLD + "" + ChatColor.RED + "SEEKER %" + ChatColor.WHITE + getSeekerPercent());
board.addBlank();
board.setLine("players", "Players: " + playerList.values().size());
board.addBlank();
- board.setLine("waiting", "Waiting to start...");
+ if(lobbyCountdownEnabled){
+ if(Main.plugin.game.countdownTime == -1){
+ board.setLine("waiting", "Waiting for players...");
+ } else {
+ board.setLine("waiting", "Starting in: "+ChatColor.GREEN + Main.plugin.game.countdownTime+"s");
+ }
+ } else {
+ board.setLine("waiting", "Waiting for gamemaster...");
+ }
board.display();
customBoards.put(player.getName(), board);
}
@@ -175,38 +162,39 @@ public class Board {
CustomBoard board = customBoards.get(player.getName());
if(recreate) {
board = new CustomBoard(player, "&l&eHIDE AND SEEK");
+ board.updateTeams();
}
board.setLine("hiders", ChatColor.BOLD + "" + ChatColor.YELLOW + "HIDERS:" + ChatColor.WHITE + " " + Hider.size());
board.setLine("seekers", ChatColor.BOLD + "" + ChatColor.RED + "SEEKERS:" + ChatColor.WHITE + " " + Seeker.size());
board.addBlank();
if(glowEnabled){
- if(Main.plugin.glow == null || Main.plugin.status.equals("Starting") || !Main.plugin.glow.isRunning())
+ if(Main.plugin.game.glow == null || Main.plugin.status == Status.STARTING || !Main.plugin.game.glow.isRunning())
board.setLine("glow", "Glow: " + ChatColor.RED + "Inactive");
else
board.setLine("glow", "Glow: " + ChatColor.GREEN + "Active");
}
if(tauntEnabled && tauntCountdown){
- if(Main.plugin.taunt == null || Main.plugin.status.equals("Starting"))
+ if(Main.plugin.game.taunt == null || Main.plugin.status == Status.STARTING)
board.setLine("taunt", "Taunt: " + ChatColor.YELLOW + "0m0s");
else if(!tauntLast && Hider.size() == 1){
board.setLine("taunt", "Taunt: " + ChatColor.YELLOW + "Expired");
- } else if(!Main.plugin.taunt.isRunning())
- board.setLine("taunt", "Taunt: " + ChatColor.YELLOW + Main.plugin.taunt.getDelay()/60 + "m" + Main.plugin.taunt.getDelay()%60 + "s");
+ } else if(!Main.plugin.game.taunt.isRunning())
+ board.setLine("taunt", "Taunt: " + ChatColor.YELLOW + Main.plugin.game.taunt.getDelay()/60 + "m" + Main.plugin.game.taunt.getDelay()%60 + "s");
else
board.setLine("taunt", "Taunt: " + ChatColor.YELLOW + "Active");
}
if(worldborderEnabled){
- if(Main.plugin.worldborder == null || Main.plugin.status.equals("Starting")){
+ if(Main.plugin.game.worldborder == null || Main.plugin.status == Status.STARTING){
board.setLine("board", "WorldBorder: " + ChatColor.YELLOW + "0m0s");
- } else if(!Main.plugin.worldborder.isRunning()) {
- board.setLine("board", "WorldBorder: " + ChatColor.YELLOW + Main.plugin.worldborder.getDelay()/60 + "m" + Main.plugin.worldborder.getDelay()%60 + "s");
+ } else if(!Main.plugin.game.worldborder.isRunning()) {
+ board.setLine("board", "WorldBorder: " + ChatColor.YELLOW + Main.plugin.game.worldborder.getDelay()/60 + "m" + Main.plugin.game.worldborder.getDelay()%60 + "s");
} else {
board.setLine("board", "WorldBorder: " + ChatColor.YELLOW + "Decreasing");
}
}
if(glowEnabled || (tauntEnabled && tauntCountdown) || worldborderEnabled)
board.addBlank();
- board.setLine("time", "Time Left: " + ChatColor.GREEN + Main.plugin.timeLeft/60 + "m" + Main.plugin.timeLeft%60 + "s");
+ board.setLine("time", "Time Left: " + ChatColor.GREEN + Main.plugin.game.timeLeft/60 + "m" + Main.plugin.game.timeLeft%60 + "s");
board.addBlank();
board.setLine("team", "Team: " + getTeam(player));
board.display();
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/util/CommandHandler.java b/src/main/java/net/tylermurphy/hideAndSeek/util/CommandHandler.java
new file mode 100644
index 0000000..56084dd
--- /dev/null
+++ b/src/main/java/net/tylermurphy/hideAndSeek/util/CommandHandler.java
@@ -0,0 +1,73 @@
+package net.tylermurphy.hideAndSeek.util;
+
+import static net.tylermurphy.hideAndSeek.configuration.Config.*;
+import static net.tylermurphy.hideAndSeek.configuration.Localization.*;
+
+import java.util.Arrays;
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import net.tylermurphy.hideAndSeek.command.*;
+
+public class CommandHandler {
+
+ public static Map<String,ICommand> COMMAND_REGISTER = new LinkedHashMap<String,ICommand>();
+
+ private static void registerCommand(ICommand command) {
+ if(!COMMAND_REGISTER.containsKey(command.getLabel())) {
+ COMMAND_REGISTER.put(command.getLabel().toLowerCase(), command);
+ }
+ }
+
+ public static void registerCommands() {
+ registerCommand(new About());
+ registerCommand(new Help());
+ registerCommand(new Setup());
+ registerCommand(new Start());
+ registerCommand(new Stop());
+ registerCommand(new SetSpawnLocation());
+ registerCommand(new SetLobbyLocation());
+ registerCommand(new SetExitLocation());
+ registerCommand(new SetBorder());
+ registerCommand(new Reload());
+ registerCommand(new SaveMap());
+ registerCommand(new SetBounds());
+ registerCommand(new Join());
+ registerCommand(new Leave());
+ }
+
+ public static boolean handleCommand(CommandSender sender, Command cmd, String label, String[] args) {
+ if(sender instanceof Player == false) {
+ 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 + 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 + message("MAPSAVE_INPROGRESS"));
+ } else if(permissionsRequired && !sender.hasPermission("hideandseek."+args[0].toLowerCase())) {
+ sender.sendMessage(errorPrefix + message("COMMAND_NOT_ALLOWED"));
+ } else {
+ try {
+ COMMAND_REGISTER.get(args[0].toLowerCase()).execute(sender,Arrays.copyOfRange(args, 1, args.length));
+ } catch (Exception e) {
+ sender.sendMessage(errorPrefix + "An error has occured.");
+ e.printStackTrace();
+ }
+ }
+ }
+ return true;
+ }
+
+ public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+ return CommandHandler.handleCommand(sender, command, label, args);
+ }
+
+}
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/util/TabCompleter.java b/src/main/java/net/tylermurphy/hideAndSeek/util/TabCompleter.java
new file mode 100644
index 0000000..667f597
--- /dev/null
+++ b/src/main/java/net/tylermurphy/hideAndSeek/util/TabCompleter.java
@@ -0,0 +1,41 @@
+package net.tylermurphy.hideAndSeek.util;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Locale;
+import java.util.stream.Collectors;
+
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandSender;
+
+public class TabCompleter{
+
+ public static List<String> handleTabComplete(CommandSender sender, Command command, String label, String[] args) {
+ if(args.length == 1) {
+ return new ArrayList<String>(CommandHandler.COMMAND_REGISTER.keySet())
+ .stream()
+ .filter(handle -> sender.hasPermission("hideandseek."+handle.toLowerCase()) && handle.toLowerCase().startsWith(args[0].toLowerCase(Locale.ROOT)))
+ .collect(Collectors.toList());
+ } else if(args.length > 1) {
+ if(!CommandHandler.COMMAND_REGISTER.containsKey(args[0].toLowerCase())) {
+ return null;
+ } else {
+ String[] usage = CommandHandler.COMMAND_REGISTER.get(args[0].toLowerCase()).getUsage().split(" ");
+ if(args.length - 2 < usage.length) {
+ String parameter = usage[args.length-2];
+ if(parameter.equals("<player>")) {
+ return null;
+ } else {
+ List<String> temp = new ArrayList<String>();
+ temp.add(parameter.replace("<", "").replace(">", ""));
+ return temp;
+ }
+ } else {
+ return null;
+ }
+ }
+ }
+ return null;
+ }
+
+}
diff --git a/src/main/java/net/tylermurphy/hideAndSeek/util/Util.java b/src/main/java/net/tylermurphy/hideAndSeek/util/Util.java
index c24936b..f3bee71 100644
--- a/src/main/java/net/tylermurphy/hideAndSeek/util/Util.java
+++ b/src/main/java/net/tylermurphy/hideAndSeek/util/Util.java
@@ -45,7 +45,7 @@ public class Util {
public static void sendDelayedMessage(String message, int gameId, int delay) {
Bukkit.getScheduler().runTaskLaterAsynchronously(Main.plugin, new Runnable() {
public void run() {
- if(gameId == Main.plugin.gameId)
+ if(gameId == Main.plugin.game.gameId)
Util.broadcastMessage(message);
}
}, delay);