|
| 1 | +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 |
| 2 | +From: Jake Potrebic <jake.m.potrebic@gmail.com> |
| 3 | +Date: Thu, 16 Jun 2022 14:22:56 -0700 |
| 4 | +Subject: [PATCH] Don't broadcast messages to command blocks |
| 5 | + |
| 6 | +Previously the broadcast method would update the last output |
| 7 | +in command blocks, and if called asynchronously, would throw |
| 8 | +an error |
| 9 | + |
| 10 | +diff --git a/src/main/java/net/minecraft/world/level/BaseCommandBlock.java b/src/main/java/net/minecraft/world/level/BaseCommandBlock.java |
| 11 | +index c0195f73cd2c8721e882c681eaead65471710081..861b348f73867af3199f1cc0dab1ddd4241d1567 100644 |
| 12 | +--- a/src/main/java/net/minecraft/world/level/BaseCommandBlock.java |
| 13 | ++++ b/src/main/java/net/minecraft/world/level/BaseCommandBlock.java |
| 14 | +@@ -172,6 +172,7 @@ public abstract class BaseCommandBlock implements CommandSource { |
| 15 | + @Override |
| 16 | + public void sendSystemMessage(Component message) { |
| 17 | + if (this.trackOutput) { |
| 18 | ++ org.spigotmc.AsyncCatcher.catchOp("sendSystemMessage to a command block"); // Paper |
| 19 | + SimpleDateFormat simpledateformat = BaseCommandBlock.TIME_FORMAT; |
| 20 | + Date date = new Date(); |
| 21 | + |
| 22 | +diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java |
| 23 | +index f1e5ccfbcd08a73ac3aba9a1cb7b414faef81f9e..72311b27bb642ee05dba45b76935277d183012eb 100644 |
| 24 | +--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java |
| 25 | ++++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java |
| 26 | +@@ -1736,7 +1736,7 @@ public final class CraftServer implements Server { |
| 27 | + // Paper end |
| 28 | + Set<CommandSender> recipients = new HashSet<>(); |
| 29 | + for (Permissible permissible : this.getPluginManager().getPermissionSubscriptions(permission)) { |
| 30 | +- if (permissible instanceof CommandSender && permissible.hasPermission(permission)) { |
| 31 | ++ if (permissible instanceof CommandSender && !(permissible instanceof org.bukkit.command.BlockCommandSender) && permissible.hasPermission(permission)) { // Paper - don't broadcast to BlockCommandSender (specifically Command Blocks) |
| 32 | + recipients.add((CommandSender) permissible); |
| 33 | + } |
| 34 | + } |
0 commit comments