Use Paper raw command API when available
This commit is contained in:
parent
6ba9afd6a3
commit
158a8121a8
1 changed files with 22 additions and 1 deletions
|
|
@ -31,6 +31,7 @@ import cloud.commandframework.bukkit.internal.BukkitBackwardsBrigadierSenderMapp
|
||||||
import cloud.commandframework.context.CommandContext;
|
import cloud.commandframework.context.CommandContext;
|
||||||
import cloud.commandframework.permission.CommandPermission;
|
import cloud.commandframework.permission.CommandPermission;
|
||||||
import com.destroystokyo.paper.brigadier.BukkitBrigadierCommandSource;
|
import com.destroystokyo.paper.brigadier.BukkitBrigadierCommandSource;
|
||||||
|
import java.lang.reflect.Method;
|
||||||
import java.util.function.BiPredicate;
|
import java.util.function.BiPredicate;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
|
|
@ -38,8 +39,22 @@ import org.bukkit.command.PluginIdentifiableCommand;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.checkerframework.checker.nullness.qual.NonNull;
|
import org.checkerframework.checker.nullness.qual.NonNull;
|
||||||
|
import org.checkerframework.checker.nullness.qual.Nullable;
|
||||||
|
|
||||||
|
@SuppressWarnings("deprecation") // Draft API
|
||||||
class PaperBrigadierListener<C> implements Listener {
|
class PaperBrigadierListener<C> 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<C, BukkitBrigadierCommandSource> brigadierManager;
|
private final CloudBrigadierManager<C, BukkitBrigadierCommandSource> brigadierManager;
|
||||||
private final PaperCommandManager<C> paperCommandManager;
|
private final PaperCommandManager<C> paperCommandManager;
|
||||||
|
|
@ -65,7 +80,6 @@ class PaperBrigadierListener<C> implements Listener {
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
@SuppressWarnings("deprecation")
|
|
||||||
public void onCommandRegister(
|
public void onCommandRegister(
|
||||||
final com.destroystokyo.paper.event.brigadier.
|
final com.destroystokyo.paper.event.brigadier.
|
||||||
@NonNull CommandRegisteredEvent<BukkitBrigadierCommandSource> event
|
@NonNull CommandRegisteredEvent<BukkitBrigadierCommandSource> event
|
||||||
|
|
@ -107,5 +121,12 @@ class PaperBrigadierListener<C> implements Listener {
|
||||||
event.getBrigadierCommand(),
|
event.getBrigadierCommand(),
|
||||||
permissionChecker
|
permissionChecker
|
||||||
));
|
));
|
||||||
|
if (SET_RAW != null) {
|
||||||
|
try {
|
||||||
|
SET_RAW.invoke(true);
|
||||||
|
} catch (final ReflectiveOperationException ex) {
|
||||||
|
throw new RuntimeException(ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue