Files
paper-mc/paper-server/patches/sources/net/minecraft/commands/PermissionSource.java.patch
Owen1212055 73d218c154 Improve command permission lookups
This allows us to append to the vanilla permission check object to avoid having to look into a map.

This also fixes non vanilla commands from technically being able to be skipped through permissions.
2025-06-06 22:11:49 -04:00

25 lines
1.4 KiB
Diff

--- a/net/minecraft/commands/PermissionSource.java
+++ b/net/minecraft/commands/PermissionSource.java
@@ -9,9 +_,20 @@
return this.hasPermission(2);
}
- public record Check<T extends PermissionSource>(@Override int requiredLevel) implements PermissionCheck<T> {
+ public record Check<T extends PermissionSource>(@Override int requiredLevel, java.util.concurrent.atomic.AtomicReference<com.mojang.brigadier.tree.CommandNode<CommandSourceStack>> vanillaNode) implements PermissionCheck<T> { // Paper
+ // Paper start - Vanilla Command permission checking
+ public Check(int requiredLevel) {
+ this(requiredLevel, new java.util.concurrent.atomic.AtomicReference<>());
+ }
+ // Paper end - Vanilla Command permission checking
@Override
public boolean test(T source) {
+ // Paper start - Vanilla Command permission checking
+ com.mojang.brigadier.tree.CommandNode<CommandSourceStack> currentCommand = vanillaNode.get();
+ if (currentCommand != null && source instanceof CommandSourceStack commandSourceStack) {
+ return commandSourceStack.hasPermission(this.requiredLevel, org.bukkit.craftbukkit.command.VanillaCommandWrapper.getPermission(currentCommand));
+ }
+ // Paper end - Vanilla Command permission checking
return source.hasPermission(this.requiredLevel);
}
}