fabric: Use stateful command manager

This commit is contained in:
Zach Levis 2020-12-15 20:58:20 -08:00 committed by Jason
parent eef98da9c9
commit dc90551168
2 changed files with 6 additions and 6 deletions

View file

@ -149,4 +149,8 @@ public class FabricCommandManager<C> extends CommandManager<C> implements Brigad
return this.brigadierManager;
}
final void registrationCalled() {
this.transitionOrThrow(RegistrationState.REGISTERING, RegistrationState.AFTER_REGISTRATION);
}
}

View file

@ -50,7 +50,6 @@ import java.util.concurrent.ConcurrentHashMap;
public final class FabricCommandRegistrationHandler<C> implements CommandRegistrationHandler {
private @MonotonicNonNull FabricCommandManager<C> commandManager;
private final Set<Command<C>> registeredCommands = ConcurrentHashMap.newKeySet();
private boolean commandRegistrationCalled;
void initialize(final FabricCommandManager<C> manager) {
this.commandManager = manager;
@ -60,16 +59,13 @@ public final class FabricCommandRegistrationHandler<C> implements CommandRegistr
@Override
@SuppressWarnings("unchecked")
public boolean registerCommand(@NonNull final Command<?> command) {
if (this.commandRegistrationCalled) {
throw new IllegalStateException("too late!");
}
return this.registeredCommands.add((Command<C>) command);
}
private void registerAllCommands(final CommandDispatcher<ServerCommandSource> dispatcher, final boolean isDedicated) {
this.commandRegistrationCalled = true;
this.commandManager.registrationCalled();
for (final Command<C> command : this.registeredCommands) {
registerCommand(dispatcher.getRoot(), command);
this.registerCommand(dispatcher.getRoot(), command);
}
}