mirror of
https://github.com/LeavesMC/Leaves.git
synced 2026-01-03 22:26:12 +00:00
230 lines
14 KiB
Diff
230 lines
14 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 4d9bc4a62ebae0f3707900503576c64733de639f..95b8bd748abe3dcb05a9bd05e45391934a0b2771 100644
|
|
--- a/src/main/java/io/papermc/paper/adventure/ChatProcessor.java
|
|
+++ b/src/main/java/io/papermc/paper/adventure/ChatProcessor.java
|
|
@@ -353,7 +353,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
|
|
}
|
|
}
|
|
|
|
diff --git a/src/main/java/net/minecraft/commands/arguments/ArgumentSignatures.java b/src/main/java/net/minecraft/commands/arguments/ArgumentSignatures.java
|
|
index 72a8aa676836fcb3b4578689d16af65e18f55bbe..47a06936a4727c6209a7ad0fb8fb10995d36513c 100644
|
|
--- a/src/main/java/net/minecraft/commands/arguments/ArgumentSignatures.java
|
|
+++ b/src/main/java/net/minecraft/commands/arguments/ArgumentSignatures.java
|
|
@@ -13,10 +13,17 @@ public record ArgumentSignatures(List<ArgumentSignatures.Entry> entries) {
|
|
private static final int MAX_ARGUMENT_COUNT = 8;
|
|
private static final int MAX_ARGUMENT_NAME_LENGTH = 16;
|
|
|
|
+ // Leaves start - no chat sign
|
|
public ArgumentSignatures(FriendlyByteBuf buf) {
|
|
- this(buf.readCollection(FriendlyByteBuf.limitValue(ArrayList::new, 8), ArgumentSignatures.Entry::new));
|
|
+ this(readSign(buf));
|
|
}
|
|
|
|
+ private static List<ArgumentSignatures.Entry> readSign(FriendlyByteBuf buf) {
|
|
+ var entries = buf.readCollection(FriendlyByteBuf.limitValue(ArrayList::new, 8), Entry::new);
|
|
+ return top.leavesmc.leaves.LeavesConfig.noChatSign ? List.of() : entries;
|
|
+ }
|
|
+ // Leaves end - no chat sign
|
|
+
|
|
@Nullable
|
|
public MessageSignature get(String argumentName) {
|
|
for(ArgumentSignatures.Entry entry : this.entries) {
|
|
diff --git a/src/main/java/net/minecraft/network/FriendlyByteBuf.java b/src/main/java/net/minecraft/network/FriendlyByteBuf.java
|
|
index 9938bb90bef84cf784f9a1ceb02a1a45aa8b48a1..a7aa7fe8f27b7650415498d9540138a2fabc8233 100644
|
|
--- a/src/main/java/net/minecraft/network/FriendlyByteBuf.java
|
|
+++ b/src/main/java/net/minecraft/network/FriendlyByteBuf.java
|
|
@@ -67,6 +67,7 @@ import net.minecraft.nbt.NbtIo;
|
|
import net.minecraft.nbt.Tag;
|
|
import net.minecraft.network.chat.Component;
|
|
import net.minecraft.network.chat.MutableComponent;
|
|
+import net.minecraft.network.protocol.status.ServerStatus;
|
|
import net.minecraft.resources.ResourceKey;
|
|
import net.minecraft.resources.ResourceLocation;
|
|
import net.minecraft.util.Crypt;
|
|
@@ -154,6 +155,15 @@ public class FriendlyByteBuf extends ByteBuf {
|
|
public <T> void writeJsonWithCodec(Codec<T> codec, T value) {
|
|
DataResult<JsonElement> dataresult = codec.encodeStart(JsonOps.INSTANCE, value);
|
|
|
|
+ // Leaves start - no chat sign
|
|
+ if (codec == ServerStatus.CODEC) {
|
|
+ JsonElement element = Util.getOrThrow(dataresult, string -> new EncoderException("Failed to encode: " + string + " " + value));
|
|
+ element.getAsJsonObject().addProperty("preventsChatReports", top.leavesmc.leaves.LeavesConfig.noChatSign);
|
|
+
|
|
+ this.writeUtf(GSON.toJson(element));
|
|
+ }
|
|
+ // Leaves end - no chat sign
|
|
+
|
|
this.writeUtf(FriendlyByteBuf.GSON.toJson((JsonElement) Util.getOrThrow(dataresult, (s) -> {
|
|
return new EncoderException("Failed to encode: " + s + " " + value);
|
|
})));
|
|
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..50c1b722231c2add72663c475ae9068a35bfd524 100644
|
|
--- a/src/main/java/net/minecraft/network/protocol/game/ServerboundChatPacket.java
|
|
+++ b/src/main/java/net/minecraft/network/protocol/game/ServerboundChatPacket.java
|
|
@@ -8,10 +8,18 @@ import net.minecraft.network.chat.MessageSignature;
|
|
import net.minecraft.network.protocol.Packet;
|
|
|
|
public record ServerboundChatPacket(String message, Instant timeStamp, long salt, @Nullable MessageSignature signature, LastSeenMessages.Update lastSeenMessages) implements Packet<ServerGamePacketListener> {
|
|
+ // Leaves start - no chat sign
|
|
public ServerboundChatPacket(FriendlyByteBuf buf) {
|
|
- this(buf.readUtf(256), buf.readInstant(), buf.readLong(), buf.readNullable(MessageSignature::read), new LastSeenMessages.Update(buf));
|
|
+ this(buf.readUtf(256), buf.readInstant(), buf.readLong(), buf.readNullable(ServerboundChatPacket::readSign), new LastSeenMessages.Update(buf));
|
|
}
|
|
|
|
+ private static MessageSignature readSign(FriendlyByteBuf buf) {
|
|
+ byte[] bs = new byte[256];
|
|
+ buf.readBytes(bs);
|
|
+ return top.leavesmc.leaves.LeavesConfig.noChatSign ? null : new MessageSignature(bs);
|
|
+ }
|
|
+ // Leaves end - no chat sign
|
|
+
|
|
@Override
|
|
public void write(FriendlyByteBuf buf) {
|
|
buf.writeUtf(this.message, 256);
|
|
diff --git a/src/main/java/net/minecraft/network/protocol/game/ServerboundChatSessionUpdatePacket.java b/src/main/java/net/minecraft/network/protocol/game/ServerboundChatSessionUpdatePacket.java
|
|
index 9d6db4a378036559efab91c8b7dcf2a6b0c2cce6..2c349dc502ce275a8215766933f4855f1c7bd726 100644
|
|
--- a/src/main/java/net/minecraft/network/protocol/game/ServerboundChatSessionUpdatePacket.java
|
|
+++ b/src/main/java/net/minecraft/network/protocol/game/ServerboundChatSessionUpdatePacket.java
|
|
@@ -16,6 +16,11 @@ public record ServerboundChatSessionUpdatePacket(RemoteChatSession.Data chatSess
|
|
|
|
@Override
|
|
public void handle(ServerGamePacketListener listener) {
|
|
+ // Leaves start - no chat report
|
|
+ if (top.leavesmc.leaves.LeavesConfig.noChatSign) {
|
|
+ return;
|
|
+ }
|
|
+ // Leaves end - no chat report
|
|
listener.handleChatSessionUpdate(this);
|
|
}
|
|
}
|
|
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 e6cc2bab1fde2e8c1394772b99201ea8d7eb8057..9545760dab2ab7e2a85c00a8b0847b3c4c4c6857 100644
|
|
--- a/src/main/java/net/minecraft/network/protocol/status/ServerStatus.java
|
|
+++ b/src/main/java/net/minecraft/network/protocol/status/ServerStatus.java
|
|
@@ -26,18 +26,14 @@ public record ServerStatus(Component description, Optional<ServerStatus.Players>
|
|
private static final String PREFIX = "data:image/png;base64,";
|
|
public static final Codec<ServerStatus.Favicon> CODEC = Codec.STRING.comapFlatMap((uri) -> {
|
|
if (!uri.startsWith("data:image/png;base64,")) {
|
|
- return DataResult.error(() -> {
|
|
- return "Unknown format";
|
|
- });
|
|
+ return DataResult.error("Unknown format");
|
|
} else {
|
|
try {
|
|
String string = uri.substring("data:image/png;base64,".length()).replaceAll("\n", "");
|
|
byte[] bs = Base64.getDecoder().decode(string.getBytes(StandardCharsets.UTF_8));
|
|
return DataResult.success(new ServerStatus.Favicon(bs));
|
|
} catch (IllegalArgumentException var3) {
|
|
- return DataResult.error(() -> {
|
|
- return "Malformed base64 server icon";
|
|
- });
|
|
+ return DataResult.error("Malformed base64 server icon");
|
|
}
|
|
}
|
|
}, (iconBytes) -> {
|
|
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
|
index cd0f05aa0f2720d450ee1b975648e73dc22ac9a5..90d284192f27a69f6694544c885c3e4d393081bb 100644
|
|
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
|
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
|
@@ -640,7 +640,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 2d8488b9aa088b6d5f0c7e557b8ad0b29bc4cd88..3e501a731eacda1418009cd21a59cf3da1747848 100644
|
|
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
|
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
|
@@ -2132,10 +2132,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 df9f4c0dd69ccd9d02683c1a6302d0b537c64804..f0fd2302519290bade97224373844de7a59a03dd 100644
|
|
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
|
|
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
|
|
@@ -1434,7 +1434,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 adee0164aaa55ebdef2281d8e46682da1ac88278..937e84214223e978b3b6bc6107974c61e2d0f558 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);
|
|
}
|
|
}
|
|
|
|
@@ -215,6 +217,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 {
|
|
|