From d3e7561b9d99b4b9a5d62e3a88ff43e023af3401 Mon Sep 17 00:00:00 2001 From: Default Date: Wed, 30 Dec 2020 13:19:58 +0100 Subject: [PATCH] better commands --- .../com/benjocraeft/sharehealth/Commands.java | 65 +++++++++++++------ 1 file changed, 44 insertions(+), 21 deletions(-) diff --git a/src/main/java/com/benjocraeft/sharehealth/Commands.java b/src/main/java/com/benjocraeft/sharehealth/Commands.java index 2b99cac..8b8738f 100644 --- a/src/main/java/com/benjocraeft/sharehealth/Commands.java +++ b/src/main/java/com/benjocraeft/sharehealth/Commands.java @@ -10,24 +10,11 @@ import org.bukkit.entity.Player; import org.bukkit.util.StringUtil; import java.util.*; +import java.util.concurrent.atomic.AtomicInteger; import java.util.function.Consumer; public class Commands implements TabExecutor { - final private String[] mainSchema = { - "get", "reset", "log", "stats", "help" - }; - - final private String[] hasSecondSchema = { - "log" - }; - - final private String[][] secondSchema = { - { - "on", "off" - } - }; - final private Map, Pair, String>> commands = new HashMap<>(); { commands.put( @@ -40,11 +27,15 @@ public class Commands implements TabExecutor { ); commands.put( Arrays.asList("log", "on"), - Pair.pair(sender -> this.commandSetLogging(sender, true), "Activates permanent player Logging about Damage and Healing.") + Pair.pair(sender -> this.commandSetLogging(sender, true), "Enables Logging.") ); commands.put( Arrays.asList("log", "off"), - Pair.pair(sender -> this.commandSetLogging(sender, false), "Deactivates permanent player Logging about Damage and Healing.") + Pair.pair(sender -> this.commandSetLogging(sender, false), "Disables Logging.") + ); + commands.put( + Arrays.asList("log", "get"), + Pair.pair(this::commandGetLogging, "Displays if Logging is enabled.") ); commands.put( Arrays.asList("stats"), @@ -56,18 +47,42 @@ public class Commands implements TabExecutor { ); } + final private List mainSchema; + final private List hasSecondSchema; + final private List> secondSchema; + { + Map> mapping = new HashMap<>(); + commands.keySet().forEach(parts -> { + String part1 = parts.get(0); + String part2 = ""; + if (parts.size() == 2){ + part2 = parts.get(1); + } + mapping.putIfAbsent(part1, new ArrayList<>()); + if (!part2.isEmpty()) + mapping.get(part1).add(part2); + }); + mainSchema = new ArrayList<>(mapping.keySet()); + + hasSecondSchema = new ArrayList<>(mapping.keySet()); + hasSecondSchema.removeIf(s -> mapping.get(s).size() == 0); + + secondSchema = new ArrayList<>(mapping.values()); + } + + + @Override public List onTabComplete(CommandSender commandSender, Command command, String s, String[] strings) { List list = new ArrayList<>(); if (strings.length == 1){ - StringUtil.copyPartialMatches(strings[0], Arrays.asList(mainSchema), list); + StringUtil.copyPartialMatches(strings[0], mainSchema, list); } if (strings.length == 2){ - List hasSecondSchemaList = Arrays.asList(hasSecondSchema); - if (hasSecondSchemaList.contains(strings[0])){ - int index = hasSecondSchemaList.indexOf(strings[0]); - List checkList = Arrays.asList(secondSchema[index]); + if (hasSecondSchema.contains(strings[0])){ + int index = mainSchema.indexOf(strings[0]); + List checkList = secondSchema.get(index); StringUtil.copyPartialMatches(strings[1], checkList, list); } } @@ -105,6 +120,14 @@ public class Commands implements TabExecutor { } } + private void commandGetLogging(CommandSender sender){ + if (sender instanceof Player){ + String message = "Logging enabled: " + Sharehealth.Instance.getLogging((Player) sender); + sender.sendMessage(message); + } + + } + private void commandSendStats(CommandSender sender){ String message = Sharehealth.Instance.getMessenger().statisticsMessage(); sender.sendMessage(message);