112 lines
6.0 KiB
Diff
112 lines
6.0 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] Configurable chat message signatures
|
|
|
|
|
|
diff --git a/src/main/java/dev/etil/mirai/MiraiConfig.java b/src/main/java/dev/etil/mirai/MiraiConfig.java
|
|
index 3719d421ea6a959a6bae512cf9860085c0679c27..40755fa049ab889f31f626cd04eca4799197de13 100644
|
|
--- a/src/main/java/dev/etil/mirai/MiraiConfig.java
|
|
+++ b/src/main/java/dev/etil/mirai/MiraiConfig.java
|
|
@@ -237,4 +237,12 @@ public class MiraiConfig {
|
|
"Whether or not Math.hypot should be replaced by a faster version.");
|
|
}
|
|
|
|
+ public static boolean chatMessageSignatures;
|
|
+ private static void chatreport() {
|
|
+ chatMessageSignatures = getBoolean("disable-chat-reports", false,
|
|
+ "Whether or not players should be able to report chat messages.",
|
|
+ "It also disables the popup when joining a server without",
|
|
+ "'secure chat', such as offline-mode servers.");
|
|
+ }
|
|
+
|
|
}
|
|
\ No newline at end of file
|
|
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 11183b4a39b9897e1b1067eb2a3556d2b1d90f52..df109dd1b2d252f82096d02e57596fdd4076771f 100644
|
|
--- a/src/main/java/net/minecraft/network/protocol/status/ServerStatus.java
|
|
+++ b/src/main/java/net/minecraft/network/protocol/status/ServerStatus.java
|
|
@@ -78,6 +78,7 @@ public class ServerStatus {
|
|
}
|
|
|
|
public boolean enforcesSecureChat() {
|
|
+ if (dev.etil.mirai.MiraiConfig.chatMessageSignatures) return true; // Mirai - configurable chat message signatures
|
|
return this.enforcesSecureChat;
|
|
}
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
|
index 54a53a65130919b68f9cd8fd2d580fd8b9d2dfb3..7d7d88d2f920446a98c63229a351dc0dc07d454b 100644
|
|
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
|
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
|
@@ -646,6 +646,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
|
|
|
|
@Override
|
|
public boolean enforceSecureProfile() {
|
|
+ if (dev.etil.mirai.MiraiConfig.chatMessageSignatures) return false; // Mirai - configurable chat message signatures
|
|
return this.getProperties().enforceSecureProfile && this.getProperties().onlineMode;
|
|
}
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
|
index ed98aab3df24bbefc1adc0e21ec7f1deab8d8aa1..e4abcd2f58dabe919a41162470386a6322f91f05 100644
|
|
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
|
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
|
@@ -2165,10 +2165,34 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
|
|
|
|
@Override
|
|
public void send(Packet<?> packet) {
|
|
+ // Mirai start - configurable chat message signatures
|
|
+ if (dev.etil.mirai.MiraiConfig.chatMessageSignatures) {
|
|
+ if (packet instanceof net.minecraft.network.protocol.game.ClientboundPlayerChatHeaderPacket) {
|
|
+ return;
|
|
+ } else if (packet instanceof net.minecraft.network.protocol.game.ClientboundPlayerChatPacket chat) {
|
|
+ packet = new ClientboundSystemChatPacket(chat.chatType().resolve(this.player.level.registryAccess())
|
|
+ .get().decorate(chat.message().serverContent()), false);
|
|
+
|
|
+
|
|
+ this.send(packet);
|
|
+ return;
|
|
+ }
|
|
+ }
|
|
+ // Mirai end
|
|
this.send(packet, (PacketSendListener) null);
|
|
}
|
|
|
|
public void send(Packet<?> packet, @Nullable PacketSendListener callbacks) {
|
|
+ // Mirai start - configurable chat message signatures
|
|
+ if (dev.etil.mirai.MiraiConfig.chatMessageSignatures) {
|
|
+ if (packet instanceof net.minecraft.network.protocol.game.ClientboundPlayerChatHeaderPacket) {
|
|
+ return;
|
|
+ } else if (packet instanceof net.minecraft.network.protocol.game.ClientboundPlayerChatPacket chat && callbacks != null) {
|
|
+ this.send(chat);
|
|
+ return;
|
|
+ }
|
|
+ }
|
|
+ // Mirai 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 e5d8d85bfa84c52208dbf4efa1579286d2b22e75..1b0e26afd4cbc8daec655513fe78933abb4a2151 100644
|
|
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
|
|
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
|
|
@@ -1489,6 +1489,7 @@ public abstract class PlayerList {
|
|
}
|
|
|
|
public boolean verifyChatTrusted(PlayerChatMessage message, ChatSender profile) { // Paper - private -> public
|
|
+ if (dev.etil.mirai.MiraiConfig.chatMessageSignatures) return true; // Mirai - configurable chat message signatures
|
|
return !message.hasExpiredServer(Instant.now()) && message.verify(profile);
|
|
}
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java
|
|
index 18c4f2eeb6bb427c1314608fc6a81e4642d92888..d9ea767bac44e47d5e580d2264cbdb4c8edb4fff 100644
|
|
--- a/src/main/java/net/minecraft/world/entity/player/Player.java
|
|
+++ b/src/main/java/net/minecraft/world/entity/player/Player.java
|
|
@@ -1516,6 +1516,7 @@ public abstract class Player extends LivingEntity {
|
|
|
|
@Nullable
|
|
public ProfilePublicKey getProfilePublicKey() {
|
|
+ if (dev.etil.mirai.MiraiConfig.chatMessageSignatures) return null; // Mirai - configurable chat message signatures
|
|
return this.profilePublicKey;
|
|
}
|
|
|