diff options
Diffstat (limited to 'patch-remap/mache-spigotflower-stripped/net/minecraft/commands/CommandSourceStack.java.patch')
-rw-r--r-- | patch-remap/mache-spigotflower-stripped/net/minecraft/commands/CommandSourceStack.java.patch | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/patch-remap/mache-spigotflower-stripped/net/minecraft/commands/CommandSourceStack.java.patch b/patch-remap/mache-spigotflower-stripped/net/minecraft/commands/CommandSourceStack.java.patch new file mode 100644 index 0000000000..6427ceeaac --- /dev/null +++ b/patch-remap/mache-spigotflower-stripped/net/minecraft/commands/CommandSourceStack.java.patch @@ -0,0 +1,68 @@ +--- a/net/minecraft/commands/CommandSourceStack.java ++++ b/net/minecraft/commands/CommandSourceStack.java +@@ -44,6 +43,7 @@ + import net.minecraft.world.level.dimension.DimensionType; + import net.minecraft.world.phys.Vec2; + import net.minecraft.world.phys.Vec3; ++import com.mojang.brigadier.tree.CommandNode; // CraftBukkit + + public class CommandSourceStack implements ExecutionCommandSource<CommandSourceStack>, SharedSuggestionProvider { + +@@ -64,6 +64,7 @@ + private final Vec2 rotation; + private final CommandSigningContext signingContext; + private final TaskChainer chatMessageChainer; ++ public volatile CommandNode currentCommand; // CraftBukkit + + public CommandSourceStack(CommandSource commandsource, Vec3 vec3, Vec2 vec2, ServerLevel serverlevel, int i, String s, Component component, MinecraftServer minecraftserver, @Nullable Entity entity) { + this(commandsource, vec3, vec2, serverlevel, i, s, component, minecraftserver, entity, false, CommandResultCallback.EMPTY, EntityAnchorArgument.Anchor.FEET, CommandSigningContext.ANONYMOUS, TaskChainer.immediate(minecraftserver)); +@@ -170,11 +170,24 @@ + } + + @Override +- @Override +- public boolean hasPermission(int i) { +- return this.permissionLevel >= i; ++ public boolean hasPermission(int level) { ++ // CraftBukkit start ++ CommandNode currentCommand = this.currentCommand; ++ if (currentCommand != null) { ++ return hasPermission(level, org.bukkit.craftbukkit.command.VanillaCommandWrapper.getPermission(currentCommand)); ++ } ++ // CraftBukkit end ++ ++ return this.permissionLevel >= level; + } + ++ // CraftBukkit start ++ public boolean hasPermission(int i, String bukkitPermission) { ++ // World is null when loading functions ++ return ((getLevel() == null || !getLevel().getCraftServer().ignoreVanillaPermissions) && this.permissionLevel >= i) || getBukkitSender().hasPermission(bukkitPermission); ++ } ++ // CraftBukkit end ++ + public Vec3 getPosition() { + return this.worldPosition; + } +@@ -307,8 +320,8 @@ + while (iterator.hasNext()) { + ServerPlayer serverplayer = (ServerPlayer) iterator.next(); + +- if (serverplayer != this.source && this.server.getPlayerList().isOp(serverplayer.getGameProfile())) { +- serverplayer.sendSystemMessage(mutablecomponent); ++ if (entityplayer != this.source && entityplayer.getBukkitEntity().hasPermission("minecraft.admin.command_feedback")) { // CraftBukkit ++ entityplayer.sendSystemMessage(ichatmutablecomponent); + } + } + } +@@ -413,4 +413,10 @@ + public boolean isSilent() { + return this.silent; + } ++ ++ // CraftBukkit start ++ public org.bukkit.command.CommandSender getBukkitSender() { ++ return source.getBukkitSender(this); ++ } ++ // CraftBukkit end + } |