From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Martijn Muijsers Date: Tue, 29 Nov 2022 15:33:32 +0100 Subject: [PATCH] Do not process chat/commands before player has joined License: MIT (https://opensource.org/licenses/MIT) Gale - https://galemc.org This patch is based on the following patch: "Do not process chat/commands before player has joined" By: chickeneer As part of: EmpireCraft (https://github.com/starlis/empirecraft) Licensed under: MIT (https://opensource.org/licenses/MIT) diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java index f77f4cbdca0b22e0c24acbf08425e2e83ddef449..e7ec98be67ab50c06d90a1bccd023fcd2a2fee93 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -270,6 +270,7 @@ public class ServerPlayer extends Player { public boolean joining = true; public boolean sentListPacket = false; public boolean supressTrackerForLogin = false; // Paper + public boolean didPlayerJoinEvent = false; // Gale - EMC - do not process chat/commands before player has joined public Integer clientViewDistance; // CraftBukkit end public boolean isRealPlayer; // Paper diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java index 9b028f8a5d0bcda9ea1bc28b65587627e31e78b1..ae50f9e62f1275d0cff6f017ec23e4ebcad46a1d 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -2343,6 +2343,10 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic if (this.player.isRemoved() || this.player.getChatVisibility() == ChatVisiblity.HIDDEN) { // CraftBukkit - dead men tell no tales this.send(new ClientboundSystemChatPacket(PaperAdventure.asAdventure(Component.translatable("chat.disabled.options").withStyle(ChatFormatting.RED)), false)); // Paper - Adventure return Optional.empty(); + // Gale start - EMC - do not process chat/commands before player has joined + } else if (!player.didPlayerJoinEvent) { + return Optional.empty(); + // Gale end - EMC - do not process chat/commands before player has joined } else { this.player.resetLastActionTime(); return optional; diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java index 683b5d78f9e3dc34e40c54683f64be32317797ac..e0e27beebffdbb8fa534899b451cc59f275faef0 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -342,6 +342,8 @@ public abstract class PlayerList { return; } + player.didPlayerJoinEvent = true; // Gale - EMC - do not process chat/commands before player has joined + final net.kyori.adventure.text.Component jm = playerJoinEvent.joinMessage(); if (jm != null && !jm.equals(net.kyori.adventure.text.Component.empty())) { // Paper - Adventure