mirror of
https://github.com/LeavesMC/Leaves.git
synced 2026-01-04 15:41:31 +00:00
212 lines
12 KiB
Diff
212 lines
12 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: violetc <58360096+s-yh-china@users.noreply.github.com>
|
|
Date: Wed, 3 Aug 2022 11:20:51 +0800
|
|
Subject: [PATCH] No chat sign
|
|
|
|
|
|
diff --git a/src/main/java/io/papermc/paper/adventure/ChatProcessor.java b/src/main/java/io/papermc/paper/adventure/ChatProcessor.java
|
|
index fd5cbb45e9894b7895ea488e2b9876c0391f6f11..ceb9f13a171ec3e115ef9037f211ca7ccd7d4741 100644
|
|
--- a/src/main/java/io/papermc/paper/adventure/ChatProcessor.java
|
|
+++ b/src/main/java/io/papermc/paper/adventure/ChatProcessor.java
|
|
@@ -307,7 +307,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, ChatProcessor.this.server.getPlayerList().verifyChatTrusted(toConsoleMessage) || top.leavesmc.leaves.LeavesConfig.noChatSign ? null : "Not Secure"); // Leaves - No Not Secure
|
|
}
|
|
|
|
record ConstantFunction(net.minecraft.network.chat.Component component) implements Function<Audience, net.minecraft.network.chat.Component> {
|
|
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 d1d2fc0c57523c1abf1e8bfec913c78927c3dafc..7e0d49edb49a290b9e3ff4465b5e3c49f1aec9da 100644
|
|
--- a/src/main/java/net/minecraft/network/protocol/game/ServerboundChatPacket.java
|
|
+++ b/src/main/java/net/minecraft/network/protocol/game/ServerboundChatPacket.java
|
|
@@ -2,6 +2,8 @@ package net.minecraft.network.protocol.game;
|
|
|
|
import java.time.Instant;
|
|
import javax.annotation.Nullable;
|
|
+
|
|
+import io.netty.buffer.ByteBuf;
|
|
import net.minecraft.network.FriendlyByteBuf;
|
|
import net.minecraft.network.chat.LastSeenMessages;
|
|
import net.minecraft.network.chat.MessageSignature;
|
|
@@ -9,8 +11,14 @@ import net.minecraft.network.protocol.Packet;
|
|
|
|
public record ServerboundChatPacket(String message, Instant timeStamp, long salt, @Nullable MessageSignature signature, LastSeenMessages.Update lastSeenMessages) implements Packet<ServerGamePacketListener> {
|
|
public ServerboundChatPacket(FriendlyByteBuf buf) {
|
|
- this(buf.readUtf(256), buf.readInstant(), buf.readLong(), buf.readNullable(MessageSignature::read), new LastSeenMessages.Update(buf));
|
|
+ // Leaves start - EMPTY
|
|
+ this(buf.readUtf(256), buf.readInstant(), buf.readLong(), buf.readBytes(new byte[256]), new LastSeenMessages.Update(buf));
|
|
+ }
|
|
+
|
|
+ private ServerboundChatPacket(String message, Instant timeStamp, long salt, ByteBuf byteBuf, LastSeenMessages.Update lastSeenMessages) {
|
|
+ this(message, timeStamp, salt, (MessageSignature) null, lastSeenMessages);
|
|
}
|
|
+ // Leaves end - EMPTY
|
|
|
|
@Override
|
|
public void write(FriendlyByteBuf 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 6e0a3086da142f1c42007a16bbec7edbab17da04..776be7f58746f96fe9bf7daf11053d3958690df2 100644
|
|
--- a/src/main/java/net/minecraft/network/protocol/status/ServerStatus.java
|
|
+++ b/src/main/java/net/minecraft/network/protocol/status/ServerStatus.java
|
|
@@ -27,6 +27,7 @@ public class ServerStatus {
|
|
@Nullable
|
|
private String favicon;
|
|
private boolean enforcesSecureChat;
|
|
+ private boolean preventsChatReports; // Leaves - preventsChatReports
|
|
|
|
@Nullable
|
|
public Component getDescription() {
|
|
@@ -69,9 +70,19 @@ public class ServerStatus {
|
|
}
|
|
|
|
public boolean enforcesSecureChat() {
|
|
- return this.enforcesSecureChat;
|
|
+ return this.enforcesSecureChat && !top.leavesmc.leaves.LeavesConfig.noChatSign; // Leaves - no enforcesSecureChat
|
|
}
|
|
|
|
+ // Leaves start - add preventsChatReports
|
|
+ public boolean isPreventsChatReports() {
|
|
+ return preventsChatReports;
|
|
+ }
|
|
+
|
|
+ public void setPreventsChatReports(boolean preventsChatReports) {
|
|
+ this.preventsChatReports = preventsChatReports;
|
|
+ }
|
|
+ // Leaves end - add preventsChatReports
|
|
+
|
|
public static class Players {
|
|
private final int maxPlayers;
|
|
private final int numPlayers;
|
|
@@ -173,6 +184,10 @@ public class ServerStatus {
|
|
serverStatus.setEnforcesSecureChat(GsonHelper.getAsBoolean(jsonObject, "enforcesSecureChat"));
|
|
}
|
|
|
|
+ if (top.leavesmc.leaves.LeavesConfig.noChatSign && jsonObject.has("preventsChatReports")) {
|
|
+ serverStatus.setPreventsChatReports(GsonHelper.getAsBoolean(jsonObject, "preventsChatReports"));
|
|
+ }
|
|
+
|
|
return serverStatus;
|
|
}
|
|
|
|
@@ -196,6 +211,12 @@ public class ServerStatus {
|
|
jsonObject.addProperty("favicon", serverStatus.getFavicon());
|
|
}
|
|
|
|
+ // Leaves start - add preventsChatReports
|
|
+ if (top.leavesmc.leaves.LeavesConfig.noChatSign) {
|
|
+ jsonObject.addProperty("preventsChatReports", true);
|
|
+ }
|
|
+ // Leaves end - add preventsChatReports
|
|
+
|
|
return jsonObject;
|
|
}
|
|
}
|
|
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
|
index 9904aa8178bf64768a646dbc886cb774cb013af9..7347cb4daf40996a559c2a4dec9b22b04d07ae53 100644
|
|
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
|
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
|
@@ -1109,6 +1109,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
|
this.status.setDescription(Component.literal(this.motd));
|
|
this.status.setVersion(new ServerStatus.Version(SharedConstants.getCurrentVersion().getName(), SharedConstants.getCurrentVersion().getProtocolVersion()));
|
|
this.status.setEnforcesSecureChat(this.enforceSecureProfile());
|
|
+ this.status.setPreventsChatReports(top.leavesmc.leaves.LeavesConfig.noChatSign); // Leaves - add preventsChatReports
|
|
this.updateStatusIcon(this.status);
|
|
|
|
// Spigot start
|
|
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
|
index deafca06331e19105a1e19ae11f271b05af7b982..41d9f243c0b56c81b70e64cfd3ca05b90d45343c 100644
|
|
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
|
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
|
@@ -633,7 +633,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
|
|
|
|
@Override
|
|
public boolean enforceSecureProfile() {
|
|
- return this.getProperties().enforceSecureProfile && this.getProperties().onlineMode;
|
|
+ return this.getProperties().enforceSecureProfile && this.getProperties().onlineMode && !top.leavesmc.leaves.LeavesConfig.noChatSign; // Leaves - No Secure profile
|
|
}
|
|
|
|
protected boolean convertOldUsers() {
|
|
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
|
index 0c2255b6e2fb7752f85b0f83d4f84732758bd14d..f7870d551bf6045b649c9c8768b5ad5c8d3488ae 100644
|
|
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
|
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
|
@@ -2144,10 +2144,27 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
|
|
|
|
@Override
|
|
public void send(Packet<?> packet) {
|
|
+ // Leaves start - no ClientboundPlayerChatHeaderPacket and rebuild ClientboundPlayerChatPacket
|
|
+ if (top.leavesmc.leaves.LeavesConfig.noChatSign) {
|
|
+ if (packet instanceof ClientboundPlayerChatPacket chat) {
|
|
+ packet = new ClientboundSystemChatPacket(chat.chatType().resolve(this.player.level.registryAccess())
|
|
+ .get().decorate(chat.unsignedContent() != null ? chat.unsignedContent()
|
|
+ : Component.literal(chat.body().content())), false);
|
|
+ }
|
|
+ }
|
|
+ // Leaves end - no ClientboundPlayerChatHeaderPacket and rebuild ClientboundPlayerChatPacket
|
|
this.send(packet, (PacketSendListener) null);
|
|
}
|
|
|
|
public void send(Packet<?> packet, @Nullable PacketSendListener callbacks) {
|
|
+ // Leaves start - no ClientboundPlayerChatHeaderPacket and rebuild ClientboundPlayerChatPacket
|
|
+ if (top.leavesmc.leaves.LeavesConfig.noChatSign) {
|
|
+ if (packet instanceof ClientboundPlayerChatPacket chat && callbacks != null) {
|
|
+ this.send(chat);
|
|
+ return;
|
|
+ }
|
|
+ }
|
|
+ // Leaves end - no ClientboundPlayerChatHeaderPacket and rebuild ClientboundPlayerChatPacket
|
|
// 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 83c38c8c9fb53274f391065d947df566861a3e99..3c1ea8850c5d482d77c0bc137d72fc59dc337979 100644
|
|
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
|
|
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
|
|
@@ -1481,7 +1481,7 @@ public abstract class PlayerList {
|
|
}
|
|
|
|
public boolean verifyChatTrusted(PlayerChatMessage message) { // Paper - private -> public
|
|
- return message.hasSignature() && !message.hasExpiredServer(Instant.now());
|
|
+ return top.leavesmc.leaves.LeavesConfig.noChatSign || (message.hasSignature() && !message.hasExpiredServer(Instant.now())); // Leaves - No Not Secure
|
|
}
|
|
|
|
// CraftBukkit start
|
|
diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java
|
|
index 06bf70f13432f557a65d3dad563f9014998839a6..857b8881ba2d526ee366aa04228b72bc8d7c8c47 100644
|
|
--- a/src/main/java/top/leavesmc/leaves/LeavesConfig.java
|
|
+++ b/src/main/java/top/leavesmc/leaves/LeavesConfig.java
|
|
@@ -109,6 +109,7 @@ public final class LeavesConfig {
|
|
buddingAmethystCanPushByPiston = config.getBoolean("settings.budding-amethyst-can-push-by-piston", buddingAmethystCanPushByPiston);
|
|
spectatorDontGetAdvancement = config.getBoolean("settings.spectator-dont-get-advancement", spectatorDontGetAdvancement);
|
|
stickChangeArmorStandArmStatus = config.getBoolean("settings.stick-change-armorstand-arm-status", stickChangeArmorStandArmStatus);
|
|
+ noChatSign = config.getBoolean("settings.no-chat-sign", noChatSign);
|
|
|
|
config.set("settings.snowball-and-egg-can-knockback-player", null);
|
|
config.set("settings.player-can-edit-sign", null);
|
|
@@ -118,6 +119,7 @@ public final class LeavesConfig {
|
|
config.set("settings.budding-amethyst-can-push-by-piston", null);
|
|
config.set("settings.spectator-dont-get-advancement", null);
|
|
config.set("settings.stick-change-armorstand-arm-status", null);
|
|
+ config.set("settings.no-chat-sign", null);
|
|
}
|
|
}
|
|
|
|
@@ -211,6 +213,15 @@ public final class LeavesConfig {
|
|
private static void stickChangeArmorStandHasArm() {
|
|
stickChangeArmorStandArmStatus = getBoolean("settings.modify.stick-change-armorstand-arm-status", stickChangeArmorStandArmStatus);
|
|
}
|
|
+
|
|
+ public static boolean noChatSign = true;
|
|
+ private static void noChatSign() {
|
|
+ if (LeavesConfig.config.contains("settings.modify.no-chat-sign")) {
|
|
+ noChatSign = LeavesConfig.config.getBoolean("settings.modify.no-chat-sign");
|
|
+ LeavesConfig.config.set("settings.modify.no-chat-sign", null);
|
|
+ }
|
|
+ noChatSign = getBoolean("settings.misc.no-chat-sign", noChatSign);
|
|
+ }
|
|
|
|
public static final class WorldConfig {
|
|
|