9
0
mirror of https://github.com/Winds-Studio/Leaf.git synced 2025-12-30 20:39:21 +00:00
Files
Leaf/patches/server/0077-Mirai-Configurable-chat-message-signatures.patch

209 lines
14 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: etil2jz <81570777+etil2jz@users.noreply.github.com>
Date: Tue, 2 Aug 2022 14:48:12 +0200
Subject: [PATCH] Mirai: Configurable chat message signatures
Fixed & Updated by Dreeam-qwq
Original license: GPLv3
Original project: https://github.com/Dreeam-qwq/Mirai
Original license: GPLv3
Original project: https://github.com/etil2jz/Mirai
diff --git a/src/main/java/io/papermc/paper/adventure/ChatProcessor.java b/src/main/java/io/papermc/paper/adventure/ChatProcessor.java
index c5ad3034e8298e345733340d2b6284ef05bb4713..ecee309ae3351b90c4446717f2ae210ef5936b15 100644
--- a/src/main/java/io/papermc/paper/adventure/ChatProcessor.java
+++ b/src/main/java/io/papermc/paper/adventure/ChatProcessor.java
@@ -319,7 +319,7 @@ public final class ChatProcessor {
private void sendToServer(final ChatType.Bound chatType, final @Nullable Function<Audience, net.minecraft.network.chat.Component> msgFunction) {
final PlayerChatMessage toConsoleMessage = msgFunction == null ? ChatProcessor.this.message : ChatProcessor.this.message.withUnsignedContent(msgFunction.apply(ChatProcessor.this.server.console));
- ChatProcessor.this.server.logChatMessage(toConsoleMessage.decoratedContent(), chatType, !GaleGlobalConfiguration.get().logToConsole.chat.notSecureMarker || ChatProcessor.this.server.getPlayerList().verifyChatTrusted(toConsoleMessage) ? null : "Not Secure"); // Gale - do not log Not Secure marker
+ ChatProcessor.this.server.logChatMessage(toConsoleMessage.decoratedContent(), chatType, !org.dreeam.leaf.config.modules.network.ChatMessageSignature.enabled || !GaleGlobalConfiguration.get().logToConsole.chat.notSecureMarker || ChatProcessor.this.server.getPlayerList().verifyChatTrusted(toConsoleMessage) ? null : "Not Secure"); // Gale - do not log Not Secure marker // Leaf - Mirai - Configurable chat message signatures
}
}
diff --git a/src/main/java/net/minecraft/network/protocol/game/ServerboundChatCommandPacket.java b/src/main/java/net/minecraft/network/protocol/game/ServerboundChatCommandPacket.java
index e62ae57532ddcf12b7ebca77220cb1f3bd603717..b702f707f03cba4f67657a0e7b65b28366b24b50 100644
--- a/src/main/java/net/minecraft/network/protocol/game/ServerboundChatCommandPacket.java
+++ b/src/main/java/net/minecraft/network/protocol/game/ServerboundChatCommandPacket.java
@@ -18,7 +18,7 @@ public record ServerboundChatCommandPacket(
buf.writeUtf(this.command, 256);
buf.writeInstant(this.timeStamp);
buf.writeLong(this.salt);
- this.argumentSignatures.write(buf);
+ if (org.dreeam.leaf.config.modules.network.ChatMessageSignature.enabled) this.argumentSignatures.write(buf); // Leaf - Mirai - Configurable chat message signatures
this.lastSeenMessages.write(buf);
}
diff --git a/src/main/java/net/minecraft/network/protocol/game/ServerboundChatPacket.java b/src/main/java/net/minecraft/network/protocol/game/ServerboundChatPacket.java
index 831178218ddfaa1828c00d0662b251d11bb29ff5..a3718138b956f635faba10e3e38c5285318dd36a 100644
--- a/src/main/java/net/minecraft/network/protocol/game/ServerboundChatPacket.java
+++ b/src/main/java/net/minecraft/network/protocol/game/ServerboundChatPacket.java
@@ -18,7 +18,7 @@ public record ServerboundChatPacket(String message, Instant timeStamp, long salt
buf.writeUtf(this.message, 256);
buf.writeInstant(this.timeStamp);
buf.writeLong(this.salt);
- buf.writeNullable(this.signature, MessageSignature::write);
+ if (org.dreeam.leaf.config.modules.network.ChatMessageSignature.enabled) buf.writeNullable(this.signature, MessageSignature::write); // Leaf - Mirai - Configurable chat message signatures
this.lastSeenMessages.write(buf);
}
diff --git a/src/main/java/net/minecraft/network/protocol/status/ServerStatus.java b/src/main/java/net/minecraft/network/protocol/status/ServerStatus.java
index 5ed4a3a30657ab9e748245ad34333b915e870ae2..866226b083217fef72dfa9b0271ab25ef25e21d8 100644
--- a/src/main/java/net/minecraft/network/protocol/status/ServerStatus.java
+++ b/src/main/java/net/minecraft/network/protocol/status/ServerStatus.java
@@ -22,16 +22,26 @@ public record ServerStatus(
Optional<ServerStatus.Favicon> favicon,
boolean enforcesSecureChat
) {
+ // Leaf start - Mirai - Configurable chat message signatures
public static final Codec<ServerStatus> CODEC = RecordCodecBuilder.create(
- instance -> instance.group(
- ComponentSerialization.CODEC.optionalFieldOf("description", CommonComponents.EMPTY).forGetter(ServerStatus::description),
- ServerStatus.Players.CODEC.optionalFieldOf("players").forGetter(ServerStatus::players),
- ServerStatus.Version.CODEC.optionalFieldOf("version").forGetter(ServerStatus::version),
- ServerStatus.Favicon.CODEC.optionalFieldOf("favicon").forGetter(ServerStatus::favicon),
- Codec.BOOL.optionalFieldOf("enforcesSecureChat", Boolean.valueOf(false)).forGetter(ServerStatus::enforcesSecureChat)
- )
- .apply(instance, ServerStatus::new)
+ instance ->
+ !org.dreeam.leaf.config.modules.network.ChatMessageSignature.enabled
+ ? instance.group(
+ ComponentSerialization.CODEC.optionalFieldOf("description", CommonComponents.EMPTY).forGetter(ServerStatus::description),
+ ServerStatus.Players.CODEC.optionalFieldOf("players").forGetter(ServerStatus::players),
+ ServerStatus.Version.CODEC.optionalFieldOf("version").forGetter(ServerStatus::version),
+ ServerStatus.Favicon.CODEC.optionalFieldOf("favicon").forGetter(ServerStatus::favicon),
+ Codec.BOOL.optionalFieldOf("enforcesSecureChat", Boolean.FALSE).forGetter(x -> true)
+ ).apply(instance, ServerStatus::new)
+ : instance.group(
+ ComponentSerialization.CODEC.optionalFieldOf("description", CommonComponents.EMPTY).forGetter(ServerStatus::description),
+ ServerStatus.Players.CODEC.optionalFieldOf("players").forGetter(ServerStatus::players),
+ ServerStatus.Version.CODEC.optionalFieldOf("version").forGetter(ServerStatus::version),
+ ServerStatus.Favicon.CODEC.optionalFieldOf("favicon").forGetter(ServerStatus::favicon),
+ Codec.BOOL.optionalFieldOf("enforcesSecureChat", Boolean.FALSE).forGetter(ServerStatus::enforcesSecureChat)
+ ).apply(instance, ServerStatus::new)
);
+ // Leaf end- Mirai
public static record Favicon(byte[] iconBytes) {
private static final String PREFIX = "data:image/png;base64,";
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
index a83fb872a1d186a3547c12f518e1bb0067fffaf7..fbe299dc0e2d0903075f64f199a498c3e57f07ab 100644
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
@@ -681,6 +681,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
@Override
public boolean enforceSecureProfile() {
+ if (!org.dreeam.leaf.config.modules.network.ChatMessageSignature.enabled) return false; // Leaf - Mirai - Configurable chat message signatures
DedicatedServerProperties dedicatedserverproperties = this.getProperties();
// Paper start - Add setting for proxy online mode status
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
index f8b6d0c611effe446c20e4a9dd5fd3f082571c43..5c678ed49ef4fb04d4d40c60858748576fc5e9ab 100644
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
@@ -2262,7 +2262,7 @@ public class ServerPlayer extends Player {
}
public void sendServerStatus(ServerStatus metadata) {
- this.connection.send(new ClientboundServerDataPacket(metadata.description(), metadata.favicon().map(ServerStatus.Favicon::iconBytes), metadata.enforcesSecureChat()));
+ if (!org.dreeam.leaf.config.modules.network.ChatMessageSignature.enabled) this.connection.send(new ClientboundServerDataPacket(metadata.description(), metadata.favicon().map(ServerStatus.Favicon::iconBytes), true)); else this.connection.send(new ClientboundServerDataPacket(metadata.description(), metadata.favicon().map(ServerStatus.Favicon::iconBytes), metadata.enforcesSecureChat())); // Leaf - Mirai - Configurable chat message signatures
}
@Override
diff --git a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java
index 4a6bb425902b780ddfcc505e71d4ff70ff0babb9..dd6fa971c0584fe3b0c7814cfc11850d22a71b18 100644
--- a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java
@@ -279,10 +279,29 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
}
public void send(Packet<?> packet) {
+ // Leaf start - Mirai - Configurable chat message signatures
+ if (!org.dreeam.leaf.config.modules.network.ChatMessageSignature.enabled) {
+ if (packet instanceof net.minecraft.network.protocol.game.ClientboundPlayerChatPacket chat) {
+ packet = new net.minecraft.network.protocol.game.ClientboundSystemChatPacket(
+ chat.chatType().resolve(this.player.level().registryAccess()).get().decorate(chat.unsignedContent() != null ? chat.unsignedContent() : Component.literal(chat.body().content())), false);
+
+ this.send(packet);
+ return;
+ }
+ }
+ // Leaf end - Mirai
this.send(packet, (PacketSendListener) null);
}
public void send(Packet<?> packet, @Nullable PacketSendListener callbacks) {
+ // Leaf start - Mirai - Configurable chat message signatures
+ if (!org.dreeam.leaf.config.modules.network.ChatMessageSignature.enabled) {
+ if (packet instanceof net.minecraft.network.protocol.game.ClientboundPlayerChatPacket chat && callbacks != null) {
+ this.send(chat);
+ return;
+ }
+ }
+ // Leaf end - Mirai
// CraftBukkit start
if (packet == null || this.processedDisconnect) { // Spigot
return;
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
index 6240ca2e2a9076398c5404679d363b019f493943..82072ff8ad54a98d0962d7d5448ae2b9285a1445 100644
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
@@ -1534,7 +1534,7 @@ public abstract class PlayerList {
// Paper end
boolean flag = this.verifyChatTrusted(message);
- this.server.logChatMessage((unsignedFunction == null ? message.decoratedContent() : unsignedFunction.apply(this.server.console)), params, flag || !GaleGlobalConfiguration.get().logToConsole.chat.notSecureMarker ? null : "Not Secure"); // Paper // Gale - do not log Not Secure marker
+ this.server.logChatMessage((unsignedFunction == null ? message.decoratedContent() : unsignedFunction.apply(this.server.console)), params, !org.dreeam.leaf.config.modules.network.ChatMessageSignature.enabled || flag || !GaleGlobalConfiguration.get().logToConsole.chat.notSecureMarker ? null : "Not Secure"); // Paper // Gale - do not log Not Secure marker // Leaf - Mirai - Configurable chat message signatures
OutgoingChatMessage outgoingchatmessage = OutgoingChatMessage.create(message);
boolean flag1 = false;
@@ -1563,6 +1563,7 @@ public abstract class PlayerList {
}
public boolean verifyChatTrusted(PlayerChatMessage message) { // Paper - private -> public
+ if (!org.dreeam.leaf.config.modules.network.ChatMessageSignature.enabled) return true; // Leaf - Mirai - Configurable chat message signatures
return message.hasSignature() && !message.hasExpiredServer(Instant.now());
}
diff --git a/src/main/java/org/dreeam/leaf/config/modules/network/ChatMessageSignature.java b/src/main/java/org/dreeam/leaf/config/modules/network/ChatMessageSignature.java
new file mode 100644
index 0000000000000000000000000000000000000000..81172f9b01d91dedb8830cf3623f541b51ca3c0f
--- /dev/null
+++ b/src/main/java/org/dreeam/leaf/config/modules/network/ChatMessageSignature.java
@@ -0,0 +1,32 @@
+package org.dreeam.leaf.config.modules.network;
+
+import com.electronwill.nightconfig.core.file.CommentedFileConfig;
+import org.dreeam.leaf.config.ConfigInfo;
+import org.dreeam.leaf.config.EnumConfigCategory;
+import org.dreeam.leaf.config.IConfigModule;
+
+public class ChatMessageSignature implements IConfigModule {
+
+ @Override
+ public EnumConfigCategory getCategory() {
+ return EnumConfigCategory.NETWORK;
+ }
+
+ @Override
+ public String getBaseName() {
+ return "chat_message_signature";
+ }
+
+ @ConfigInfo(baseName = "enabled")
+ public static boolean enabled = true;
+
+ @Override
+ public void onLoaded(CommentedFileConfig config) {
+ config.setComment("network.chat_message_signature", """
+ Whether or not enable chat message signature,
+ disable will prevent players to report chat messages.
+ And also disables the popup when joining a server without
+ 'secure chat', such as offline-mode servers.
+ """);
+ }
+}