From 8913b2495e75b5e7d2e33c4f459c4b35e1762f40 Mon Sep 17 00:00:00 2001 From: jmp Date: Sat, 2 Jan 2021 14:57:38 -0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20Transition=20to=20AFTER=5FREGIST?= =?UTF-8?q?RATION=20even=20when=20no=20commands=20have=20been=20registered?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cloud/commandframework/CommandManager.java | 15 +++++++++++++++ .../commandframework/LockableCommandManager.java | 2 +- .../bukkit/BukkitCommandManager.java | 2 +- .../cloudburst/CloudburstCommandManager.java | 6 +----- .../velocity/VelocityCommandManager.java | 2 +- 5 files changed, 19 insertions(+), 8 deletions(-) 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(); }); }