aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/server/0681-Vanilla-command-permission-fixes.patch
diff options
context:
space:
mode:
authorEmilia Kond <[email protected]>2023-06-13 01:00:12 +0300
committerGitHub <[email protected]>2023-06-12 15:00:12 -0700
commit2d09115b3a73b27a760dfe7debdbd88b279b29e2 (patch)
treef9dc39849e410c23536b4f94221b08d8337b13cd /patches/server/0681-Vanilla-command-permission-fixes.patch
parent87dfff4cfabefe329d6b6f6b8e2985e4778bd8d3 (diff)
downloadPaper-2d09115b3a73b27a760dfe7debdbd88b279b29e2.tar.gz
Paper-2d09115b3a73b27a760dfe7debdbd88b279b29e2.zip
Use net.kyori.ansi for console logging (#9313)
Uses the new ANSIComponentSerializer introduced in Adventure 4.14.0 to serialize components when logging them via the ComponentLogger, or when sending messages to the console. This replaces the old solution which uses legacy jank and custom color conversions, with a new library that handles the conversion and config
Diffstat (limited to 'patches/server/0681-Vanilla-command-permission-fixes.patch')
-rw-r--r--patches/server/0681-Vanilla-command-permission-fixes.patch81
1 files changed, 81 insertions, 0 deletions
diff --git a/patches/server/0681-Vanilla-command-permission-fixes.patch b/patches/server/0681-Vanilla-command-permission-fixes.patch
new file mode 100644
index 0000000000..53008d51e9
--- /dev/null
+++ b/patches/server/0681-Vanilla-command-permission-fixes.patch
@@ -0,0 +1,81 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Jason Penilla <[email protected]>
+Date: Wed, 25 Aug 2021 13:19:53 -0700
+Subject: [PATCH] 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
+
+diff --git a/src/main/java/com/mojang/brigadier/builder/ArgumentBuilder.java b/src/main/java/com/mojang/brigadier/builder/ArgumentBuilder.java
+index 899008b2980d13f1be6280cd8cb959c53a29bebf..f875507241ac6769545e91cd3285232b75b892f0 100644
+--- a/src/main/java/com/mojang/brigadier/builder/ArgumentBuilder.java
++++ b/src/main/java/com/mojang/brigadier/builder/ArgumentBuilder.java
+@@ -14,9 +14,17 @@ import java.util.Collections;
+ import java.util.function.Predicate;
+
+ public abstract class ArgumentBuilder<S, T extends ArgumentBuilder<S, T>> {
++ // Paper start
++ private static final Predicate<Object> DEFAULT_REQUIREMENT = s -> true;
++
++ @SuppressWarnings("unchecked")
++ public static <S> Predicate<S> defaultRequirement() {
++ return (Predicate<S>) DEFAULT_REQUIREMENT;
++ }
++ // Paper end
+ private final RootCommandNode<S> arguments = new RootCommandNode<>();
+ private Command<S> command;
+- private Predicate<S> requirement = s -> true;
++ private Predicate<S> requirement = defaultRequirement(); // Paper
+ private CommandNode<S> target;
+ private RedirectModifier<S> modifier = null;
+ private boolean forks;
+diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java
+index 14c78028ff51fff6f24174ae16b7c42d34d6041a..7592b592a541912f729d6b99f455cd87ebcb34b8 100644
+--- a/src/main/java/net/minecraft/commands/Commands.java
++++ b/src/main/java/net/minecraft/commands/Commands.java
+@@ -231,6 +231,13 @@ public class Commands {
+ }
+ this.vanillaCommandNodes.addAll(this.dispatcher.getRoot().getChildren()); // Paper
+
++ // Paper start
++ for (final CommandNode<CommandSourceStack> node : this.dispatcher.getRoot().getChildren()) {
++ if (node.getRequirement() == com.mojang.brigadier.builder.ArgumentBuilder.<CommandSourceStack>defaultRequirement()) {
++ node.requirement = stack -> stack.source == CommandSource.NULL || stack.getBukkitSender().hasPermission(org.bukkit.craftbukkit.command.VanillaCommandWrapper.getPermission(node));
++ }
++ }
++ // Paper end
+ // CraftBukkit start
+ }
+
+diff --git a/src/main/java/org/bukkit/craftbukkit/command/VanillaCommandWrapper.java b/src/main/java/org/bukkit/craftbukkit/command/VanillaCommandWrapper.java
+index 5ed34b60a32a2aac214de84c44689fd5a0b00a10..8dca2ad7d25f740941187698d77819af8ebc2805 100644
+--- a/src/main/java/org/bukkit/craftbukkit/command/VanillaCommandWrapper.java
++++ b/src/main/java/org/bukkit/craftbukkit/command/VanillaCommandWrapper.java
+@@ -87,7 +87,23 @@ 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
++ final String commandName;
++ if (vanillaCommand.getRedirect() == null) {
++ commandName = vanillaCommand.getName();
++ } else {
++ commandName = vanillaCommand.getRedirect().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
+ }
+
+ private String toDispatcher(String[] args, String name) {