mirror of
https://github.com/PaperMC/Paper.git
synced 2025-01-04 18:12:09 +01:00
5cf40e45af
Previously the broadcast method would update the last output in command blocks, and if called asynchronously, would throw an error
39 lines
1.8 KiB
Diff
39 lines
1.8 KiB
Diff
--- a/net/minecraft/world/level/BaseCommandBlock.java
|
|
+++ b/net/minecraft/world/level/BaseCommandBlock.java
|
|
@@ -33,6 +33,10 @@
|
|
private String command = "";
|
|
@Nullable
|
|
private Component customName;
|
|
+ // CraftBukkit start
|
|
+ @Override
|
|
+ public abstract org.bukkit.command.CommandSender getBukkitSender(CommandSourceStack wrapper);
|
|
+ // CraftBukkit end
|
|
|
|
public BaseCommandBlock() {}
|
|
|
|
@@ -132,7 +136,7 @@
|
|
|
|
});
|
|
|
|
- minecraftserver.getCommands().performPrefixedCommand(commandlistenerwrapper, this.command);
|
|
+ minecraftserver.getCommands().dispatchServerCommand(commandlistenerwrapper, this.command); // CraftBukkit
|
|
} catch (Throwable throwable) {
|
|
CrashReport crashreport = CrashReport.forThrowable(throwable, "Executing command block");
|
|
CrashReportCategory crashreportsystemdetails = crashreport.addCategory("Command to be executed");
|
|
@@ -174,6 +178,7 @@
|
|
@Override
|
|
public void sendSystemMessage(Component message) {
|
|
if (this.trackOutput) {
|
|
+ org.spigotmc.AsyncCatcher.catchOp("sendSystemMessage to a command block"); // Paper - Don't broadcast messages to command blocks
|
|
SimpleDateFormat simpledateformat = BaseCommandBlock.TIME_FORMAT;
|
|
Date date = new Date();
|
|
|
|
@@ -200,7 +205,7 @@
|
|
}
|
|
|
|
public InteractionResult usedBy(Player player) {
|
|
- if (!player.canUseGameMasterBlocks()) {
|
|
+ if (!player.canUseGameMasterBlocks() && (!player.isCreative() || !player.getBukkitEntity().hasPermission("minecraft.commandblock"))) { // Paper - command block permission
|
|
return InteractionResult.PASS;
|
|
} else {
|
|
if (player.getCommandSenderWorld().isClientSide) {
|