9
0
mirror of https://github.com/BX-Team/DivineMC.git synced 2025-12-23 16:59:24 +00:00

attempt to fix chat signing, closes #15

This commit is contained in:
NONPLAYT
2024-05-27 00:06:29 +03:00
parent da772d5814
commit 6507845f18
7 changed files with 186 additions and 156 deletions

View File

@@ -36,9 +36,9 @@ Global settings affect all worlds on the server as well as the core server funct
- **description**: Sets whether the server should dump all configuration values to the server log on startup (this maybe not working) - **description**: Sets whether the server should dump all configuration values to the server log on startup (this maybe not working)
### settings ### settings
- #### chat-message-signatures - #### no-chat-sign
- **default**: true - **default**: true
- **description**: If the value is set to false, then sending reports about player messages will not be possible. - **description**: If the value is set to true, then chat reports and chat signing in chat will not be available.
- #### async-pathfinding - #### async-pathfinding
- ##### enable - ##### enable
- **default**: true - **default**: true

View File

@@ -1,145 +0,0 @@
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);
+ }
}

View File

@@ -0,0 +1,175 @@
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] 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 e83f9517b31c5171b8dc75ab63a5bfe654221c84..d498a986bcdb0b21e1b35c2fb19d8a445090105d 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, ChatProcessor.this.server.getPlayerList().verifyChatTrusted(toConsoleMessage) || space.bxteam.divinemc.configuration.DivineConfig.noChatSign ? null : "Not Secure"); // DivineMC - No chat sign
}
}
diff --git a/src/main/java/net/minecraft/commands/arguments/ArgumentSignatures.java b/src/main/java/net/minecraft/commands/arguments/ArgumentSignatures.java
index 479e6e2aa88a22ef7f8fccb06add6806f5b71d9d..370543f7f710971a37a0d05da8ef484a91d79f01 100644
--- a/src/main/java/net/minecraft/commands/arguments/ArgumentSignatures.java
+++ b/src/main/java/net/minecraft/commands/arguments/ArgumentSignatures.java
@@ -14,9 +14,16 @@ public record ArgumentSignatures(List<ArgumentSignatures.Entry> entries) {
private static final int MAX_ARGUMENT_NAME_LENGTH = 16;
public ArgumentSignatures(FriendlyByteBuf buf) {
- this(buf.readCollection(FriendlyByteBuf.limitValue(ArrayList::new, 8), ArgumentSignatures.Entry::new));
+ this(readSign(buf)); // DivineMC - No chat sign
}
+ // DivineMC start - No chat sign
+ private static List<ArgumentSignatures.Entry> readSign(FriendlyByteBuf buf) {
+ var entries = buf.readCollection(FriendlyByteBuf.limitValue(ArrayList::new, 8), Entry::new);
+ return space.bxteam.divinemc.configuration.DivineConfig.noChatSign ? List.of() : entries;
+ }
+ // DivineMC end
+
public void write(FriendlyByteBuf buf) {
buf.writeCollection(this.entries, (buf2, entry) -> entry.write(buf2));
}
diff --git a/src/main/java/net/minecraft/network/FriendlyByteBuf.java b/src/main/java/net/minecraft/network/FriendlyByteBuf.java
index aafeb9c61ddba6a8671f0238eda47b227619f1af..9d5a4b75728e51b23dfd769b2d1c91312fc5eddb 100644
--- a/src/main/java/net/minecraft/network/FriendlyByteBuf.java
+++ b/src/main/java/net/minecraft/network/FriendlyByteBuf.java
@@ -129,6 +129,16 @@ public class FriendlyByteBuf extends ByteBuf {
// Paper end - Adventure; add max length parameter
DataResult<JsonElement> dataresult = codec.encodeStart(JsonOps.INSTANCE, value);
+ // DivineMC start - No chat sign
+ if (codec == net.minecraft.network.protocol.status.ServerStatus.CODEC) {
+ JsonElement element = dataresult.getOrThrow(string -> new EncoderException("Failed to encode: " + string + " " + value));
+ element.getAsJsonObject().addProperty("preventsChatReports", space.bxteam.divinemc.configuration.DivineConfig.noChatSign);
+
+ this.writeUtf(GSON.toJson(element));
+ return;
+ }
+ // DivineMC end
+
this.writeUtf(FriendlyByteBuf.GSON.toJson((JsonElement) dataresult.getOrThrow((s) -> {
return new EncoderException("Failed to encode: " + s + " " + String.valueOf(value));
})), maxLength); // Paper - Adventure; add max length parameter
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..02fafc64d6178f2ae0be36b38ed5de7e0c31448c 100644
--- a/src/main/java/net/minecraft/network/protocol/game/ServerboundChatPacket.java
+++ b/src/main/java/net/minecraft/network/protocol/game/ServerboundChatPacket.java
@@ -16,7 +16,7 @@ public record ServerboundChatPacket(String message, Instant timeStamp, long salt
);
private 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)); // DivineMC - No chat sign
}
private void write(FriendlyByteBuf buf) {
@@ -27,6 +27,14 @@ public record ServerboundChatPacket(String message, Instant timeStamp, long salt
this.lastSeenMessages.write(buf);
}
+ // DivineMC start - No chat sign
+ private static MessageSignature readSign(FriendlyByteBuf buf) {
+ byte[] bs = new byte[256];
+ buf.readBytes(bs);
+ return space.bxteam.divinemc.configuration.DivineConfig.noChatSign ? null : new MessageSignature(bs);
+ }
+ // DivineMC end
+
@Override
public PacketType<ServerboundChatPacket> type() {
return GamePacketTypes.SERVERBOUND_CHAT;
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 5705cb920084b775cce4b361683b32c6b6e003ed..9c031dd0fa279a23405e5b7d77e4c11e5a762684 100644
--- a/src/main/java/net/minecraft/network/protocol/game/ServerboundChatSessionUpdatePacket.java
+++ b/src/main/java/net/minecraft/network/protocol/game/ServerboundChatSessionUpdatePacket.java
@@ -26,6 +26,11 @@ public record ServerboundChatSessionUpdatePacket(RemoteChatSession.Data chatSess
@Override
public void handle(ServerGamePacketListener listener) {
+ // DivineMC start - No chat sign
+ if (space.bxteam.divinemc.configuration.DivineConfig.noChatSign) {
+ return;
+ }
+ // DivineMC end
listener.handleChatSessionUpdate(this);
}
}
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
index 3a4ce59ca5c2bae801a4f520650dad012357812f..d0b2491da0f072d9be53ad738549c0a962bcadec 100644
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
@@ -709,7 +709,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
// Paper start - Add setting for proxy online mode status
return dedicatedserverproperties.enforceSecureProfile
&& io.papermc.paper.configuration.GlobalConfiguration.get().proxies.isProxyOnlineMode()
- && this.services.canValidateProfileKeys();
+ && this.services.canValidateProfileKeys() && !DivineConfig.noChatSign; // DivineMC - No chat sign
// Paper end - 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..d0d85ceb29ef0ee29f68e2a7b37a8a0cc3772f48 100644
--- a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java
+++ b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java
@@ -323,10 +323,24 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack
}
public void send(Packet<?> packet) {
+ // DivineMC start - No chat sign
+ if (space.bxteam.divinemc.configuration.DivineConfig.noChatSign) {
+ if (this instanceof ServerGamePacketListenerImpl && 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);
+ }
+ }
+ // DivineMC end
this.send(packet, (PacketSendListener) null);
}
public void send(Packet<?> packet, @Nullable PacketSendListener callbacks) {
+ // DivineMC start - No chat sign
+ if (space.bxteam.divinemc.configuration.DivineConfig.noChatSign) {
+ if (packet instanceof net.minecraft.network.protocol.game.ClientboundPlayerChatPacket chat && callbacks != null) {
+ callbacks = null;
+ }
+ }
+ // 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..a8cd8e8b952ea41167156f07ac2d5dcca3325060 100644
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
@@ -1497,7 +1497,7 @@ public abstract class PlayerList {
}
public boolean verifyChatTrusted(PlayerChatMessage message) { // Paper - private -> public
- return message.hasSignature() && !message.hasExpiredServer(Instant.now());
+ return space.bxteam.divinemc.configuration.DivineConfig.noChatSign || (message.hasSignature() && !message.hasExpiredServer(Instant.now())); // DivineMC - No chat sign
}
// CraftBukkit start
diff --git a/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java b/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java
index c176fdb912c62f355cf01ff98555a4760818aadb..a4c264cbc0039c9f9f9b11d7a332822480176471 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 noChatSign = true;
+ private static void chatMessageSignatures() {
+ noChatSign = getBoolean("settings.no-chat-sign", noChatSign);
+ }
}

