diff --git a/cloud-core/src/main/java/cloud/commandframework/CommandManager.java b/cloud-core/src/main/java/cloud/commandframework/CommandManager.java index 61d5c352..f37f6a87 100644 --- a/cloud-core/src/main/java/cloud/commandframework/CommandManager.java +++ b/cloud-core/src/main/java/cloud/commandframework/CommandManager.java @@ -852,6 +852,21 @@ public abstract class CommandManager { } } + /** + * Transition the command manager from either {@link RegistrationState#BEFORE_REGISTRATION} or + * {@link RegistrationState#REGISTERING} to {@link RegistrationState#AFTER_REGISTRATION}. + * + * @throws IllegalStateException if the manager is not in the expected state + * @since 1.4.0 + */ + protected final void lockRegistration() { + if (this.getRegistrationState() == RegistrationState.BEFORE_REGISTRATION) { + this.transitionOrThrow(RegistrationState.BEFORE_REGISTRATION, RegistrationState.AFTER_REGISTRATION); + return; + } + this.transitionOrThrow(RegistrationState.REGISTERING, RegistrationState.AFTER_REGISTRATION); + } + /** * Get the active registration state for this manager. *

diff --git a/cloud-core/src/main/java/cloud/commandframework/LockableCommandManager.java b/cloud-core/src/main/java/cloud/commandframework/LockableCommandManager.java index a0219d42..4474033d 100644 --- a/cloud-core/src/main/java/cloud/commandframework/LockableCommandManager.java +++ b/cloud-core/src/main/java/cloud/commandframework/LockableCommandManager.java @@ -70,7 +70,7 @@ public abstract class LockableCommandManager extends CommandManager { * Lock writing. After this, {@link #isCommandRegistrationAllowed()} will return {@code false} */ protected final void lockWrites() { - this.transitionOrThrow(RegistrationState.REGISTERING, RegistrationState.AFTER_REGISTRATION); + this.lockRegistration(); } } diff --git a/cloud-minecraft/cloud-bukkit/src/main/java/cloud/commandframework/bukkit/BukkitCommandManager.java b/cloud-minecraft/cloud-bukkit/src/main/java/cloud/commandframework/bukkit/BukkitCommandManager.java index 03471df6..d1273574 100644 --- a/cloud-minecraft/cloud-bukkit/src/main/java/cloud/commandframework/bukkit/BukkitCommandManager.java +++ b/cloud-minecraft/cloud-bukkit/src/main/java/cloud/commandframework/bukkit/BukkitCommandManager.java @@ -375,7 +375,7 @@ public class BukkitCommandManager extends CommandManager implements Brigad final void lockIfBrigadierCapable() { if (this.minecraftVersion >= BRIGADIER_MINIMUM_VERSION) { - this.transitionOrThrow(RegistrationState.REGISTERING, RegistrationState.AFTER_REGISTRATION); + this.lockRegistration(); } } diff --git a/cloud-minecraft/cloud-cloudburst/src/main/java/cloud/commandframework/cloudburst/CloudburstCommandManager.java b/cloud-minecraft/cloud-cloudburst/src/main/java/cloud/commandframework/cloudburst/CloudburstCommandManager.java index 60ae63f4..4aeed3f0 100644 --- a/cloud-minecraft/cloud-cloudburst/src/main/java/cloud/commandframework/cloudburst/CloudburstCommandManager.java +++ b/cloud-minecraft/cloud-cloudburst/src/main/java/cloud/commandframework/cloudburst/CloudburstCommandManager.java @@ -76,7 +76,7 @@ public class CloudburstCommandManager extends CommandManager { RegistriesClosedEvent.class, CloudListener.INSTANCE, EventPriority.NORMAL, - (listener, event) -> this.lock(), + (listener, event) -> this.lockRegistration(), this.owningPlugin ); } @@ -89,10 +89,6 @@ public class CloudburstCommandManager extends CommandManager { return this.backwardsCommandSenderMapper.apply(sender).hasPermission(permission); } - final void lock() { - this.transitionOrThrow(RegistrationState.REGISTERING, RegistrationState.AFTER_REGISTRATION); - } - @Override public final @NonNull CommandMeta createDefaultCommandMeta() { return SimpleCommandMeta.builder().build(); diff --git a/cloud-minecraft/cloud-velocity/src/main/java/cloud/commandframework/velocity/VelocityCommandManager.java b/cloud-minecraft/cloud-velocity/src/main/java/cloud/commandframework/velocity/VelocityCommandManager.java index 2600a9d8..459fcb3d 100644 --- a/cloud-minecraft/cloud-velocity/src/main/java/cloud/commandframework/velocity/VelocityCommandManager.java +++ b/cloud-minecraft/cloud-velocity/src/main/java/cloud/commandframework/velocity/VelocityCommandManager.java @@ -139,7 +139,7 @@ public class VelocityCommandManager extends CommandManager implements Brig } this.proxyServer.getEventManager().register(plugin, ServerPreConnectEvent.class, ev -> { - this.transitionOrThrow(RegistrationState.REGISTERING, RegistrationState.AFTER_REGISTRATION); + this.lockRegistration(); }); }