Fix some reflection wrapping issues

This commit is contained in:
Marc Baloup 2025-07-14 00:16:38 +02:00
parent ebbbc3a1f0
commit 457262049d
2 changed files with 16 additions and 16 deletions

View File

@ -304,14 +304,8 @@ public abstract class PaperBrigadierCommand extends BrigadierCommand<CommandSour
} }
private static String getCommandIdentity(CommandNode<CommandSourceStack> command) { private static String getCommandIdentity(CommandNode<CommandSourceStack> command) {
@SuppressWarnings("unchecked")
fr.pandacube.lib.paper.reflect.wrapper.brigadier.CommandNode<CommandSourceStack> wrappedCommandNode = wrap(command, fr.pandacube.lib.paper.reflect.wrapper.brigadier.CommandNode.class);
if (wrappedCommandNode.pluginCommandMeta() != null) { if (BukkitCommandNode.REFLECT.get().isInstance(command)) {
PluginCommandMeta meta = wrappedCommandNode.pluginCommandMeta();
return "Node /" + command.getName() + " from plugin " + meta.plugin().getName();
}
else if (BukkitCommandNode.REFLECT.get().isInstance(command)) {
BukkitCommandNode wrappedBCN = wrap(command, BukkitCommandNode.class); BukkitCommandNode wrappedBCN = wrap(command, BukkitCommandNode.class);
Command bukkitCmd = wrappedBCN.getBukkitCommand(); Command bukkitCmd = wrappedBCN.getBukkitCommand();
if (bukkitCmd instanceof PluginCommand cmd) { if (bukkitCmd instanceof PluginCommand cmd) {
@ -329,18 +323,22 @@ public abstract class PaperBrigadierCommand extends BrigadierCommand<CommandSour
return "Node /" + command.getName() + " wrapping " + bukkitCmd.getClass().getName() + " /" + bukkitCmd.getName(); return "Node /" + command.getName() + " wrapping " + bukkitCmd.getClass().getName() + " /" + bukkitCmd.getName();
} }
else { else {
return "Node /" + command.getName() + " (unspecific)"; @SuppressWarnings("unchecked")
fr.pandacube.lib.paper.reflect.wrapper.brigadier.CommandNode<CommandSourceStack> wrappedCommandNode = wrap(command, fr.pandacube.lib.paper.reflect.wrapper.brigadier.CommandNode.class);
if (wrappedCommandNode.pluginCommandMeta() != null) {
PluginCommandMeta meta = wrappedCommandNode.pluginCommandMeta();
return "Node /" + command.getName() + " from plugin " + meta.plugin().getName();
}
else {
return "Node /" + command.getName() + " (unspecific)";
}
} }
} }
private static Boolean isPluginCommand(CommandNode<CommandSourceStack> command) { private static Boolean isPluginCommand(CommandNode<CommandSourceStack> command) {
@SuppressWarnings("unchecked") if (BukkitCommandNode.REFLECT.get().isInstance(command)) {
fr.pandacube.lib.paper.reflect.wrapper.brigadier.CommandNode<CommandSourceStack> wrappedCommandNode = wrap(command, fr.pandacube.lib.paper.reflect.wrapper.brigadier.CommandNode.class);
if (wrappedCommandNode.pluginCommandMeta() != null) {
return true;
}
else if (BukkitCommandNode.REFLECT.get().isInstance(command)) {
BukkitCommandNode wrappedBCN = wrap(command, BukkitCommandNode.class); BukkitCommandNode wrappedBCN = wrap(command, BukkitCommandNode.class);
Command bukkitCmd = wrappedBCN.getBukkitCommand(); Command bukkitCmd = wrappedBCN.getBukkitCommand();
if (bukkitCmd instanceof PluginCommand) { if (bukkitCmd instanceof PluginCommand) {
@ -358,7 +356,9 @@ public abstract class PaperBrigadierCommand extends BrigadierCommand<CommandSour
return null; return null;
} }
else { else {
return false; @SuppressWarnings("unchecked")
fr.pandacube.lib.paper.reflect.wrapper.brigadier.CommandNode<CommandSourceStack> wrappedCommandNode = wrap(command, fr.pandacube.lib.paper.reflect.wrapper.brigadier.CommandNode.class);
return wrappedCommandNode.pluginCommandMeta() != null;
} }
} }

View File

@ -116,7 +116,7 @@ public abstract class ReflectWrapper implements ReflectWrapperI {
} }
if (expectedWrapperClass != null && !expectedWrapperClass.isAssignableFrom(wrapperClass)) { if (expectedWrapperClass != null && !expectedWrapperClass.isAssignableFrom(wrapperClass)) {
throw new ClassCastException("Wrapper class " + wrapperClass + " is not a sub-class or a sub-interface of expected wrapper class" + expectedWrapperClass); throw new ClassCastException("Wrapper class " + wrapperClass + " is not a sub-class or a sub-interface of expected wrapper class " + expectedWrapperClass);
} }
ReflectConstructor<? extends ReflectWrapperI> constructor = WrapperRegistry.getWrapperConstructorOfWrapperClass(wrapperClass); ReflectConstructor<? extends ReflectWrapperI> constructor = WrapperRegistry.getWrapperConstructorOfWrapperClass(wrapperClass);
if (constructor == null) { if (constructor == null) {