View File

@@ -983,7 +983,7 @@ index a57ea225fb9951421d2026928c26f351d1b58cca..9fa1c5d6a8f313cd3d0f99131da60b64
private void logTickMethodTime(long tickStartTime) { private void logTickMethodTime(long tickStartTime) {
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
index 66266f4eb3f7322afd743e15d384d3a617c7084d..06296e18d1edfda53ffa19d04f4d1b6d2cd84483 100644 index d0b2491da0f072d9be53ad738549c0a962bcadec..7140adf3dcace6f082540663e2cfdf4773a9c0e5 100644
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
@@ -64,9 +64,6 @@ import org.apache.logging.log4j.Level; @@ -64,9 +64,6 @@ import org.apache.logging.log4j.Level;
@@ -996,7 +996,7 @@ index 66266f4eb3f7322afd743e15d384d3a617c7084d..06296e18d1edfda53ffa19d04f4d1b6d
import org.bukkit.event.server.ServerCommandEvent; import org.bukkit.event.server.ServerCommandEvent;
import org.bukkit.craftbukkit.util.Waitable; // Paper import org.bukkit.craftbukkit.util.Waitable; // Paper
import org.bukkit.event.server.RemoteServerCommandEvent; import org.bukkit.event.server.RemoteServerCommandEvent;
@@ -844,21 +841,9 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface @@ -843,21 +840,9 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
} }
// Paper start // Paper start
command.set(event.getCommand()); command.set(event.getCommand());
@@ -1060,7 +1060,7 @@ index 7924e3c597164f71056cd58dd167ee8b1d41b9c3..90aa52efeb8ae92bf981a973415d1c11
entity.postTick(); // CraftBukkit entity.postTick(); // CraftBukkit
} else { entity.inactiveTick(); } // Paper - EAR 2 } else { entity.inactiveTick(); } // Paper - EAR 2
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
index 10d52cd97b292a38ee6bb809cdb40554a011bb78..5a5ab84a944693efa10a7deb31bd1c59a445af1e 100644 index a8cd8e8b952ea41167156f07ac2d5dcca3325060..d2fba246a563aa1cff639129e3953439b985986a 100644
--- a/src/main/java/net/minecraft/server/players/PlayerList.java --- a/src/main/java/net/minecraft/server/players/PlayerList.java
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java
@@ -1,6 +1,5 @@ @@ -1,6 +1,5 @@

