geforkt von Mirrors/Paper
058d7c1aa3
Upstream has released updates that appear to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing Bukkit Changes: 13eb4146 SPIGOT-5217, SPIGOT-6183: Add RespawnReason to PlayerRespawnEvent CraftBukkit Changes: 5ee3419b7 SPIGOT-5217, SPIGOT-6183: Add RespawnReason to PlayerRespawnEvent Spigot Changes: 514cf03a Rebuild patches and add RespawnReason.PLUGIN to Player#respawn
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 8258764bafe5ad2d9aeaafd830aab3bb6617d2ff..9c5754ac3b00d3f0cb80ec83a2beefadee6d0a14 100644
|
|
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
|
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
|
@@ -295,6 +295,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;
|
|
@@ -435,6 +436,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() {
|
|
@@ -3624,6 +3632,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);
|