papermc/paper-server/patches/sources/net/minecraft/commands/arguments/EntityArgument.java.patch

34 lines
2.2 KiB
Diff
Raw Normal View History

--- a/net/minecraft/commands/arguments/EntityArgument.java
+++ b/net/minecraft/commands/arguments/EntityArgument.java
@@ -105,9 +_,14 @@
}
private EntitySelector parse(StringReader reader, boolean allowSelectors) throws CommandSyntaxException {
+ // CraftBukkit start
+ return this.parse(reader, allowSelectors, false);
+ }
2024-12-15 21:28:08 +01:00
+ public EntitySelector parse(StringReader reader, boolean allowSelectors, boolean overridePermissions) throws CommandSyntaxException {
+ // CraftBukkit end
int i = 0;
EntitySelectorParser entitySelectorParser = new EntitySelectorParser(reader, allowSelectors);
- EntitySelector entitySelector = entitySelectorParser.parse();
+ EntitySelector entitySelector = entitySelectorParser.parse(overridePermissions); // CraftBukkit
if (entitySelector.getMaxResults() > 1 && this.single) {
if (this.playersOnly) {
reader.setCursor(0);
@@ -129,7 +_,13 @@
if (context.getSource() instanceof SharedSuggestionProvider sharedSuggestionProvider) {
StringReader stringReader = new StringReader(builder.getInput());
stringReader.setCursor(builder.getStart());
- EntitySelectorParser entitySelectorParser = new EntitySelectorParser(stringReader, EntitySelectorParser.allowSelectors(sharedSuggestionProvider));
+ // Paper start - Fix EntityArgument permissions
+ final boolean permission = sharedSuggestionProvider instanceof CommandSourceStack stack
+ ? stack.bypassSelectorPermissions || stack.hasPermission(2, "minecraft.command.selector")
+ // Only CommandSourceStack implements SharedSuggestionProvider. If *somehow* anything else ends up here, try to query its permission level, otherwise yield false.
+ : (sharedSuggestionProvider instanceof final net.minecraft.commands.PermissionSource permissionSource && permissionSource.hasPermission(2));
+ EntitySelectorParser entitySelectorParser = new EntitySelectorParser(stringReader, permission);
+ // Paper end - Fix EntityArgument permissions
try {
entitySelectorParser.parse();