View File

@@ -722,12 +722,12 @@ index 226ff7c6048b510be2e71ecc5d5ff3581092aa5e..3e15ff8170d49577c0fff1e0d6abac25
file = world.getChunkSource().chunkMap.regionFileCache.getRegionFile(chunkPos, false); file = world.getChunkSource().chunkMap.regionFileCache.getRegionFile(chunkPos, false);
} catch (java.io.IOException ex) { } catch (java.io.IOException ex) {
diff --git a/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java b/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java diff --git a/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java b/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java
index 33e269fd807bc41c8070bf1e9a08246f45d55d7d..e20d608bf9e86a263ca7c80203fae4a3ce7cc71a 100644 index a4c264cbc0039c9f9f9b11d7a332822480176471..e1e9a1749266546359d722f6e6b801bbddf76060 100644
--- a/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java --- a/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java
+++ b/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java +++ b/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java
@@ -166,4 +166,15 @@ public class DivineConfig { @@ -166,4 +166,15 @@ public class DivineConfig {
private static void chatMessageSignatures() { private static void chatMessageSignatures() {
chatMessageSignatures = getBoolean("settings.chat-message-signatures", chatMessageSignatures); noChatSign = getBoolean("settings.no-chat-sign", noChatSign);
} }
+ +
+ public static int linearFlushFrequency = 10; + public static int linearFlushFrequency = 10;

View File

@@ -110,7 +110,7 @@ index 18a1b4325cac81b040596071dab99ef9bf6f3142..445dc3ca4586b39ccc2cebe922455d9f
for (BlockPattern.BlockPatternMatch shapedetector_shapedetectorcollection = this.findExitPortal(); shapedetector_shapedetectorcollection != null; shapedetector_shapedetectorcollection = this.findExitPortal()) { for (BlockPattern.BlockPatternMatch shapedetector_shapedetectorcollection = this.findExitPortal(); shapedetector_shapedetectorcollection != null; shapedetector_shapedetectorcollection = this.findExitPortal()) {
for (int i = 0; i < this.exitPortalPattern.getWidth(); ++i) { for (int i = 0; i < this.exitPortalPattern.getWidth(); ++i) {
diff --git a/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java b/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java diff --git a/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java b/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java
index 228703c008c1fd549c33af935c9b29e5587961f6..18ab5de56a41e4d768e1946051f81c8cc4fb9556 100644 index e2eac66da19b1e9bc5f776d85b487d769121a9b3..579b189b6d1752f8a51ddc13f6d4390517541661 100644
--- a/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java --- a/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java
+++ b/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java +++ b/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java
@@ -156,10 +156,12 @@ public class DivineConfig { @@ -156,10 +156,12 @@ public class DivineConfig {
@@ -125,7 +125,7 @@ index 228703c008c1fd549c33af935c9b29e5587961f6..18ab5de56a41e4d768e1946051f81c8c
+ optimizedDragonRespawn = getBoolean("settings.optimizations.optimized-dragon-respawn", optimizedDragonRespawn); + optimizedDragonRespawn = getBoolean("settings.optimizations.optimized-dragon-respawn", optimizedDragonRespawn);
} }
public static boolean chatMessageSignatures = true; public static boolean noChatSign = true;
diff --git a/src/main/java/space/bxteam/divinemc/util/carpetams/BlockPatternHelper.java b/src/main/java/space/bxteam/divinemc/util/carpetams/BlockPatternHelper.java diff --git a/src/main/java/space/bxteam/divinemc/util/carpetams/BlockPatternHelper.java b/src/main/java/space/bxteam/divinemc/util/carpetams/BlockPatternHelper.java
new file mode 100644 new file mode 100644
index 0000000000000000000000000000000000000000..1bf8f3d814d513ea2806bba9c26d207d14533cbd index 0000000000000000000000000000000000000000..1bf8f3d814d513ea2806bba9c26d207d14533cbd

View File

@@ -281,7 +281,7 @@ index 35820670837376bcad8891241724d5b946fbd31f..74a666a45289f0902b426ba57986cd93
@Deprecated @Deprecated
diff --git a/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java b/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java diff --git a/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java b/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java
index 18ab5de56a41e4d768e1946051f81c8cc4fb9556..0f02c57447e2c2d40ab1cd9da5d3a4bd5624c17e 100644 index 579b189b6d1752f8a51ddc13f6d4390517541661..8db0e71ee1ef7827b24938008c416ff960ab6be4 100644
--- a/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java --- a/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java
+++ b/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java +++ b/src/main/java/space/bxteam/divinemc/configuration/DivineConfig.java
@@ -157,11 +157,13 @@ public class DivineConfig { @@ -157,11 +157,13 @@ public class DivineConfig {
@@ -297,4 +297,4 @@ index 18ab5de56a41e4d768e1946051f81c8cc4fb9556..0f02c57447e2c2d40ab1cd9da5d3a4bd
+ optimizeNoiseGeneration = getBoolean("settings.optimizations.optimize-noise-generation", optimizeNoiseGeneration); + optimizeNoiseGeneration = getBoolean("settings.optimizations.optimize-noise-generation", optimizeNoiseGeneration);
} }
public static boolean chatMessageSignatures = true; public static boolean noChatSign = true;