aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJason Penilla <[email protected]>2024-07-01 12:42:37 -0700
committerJason Penilla <[email protected]>2024-07-01 12:42:37 -0700
commit9928e8412af30c4ec7320fd497ea4442454ebd4a (patch)
tree5c7fe664e336b57a4b0ff14825e9e773af3659c8
parentf9a1015d291d61851c4d4a5a7fabe839db2dda2b (diff)
downloadPaper-9928e8412af30c4ec7320fd497ea4442454ebd4a.tar.gz
Paper-9928e8412af30c4ec7320fd497ea4442454ebd4a.zip
Handle command blocks as wellprioritize-mc-commands-in-function-parsing
-rw-r--r--patches/server/1029-Prioritize-Minecraft-commands-in-function-parsing.patch27
1 files changed, 24 insertions, 3 deletions
diff --git a/patches/server/1029-Prioritize-Minecraft-commands-in-function-parsing.patch b/patches/server/1029-Prioritize-Minecraft-commands-in-function-parsing.patch
index 44b500d8b6..6e36d9a7b3 100644
--- a/patches/server/1029-Prioritize-Minecraft-commands-in-function-parsing.patch
+++ b/patches/server/1029-Prioritize-Minecraft-commands-in-function-parsing.patch
@@ -1,7 +1,8 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Jason Penilla <[email protected]>
Date: Mon, 1 Jul 2024 11:58:49 -0700
-Subject: [PATCH] Prioritize Minecraft commands in function parsing
+Subject: [PATCH] Prioritize Minecraft commands in function parsing and command
+ blocks
diff --git a/src/main/java/com/mojang/brigadier/CommandDispatcher.java b/src/main/java/com/mojang/brigadier/CommandDispatcher.java
@@ -18,7 +19,7 @@ index a4d5d7017e0be79844b996de85a63cad5f8488bc..770aec1976bd391eb5712b57b6c6a029
continue;
}
diff --git a/src/main/java/com/mojang/brigadier/tree/CommandNode.java b/src/main/java/com/mojang/brigadier/tree/CommandNode.java
-index 03ce8a2abb6dceaa922dcce7f3adbc228bbde4bc..e95a803f414bf8ea667d352c73670bce72f00d24 100644
+index 03ce8a2abb6dceaa922dcce7f3adbc228bbde4bc..dc76fcf4c6cc6cd65ce117b1855c15ede60f30ab 100644
--- a/src/main/java/com/mojang/brigadier/tree/CommandNode.java
+++ b/src/main/java/com/mojang/brigadier/tree/CommandNode.java
@@ -173,6 +173,12 @@ public abstract class CommandNode<S> implements Comparable<CommandNode<S>> {
@@ -34,7 +35,7 @@ index 03ce8a2abb6dceaa922dcce7f3adbc228bbde4bc..e95a803f414bf8ea667d352c73670bce
if (this.literals.size() > 0) {
final int cursor = input.getCursor();
while (input.canRead() && input.peek() != ' ') {
-@@ -180,7 +186,17 @@ public abstract class CommandNode<S> implements Comparable<CommandNode<S>> {
+@@ -180,7 +186,21 @@ public abstract class CommandNode<S> implements Comparable<CommandNode<S>> {
}
final String text = input.getString().substring(cursor, input.getCursor());
input.setCursor(cursor);
@@ -45,6 +46,10 @@ index 03ce8a2abb6dceaa922dcce7f3adbc228bbde4bc..e95a803f414bf8ea667d352c73670bce
+ if (!text.contains(":")) {
+ literal = this.literals.get("minecraft:" + text);
+ }
++ } else if (source instanceof CommandSourceStack css && css.source instanceof net.minecraft.world.level.BaseCommandBlock) {
++ if (css.getServer().server.getCommandBlockOverride(text) && !text.contains(":")) {
++ literal = this.literals.get("minecraft:" + text);
++ }
+ }
+ if (literal == null) {
+ literal = this.literals.get(text);
@@ -112,3 +117,19 @@ index 85a890403645f0f9d381e85b48efcae126673945..bcc27fec043a57eb5064934c967982de
}
@Override
+diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java
+index 3e454515360c22a26c9329e4032d525579110d7e..1d1e76de60e40224f5cb81893f9ee50fe987badb 100644
+--- a/src/main/java/net/minecraft/commands/Commands.java
++++ b/src/main/java/net/minecraft/commands/Commands.java
+@@ -310,10 +310,7 @@ public class Commands {
+
+ // Paper - Fix permission levels for command blocks
+
+- // Handle vanilla commands;
+- if (sender.getLevel().getCraftServer().getCommandBlockOverride(args[0])) {
+- args[0] = "minecraft:" + args[0];
+- }
++ // Handle vanilla commands; // Paper - handled in CommandNode/CommandDispatcher
+
+ String newCommand = joiner.join(args);
+ this.performPrefixedCommand(sender, newCommand, newCommand);