aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/cc/polyfrost/oneconfig/utils/commands
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/cc/polyfrost/oneconfig/utils/commands')
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/utils/commands/CommandHelper.java2
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/utils/commands/CommandManager.java43
-rw-r--r--src/main/java/cc/polyfrost/oneconfig/utils/commands/annotations/Command.java2
3 files changed, 24 insertions, 23 deletions
diff --git a/src/main/java/cc/polyfrost/oneconfig/utils/commands/CommandHelper.java b/src/main/java/cc/polyfrost/oneconfig/utils/commands/CommandHelper.java
index bc57fc2..3e7b7ea 100644
--- a/src/main/java/cc/polyfrost/oneconfig/utils/commands/CommandHelper.java
+++ b/src/main/java/cc/polyfrost/oneconfig/utils/commands/CommandHelper.java
@@ -10,7 +10,7 @@ package cc.polyfrost.oneconfig.utils.commands;
public abstract class CommandHelper {
public CommandHelper() {
- CommandManager.registerCommand(this);
+ CommandManager.INSTANCE.registerCommand(this);
}
public void preload() {
diff --git a/src/main/java/cc/polyfrost/oneconfig/utils/commands/CommandManager.java b/src/main/java/cc/polyfrost/oneconfig/utils/commands/CommandManager.java
index a4e2569..f168b8f 100644
--- a/src/main/java/cc/polyfrost/oneconfig/utils/commands/CommandManager.java
+++ b/src/main/java/cc/polyfrost/oneconfig/utils/commands/CommandManager.java
@@ -21,17 +21,30 @@ import java.util.stream.Collectors;
* @see Command
*/
public class CommandManager {
- private static final HashMap<Class<?>, ArgumentParser<?>> parsers = new HashMap<>();
+ public static final CommandManager INSTANCE = new CommandManager();
+ private final HashMap<Class<?>, ArgumentParser<?>> parsers = new HashMap<>();
private static final String NOT_FOUND_TEXT = "Command not found! Type /@ROOT_COMMAND@ help for help.";
private static final String METHOD_RUN_ERROR = "Error while running @ROOT_COMMAND@ method! Please report this to the developer.";
+ private CommandManager() {
+ addParser(new StringParser());
+ addParser(new IntegerParser());
+ addParser(new IntegerParser(), int.class);
+ addParser(new DoubleParser());
+ addParser(new DoubleParser(), double.class);
+ addParser(new FloatParser());
+ addParser(new FloatParser(), float.class);
+ addParser(new BooleanParser());
+ addParser(new BooleanParser(), boolean.class);
+ }
+
/**
* Adds a parser to the parsers map.
*
* @param parser The parser to add.
* @param clazz The class of the parser.
*/
- public static void addParser(ArgumentParser<?> parser, Class<?> clazz) {
+ public void addParser(ArgumentParser<?> parser, Class<?> clazz) {
parsers.put(clazz, parser);
}
@@ -39,28 +52,16 @@ public class CommandManager {
* Adds a parser to the parsers map.
* @param parser The parser to add.
*/
- public static void addParser(ArgumentParser<?> parser) {
+ public void addParser(ArgumentParser<?> parser) {
addParser(parser, parser.typeClass);
}
- static {
- addParser(new StringParser());
- addParser(new IntegerParser());
- addParser(new IntegerParser(), int.class);
- addParser(new DoubleParser());
- addParser(new DoubleParser(), double.class);
- addParser(new FloatParser());
- addParser(new FloatParser(), float.class);
- addParser(new BooleanParser());
- addParser(new BooleanParser(), boolean.class);
- }
-
/**
* Registers the provided command.
*
* @param command The command to register.
*/
- public static void registerCommand(Object command) {
+ public void registerCommand(Object command) {
Class<?> clazz = command.getClass();
if (clazz.isAnnotationPresent(Command.class)) {
final Command annotation = clazz.getAnnotation(Command.class);
@@ -122,7 +123,7 @@ public class CommandManager {
}
}
- private static String sendHelpCommand(InternalCommand root) {
+ private String sendHelpCommand(InternalCommand root) {
StringBuilder builder = new StringBuilder();
builder.append(ChatColor.GOLD.toString() + "Help for " + ChatColor.BOLD + root.name + ChatColor.RESET + ChatColor.GOLD + ":\n");
builder.append("\n");
@@ -139,7 +140,7 @@ public class CommandManager {
return builder.toString();
}
- private static void runThroughCommandsHelp(String append, InternalCommand command, StringBuilder builder) {
+ private void runThroughCommandsHelp(String append, InternalCommand command, StringBuilder builder) {
for (InternalCommand.InternalCommandInvoker invoker : command.invokers) {
builder.append("\n" + ChatColor.GOLD + "/" + append + " " + command.name);
for (Parameter parameter : invoker.method.getParameters()) {
@@ -158,7 +159,7 @@ public class CommandManager {
}
}
- private static String runThroughCommands(InternalCommand command, int layer, String[] args) {
+ private String runThroughCommands(InternalCommand command, int layer, String[] args) {
int newLayer = layer + 1;
if (command.isEqual(args[layer]) && !command.invokers.isEmpty()) {
Set<InternalCommand.InternalCommandInvoker> invokers = command.invokers.stream().filter(invoker -> newLayer == args.length - invoker.parameterTypes.length).sorted(Comparator.comparingInt((a) -> a.method.getAnnotation(Main.class).priority())).collect(Collectors.toSet());
@@ -189,7 +190,7 @@ public class CommandManager {
return NOT_FOUND_TEXT;
}
- private static String tryInvoker(InternalCommand.InternalCommandInvoker invoker, int newLayer, String[] args) {
+ private String tryInvoker(InternalCommand.InternalCommandInvoker invoker, int newLayer, String[] args) {
try {
ArrayList<Object> params = new ArrayList<>();
int processed = newLayer;
@@ -228,7 +229,7 @@ public class CommandManager {
}
}
- private static void addToInvokers(Class<?>[] classes, InternalCommand parent) {
+ private void addToInvokers(Class<?>[] classes, InternalCommand parent) {
for (Class<?> clazz : classes) {
if (clazz.isAnnotationPresent(SubCommand.class)) {
SubCommand annotation = clazz.getAnnotation(SubCommand.class);
diff --git a/src/main/java/cc/polyfrost/oneconfig/utils/commands/annotations/Command.java b/src/main/java/cc/polyfrost/oneconfig/utils/commands/annotations/Command.java
index 7717d46..b1a4ce5 100644
--- a/src/main/java/cc/polyfrost/oneconfig/utils/commands/annotations/Command.java
+++ b/src/main/java/cc/polyfrost/oneconfig/utils/commands/annotations/Command.java
@@ -80,7 +80,7 @@ import java.lang.annotation.Target;
* Note: if you're viewing this in IntelliJ or just see the @literal tag everywhere, please ignore that.
* </p>
*
- * @see cc.polyfrost.oneconfig.test.TestCommand
+ * @see cc.polyfrost.oneconfig.command.OneConfigCommand
* @see Main
* @see CommandManager
*/