From 158a8121a8a845677b4bd459df1272dd79997491 Mon Sep 17 00:00:00 2001 From: Jason Penilla <11360596+jpenilla@users.noreply.github.com> Date: Sat, 6 Aug 2022 17:34:20 -0700 Subject: [PATCH] Use Paper raw command API when available --- .../paper/PaperBrigadierListener.java | 23 ++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/cloud-minecraft/cloud-paper/src/main/java/cloud/commandframework/paper/PaperBrigadierListener.java b/cloud-minecraft/cloud-paper/src/main/java/cloud/commandframework/paper/PaperBrigadierListener.java index 2cda88fb..e2230aed 100644 --- a/cloud-minecraft/cloud-paper/src/main/java/cloud/commandframework/paper/PaperBrigadierListener.java +++ b/cloud-minecraft/cloud-paper/src/main/java/cloud/commandframework/paper/PaperBrigadierListener.java @@ -31,6 +31,7 @@ import cloud.commandframework.bukkit.internal.BukkitBackwardsBrigadierSenderMapp import cloud.commandframework.context.CommandContext; import cloud.commandframework.permission.CommandPermission; import com.destroystokyo.paper.brigadier.BukkitBrigadierCommandSource; +import java.lang.reflect.Method; import java.util.function.BiPredicate; import java.util.regex.Pattern; import org.bukkit.Bukkit; @@ -38,8 +39,22 @@ import org.bukkit.command.PluginIdentifiableCommand; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.checkerframework.checker.nullness.qual.NonNull; +import org.checkerframework.checker.nullness.qual.Nullable; +@SuppressWarnings("deprecation") // Draft API class PaperBrigadierListener implements Listener { + private static final @Nullable Method SET_RAW; + + static { + @Nullable Method mth; + try { + mth = com.destroystokyo.paper.event.brigadier.CommandRegisteredEvent.class + .getDeclaredMethod("setRawCommand", boolean.class); + } catch (final NoSuchMethodException ex) { + mth = null; + } + SET_RAW = mth; + } private final CloudBrigadierManager brigadierManager; private final PaperCommandManager paperCommandManager; @@ -65,7 +80,6 @@ class PaperBrigadierListener implements Listener { } @EventHandler - @SuppressWarnings("deprecation") public void onCommandRegister( final com.destroystokyo.paper.event.brigadier. @NonNull CommandRegisteredEvent event @@ -107,5 +121,12 @@ class PaperBrigadierListener implements Listener { event.getBrigadierCommand(), permissionChecker )); + if (SET_RAW != null) { + try { + SET_RAW.invoke(true); + } catch (final ReflectiveOperationException ex) { + throw new RuntimeException(ex); + } + } } }