From 4d6887228e67f3d90fd997ae453fec2771a96695 Mon Sep 17 00:00:00 2001 From: CraftBukkit/Spigot Date: Sun, 25 Jun 2017 09:46:19 +1000 Subject: [PATCH] SPIGOT-3373: Fix /execute in gameloop functions By: md_5 --- paper-server/nms-patches/CommandExecute.patch | 4 +++- paper-server/nms-patches/CustomFunction.patch | 2 +- .../nms-patches/CustomFunctionData.patch | 22 ++++++++++++++++--- 3 files changed, 23 insertions(+), 5 deletions(-) diff --git a/paper-server/nms-patches/CommandExecute.patch b/paper-server/nms-patches/CommandExecute.patch index 8fbfb2eae1..bd31145b08 100644 --- a/paper-server/nms-patches/CommandExecute.patch +++ b/paper-server/nms-patches/CommandExecute.patch @@ -11,7 +11,7 @@ public class CommandExecute extends CommandAbstract { -@@ -59,26 +63,59 @@ +@@ -59,26 +63,61 @@ } String s = a(astring, b0); @@ -31,6 +31,8 @@ + sender = minecraftserver.remoteConsole; + } else if (listener instanceof CommandBlockListenerAbstract) { + sender = ((CommandBlockListenerAbstract) listener).sender; ++ } else if (listener instanceof CustomFunctionData.CustomFunctionListener) { ++ sender = ((CustomFunctionData.CustomFunctionListener) listener).sender; + } else if (listener instanceof CommandListenerWrapper) { + listener = ((CommandListenerWrapper) listener).base; // Search deeper + } else if (VanillaCommandWrapper.lastSender != null) { diff --git a/paper-server/nms-patches/CustomFunction.patch b/paper-server/nms-patches/CustomFunction.patch index 28838ae834..ea37c18565 100644 --- a/paper-server/nms-patches/CustomFunction.patch +++ b/paper-server/nms-patches/CustomFunction.patch @@ -5,7 +5,7 @@ public void a(CustomFunctionData customfunctiondata, ICommandListener icommandlistener, ArrayDeque arraydeque, int i) { - customfunctiondata.a().a(icommandlistener, this.a); -+ CommandBlockListenerAbstract.executeSafely(icommandlistener, new org.bukkit.craftbukkit.command.CraftFunctionCommandSender(icommandlistener), this.a); // CraftBukkit ++ CommandBlockListenerAbstract.executeSafely(icommandlistener, ((CustomFunctionData.CustomFunctionListener) icommandlistener).sender, this.a); // CraftBukkit } public String toString() { diff --git a/paper-server/nms-patches/CustomFunctionData.patch b/paper-server/nms-patches/CustomFunctionData.patch index f0baac8473..821ff006ab 100644 --- a/paper-server/nms-patches/CustomFunctionData.patch +++ b/paper-server/nms-patches/CustomFunctionData.patch @@ -1,6 +1,22 @@ --- a/net/minecraft/server/CustomFunctionData.java +++ b/net/minecraft/server/CustomFunctionData.java -@@ -33,7 +33,7 @@ +@@ -23,7 +23,14 @@ + private CustomFunction f; + private final ArrayDeque g = new ArrayDeque(); + private boolean h = false; +- private final ICommandListener i = new ICommandListener() { ++ // CraftBukkit start ++ private final ICommandListener i = new CustomFunctionListener(); ++ ++ public class CustomFunctionListener implements ICommandListener { ++ ++ protected org.bukkit.command.CommandSender sender = new org.bukkit.craftbukkit.command.CraftFunctionCommandSender(this); ++ // CraftBukkit end ++ + public String getName() { + return CustomFunctionData.this.e; + } +@@ -33,7 +40,7 @@ } public World getWorld() { @@ -9,7 +25,7 @@ } public MinecraftServer C_() { -@@ -57,7 +57,7 @@ +@@ -57,7 +64,7 @@ } public int c() { @@ -18,7 +34,7 @@ } public Map d() { -@@ -65,7 +65,7 @@ +@@ -65,7 +72,7 @@ } public void e() {