mirror of
https://github.com/BX-Team/DivineMC.git
synced 2025-12-21 15:59:23 +00:00
146 lines
9.8 KiB
Diff
146 lines
9.8 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: NONPLAYT <76615486+NONPLAYT@users.noreply.github.com>
|
|
Date: Sun, 12 May 2024 19:49:57 +0300
|
|
Subject: [PATCH] Configurable Chat message signatures
|
|
|
|
|
|
diff --git a/src/main/java/io/papermc/paper/adventure/ChatProcessor.java b/src/main/java/io/papermc/paper/adventure/ChatProcessor.java
|
|
index e83f9517b31c5171b8dc75ab63a5bfe654221c84..2a6502e4c3f2f97ba88cc0332cb1482e74810196 100644
|
|
--- a/src/main/java/io/papermc/paper/adventure/ChatProcessor.java
|
|
+++ b/src/main/java/io/papermc/paper/adventure/ChatProcessor.java
|
|
@@ -317,7 +317,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, ChatProcessor.this.server.getPlayerList().verifyChatTrusted(toConsoleMessage) ? null : "Not Secure");
|
|
+ ChatProcessor.this.server.logChatMessage(toConsoleMessage.decoratedContent(), chatType, !space.bxteam.divinemc.configuration.DivineConfig.chatMessageSignatures || ChatProcessor.this.server.getPlayerList().verifyChatTrusted(toConsoleMessage) ? null : "Not Secure"); // DivineMC - Configurable Chat message signatures
|
|
}
|
|
}
|
|
|
|
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 07df3299f1d1aa5506e1f6f146347d53e0278d9c..d23ef0e94d823e078cb373c9d33d73b154ea543e 100644
|
|
--- a/src/main/java/net/minecraft/network/protocol/game/ServerboundChatPacket.java
|
|
+++ b/src/main/java/net/minecraft/network/protocol/game/ServerboundChatPacket.java
|
|
@@ -23,7 +23,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 (space.bxteam.divinemc.configuration.DivineConfig.chatMessageSignatures) buf.writeNullable(this.signature, MessageSignature::write); // DivineMC - 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 50dc68a005490415b88780397ef6c26859596dd5..0f87ddae65ca5956b16974b2cd4c2ca756651767 100644
|
|
--- a/src/main/java/net/minecraft/network/protocol/status/ServerStatus.java
|
|
+++ b/src/main/java/net/minecraft/network/protocol/status/ServerStatus.java
|
|
@@ -22,8 +22,9 @@ public record ServerStatus(
|
|
Optional<ServerStatus.Favicon> favicon,
|
|
boolean enforcesSecureChat
|
|
) {
|
|
+ // DivineMC start - Configurable Chat message signatures
|
|
public static final Codec<ServerStatus> CODEC = RecordCodecBuilder.create(
|
|
- instance -> instance.group(
|
|
+ instance -> space.bxteam.divinemc.configuration.DivineConfig.chatMessageSignatures ? instance.group(
|
|
ComponentSerialization.CODEC.lenientOptionalFieldOf("description", CommonComponents.EMPTY).forGetter(ServerStatus::description),
|
|
ServerStatus.Players.CODEC.lenientOptionalFieldOf("players").forGetter(ServerStatus::players),
|
|
ServerStatus.Version.CODEC.lenientOptionalFieldOf("version").forGetter(ServerStatus::version),
|
|
@@ -31,7 +32,16 @@ public record ServerStatus(
|
|
Codec.BOOL.lenientOptionalFieldOf("enforcesSecureChat", Boolean.valueOf(false)).forGetter(ServerStatus::enforcesSecureChat)
|
|
)
|
|
.apply(instance, ServerStatus::new)
|
|
+ : instance.group(
|
|
+ ComponentSerialization.CODEC.lenientOptionalFieldOf("description", CommonComponents.EMPTY).forGetter(ServerStatus::description),
|
|
+ ServerStatus.Players.CODEC.lenientOptionalFieldOf("players").forGetter(ServerStatus::players),
|
|
+ ServerStatus.Version.CODEC.lenientOptionalFieldOf("version").forGetter(ServerStatus::version),
|
|
+ ServerStatus.Favicon.CODEC.lenientOptionalFieldOf("favicon").forGetter(ServerStatus::favicon),
|
|
+ Codec.BOOL.lenientOptionalFieldOf("enforcesSecureChat", Boolean.FALSE).forGetter(x -> true)
|
|
+ )
|
|
+ .apply(instance, ServerStatus::new)
|
|
);
|
|
+ // DivineMC end
|
|
|
|
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 f7db49d673853f31eacc76f5286b6a528b0390b6..40091d6c8a99a72f433520b3a703fccffadc308f 100644
|
|
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
|
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
|
@@ -704,6 +704,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
|
|
|
|
@Override
|
|
public boolean enforceSecureProfile() {
|
|
+ if (!space.bxteam.divinemc.configuration.DivineConfig.chatMessageSignatures) return false; // DivineMC - 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/network/ServerCommonPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java
|
|
index b82a72775f9de5ad65ae46a8b97f93a7ef852265..529b4c6f38e0b2dc8bd3c46059f19485b994f13b 100644
|
|
--- a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java
|
|
+++ b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java
|
|
@@ -323,10 +323,29 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
|
|
}
|
|
|
|
public void send(Packet<?> packet) {
|
|
+ // DivineMC start - Configurable Chat message signatures
|
|
+ if (!space.bxteam.divinemc.configuration.DivineConfig.chatMessageSignatures) {
|
|
+ if (packet instanceof net.minecraft.network.protocol.game.ClientboundPlayerChatPacket chat) {
|
|
+ packet = new net.minecraft.network.protocol.game.ClientboundSystemChatPacket(
|
|
+ chat.chatType().decorate(chat.unsignedContent() != null ? chat.unsignedContent() : Component.literal(chat.body().content())), false);
|
|
+
|
|
+ this.send(packet);
|
|
+ return;
|
|
+ }
|
|
+ }
|
|
+ // DivineMC end
|
|
this.send(packet, (PacketSendListener) null);
|
|
}
|
|
|
|
public void send(Packet<?> packet, @Nullable PacketSendListener callbacks) {
|
|
+ // DivineMC start - Configurable Chat message signatures
|
|
+ if (!space.bxteam.divinemc.configuration.DivineConfig.chatMessageSignatures) {
|
|
+ if (packet instanceof net.minecraft.network.protocol.game.ClientboundPlayerChatPacket chat && callbacks != null) {
|
|
+ this.send(chat);
|
|
+ return;
|
|
+ }
|
|
+ }
|
|
+ // DivineMC end
|
|
// 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 b863f6fe65c796a1d3102cc3eddb5d6c5becd3ac..10d52cd97b292a38ee6bb809cdb40554a011bb78 100644
|
|
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
|
|
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
|
|
@@ -1468,7 +1468,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 ? null : "Not Secure"); // Paper
|
|
+ this.server.logChatMessage((unsignedFunction == null ? message.decoratedContent() : unsignedFunction.apply(this.server.console)), params, !space.bxteam.divinemc.configuration.DivineConfig.chatMessageSignatures || flag ? null : "Not Secure"); // Paper // DivineMC - Configurable Chat message signatures
|
|
OutgoingChatMessage outgoingchatmessage = OutgoingChatMessage.create(message);
|
|
boolean flag1 = false;
|
|
|
|
@@ -1497,6 +1497,7 @@ public abstract class PlayerList {
|
|
}
|
|
|
|
public boolean verifyChatTrusted(PlayerChatMessage message) { // Paper - private -> public
|
|
+ if (!space.bxteam.divinemc.configuration.DivineConfig.chatMessageSignatures) return true; // DivineMC - Configurable Chat message signatures
|
|
return message.hasSignature() && !message.hasExpiredServer(Instant.now());
|
|
}
|
|
|
|
diff --git a/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java b/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java
|
|
index c176fdb912c62f355cf01ff98555a4760818aadb..33e269fd807bc41c8070bf1e9a08246f45d55d7d 100644
|
|
--- a/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java
|
|
+++ b/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java
|
|
@@ -161,4 +161,9 @@ public class DivineConfig {
|
|
sheepOptimization = getBoolean("settings.optimizations.sheep-optimization", sheepOptimization);
|
|
recipeManagerOptimization = getBoolean("settings.optimizations.recipe-manager-optimization", recipeManagerOptimization);
|
|
}
|
|
+
|
|
+ public static boolean chatMessageSignatures = true;
|
|
+ private static void chatMessageSignatures() {
|
|
+ chatMessageSignatures = getBoolean("settings.chat-message-signatures", chatMessageSignatures);
|
|
+ }
|
|
}
|