Vanilla command permission fixes

Fixes permission checks for vanilla commands which don't have a
requirement, as well as for namespaced vanilla commands.

== AT ==
public-f com.mojang.brigadier.tree.CommandNode requirement
This commit is contained in:
Jason Penilla
2021-08-25 13:19:53 -07:00
parent 33aad47ee1
commit 6dafeceebd
3 changed files with 61 additions and 17 deletions

View File

@@ -91,7 +91,21 @@ public final class VanillaCommandWrapper extends BukkitCommand {
}
public static String getPermission(CommandNode<CommandSourceStack> vanillaCommand) {
return "minecraft.command." + ((vanillaCommand.getRedirect() == null) ? vanillaCommand.getName() : vanillaCommand.getRedirect().getName());
// Paper start - Vanilla command permission fixes
while (vanillaCommand.getRedirect() != null) {
vanillaCommand = vanillaCommand.getRedirect();
}
final String commandName = vanillaCommand.getName();
return "minecraft.command." + stripDefaultNamespace(commandName);
}
private static String stripDefaultNamespace(final String maybeNamespaced) {
final String prefix = "minecraft:";
if (maybeNamespaced.startsWith(prefix)) {
return maybeNamespaced.substring(prefix.length());
}
return maybeNamespaced;
// Paper end - Vanilla command permission fixes
}
private String toDispatcher(String[] args, String name) {