From ed58562595107d8a44ac20c1697468417b851d34 Mon Sep 17 00:00:00 2001 From: Brianna O'Keefe Date: Thu, 7 Mar 2019 19:08:40 -0500 Subject: [PATCH] Added tab complete. --- .../command/TabManager.java | 35 ++++++++++++------- .../command/commands/CommandBan.java | 14 ++++++++ .../command/commands/CommandClearChat.java | 5 +++ .../command/commands/CommandFreeze.java | 11 ++++-- .../command/commands/CommandInvSee.java | 10 ++++++ .../command/commands/CommandKick.java | 13 +++++++ .../command/commands/CommandMute.java | 15 ++++++++ .../command/commands/CommandRevive.java | 12 ++++--- .../command/commands/CommandRunTemplate.java | 16 +++++++++ .../command/commands/CommandSpy.java | 12 ++++--- .../command/commands/CommandUnBan.java | 11 ++++++ .../command/commands/CommandUnMute.java | 11 ++++++ .../command/commands/CommandVanish.java | 11 ++++-- .../commands/CommandViewEnderChest.java | 10 ++++++ .../command/commands/CommandWarn.java | 15 ++++++++ 15 files changed, 175 insertions(+), 26 deletions(-) diff --git a/src/main/java/com/songoda/ultimatemoderation/command/TabManager.java b/src/main/java/com/songoda/ultimatemoderation/command/TabManager.java index 58f06cc..f634673 100644 --- a/src/main/java/com/songoda/ultimatemoderation/command/TabManager.java +++ b/src/main/java/com/songoda/ultimatemoderation/command/TabManager.java @@ -19,7 +19,7 @@ public class TabManager implements TabCompleter { @Override public List onTabComplete(CommandSender sender, Command command, String alias, String[] strings) { for (AbstractCommand abstractCommand : commandManager.getCommands()) { - if (abstractCommand.getCommand() != null && abstractCommand.getCommand().equalsIgnoreCase(command.getName().toLowerCase())) { + if (abstractCommand.getCommand() != null && abstractCommand.getCommand().equalsIgnoreCase(command.getName()) && !abstractCommand.hasArgs()) { if (strings.length == 1) { List subs = new ArrayList<>(); for (AbstractCommand ac : commandManager.getCommands()) { @@ -29,24 +29,35 @@ public class TabManager implements TabCompleter { subs.removeIf(s -> !s.toLowerCase().startsWith(strings[0].toLowerCase())); return subs; } - } else if (strings.length != 0 && abstractCommand.getParent() != null && abstractCommand.getParent().getCommand().equalsIgnoreCase(command.getName().toLowerCase())) { + } else if (strings.length != 0 + && abstractCommand.getCommand() != null + && abstractCommand.getCommand().equalsIgnoreCase(command.getName().toLowerCase())) { String cmd = strings[0]; String cmd2 = strings.length >= 2 ? String.join(" ", strings[0], strings[1]) : null; - for (String cmds : abstractCommand.getSubCommand()) { - if (cmd.equalsIgnoreCase(cmds) || (cmd2 != null && cmd2.equalsIgnoreCase(cmds))) { - List list = abstractCommand.onTab(UltimateModeration.getInstance(), sender, strings); - String str = strings[strings.length - 1]; - if (list != null && str != null && str.length() >= 1) { - try { - list.removeIf(s -> !s.toLowerCase().startsWith(str.toLowerCase())); - } catch (UnsupportedOperationException ignored) { - } + if (abstractCommand.hasArgs()) { + return onCommand(abstractCommand, strings, sender); + } else { + for (String cmds : abstractCommand.getSubCommand()) { + if (cmd.equalsIgnoreCase(cmds) || (cmd2 != null && cmd2.equalsIgnoreCase(cmds))) { + return onCommand(abstractCommand, strings, sender); } - return list; } } } } return null; } + + + private List onCommand(AbstractCommand abstractCommand, String[] strings, CommandSender sender) { + List list = abstractCommand.onTab(UltimateModeration.getInstance(), sender, strings); + String str = strings[strings.length - 1]; + if (list != null && str != null && str.length() >= 1) { + try { + list.removeIf(s -> !s.toLowerCase().startsWith(str.toLowerCase())); + } catch (UnsupportedOperationException ignored) { + } + } + return list; + } } diff --git a/src/main/java/com/songoda/ultimatemoderation/command/commands/CommandBan.java b/src/main/java/com/songoda/ultimatemoderation/command/commands/CommandBan.java index 8612794..753ea1e 100644 --- a/src/main/java/com/songoda/ultimatemoderation/command/commands/CommandBan.java +++ b/src/main/java/com/songoda/ultimatemoderation/command/commands/CommandBan.java @@ -10,6 +10,9 @@ import org.bukkit.OfflinePlayer; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; import java.util.List; public class CommandBan extends AbstractCommand { @@ -55,6 +58,17 @@ public class CommandBan extends AbstractCommand { @Override protected List onTab(UltimateModeration instance, CommandSender sender, String... args) { + if (args.length == 1) { + List players = new ArrayList<>(); + for (Player player : Bukkit.getOnlinePlayers()) { + players.add(player.getName()); + } + return players; + } else if (args.length == 2) { + return Arrays.asList("1D", "2D", "3D", "4D"); + } else if (args.length == 3) { + return Collections.singletonList("For being bad"); + } return null; } diff --git a/src/main/java/com/songoda/ultimatemoderation/command/commands/CommandClearChat.java b/src/main/java/com/songoda/ultimatemoderation/command/commands/CommandClearChat.java index 71e4325..da24000 100644 --- a/src/main/java/com/songoda/ultimatemoderation/command/commands/CommandClearChat.java +++ b/src/main/java/com/songoda/ultimatemoderation/command/commands/CommandClearChat.java @@ -7,7 +7,9 @@ import org.bukkit.Bukkit; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import java.util.ArrayList; import java.util.Arrays; +import java.util.Collections; import java.util.List; public class CommandClearChat extends AbstractCommand { @@ -40,6 +42,9 @@ public class CommandClearChat extends AbstractCommand { @Override protected List onTab(UltimateModeration instance, CommandSender sender, String... args) { + if (args.length == 1) { + return Collections.singletonList("force"); + } return null; } diff --git a/src/main/java/com/songoda/ultimatemoderation/command/commands/CommandFreeze.java b/src/main/java/com/songoda/ultimatemoderation/command/commands/CommandFreeze.java index 47023e1..ddf6622 100644 --- a/src/main/java/com/songoda/ultimatemoderation/command/commands/CommandFreeze.java +++ b/src/main/java/com/songoda/ultimatemoderation/command/commands/CommandFreeze.java @@ -7,9 +7,7 @@ import org.bukkit.OfflinePlayer; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import java.util.ArrayList; -import java.util.List; -import java.util.UUID; +import java.util.*; public class CommandFreeze extends AbstractCommand { @@ -55,6 +53,13 @@ public class CommandFreeze extends AbstractCommand { @Override protected List onTab(UltimateModeration instance, CommandSender sender, String... args) { + if (args.length == 1) { + List players = new ArrayList<>(); + for (Player player : Bukkit.getOnlinePlayers()) { + players.add(player.getName()); + } + return players; + } return null; } diff --git a/src/main/java/com/songoda/ultimatemoderation/command/commands/CommandInvSee.java b/src/main/java/com/songoda/ultimatemoderation/command/commands/CommandInvSee.java index 1c16019..ba663fa 100644 --- a/src/main/java/com/songoda/ultimatemoderation/command/commands/CommandInvSee.java +++ b/src/main/java/com/songoda/ultimatemoderation/command/commands/CommandInvSee.java @@ -6,6 +6,9 @@ import org.bukkit.Bukkit; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; import java.util.List; public class CommandInvSee extends AbstractCommand { @@ -32,6 +35,13 @@ public class CommandInvSee extends AbstractCommand { @Override protected List onTab(UltimateModeration instance, CommandSender sender, String... args) { + if (args.length == 1) { + List players = new ArrayList<>(); + for (Player player : Bukkit.getOnlinePlayers()) { + players.add(player.getName()); + } + return players; + } return null; } diff --git a/src/main/java/com/songoda/ultimatemoderation/command/commands/CommandKick.java b/src/main/java/com/songoda/ultimatemoderation/command/commands/CommandKick.java index b83c95d..e1e365c 100644 --- a/src/main/java/com/songoda/ultimatemoderation/command/commands/CommandKick.java +++ b/src/main/java/com/songoda/ultimatemoderation/command/commands/CommandKick.java @@ -8,7 +8,11 @@ import com.songoda.ultimatemoderation.utils.Methods; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; import java.util.List; public class CommandKick extends AbstractCommand { @@ -47,6 +51,15 @@ public class CommandKick extends AbstractCommand { @Override protected List onTab(UltimateModeration instance, CommandSender sender, String... args) { + if (args.length == 1) { + List players = new ArrayList<>(); + for (Player player : Bukkit.getOnlinePlayers()) { + players.add(player.getName()); + } + return players; + } else if (args.length == 2) { + return Collections.singletonList("For being bad"); + } return null; } diff --git a/src/main/java/com/songoda/ultimatemoderation/command/commands/CommandMute.java b/src/main/java/com/songoda/ultimatemoderation/command/commands/CommandMute.java index 9ee7b9c..b06876e 100644 --- a/src/main/java/com/songoda/ultimatemoderation/command/commands/CommandMute.java +++ b/src/main/java/com/songoda/ultimatemoderation/command/commands/CommandMute.java @@ -8,7 +8,11 @@ import com.songoda.ultimatemoderation.utils.Methods; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; import java.util.List; public class CommandMute extends AbstractCommand { @@ -54,6 +58,17 @@ public class CommandMute extends AbstractCommand { @Override protected List onTab(UltimateModeration instance, CommandSender sender, String... args) { + if (args.length == 1) { + List players = new ArrayList<>(); + for (Player player : Bukkit.getOnlinePlayers()) { + players.add(player.getName()); + } + return players; + } else if (args.length == 2) { + return Arrays.asList("1M", "5M", "15M", "30M"); + } else if (args.length == 3) { + return Collections.singletonList("For being bad"); + } return null; } diff --git a/src/main/java/com/songoda/ultimatemoderation/command/commands/CommandRevive.java b/src/main/java/com/songoda/ultimatemoderation/command/commands/CommandRevive.java index c6a72f8..5cc99c2 100644 --- a/src/main/java/com/songoda/ultimatemoderation/command/commands/CommandRevive.java +++ b/src/main/java/com/songoda/ultimatemoderation/command/commands/CommandRevive.java @@ -8,10 +8,7 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.UUID; +import java.util.*; public class CommandRevive extends AbstractCommand { @@ -56,6 +53,13 @@ public class CommandRevive extends AbstractCommand { @Override protected List onTab(UltimateModeration instance, CommandSender sender, String... args) { + if (args.length == 1) { + List players = new ArrayList<>(); + for (Player player : Bukkit.getOnlinePlayers()) { + players.add(player.getName()); + } + return players; + } return null; } diff --git a/src/main/java/com/songoda/ultimatemoderation/command/commands/CommandRunTemplate.java b/src/main/java/com/songoda/ultimatemoderation/command/commands/CommandRunTemplate.java index 2856e55..dc4a8b9 100644 --- a/src/main/java/com/songoda/ultimatemoderation/command/commands/CommandRunTemplate.java +++ b/src/main/java/com/songoda/ultimatemoderation/command/commands/CommandRunTemplate.java @@ -9,7 +9,11 @@ import com.songoda.ultimatemoderation.utils.Methods; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; import java.util.List; public class CommandRunTemplate extends AbstractCommand { @@ -51,6 +55,18 @@ public class CommandRunTemplate extends AbstractCommand { @Override protected List onTab(UltimateModeration instance, CommandSender sender, String... args) { + if (args.length == 1) { + List players = new ArrayList<>(); + for (Player player : Bukkit.getOnlinePlayers()) { + players.add(player.getName()); + } + return players; + } else if (args.length == 2) { + List lines = new ArrayList<>(); + for (Template template : instance.getTemplateManager().getTemplates().values()) { + lines.add(template.getTemplateName()); + } + } return null; } diff --git a/src/main/java/com/songoda/ultimatemoderation/command/commands/CommandSpy.java b/src/main/java/com/songoda/ultimatemoderation/command/commands/CommandSpy.java index ddec7d9..a49248e 100644 --- a/src/main/java/com/songoda/ultimatemoderation/command/commands/CommandSpy.java +++ b/src/main/java/com/songoda/ultimatemoderation/command/commands/CommandSpy.java @@ -8,10 +8,7 @@ import org.bukkit.OfflinePlayer; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.UUID; +import java.util.*; public class CommandSpy extends AbstractCommand { @@ -73,6 +70,13 @@ public class CommandSpy extends AbstractCommand { @Override protected List onTab(UltimateModeration instance, CommandSender sender, String... args) { + if (args.length == 1) { + List players = new ArrayList<>(); + for (Player player : Bukkit.getOnlinePlayers()) { + players.add(player.getName()); + } + return players; + } return null; } diff --git a/src/main/java/com/songoda/ultimatemoderation/command/commands/CommandUnBan.java b/src/main/java/com/songoda/ultimatemoderation/command/commands/CommandUnBan.java index db53f74..e2a18f8 100644 --- a/src/main/java/com/songoda/ultimatemoderation/command/commands/CommandUnBan.java +++ b/src/main/java/com/songoda/ultimatemoderation/command/commands/CommandUnBan.java @@ -8,7 +8,11 @@ import com.songoda.ultimatemoderation.punish.player.PlayerPunishData; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; import java.util.List; public class CommandUnBan extends AbstractCommand { @@ -39,6 +43,13 @@ public class CommandUnBan extends AbstractCommand { @Override protected List onTab(UltimateModeration instance, CommandSender sender, String... args) { + if (args.length == 1) { + List players = new ArrayList<>(); + for (Player player : Bukkit.getOnlinePlayers()) { + players.add(player.getName()); + } + return players; + } return null; } diff --git a/src/main/java/com/songoda/ultimatemoderation/command/commands/CommandUnMute.java b/src/main/java/com/songoda/ultimatemoderation/command/commands/CommandUnMute.java index f3d1754..6229d5c 100644 --- a/src/main/java/com/songoda/ultimatemoderation/command/commands/CommandUnMute.java +++ b/src/main/java/com/songoda/ultimatemoderation/command/commands/CommandUnMute.java @@ -7,7 +7,11 @@ import com.songoda.ultimatemoderation.punish.player.PlayerPunishData; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; import java.util.List; public class CommandUnMute extends AbstractCommand { @@ -38,6 +42,13 @@ public class CommandUnMute extends AbstractCommand { @Override protected List onTab(UltimateModeration instance, CommandSender sender, String... args) { + if (args.length == 1) { + List players = new ArrayList<>(); + for (Player player : Bukkit.getOnlinePlayers()) { + players.add(player.getName()); + } + return players; + } return null; } diff --git a/src/main/java/com/songoda/ultimatemoderation/command/commands/CommandVanish.java b/src/main/java/com/songoda/ultimatemoderation/command/commands/CommandVanish.java index 37a17d1..0a5950e 100644 --- a/src/main/java/com/songoda/ultimatemoderation/command/commands/CommandVanish.java +++ b/src/main/java/com/songoda/ultimatemoderation/command/commands/CommandVanish.java @@ -12,9 +12,7 @@ import org.bukkit.entity.Entity; import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; -import java.util.ArrayList; -import java.util.List; -import java.util.UUID; +import java.util.*; public class CommandVanish extends AbstractCommand { @@ -90,6 +88,13 @@ public class CommandVanish extends AbstractCommand { @Override protected List onTab(UltimateModeration instance, CommandSender sender, String... args) { + if (args.length == 1) { + List players = new ArrayList<>(); + for (Player player : Bukkit.getOnlinePlayers()) { + players.add(player.getName()); + } + return players; + } return null; } diff --git a/src/main/java/com/songoda/ultimatemoderation/command/commands/CommandViewEnderChest.java b/src/main/java/com/songoda/ultimatemoderation/command/commands/CommandViewEnderChest.java index 8dd1ca5..796aa4a 100644 --- a/src/main/java/com/songoda/ultimatemoderation/command/commands/CommandViewEnderChest.java +++ b/src/main/java/com/songoda/ultimatemoderation/command/commands/CommandViewEnderChest.java @@ -6,6 +6,9 @@ import org.bukkit.Bukkit; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; import java.util.List; public class CommandViewEnderChest extends AbstractCommand { @@ -33,6 +36,13 @@ public class CommandViewEnderChest extends AbstractCommand { @Override protected List onTab(UltimateModeration instance, CommandSender sender, String... args) { + if (args.length == 1) { + List players = new ArrayList<>(); + for (Player player : Bukkit.getOnlinePlayers()) { + players.add(player.getName()); + } + return players; + } return null; } diff --git a/src/main/java/com/songoda/ultimatemoderation/command/commands/CommandWarn.java b/src/main/java/com/songoda/ultimatemoderation/command/commands/CommandWarn.java index b779828..055dbfb 100644 --- a/src/main/java/com/songoda/ultimatemoderation/command/commands/CommandWarn.java +++ b/src/main/java/com/songoda/ultimatemoderation/command/commands/CommandWarn.java @@ -8,7 +8,11 @@ import com.songoda.ultimatemoderation.utils.Methods; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; import java.util.List; public class CommandWarn extends AbstractCommand { @@ -54,6 +58,17 @@ public class CommandWarn extends AbstractCommand { @Override protected List onTab(UltimateModeration instance, CommandSender sender, String... args) { + if (args.length == 1) { + List players = new ArrayList<>(); + for (Player player : Bukkit.getOnlinePlayers()) { + players.add(player.getName()); + } + return players; + } else if (args.length == 2) { + return Arrays.asList("1D", "2D", "3D", "4D"); + } else if (args.length == 3) { + return Collections.singletonList("For being bad"); + } return null; }