From e38796f492fa209a4b7b1d47d6ed1572cd4a5c0b Mon Sep 17 00:00:00 2001 From: Jeremy Wood Date: Fri, 24 Mar 2023 23:31:37 -0400 Subject: [PATCH] Revert "Add automatic command registration through BaseCommandFeature." This reverts commit 0c97aea3dc59f2ae322d904f831ca43876c9bad9. --- .../MultiverseCore/MultiverseCore.java | 11 +++++ .../commandtools/MVCommandManager.java | 3 -- .../commandtools/MultiverseCommand.java | 5 +- .../inject/features/BaseCommandFeature.java | 47 ------------------- 4 files changed, 12 insertions(+), 54 deletions(-) delete mode 100644 src/main/java/com/onarandombox/MultiverseCore/inject/features/BaseCommandFeature.java diff --git a/src/main/java/com/onarandombox/MultiverseCore/MultiverseCore.java b/src/main/java/com/onarandombox/MultiverseCore/MultiverseCore.java index 5ef6eb8b..8f9b2764 100644 --- a/src/main/java/com/onarandombox/MultiverseCore/MultiverseCore.java +++ b/src/main/java/com/onarandombox/MultiverseCore/MultiverseCore.java @@ -21,6 +21,7 @@ import com.onarandombox.MultiverseCore.api.MVCore; import com.onarandombox.MultiverseCore.api.MVWorld; import com.onarandombox.MultiverseCore.api.MVWorldManager; import com.onarandombox.MultiverseCore.commandtools.MVCommandManager; +import com.onarandombox.MultiverseCore.commandtools.MultiverseCommand; import com.onarandombox.MultiverseCore.config.MVCoreConfigProvider; import com.onarandombox.MultiverseCore.destination.DestinationsProvider; import com.onarandombox.MultiverseCore.inject.PluginInjection; @@ -116,6 +117,7 @@ public class MultiverseCore extends JavaPlugin implements MVCore { // Init all the other stuff // TODO consider moving this into the AnchorManager constructor serviceLocator.getService(AnchorManager.class).loadAnchors(); + this.registerCommands(); this.setUpLocales(); this.registerDestinations(); this.setupMetrics(); @@ -156,6 +158,15 @@ public class MultiverseCore extends JavaPlugin implements MVCore { return !getConfigProvider().getConfig().getSilentStart(); } + /** + * Register Multiverse-Core commands to Command Manager. + */ + private void registerCommands() { + // TODO add automatic command registration through hk2 + var commandManager = serviceLocator.getService(MVCommandManager.class); + serviceLocator.getAllServices(MultiverseCommand.class).forEach(commandManager::registerCommand); + } + /** * Register locales */ diff --git a/src/main/java/com/onarandombox/MultiverseCore/commandtools/MVCommandManager.java b/src/main/java/com/onarandombox/MultiverseCore/commandtools/MVCommandManager.java index d4503fb5..b64236ce 100644 --- a/src/main/java/com/onarandombox/MultiverseCore/commandtools/MVCommandManager.java +++ b/src/main/java/com/onarandombox/MultiverseCore/commandtools/MVCommandManager.java @@ -4,7 +4,6 @@ import java.util.List; import co.aikar.commands.BukkitCommandCompletionContext; import co.aikar.commands.BukkitCommandExecutionContext; -import co.aikar.commands.BukkitCommandManager; import co.aikar.commands.CommandCompletions; import co.aikar.commands.CommandContexts; import co.aikar.commands.CommandHelp; @@ -17,14 +16,12 @@ import com.onarandombox.MultiverseCore.commandtools.queue.CommandQueueManager; import jakarta.inject.Inject; import jakarta.inject.Provider; import org.jetbrains.annotations.NotNull; -import org.jvnet.hk2.annotations.ContractsProvided; import org.jvnet.hk2.annotations.Service; /** * Main class to manage permissions. */ @Service -@ContractsProvided({MVCommandManager.class, BukkitCommandManager.class}) public class MVCommandManager extends PaperCommandManager { private final CommandFlagsManager flagsManager; diff --git a/src/main/java/com/onarandombox/MultiverseCore/commandtools/MultiverseCommand.java b/src/main/java/com/onarandombox/MultiverseCore/commandtools/MultiverseCommand.java index 02052b2b..b198166b 100644 --- a/src/main/java/com/onarandombox/MultiverseCore/commandtools/MultiverseCommand.java +++ b/src/main/java/com/onarandombox/MultiverseCore/commandtools/MultiverseCommand.java @@ -4,14 +4,11 @@ import co.aikar.commands.BaseCommand; import com.onarandombox.MultiverseCore.commandtools.flags.CommandFlagGroup; import com.onarandombox.MultiverseCore.commandtools.flags.CommandFlagsManager; import com.onarandombox.MultiverseCore.commandtools.flags.ParsedCommandFlags; -import com.onarandombox.MultiverseCore.inject.AutoLoadedService; import org.jetbrains.annotations.NotNull; import org.jvnet.hk2.annotations.Contract; -import org.jvnet.hk2.annotations.ContractsProvided; @Contract -@ContractsProvided({BaseCommand.class}) -public abstract class MultiverseCommand extends BaseCommand implements AutoLoadedService { +public abstract class MultiverseCommand extends BaseCommand { protected final MVCommandManager commandManager; private String flagGroupName; diff --git a/src/main/java/com/onarandombox/MultiverseCore/inject/features/BaseCommandFeature.java b/src/main/java/com/onarandombox/MultiverseCore/inject/features/BaseCommandFeature.java deleted file mode 100644 index d337141b..00000000 --- a/src/main/java/com/onarandombox/MultiverseCore/inject/features/BaseCommandFeature.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.onarandombox.MultiverseCore.inject.features; - -import co.aikar.commands.BaseCommand; -import co.aikar.commands.BukkitCommandManager; -import com.onarandombox.MultiverseCore.inject.InjectionFeature; -import com.onarandombox.MultiverseCore.inject.registration.AbstractAutoRegistration; -import com.onarandombox.MultiverseCore.inject.registration.AutoRegistrationBinder; -import com.onarandombox.MultiverseCore.inject.registration.RegistrationFilter; -import jakarta.inject.Inject; -import jakarta.inject.Provider; -import org.glassfish.hk2.api.ServiceLocator; -import org.glassfish.hk2.utilities.ServiceLocatorUtilities; -import org.jetbrains.annotations.NotNull; -import org.jvnet.hk2.annotations.Service; - -@Service -class BaseCommandFeature implements InjectionFeature { - - @Override - public void postServicesCreation(ServiceLocator locator) { - ServiceLocatorUtilities.bind(locator, AutoRegistrationBinder.with(BaseCommandAutoRegistration.class)); - } - - @Service - private static final class BaseCommandAutoRegistration extends AbstractAutoRegistration { - - private final @NotNull Provider commandManagerProvider; - - @Inject - private BaseCommandAutoRegistration( - @NotNull Provider commandManagerProvider, - @NotNull Provider filterProvider - ) { - super(filterProvider, BaseCommand.class); - this.commandManagerProvider = commandManagerProvider; - } - - private BukkitCommandManager getCommandManager() { - return commandManagerProvider.get(); - } - - @Override - protected void register(BaseCommand instance) { - getCommandManager().registerCommand(instance); - } - } -}