geforkt von Mirrors/Paper
60 Zeilen
3.4 KiB
Diff
60 Zeilen
3.4 KiB
Diff
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||
|
From: Shane Freeder <theboyetronic@gmail.com>
|
||
|
Date: Mon, 3 Apr 2023 08:55:52 +0100
|
||
|
Subject: [PATCH] Prevent causing expired keys from impacting new joins
|
||
|
|
||
|
|
||
|
diff --git a/src/main/java/net/minecraft/network/protocol/game/ClientboundPlayerInfoUpdatePacket.java b/src/main/java/net/minecraft/network/protocol/game/ClientboundPlayerInfoUpdatePacket.java
|
||
|
index 23e0e6937e28f09271a4ec7c35e0076a576cf3d3..4aa8b483841028fbcc43f9ed47730881263e5065 100644
|
||
|
--- a/src/main/java/net/minecraft/network/protocol/game/ClientboundPlayerInfoUpdatePacket.java
|
||
|
+++ b/src/main/java/net/minecraft/network/protocol/game/ClientboundPlayerInfoUpdatePacket.java
|
||
|
@@ -94,7 +94,13 @@ public class ClientboundPlayerInfoUpdatePacket implements Packet<ClientGamePacke
|
||
|
INITIALIZE_CHAT((serialized, buf) -> {
|
||
|
serialized.chatSession = buf.readNullable(RemoteChatSession.Data::read);
|
||
|
}, (buf, entry) -> {
|
||
|
- buf.writeNullable(entry.chatSession, RemoteChatSession.Data::write);
|
||
|
+ // Paper start
|
||
|
+ RemoteChatSession.Data chatSession = entry.chatSession;
|
||
|
+ if (chatSession != null && chatSession.profilePublicKey().hasExpired()) {
|
||
|
+ chatSession = null;
|
||
|
+ }
|
||
|
+ buf.writeNullable(chatSession, RemoteChatSession.Data::write);
|
||
|
+ // Paper end
|
||
|
}),
|
||
|
UPDATE_GAME_MODE((serialized, buf) -> {
|
||
|
serialized.gameMode = GameType.byId(buf.readVarInt());
|
||
|
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||
|
index d587b2c4e39bce7e098aa9fab361230f72770658..177aac1ab10189bb5a52217e86ba5c8a535b4197 100644
|
||
|
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||
|
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||
|
@@ -294,6 +294,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
|
||
|
private final AtomicReference<Instant> lastChatTimeStamp;
|
||
|
@Nullable
|
||
|
private RemoteChatSession chatSession;
|
||
|
+ private boolean hasLoggedExpiry = false; // Paper
|
||
|
private SignedMessageChain.Decoder signedMessageDecoder;
|
||
|
private final LastSeenMessagesValidator lastSeenMessages;
|
||
|
private final MessageSignatureCache messageSignatureCache;
|
||
|
@@ -434,6 +435,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
|
||
|
this.disconnect(Component.translatable("multiplayer.disconnect.idling"), org.bukkit.event.player.PlayerKickEvent.Cause.IDLING); // Paper - kick event cause
|
||
|
}
|
||
|
|
||
|
+ // Paper start
|
||
|
+ if (!hasLoggedExpiry && this.chatSession != null && this.chatSession.profilePublicKey().data().hasExpired()) {
|
||
|
+ LOGGER.info("Player profile key for {} has expired!", this.player.getName().getString());
|
||
|
+ hasLoggedExpiry = true;
|
||
|
+ }
|
||
|
+ // Paper end
|
||
|
+
|
||
|
}
|
||
|
|
||
|
public void resetPosition() {
|
||
|
@@ -3623,6 +3631,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
|
||
|
|
||
|
private void resetPlayerChatState(RemoteChatSession session) {
|
||
|
this.chatSession = session;
|
||
|
+ this.hasLoggedExpiry = false; // Paper
|
||
|
this.signedMessageDecoder = session.createMessageDecoder(this.player.getUUID());
|
||
|
this.chatMessageChain.append((executor) -> {
|
||
|
this.player.setChatSession(session);
|