Revert "Add automatic command registration through BaseCommandFeature."

This reverts commit 0c97aea3dc.
This commit is contained in:
Jeremy Wood 2023-03-24 23:31:37 -04:00
parent 5d2e68a362
commit e38796f492
No known key found for this signature in database
GPG Key ID: C5BAD04C77B91B4B
4 changed files with 12 additions and 54 deletions

View File

@ -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
*/

View File

@ -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;

View File

@ -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;

View File

@ -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<BaseCommand> {
private final @NotNull Provider<BukkitCommandManager> commandManagerProvider;
@Inject
private BaseCommandAutoRegistration(
@NotNull Provider<BukkitCommandManager> commandManagerProvider,
@NotNull Provider<RegistrationFilter> filterProvider
) {
super(filterProvider, BaseCommand.class);
this.commandManagerProvider = commandManagerProvider;
}
private BukkitCommandManager getCommandManager() {
return commandManagerProvider.get();
}
@Override
protected void register(BaseCommand instance) {
getCommandManager().registerCommand(instance);
}
}
}