geforkt von Mirrors/Paper
eff22eb054
Looks like they would not have been removed if they disconnected during the chunk load, preventing the world from being unloaded.
41 Zeilen
2.2 KiB
Diff
41 Zeilen
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 6296683d900fa30b784e4e345856bdc3b175fb5e..c478693c3829937f64b9bed5d69fcfd2d7759a00 100644
|
|
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
|
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
|
@@ -2258,13 +2258,24 @@ 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();
|
|
|