diff --git a/common/src/main/java/net/draycia/carbon/common/command/CarbonCommand.java b/common/src/main/java/net/draycia/carbon/common/command/CarbonCommand.java index 64f4ed4a3..d07684d97 100644 --- a/common/src/main/java/net/draycia/carbon/common/command/CarbonCommand.java +++ b/common/src/main/java/net/draycia/carbon/common/command/CarbonCommand.java @@ -28,6 +28,8 @@ @DefaultQualifier(NonNull.class) public abstract class CarbonCommand { + private static final String[] emptyAliases = new String[] {}; + private @Nullable CommandSettings commandSettings = null; public CommandSettings commandSettings() { @@ -38,7 +40,23 @@ public void commandSettings(final @NonNull CommandSettings commandSettings) { this.commandSettings = commandSettings; } - public abstract void init(); + // TODO: Separate this from init so it's always called (when init's overridden)? + public void init() { + if (this.commandSettings().alternateRegistration()) { + this.registerCommand(this.commandSettings().name(), emptyAliases); + + for (final String alias : this.commandSettings().aliases()) { + this.registerCommand(alias, emptyAliases); + } + } else { + this.registerCommand(this.commandSettings().name(), this.commandSettings().aliases()); + } + + } + + public void registerCommand(final String commandName, final String[] aliases) { + + } public abstract CommandSettings defaultCommandSettings(); diff --git a/common/src/main/java/net/draycia/carbon/common/command/CommandSettings.java b/common/src/main/java/net/draycia/carbon/common/command/CommandSettings.java index 3a4cc2d70..dda69b5a8 100644 --- a/common/src/main/java/net/draycia/carbon/common/command/CommandSettings.java +++ b/common/src/main/java/net/draycia/carbon/common/command/CommandSettings.java @@ -25,6 +25,7 @@ public class CommandSettings { private boolean enabled = true; + private boolean alternateRegistration = false; private String name = ""; private String[] aliases = new String[0]; @@ -32,20 +33,25 @@ public CommandSettings() { } - public CommandSettings(final boolean enabled, final String name, final String... aliases) { + public CommandSettings(final boolean enabled, final boolean alternateRegistration, final String name, final String... aliases) { this.enabled = enabled; + this.alternateRegistration = alternateRegistration; this.name = name; this.aliases = aliases; } public CommandSettings(final String name, final String... aliases) { - this(true, name, aliases); + this(true, false, name, aliases); } public boolean enabled() { return this.enabled; } + public boolean alternateRegistration() { + return this.alternateRegistration; + } + public String name() { return this.name; } diff --git a/common/src/main/java/net/draycia/carbon/common/command/commands/ClearChatCommand.java b/common/src/main/java/net/draycia/carbon/common/command/commands/ClearChatCommand.java index 785dd7e85..604318f1a 100644 --- a/common/src/main/java/net/draycia/carbon/common/command/commands/ClearChatCommand.java +++ b/common/src/main/java/net/draycia/carbon/common/command/commands/ClearChatCommand.java @@ -67,8 +67,8 @@ public Key key() { } @Override - public void init() { - final var command = this.commandManager.commandBuilder(this.commandSettings().name(), this.commandSettings().aliases()) + public void registerCommand(final String commandName, final String[] aliases) { + final var command = this.commandManager.commandBuilder(commandName, aliases) .permission("carbon.clearchat.clear") .commandDescription(richDescription(this.carbonMessages.commandClearChatDescription())) .handler(handler -> { diff --git a/common/src/main/java/net/draycia/carbon/common/command/commands/ContinueCommand.java b/common/src/main/java/net/draycia/carbon/common/command/commands/ContinueCommand.java index 8cf46bdcc..e62055225 100644 --- a/common/src/main/java/net/draycia/carbon/common/command/commands/ContinueCommand.java +++ b/common/src/main/java/net/draycia/carbon/common/command/commands/ContinueCommand.java @@ -71,8 +71,8 @@ public Key key() { } @Override - public void init() { - final var command = this.commandManager.commandBuilder(this.commandSettings().name(), this.commandSettings().aliases()) + public void registerCommand(final String commandName, final String[] aliases) { + final var command = this.commandManager.commandBuilder(commandName, aliases) .required("message", signedGreedyStringParser(), richDescription(this.messages.commandContinueArgumentMessage())) .permission("carbon.whisper.continue") .senderType(PlayerCommander.class) diff --git a/common/src/main/java/net/draycia/carbon/common/command/commands/DebugCommand.java b/common/src/main/java/net/draycia/carbon/common/command/commands/DebugCommand.java index cf7ccd516..c4821fd26 100644 --- a/common/src/main/java/net/draycia/carbon/common/command/commands/DebugCommand.java +++ b/common/src/main/java/net/draycia/carbon/common/command/commands/DebugCommand.java @@ -67,8 +67,8 @@ public Key key() { } @Override - public void init() { - final var command = this.commandManager.commandBuilder(this.commandSettings().name(), this.commandSettings().aliases()) + public void registerCommand(final String commandName, final String[] aliases) { + final var command = this.commandManager.commandBuilder(commandName, aliases) .optional("player", this.parserFactory.carbonPlayer(), richDescription(this.carbonMessages.commandDebugArgumentPlayer())) .permission("carbon.debug") diff --git a/common/src/main/java/net/draycia/carbon/common/command/commands/HelpCommand.java b/common/src/main/java/net/draycia/carbon/common/command/commands/HelpCommand.java index 90a8da2d1..e48ed8856 100644 --- a/common/src/main/java/net/draycia/carbon/common/command/commands/HelpCommand.java +++ b/common/src/main/java/net/draycia/carbon/common/command/commands/HelpCommand.java @@ -79,8 +79,8 @@ public Key key() { } @Override - public void init() { - final var command = this.commandManager.commandBuilder(this.commandSettings().name(), this.commandSettings().aliases()) + public void registerCommand(final String commandName, final String[] aliases) { + final var command = this.commandManager.commandBuilder(commandName, aliases) .literal("help") .optional("query", greedyStringParser(), richDescription(this.carbonMessages.commandHelpArgumentQuery()), this::suggestQueries) .permission("carbon.help") diff --git a/common/src/main/java/net/draycia/carbon/common/command/commands/IgnoreCommand.java b/common/src/main/java/net/draycia/carbon/common/command/commands/IgnoreCommand.java index 9e6635d09..9908841c6 100644 --- a/common/src/main/java/net/draycia/carbon/common/command/commands/IgnoreCommand.java +++ b/common/src/main/java/net/draycia/carbon/common/command/commands/IgnoreCommand.java @@ -68,8 +68,8 @@ public Key key() { } @Override - public void init() { - final var command = this.commandManager.commandBuilder(this.commandSettings().name(), this.commandSettings().aliases()) + public void registerCommand(final String commandName, final String[] aliases) { + final var command = this.commandManager.commandBuilder(commandName, aliases) .optional("player", this.parserFactory.carbonPlayer(), richDescription(this.carbonMessages.commandIgnoreArgumentPlayer())) .flag(this.commandManager.flagBuilder("uuid") .withAliases("u") diff --git a/common/src/main/java/net/draycia/carbon/common/command/commands/IgnoreListCommand.java b/common/src/main/java/net/draycia/carbon/common/command/commands/IgnoreListCommand.java index cd417fd2d..176e32a1a 100644 --- a/common/src/main/java/net/draycia/carbon/common/command/commands/IgnoreListCommand.java +++ b/common/src/main/java/net/draycia/carbon/common/command/commands/IgnoreListCommand.java @@ -72,8 +72,8 @@ public Key key() { } @Override - public void init() { - final var command = this.commandManager.commandBuilder(this.commandSettings().name(), this.commandSettings().aliases()) + public void registerCommand(final String commandName, final String[] aliases) { + final var command = this.commandManager.commandBuilder(commandName, aliases) .permission("carbon.ignore") .senderType(PlayerCommander.class) .optional("page", integerParser(1), DefaultValue.constant(1)) diff --git a/common/src/main/java/net/draycia/carbon/common/command/commands/JoinCommand.java b/common/src/main/java/net/draycia/carbon/common/command/commands/JoinCommand.java index 7d0edf49f..8c2b4089a 100644 --- a/common/src/main/java/net/draycia/carbon/common/command/commands/JoinCommand.java +++ b/common/src/main/java/net/draycia/carbon/common/command/commands/JoinCommand.java @@ -70,8 +70,8 @@ public Key key() { } @Override - public void init() { - final var command = this.commandManager.commandBuilder(this.commandSettings().name(), this.commandSettings().aliases()) + public void registerCommand(final String commandName, final String[] aliases) { + final var command = this.commandManager.commandBuilder(commandName, aliases) .required("channel", greedyStringParser(), SuggestionProvider.blocking((context, s) -> { final CarbonPlayer sender = ((PlayerCommander) context.sender()).carbonPlayer(); return sender.leftChannels().stream() diff --git a/common/src/main/java/net/draycia/carbon/common/command/commands/LeaveCommand.java b/common/src/main/java/net/draycia/carbon/common/command/commands/LeaveCommand.java index a24d74c25..9bfbaa7e3 100644 --- a/common/src/main/java/net/draycia/carbon/common/command/commands/LeaveCommand.java +++ b/common/src/main/java/net/draycia/carbon/common/command/commands/LeaveCommand.java @@ -69,8 +69,8 @@ public Key key() { } @Override - public void init() { - final var command = this.commandManager.commandBuilder(this.commandSettings().name(), this.commandSettings().aliases()) + public void registerCommand(final String commandName, final String[] aliases) { + final var command = this.commandManager.commandBuilder(commandName, aliases) .required("channel", greedyStringParser(), SuggestionProvider.blocking((context, s) -> { final CarbonPlayer sender = ((PlayerCommander) context.sender()).carbonPlayer(); return this.channelRegistry.keys().stream() diff --git a/common/src/main/java/net/draycia/carbon/common/command/commands/MuteCommand.java b/common/src/main/java/net/draycia/carbon/common/command/commands/MuteCommand.java index f86b60964..f66da0692 100644 --- a/common/src/main/java/net/draycia/carbon/common/command/commands/MuteCommand.java +++ b/common/src/main/java/net/draycia/carbon/common/command/commands/MuteCommand.java @@ -77,8 +77,8 @@ public Key key() { } @Override - public void init() { - final var command = this.commandManager.commandBuilder(this.commandSettings().name(), this.commandSettings().aliases()) + public void registerCommand(final String commandName, final String[] aliases) { + final var command = this.commandManager.commandBuilder(commandName, aliases) .optional("player", this.parserFactory.carbonPlayer(), richDescription(this.carbonMessages.commandMuteArgumentPlayer())) .flag(this.commandManager.flagBuilder("uuid") diff --git a/common/src/main/java/net/draycia/carbon/common/command/commands/MuteInfoCommand.java b/common/src/main/java/net/draycia/carbon/common/command/commands/MuteInfoCommand.java index 7e7db45ec..494c0a315 100644 --- a/common/src/main/java/net/draycia/carbon/common/command/commands/MuteInfoCommand.java +++ b/common/src/main/java/net/draycia/carbon/common/command/commands/MuteInfoCommand.java @@ -68,8 +68,8 @@ public Key key() { } @Override - public void init() { - final var command = this.commandManager.commandBuilder(this.commandSettings().name(), this.commandSettings().aliases()) + public void registerCommand(final String commandName, final String[] aliases) { + final var command = this.commandManager.commandBuilder(commandName, aliases) .optional("player", this.parserFactory.carbonPlayer(), richDescription(this.carbonMessages.commandMuteInfoArgumentPlayer())) .flag(this.commandManager.flagBuilder("uuid") .withAliases("u") diff --git a/common/src/main/java/net/draycia/carbon/common/command/commands/NicknameCommand.java b/common/src/main/java/net/draycia/carbon/common/command/commands/NicknameCommand.java index 4c998f451..140ab8f26 100644 --- a/common/src/main/java/net/draycia/carbon/common/command/commands/NicknameCommand.java +++ b/common/src/main/java/net/draycia/carbon/common/command/commands/NicknameCommand.java @@ -73,13 +73,13 @@ public Key key() { } @Override - public void init() { + public void registerCommand(final String commandName, final String[] aliases) { if (!this.config.primaryConfig().nickname().useCarbonNicknames()) { return; } // TODO: Allow UUID input for target player - final var selfRoot = this.commandManager.commandBuilder(this.commandSettings().name(), this.commandSettings().aliases()); + final var selfRoot = this.commandManager.commandBuilder(commandName, aliases); final var othersRoot = selfRoot.literal("player") .required("player", this.parserFactory.carbonPlayer(), richDescription(this.carbonMessages.commandNicknameArgumentPlayer())); diff --git a/common/src/main/java/net/draycia/carbon/common/command/commands/PartyCommands.java b/common/src/main/java/net/draycia/carbon/common/command/commands/PartyCommands.java index dd51150f5..3c5127c4a 100644 --- a/common/src/main/java/net/draycia/carbon/common/command/commands/PartyCommands.java +++ b/common/src/main/java/net/draycia/carbon/common/command/commands/PartyCommands.java @@ -89,12 +89,12 @@ public PartyCommands( } @Override - public void init() { + public void registerCommand(final String commandName, final String[] aliases) { if (!this.config.primaryConfig().partyChat().enabled) { return; } - final var root = this.commandManager.commandBuilder(this.commandSettings().name(), this.commandSettings().aliases()) + final var root = this.commandManager.commandBuilder(commandName, aliases) .senderType(PlayerCommander.class) .permission("carbon.parties"); final var info = root.commandDescription(richDescription(this.messages.partyDesc())).handler(this::info); diff --git a/common/src/main/java/net/draycia/carbon/common/command/commands/ReloadCommand.java b/common/src/main/java/net/draycia/carbon/common/command/commands/ReloadCommand.java index dea50175d..517dff3ad 100644 --- a/common/src/main/java/net/draycia/carbon/common/command/commands/ReloadCommand.java +++ b/common/src/main/java/net/draycia/carbon/common/command/commands/ReloadCommand.java @@ -62,8 +62,8 @@ public Key key() { } @Override - public void init() { - final var command = this.commandManager.commandBuilder(this.commandSettings().name(), this.commandSettings().aliases()) + public void registerCommand(final String commandName, final String[] aliases) { + final var command = this.commandManager.commandBuilder(commandName, aliases) .literal("reload") .permission("carbon.reload") .senderType(Commander.class) diff --git a/common/src/main/java/net/draycia/carbon/common/command/commands/ReplyCommand.java b/common/src/main/java/net/draycia/carbon/common/command/commands/ReplyCommand.java index 090df6514..079e3a010 100644 --- a/common/src/main/java/net/draycia/carbon/common/command/commands/ReplyCommand.java +++ b/common/src/main/java/net/draycia/carbon/common/command/commands/ReplyCommand.java @@ -71,8 +71,8 @@ public Key key() { } @Override - public void init() { - final var command = this.commandManager.commandBuilder(this.commandSettings().name(), this.commandSettings().aliases()) + public void registerCommand(final String commandName, final String[] aliases) { + final var command = this.commandManager.commandBuilder(commandName, aliases) .required("message", signedGreedyStringParser(), richDescription(this.messages.commandReplyArgumentMessage())) .permission("carbon.whisper.reply") .senderType(PlayerCommander.class) diff --git a/common/src/main/java/net/draycia/carbon/common/command/commands/SpyCommand.java b/common/src/main/java/net/draycia/carbon/common/command/commands/SpyCommand.java index 856752a5d..28bb7b68e 100644 --- a/common/src/main/java/net/draycia/carbon/common/command/commands/SpyCommand.java +++ b/common/src/main/java/net/draycia/carbon/common/command/commands/SpyCommand.java @@ -60,8 +60,8 @@ public Key key() { } @Override - public void init() { - final var command = this.commandManager.commandBuilder(this.commandSettings().name(), this.commandSettings().aliases()) + public void registerCommand(final String commandName, final String[] aliases) { + final var command = this.commandManager.commandBuilder(commandName, aliases) .optional("enabled", booleanParser()) .permission("carbon.spy") .senderType(PlayerCommander.class) diff --git a/common/src/main/java/net/draycia/carbon/common/command/commands/ToggleMessagesCommand.java b/common/src/main/java/net/draycia/carbon/common/command/commands/ToggleMessagesCommand.java index 4b1928a9e..077c5c09a 100644 --- a/common/src/main/java/net/draycia/carbon/common/command/commands/ToggleMessagesCommand.java +++ b/common/src/main/java/net/draycia/carbon/common/command/commands/ToggleMessagesCommand.java @@ -56,8 +56,8 @@ public Key key() { } @Override - public void init() { - final var command = this.commandManager.commandBuilder(this.commandSettings().name(), this.commandSettings().aliases()) + public void registerCommand(final String commandName, final String[] aliases) { + final var command = this.commandManager.commandBuilder(commandName, aliases) .permission("carbon.togglemsg") .senderType(PlayerCommander.class) .commandDescription(richDescription(this.carbonMessages.commandToggleMsgDescription())) diff --git a/common/src/main/java/net/draycia/carbon/common/command/commands/UnignoreCommand.java b/common/src/main/java/net/draycia/carbon/common/command/commands/UnignoreCommand.java index dd3ab21bc..878882e3a 100644 --- a/common/src/main/java/net/draycia/carbon/common/command/commands/UnignoreCommand.java +++ b/common/src/main/java/net/draycia/carbon/common/command/commands/UnignoreCommand.java @@ -68,8 +68,8 @@ public Key key() { } @Override - public void init() { - final var command = this.commandManager.commandBuilder(this.commandSettings().name(), this.commandSettings().aliases()) + public void registerCommand(final String commandName, final String[] aliases) { + final var command = this.commandManager.commandBuilder(commandName, aliases) // TODO: Filter, and only show muted players, but allow inputting any player name. .optional("player", this.parserFactory.carbonPlayer(), richDescription(this.carbonMessages.commandUnignoreArgumentPlayer())) diff --git a/common/src/main/java/net/draycia/carbon/common/command/commands/UnmuteCommand.java b/common/src/main/java/net/draycia/carbon/common/command/commands/UnmuteCommand.java index 813411951..cf0d2f886 100644 --- a/common/src/main/java/net/draycia/carbon/common/command/commands/UnmuteCommand.java +++ b/common/src/main/java/net/draycia/carbon/common/command/commands/UnmuteCommand.java @@ -71,8 +71,8 @@ public Key key() { } @Override - public void init() { - final var command = this.commandManager.commandBuilder(this.commandSettings().name(), this.commandSettings().aliases()) + public void registerCommand(final String commandName, final String[] aliases) { + final var command = this.commandManager.commandBuilder(commandName, aliases) .optional("player", this.parserFactory.carbonPlayer(), richDescription(this.carbonMessages.commandUnmuteArgumentPlayer())) .flag(this.commandManager.flagBuilder("uuid") diff --git a/common/src/main/java/net/draycia/carbon/common/command/commands/UpdateUsernameCommand.java b/common/src/main/java/net/draycia/carbon/common/command/commands/UpdateUsernameCommand.java index 0d89efcf5..9d4c34001 100644 --- a/common/src/main/java/net/draycia/carbon/common/command/commands/UpdateUsernameCommand.java +++ b/common/src/main/java/net/draycia/carbon/common/command/commands/UpdateUsernameCommand.java @@ -75,8 +75,8 @@ public Key key() { } @Override - public void init() { - final var command = this.commandManager.commandBuilder(this.commandSettings().name(), this.commandSettings().aliases()) + public void registerCommand(final String commandName, final String[] aliases) { + final var command = this.commandManager.commandBuilder(commandName, aliases) .optional("player", this.parserFactory.carbonPlayer(), richDescription(this.messageService.commandUpdateUsernameArgumentPlayer())) .flag(this.commandManager.flagBuilder("uuid") diff --git a/common/src/main/java/net/draycia/carbon/common/command/commands/WhisperCommand.java b/common/src/main/java/net/draycia/carbon/common/command/commands/WhisperCommand.java index b91a9bfd6..eb6f032d4 100644 --- a/common/src/main/java/net/draycia/carbon/common/command/commands/WhisperCommand.java +++ b/common/src/main/java/net/draycia/carbon/common/command/commands/WhisperCommand.java @@ -88,8 +88,8 @@ public Key key() { } @Override - public void init() { - final var command = this.commandManager.commandBuilder(this.commandSettings().name(), this.commandSettings().aliases()) + public void registerCommand(final String commandName, final String[] aliases) { + final var command = this.commandManager.commandBuilder(commandName, aliases) .required("player", this.parserFactory.carbonPlayer(), richDescription(this.carbonMessages.commandWhisperArgumentPlayer())) .required("message", signedGreedyStringParser(), richDescription(this.carbonMessages.commandWhisperArgumentMessage())) .permission("carbon.whisper.message")