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 e4f35f91a1b1b4c42c09602c19129fe4761ac4f8..e00fa5dfc9e74bcd784fe95a7430c59d3b00c937 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -271,6 +271,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 cacf0de71e3a84a18213628764c2a7b4c0a43781..315128d7bcd73ed108f2ae6d7c05b6bec1d8773d 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -2402,6 +2402,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 f097ec5b4e3ad6b1a7c464a8cff4f8b2568fcf4f..c9fc92c2d2e9c46b3d9009105ccd36181b744a42 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