Moves permission nodes and command names to an enum to reduce redundancy
Also fixes some cases where tab completions are provided even if all arguments have been supplied
This commit is contained in:
2
pom.xml
2
pom.xml
@@ -35,7 +35,7 @@
|
||||
<dependency>
|
||||
<groupId>org.jetbrains</groupId>
|
||||
<artifactId>annotations</artifactId>
|
||||
<version>RELEASE</version>
|
||||
<version>23.0.0</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
|
||||
@@ -6,6 +6,7 @@ import net.TheDgtl.Stargate.config.OptionDataType;
|
||||
import net.knarcraft.stargatecommand.formatting.StringFormatter;
|
||||
import net.knarcraft.stargatecommand.formatting.TranslatableMessage;
|
||||
import net.knarcraft.stargatecommand.formatting.Translator;
|
||||
import net.knarcraft.stargatecommand.property.StargateCommandCommand;
|
||||
import net.md_5.bungee.api.ChatColor;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.bukkit.command.Command;
|
||||
@@ -45,7 +46,7 @@ public class CommandConfig implements CommandExecutor {
|
||||
public boolean onCommand(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s,
|
||||
@NotNull String[] args) {
|
||||
if (commandSender instanceof Player player) {
|
||||
if (!player.hasPermission("stargate.command.config")) {
|
||||
if (!player.hasPermission(StargateCommandCommand.CONFIG.getPermissionNode())) {
|
||||
player.sendMessage(getTranslatedErrorMessage(TranslatableMessage.PERMISSION_DENIED));
|
||||
return true;
|
||||
}
|
||||
@@ -262,8 +263,8 @@ public class CommandConfig implements CommandExecutor {
|
||||
stringValue = "[" + StringUtils.join((String[]) defaultValue, ",") + "]";
|
||||
}
|
||||
return StringFormatter.replacePlaceholders(Translator.getTranslatedMessage(
|
||||
TranslatableMessage.CONFIG_OPTION_DESCRIPTION), new String[]{"{name}", "{description}", "{value}"},
|
||||
new String[]{option.name(), option.getDescription(), stringValue});
|
||||
TranslatableMessage.CONFIG_OPTION_DESCRIPTION), new String[]{"{name}", "{description}",
|
||||
"{value}"}, new String[]{option.name(), option.getDescription(), stringValue});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ import net.TheDgtl.Stargate.network.RegistryAPI;
|
||||
import net.TheDgtl.Stargate.network.portal.RealPortal;
|
||||
import net.knarcraft.stargatecommand.StargateCommand;
|
||||
import net.knarcraft.stargatecommand.manager.OverrideManager;
|
||||
import net.knarcraft.stargatecommand.property.StargateCommandCommand;
|
||||
import net.knarcraft.stargatecommand.util.PortalFinderHelper;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandExecutor;
|
||||
@@ -40,7 +41,7 @@ public class CommandDial implements CommandExecutor {
|
||||
commandSender.sendMessage("This command can only be used by players");
|
||||
return true;
|
||||
}
|
||||
if (!player.hasPermission("stargate.command.dial")) {
|
||||
if (!player.hasPermission(StargateCommandCommand.DIAL.getPermissionNode())) {
|
||||
player.sendMessage("Permission Denied");
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ package net.knarcraft.stargatecommand.command;
|
||||
|
||||
import net.TheDgtl.Stargate.api.StargateAPI;
|
||||
import net.TheDgtl.Stargate.config.ConfigurationOption;
|
||||
import net.knarcraft.stargatecommand.property.StargateCommandCommand;
|
||||
import org.apache.commons.lang.ArrayUtils;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandExecutor;
|
||||
@@ -34,14 +35,14 @@ public class CommandStarGateCommand implements CommandExecutor {
|
||||
@NotNull String[] args) {
|
||||
if (args.length > 0) {
|
||||
String[] subArgs = (String[]) ArrayUtils.remove(args, 0);
|
||||
if (args[0].equalsIgnoreCase("config")) {
|
||||
if (args[0].equalsIgnoreCase(StargateCommandCommand.CONFIG.getName())) {
|
||||
return new CommandConfig(stargateAPI.getConfigurationAPI(), bannedConfigOptions).onCommand(
|
||||
commandSender, command, s, subArgs);
|
||||
} else if (args[0].equalsIgnoreCase("dial")) {
|
||||
} else if (args[0].equalsIgnoreCase(StargateCommandCommand.DIAL.getName())) {
|
||||
return new CommandDial(stargateAPI).onCommand(commandSender, command, s, subArgs);
|
||||
} else if (args[0].equalsIgnoreCase("visualizer")) {
|
||||
} else if (args[0].equalsIgnoreCase(StargateCommandCommand.VISUALIZER.getName())) {
|
||||
return new CommandVisualizer(stargateAPI.getRegistry()).onCommand(commandSender, command, s, subArgs);
|
||||
} else if (args[0].equalsIgnoreCase("info")) {
|
||||
} else if (args[0].equalsIgnoreCase(StargateCommandCommand.INFO.getName())) {
|
||||
return new TabCommandInfo(stargateAPI.getRegistry()).onCommand(commandSender, command, s, subArgs);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ import net.TheDgtl.Stargate.network.portal.FixedPortal;
|
||||
import net.TheDgtl.Stargate.network.portal.Portal;
|
||||
import net.TheDgtl.Stargate.network.portal.PortalFlag;
|
||||
import net.knarcraft.stargatecommand.StargateCommand;
|
||||
import net.knarcraft.stargatecommand.property.StargateCommandCommand;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandExecutor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
@@ -31,7 +32,7 @@ public class CommandVisualizer implements CommandExecutor {
|
||||
@Override
|
||||
public boolean onCommand(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s,
|
||||
@NotNull String[] args) {
|
||||
if (!commandSender.hasPermission("stargate.command.visualizer")) {
|
||||
if (!commandSender.hasPermission(StargateCommandCommand.VISUALIZER.getPermissionNode())) {
|
||||
commandSender.sendMessage("Permission Denied");
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ package net.knarcraft.stargatecommand.command;
|
||||
|
||||
import net.TheDgtl.Stargate.config.ConfigurationOption;
|
||||
import net.TheDgtl.Stargate.config.OptionDataType;
|
||||
import net.knarcraft.stargatecommand.property.StargateCommandCommand;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.command.TabCompleter;
|
||||
@@ -37,10 +38,18 @@ public class ConfigTabCompleter implements TabCompleter {
|
||||
@Override
|
||||
public List<String> onTabComplete(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s,
|
||||
@NotNull String[] args) {
|
||||
//Don't display any info to non-authorized users
|
||||
if (!commandSender.hasPermission(StargateCommandCommand.CONFIG.getPermissionNode())) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
if (booleans == null || integers == null || chatColors == null) {
|
||||
initializeAutoCompleteLists();
|
||||
}
|
||||
if (args.length > 1) {
|
||||
|
||||
if (args.length > 2) {
|
||||
return new ArrayList<>();
|
||||
} else if (args.length > 1) {
|
||||
ConfigurationOption selectedOption;
|
||||
try {
|
||||
selectedOption = ConfigurationOption.valueOf(args[0].toUpperCase());
|
||||
@@ -146,7 +155,6 @@ public class ConfigTabCompleter implements TabCompleter {
|
||||
doubles.add("0.1");
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Initializes the list of chat colors
|
||||
*/
|
||||
|
||||
@@ -7,6 +7,7 @@ import net.TheDgtl.Stargate.network.RegistryAPI;
|
||||
import net.TheDgtl.Stargate.network.portal.Portal;
|
||||
import net.TheDgtl.Stargate.network.portal.RealPortal;
|
||||
import net.knarcraft.stargatecommand.StargateCommand;
|
||||
import net.knarcraft.stargatecommand.property.StargateCommandCommand;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.command.TabCompleter;
|
||||
@@ -44,8 +45,12 @@ public class DialTabCompleter implements TabCompleter {
|
||||
@Override
|
||||
public List<String> onTabComplete(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s,
|
||||
@NotNull String[] args) {
|
||||
//Don't display any info to non-authorized users
|
||||
if (!commandSender.hasPermission(StargateCommandCommand.DIAL.getPermissionNode())) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
if (!(commandSender instanceof Player player)) {
|
||||
commandSender.sendMessage("This command can only be used by players");
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
@@ -57,7 +62,9 @@ public class DialTabCompleter implements TabCompleter {
|
||||
//Populate the collections with available networks and portals
|
||||
populateNetworksAndPortals(permissionManager, availableNetworks, availablePortals);
|
||||
|
||||
if (args.length > 1) {
|
||||
if (args.length > 2) {
|
||||
return new ArrayList<>();
|
||||
} else if (args.length > 1) {
|
||||
Network network = registryAPI.getNetwork(args[0].replace(spaceReplacement, ' '), false);
|
||||
if (network != null && availablePortals.containsKey(network)) {
|
||||
return filterMatching(availablePortals.get(network), args[1].replace(spaceReplacement, ' '));
|
||||
|
||||
@@ -2,6 +2,7 @@ package net.knarcraft.stargatecommand.command;
|
||||
|
||||
import net.TheDgtl.Stargate.api.StargateAPI;
|
||||
import net.TheDgtl.Stargate.config.ConfigurationOption;
|
||||
import net.knarcraft.stargatecommand.property.StargateCommandCommand;
|
||||
import org.apache.commons.lang.ArrayUtils;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
@@ -48,13 +49,13 @@ public class StargateCommandTabCompleter implements TabCompleter {
|
||||
//Get the actual arguments for the specified sub-command
|
||||
String[] subArgs = (String[]) ArrayUtils.remove(args, 0);
|
||||
|
||||
if (args[0].equalsIgnoreCase("config")) {
|
||||
if (args[0].equalsIgnoreCase(StargateCommandCommand.CONFIG.getName())) {
|
||||
return new ConfigTabCompleter(bannedConfigOptions).onTabComplete(commandSender, command, s, subArgs);
|
||||
} else if (args[0].equalsIgnoreCase("dial")) {
|
||||
} else if (args[0].equalsIgnoreCase(StargateCommandCommand.DIAL.getName())) {
|
||||
return new DialTabCompleter(stargateAPI).onTabComplete(commandSender, command, s, subArgs);
|
||||
} else if (args[0].equalsIgnoreCase("visualizer")) {
|
||||
} else if (args[0].equalsIgnoreCase(StargateCommandCommand.VISUALIZER.getName())) {
|
||||
return new VisualizerTabCompleter(stargateAPI.getRegistry()).onTabComplete(commandSender, command, s, subArgs);
|
||||
} else if (args[0].equalsIgnoreCase("info")) {
|
||||
} else if (args[0].equalsIgnoreCase(StargateCommandCommand.INFO.getName())) {
|
||||
return new TabCommandInfo(stargateAPI.getRegistry()).onTabComplete(commandSender, command, s, subArgs);
|
||||
}
|
||||
}
|
||||
@@ -69,17 +70,11 @@ public class StargateCommandTabCompleter implements TabCompleter {
|
||||
*/
|
||||
private List<String> getAvailableCommands(CommandSender commandSender) {
|
||||
List<String> commands = new ArrayList<>();
|
||||
if (!(commandSender instanceof Player player) || player.hasPermission("stargate.command.config")) {
|
||||
commands.add("config");
|
||||
}
|
||||
if (commandSender instanceof Player player && player.hasPermission("stargate.command.dial")) {
|
||||
commands.add("dial");
|
||||
}
|
||||
if (commandSender instanceof Player player && player.hasPermission("stargate.command.visualizer")) {
|
||||
commands.add("visualizer");
|
||||
}
|
||||
if (commandSender instanceof Player player && player.hasPermission("stargate.command.info")) {
|
||||
commands.add("info");
|
||||
for (StargateCommandCommand command : StargateCommandCommand.values()) {
|
||||
if ((!command.requiresPlayer() || commandSender instanceof Player) &&
|
||||
commandSender.hasPermission(command.getPermissionNode())) {
|
||||
commands.add(command.getName());
|
||||
}
|
||||
}
|
||||
return commands;
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ package net.knarcraft.stargatecommand.command;
|
||||
import net.TheDgtl.Stargate.network.RegistryAPI;
|
||||
import net.TheDgtl.Stargate.network.portal.Portal;
|
||||
import net.TheDgtl.Stargate.network.portal.PortalFlag;
|
||||
import net.knarcraft.stargatecommand.property.StargateCommandCommand;
|
||||
import net.knarcraft.stargatecommand.util.PortalFinderHelper;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.bukkit.Bukkit;
|
||||
@@ -40,7 +41,7 @@ public class TabCommandInfo implements TabExecutor {
|
||||
commandSender.sendMessage("This command can only be used by a player");
|
||||
return true;
|
||||
}
|
||||
if (!player.hasPermission("stargate.command.info")) {
|
||||
if (!player.hasPermission(StargateCommandCommand.INFO.getPermissionNode())) {
|
||||
player.sendMessage("Permission Denied");
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ package net.knarcraft.stargatecommand.command;
|
||||
|
||||
import net.TheDgtl.Stargate.network.RegistryAPI;
|
||||
import net.knarcraft.stargatecommand.StargateCommand;
|
||||
import net.knarcraft.stargatecommand.property.StargateCommandCommand;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.command.TabCompleter;
|
||||
@@ -33,6 +34,11 @@ public class VisualizerTabCompleter implements TabCompleter {
|
||||
@Override
|
||||
public List<String> onTabComplete(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s,
|
||||
@NotNull String[] args) {
|
||||
//Don't display any info to non-authorized users
|
||||
if (!commandSender.hasPermission(StargateCommandCommand.VISUALIZER.getPermissionNode())) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
if (args.length < 2) {
|
||||
List<String> networkNames = new ArrayList<>();
|
||||
registryAPI.getNetworkMap().values().forEach(item -> networkNames.add(item.getName().replace(' ',
|
||||
|
||||
@@ -0,0 +1,71 @@
|
||||
package net.knarcraft.stargatecommand.property;
|
||||
|
||||
/**
|
||||
* An enum representing the commands of this plugin
|
||||
*/
|
||||
public enum StargateCommandCommand {
|
||||
|
||||
/**
|
||||
* The config command
|
||||
*/
|
||||
CONFIG("config", "stargate.command.config", false),
|
||||
|
||||
/**
|
||||
* The dial command
|
||||
*/
|
||||
DIAL("dial", "stargate.command.dial", true),
|
||||
|
||||
/**
|
||||
* The visualizer command
|
||||
*/
|
||||
VISUALIZER("visualizer", "stargate.command.visualizer", false),
|
||||
|
||||
/**
|
||||
* The info command
|
||||
*/
|
||||
INFO("info", "stargate.command.info", true);
|
||||
|
||||
private final String name;
|
||||
private final String permissionNode;
|
||||
private final boolean requiresPlayer;
|
||||
|
||||
/**
|
||||
* Instantiates a new Stargate-Command Command
|
||||
*
|
||||
* @param name <p>The name of the new command</p>
|
||||
* @param permissionNode <p>The permission node required for using the command</p>
|
||||
*/
|
||||
StargateCommandCommand(String name, String permissionNode, boolean requiresPlayer) {
|
||||
this.name = name;
|
||||
this.permissionNode = permissionNode;
|
||||
this.requiresPlayer = requiresPlayer;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the name of this command (the string after /sgc)
|
||||
*
|
||||
* @return <p>The name of this command</p>
|
||||
*/
|
||||
public String getName() {
|
||||
return this.name;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the permission node required for this command
|
||||
*
|
||||
* @return <p>The permission node required for this command</p>
|
||||
*/
|
||||
public String getPermissionNode() {
|
||||
return permissionNode;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets whether this command requires usage by a player
|
||||
*
|
||||
* @return <p>True if this command can only be used by a player</p>
|
||||
*/
|
||||
public boolean requiresPlayer() {
|
||||
return requiresPlayer;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user