mirror of
https://github.com/PaperMC/Paper.git
synced 2025-01-02 17:32:03 +01:00
08e93ca29f
When a command with signed arguments is cancelled, message headers need to be sent out. Same thing for when the executed command is changed.
40 lines
2.2 KiB
Diff
40 lines
2.2 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Nassim Jahnke <nassim@njahnke.dev>
|
|
Date: Tue, 2 Aug 2022 19:16:23 +0200
|
|
Subject: [PATCH] Fix command preprocess cancelling and command changing
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
|
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
|
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
|
@@ -0,0 +0,0 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
|
|
PlayerCommandPreprocessEvent event = new PlayerCommandPreprocessEvent(this.getCraftPlayer(), command, new LazyPlayerSet(this.server));
|
|
this.cserver.getPluginManager().callEvent(event);
|
|
|
|
- if (event.isCancelled()) {
|
|
- return;
|
|
- }
|
|
command = event.getMessage().substring(1);
|
|
|
|
- ParseResults<CommandSourceStack> parseresults = this.parseCommand(command);
|
|
- Map<String, PlayerChatMessage> map = (packet.command().equals(command)) ? this.collectSignedArguments(packet, PreviewableCommand.of(parseresults)) : Collections.emptyMap();
|
|
+ // Paper start - send message headers for cancelled or changed commands
|
|
+ ParseResults<CommandSourceStack> parseresults = this.parseCommand(packet.command());
|
|
+ Map<String, PlayerChatMessage> map = this.collectSignedArguments(packet, PreviewableCommand.of(parseresults));
|
|
+ if (event.isCancelled() || !packet.command().equals(command)) {
|
|
+ for (final PlayerChatMessage message : map.values()) {
|
|
+ player.server.getPlayerList().broadcastMessageHeader(message, Set.of());
|
|
+ }
|
|
+ if (event.isCancelled()) {
|
|
+ return;
|
|
+ }
|
|
+
|
|
+ // Remove signatures if the command was changed and use the changed command source stack
|
|
+ map.clear();
|
|
+ parseresults = this.parseCommand(command);
|
|
+ }
|
|
+ // Paper end
|
|
// CraftBukkit end
|
|
Iterator iterator = map.values().iterator();
|
|
|