From 6f830190a6783875b5ed99fc164696cf368dec24 Mon Sep 17 00:00:00 2001 From: Aust1n46 Date: Thu, 3 Mar 2022 18:24:52 -0600 Subject: [PATCH] Designing abstraction layers for commands. --- .../chat/controllers/CommandController.java | 1 + .../chat/controllers/commands/Channel.java | 2 +- .../Aust1n46/chat/model/PlayerCommand.java | 9 ++++---- .../Aust1n46/chat/model/PluginCommand.java | 23 +++++++++++++++++++ .../Aust1n46/chat/model/UniversalCommand.java | 23 ++++--------------- 5 files changed, 34 insertions(+), 24 deletions(-) create mode 100644 src/main/java/venture/Aust1n46/chat/model/PluginCommand.java diff --git a/src/main/java/venture/Aust1n46/chat/controllers/CommandController.java b/src/main/java/venture/Aust1n46/chat/controllers/CommandController.java index 34151f7..13de7a1 100644 --- a/src/main/java/venture/Aust1n46/chat/controllers/CommandController.java +++ b/src/main/java/venture/Aust1n46/chat/controllers/CommandController.java @@ -269,6 +269,7 @@ public class CommandController implements TabExecutor { } }, 0); + registerCommand("channel", channel); } diff --git a/src/main/java/venture/Aust1n46/chat/controllers/commands/Channel.java b/src/main/java/venture/Aust1n46/chat/controllers/commands/Channel.java index 21fcde9..8c21b69 100644 --- a/src/main/java/venture/Aust1n46/chat/controllers/commands/Channel.java +++ b/src/main/java/venture/Aust1n46/chat/controllers/commands/Channel.java @@ -30,7 +30,7 @@ public class Channel extends PlayerCommand { } @Override - public void execute(final Player player, final String commandLabel, final String[] args) { + protected void executeCommand(final Player player, final String commandLabel, final String[] args) { final VentureChatPlayer mcp = playerApiService.getOnlineMineverseChatPlayer(player); if (args.length > 0) { if (!configService.isChannel(args[0])) { diff --git a/src/main/java/venture/Aust1n46/chat/model/PlayerCommand.java b/src/main/java/venture/Aust1n46/chat/model/PlayerCommand.java index 7870839..352f37b 100644 --- a/src/main/java/venture/Aust1n46/chat/model/PlayerCommand.java +++ b/src/main/java/venture/Aust1n46/chat/model/PlayerCommand.java @@ -5,20 +5,21 @@ import org.bukkit.entity.Player; import venture.Aust1n46.chat.localization.LocalizedMessage; -public abstract class PlayerCommand extends UniversalCommand { +public abstract class PlayerCommand extends PluginCommand { protected PlayerCommand(final String name) { super(name); } @Override - public void executeVoid(final CommandSender sender, final String commandLabel, final String[] args) { + public final boolean execute(final CommandSender sender, final String commandLabel, final String[] args) { if (sender instanceof Player) { final Player player = (Player) sender; - execute(player, commandLabel, args); + executeCommand(player, commandLabel, args); } else { plugin.getServer().getConsoleSender().sendMessage(LocalizedMessage.COMMAND_MUST_BE_RUN_BY_PLAYER.toString()); } + return true; } - public abstract void execute(final Player player, final String commandLabel, final String[] args); + protected abstract void executeCommand(final Player player, final String commandLabel, final String[] args); } diff --git a/src/main/java/venture/Aust1n46/chat/model/PluginCommand.java b/src/main/java/venture/Aust1n46/chat/model/PluginCommand.java new file mode 100644 index 0000000..55d361f --- /dev/null +++ b/src/main/java/venture/Aust1n46/chat/model/PluginCommand.java @@ -0,0 +1,23 @@ +package venture.Aust1n46.chat.model; + +import org.bukkit.command.Command; +import org.bukkit.command.PluginIdentifiableCommand; +import org.bukkit.plugin.Plugin; + +import com.google.inject.Inject; + +import venture.Aust1n46.chat.initiators.application.VentureChat; + +public abstract class PluginCommand extends Command implements PluginIdentifiableCommand { + @Inject + protected VentureChat plugin; + + protected PluginCommand(final String name) { + super(name); + } + + @Override + public final Plugin getPlugin() { + return plugin; + } +} diff --git a/src/main/java/venture/Aust1n46/chat/model/UniversalCommand.java b/src/main/java/venture/Aust1n46/chat/model/UniversalCommand.java index 37707b8..21be9a5 100644 --- a/src/main/java/venture/Aust1n46/chat/model/UniversalCommand.java +++ b/src/main/java/venture/Aust1n46/chat/model/UniversalCommand.java @@ -1,32 +1,17 @@ package venture.Aust1n46.chat.model; -import org.bukkit.command.Command; import org.bukkit.command.CommandSender; -import org.bukkit.command.PluginIdentifiableCommand; -import org.bukkit.plugin.Plugin; - -import com.google.inject.Inject; - -import venture.Aust1n46.chat.initiators.application.VentureChat; - -public abstract class UniversalCommand extends Command implements PluginIdentifiableCommand { - @Inject - protected VentureChat plugin; +public abstract class UniversalCommand extends PluginCommand { protected UniversalCommand(final String name) { super(name); } @Override - public boolean execute(final CommandSender sender, final String commandLabel, final String[] args) { - executeVoid(sender, commandLabel, args); + public final boolean execute(final CommandSender sender, final String commandLabel, final String[] args) { + executeCommand(sender, commandLabel, args); return true; } - public abstract void executeVoid(final CommandSender sender, final String commandLabel, final String[] args); - - @Override - public Plugin getPlugin() { - return plugin; - } + protected abstract void executeCommand(final CommandSender sender, final String commandLabel, final String[] args); }