3
0
Mirror von https://github.com/PaperMC/Paper.git synchronisiert 2024-11-15 20:40:07 +01:00

SPIGOT-3373: Fix /execute in gameloop functions

Dieser Commit ist enthalten in:
md_5 2017-06-25 09:46:19 +10:00
Ursprung 753a8e700d
Commit 258575110f
3 geänderte Dateien mit 23 neuen und 5 gelöschten Zeilen

Datei anzeigen

@ -11,7 +11,7 @@
public class CommandExecute extends CommandAbstract { public class CommandExecute extends CommandAbstract {
@@ -59,26 +63,59 @@ @@ -59,26 +63,61 @@
} }
String s = a(astring, b0); String s = a(astring, b0);
@ -31,6 +31,8 @@
+ sender = minecraftserver.remoteConsole; + sender = minecraftserver.remoteConsole;
+ } else if (listener instanceof CommandBlockListenerAbstract) { + } else if (listener instanceof CommandBlockListenerAbstract) {
+ sender = ((CommandBlockListenerAbstract) listener).sender; + sender = ((CommandBlockListenerAbstract) listener).sender;
+ } else if (listener instanceof CustomFunctionData.CustomFunctionListener) {
+ sender = ((CustomFunctionData.CustomFunctionListener) listener).sender;
+ } else if (listener instanceof CommandListenerWrapper) { + } else if (listener instanceof CommandListenerWrapper) {
+ listener = ((CommandListenerWrapper) listener).base; // Search deeper + listener = ((CommandListenerWrapper) listener).base; // Search deeper
+ } else if (VanillaCommandWrapper.lastSender != null) { + } else if (VanillaCommandWrapper.lastSender != null) {

Datei anzeigen

@ -5,7 +5,7 @@
public void a(CustomFunctionData customfunctiondata, ICommandListener icommandlistener, ArrayDeque<CustomFunctionData.a> arraydeque, int i) { public void a(CustomFunctionData customfunctiondata, ICommandListener icommandlistener, ArrayDeque<CustomFunctionData.a> arraydeque, int i) {
- customfunctiondata.a().a(icommandlistener, this.a); - 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() { public String toString() {

Datei anzeigen

@ -1,6 +1,22 @@
--- a/net/minecraft/server/CustomFunctionData.java --- a/net/minecraft/server/CustomFunctionData.java
+++ b/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<CustomFunctionData.a> 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() { public World getWorld() {
@ -9,7 +25,7 @@
} }
public MinecraftServer C_() { public MinecraftServer C_() {
@@ -57,7 +57,7 @@ @@ -57,7 +64,7 @@
} }
public int c() { public int c() {
@ -18,7 +34,7 @@
} }
public Map<MinecraftKey, CustomFunction> d() { public Map<MinecraftKey, CustomFunction> d() {
@@ -65,7 +65,7 @@ @@ -65,7 +72,7 @@
} }
public void e() { public void e() {