aboutsummaryrefslogtreecommitdiffhomepage
path: root/patch-remap/mache-spigotflower-stripped/net/minecraft/commands/CommandSourceStack.java.patch
diff options
context:
space:
mode:
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.patch68
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
+ }