Expose the Brigadier manager from Brigadier-enabled command managers

This commit is contained in:
jmp 2020-10-24 18:40:05 -07:00 committed by Alexander Söderberg
parent 81e53ed454
commit d0209dc762
5 changed files with 92 additions and 5 deletions

View file

@ -57,10 +57,16 @@ class PaperBrigadierListener<C> implements Listener {
new BukkitBrigadierMapper<>(this.paperCommandManager, this.brigadierManager);
}
protected @NonNull CloudBrigadierManager<C, BukkitBrigadierCommandSource> brigadierManager() {
return this.brigadierManager;
}
@EventHandler
@SuppressWarnings("deprecation")
public void onCommandRegister(final com.destroystokyo.paper.event.brigadier
.@NonNull CommandRegisteredEvent<BukkitBrigadierCommandSource> event) {
public void onCommandRegister(
final com.destroystokyo.paper.event.brigadier.
@NonNull CommandRegisteredEvent<BukkitBrigadierCommandSource> event
) {
if (!(event.getCommand() instanceof PluginIdentifiableCommand)) {
return;
} else if (!((PluginIdentifiableCommand) event.getCommand())

View file

@ -24,6 +24,7 @@
package cloud.commandframework.paper;
import cloud.commandframework.CommandTree;
import cloud.commandframework.brigadier.CloudBrigadierManager;
import cloud.commandframework.bukkit.BukkitCommandManager;
import cloud.commandframework.bukkit.CloudBukkitCapabilities;
import cloud.commandframework.execution.CommandExecutionCoordinator;
@ -31,6 +32,7 @@ import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender;
import org.bukkit.plugin.Plugin;
import org.checkerframework.checker.nullness.qual.NonNull;
import org.checkerframework.checker.nullness.qual.Nullable;
import java.util.function.Function;
@ -41,6 +43,8 @@ import java.util.function.Function;
*/
public class PaperCommandManager<C> extends BukkitCommandManager<C> {
private PaperBrigadierListener<C> paperBrigadierListener = null;
/**
* Construct a new Paper command manager
*
@ -96,9 +100,9 @@ public class PaperCommandManager<C> extends BukkitCommandManager<C> {
super.registerBrigadier();
} else {
try {
final PaperBrigadierListener<C> brigadierListener = new PaperBrigadierListener<>(this);
this.paperBrigadierListener = new PaperBrigadierListener<>(this);
Bukkit.getPluginManager().registerEvents(
brigadierListener,
this.paperBrigadierListener,
this.getOwningPlugin()
);
this.setSplitAliases(true);
@ -108,6 +112,17 @@ public class PaperCommandManager<C> extends BukkitCommandManager<C> {
}
}
/**
* {@inheritDoc}
*/
@Override
public @Nullable CloudBrigadierManager<C, ?> brigadierManager() {
if (this.paperBrigadierListener != null) {
return this.paperBrigadierListener.brigadierManager();
}
return super.brigadierManager();
}
/**
* Register asynchronous completions. This requires all argument parsers to be thread safe, and it
* is up to the caller to guarantee that such is the case