diff options
author | Emilia Kond <[email protected]> | 2023-06-13 01:00:12 +0300 |
---|---|---|
committer | GitHub <[email protected]> | 2023-06-12 15:00:12 -0700 |
commit | 2d09115b3a73b27a760dfe7debdbd88b279b29e2 (patch) | |
tree | f9dc39849e410c23536b4f94221b08d8337b13cd /patches/server/0681-Vanilla-command-permission-fixes.patch | |
parent | 87dfff4cfabefe329d6b6f6b8e2985e4778bd8d3 (diff) | |
download | Paper-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.patch | 81 |
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) { |