From 0a26ea407864152a75c968e4e52eb823d5f008b9 Mon Sep 17 00:00:00 2001 From: Dreeam <61569423+Dreeam-qwq@users.noreply.github.com> Date: Wed, 21 May 2025 18:57:34 +0800 Subject: [PATCH] Updated Upstream (Paper/Gale) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@09e9afd2 Avoid off-main mutations of state Gale Changes: Dreeam-qwq/Gale@84684276 Updated Upstream (Paper) --- gradle.properties | 2 +- ...0007-Purpur-Server-Minecraft-Changes.patch | 26 +++++++++---------- ...08-Fix-Pufferfish-and-Purpur-patches.patch | 6 ++--- ...Remove-UseItemOnPacket-Too-Far-check.patch | 4 +-- .../0044-Improve-Purpur-AFK-system.patch | 14 +++++----- .../features/0085-Multithreaded-Tracker.patch | 4 +-- .../0164-Reduce-PlayerChunk-Updates.patch | 6 ++--- 7 files changed, 31 insertions(+), 31 deletions(-) diff --git a/gradle.properties b/gradle.properties index eca97c93..f39575df 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group=cn.dreeam.leaf mcVersion=1.21.4 version=1.21.4-R0.1-SNAPSHOT -galeCommit=00ce862b14008ecbe816606c0843b95d6b227b0d +galeCommit=8468427637dc4f8cc50b03ea117aad3d9cad3e73 org.gradle.configuration-cache=true org.gradle.caching=true diff --git a/leaf-server/minecraft-patches/features/0007-Purpur-Server-Minecraft-Changes.patch b/leaf-server/minecraft-patches/features/0007-Purpur-Server-Minecraft-Changes.patch index b9c9dfe9..c4764b6e 100644 --- a/leaf-server/minecraft-patches/features/0007-Purpur-Server-Minecraft-Changes.patch +++ b/leaf-server/minecraft-patches/features/0007-Purpur-Server-Minecraft-Changes.patch @@ -1316,7 +1316,7 @@ index 060becd4c0b7aa399496ad70ba28cb3449cfaea3..921ad69b699f693e3dfc8d912b0f1a05 this.player.clientBrandName = new net.minecraft.network.FriendlyByteBuf(io.netty.buffer.Unpooled.wrappedBuffer(data)).readUtf(256); } diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index a3d0d331d367b8ddfd0ac450acd143ce7d3f7a9a..5fcd389b5483c4c11e7a007b2b6abb9abc1db6b2 100644 +index d9473190cfe8930df28ae847a6e7a55b97db58dd..166454f24b46c6d0e9b1e52cf9f88212859476d2 100644 --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -328,6 +328,20 @@ public class ServerGamePacketListenerImpl @@ -1370,7 +1370,7 @@ index a3d0d331d367b8ddfd0ac450acd143ce7d3f7a9a..5fcd389b5483c4c11e7a007b2b6abb9a this.disconnect(Component.translatable("multiplayer.disconnect.invalid_player_movement"), org.bukkit.event.player.PlayerKickEvent.Cause.INVALID_PLAYER_MOVEMENT); // Paper - kick event cause return; } -@@ -1184,6 +1207,10 @@ public class ServerGamePacketListenerImpl +@@ -1185,6 +1208,10 @@ public class ServerGamePacketListenerImpl final int maxBookPageSize = pageMax.intValue(); final double multiplier = Math.clamp(io.papermc.paper.configuration.GlobalConfiguration.get().itemValidation.bookSize.totalMultiplier, 0.3D, 1D); long byteAllowed = maxBookPageSize; @@ -1381,7 +1381,7 @@ index a3d0d331d367b8ddfd0ac450acd143ce7d3f7a9a..5fcd389b5483c4c11e7a007b2b6abb9a for (final String page : pageList) { final int byteLength = page.getBytes(java.nio.charset.StandardCharsets.UTF_8).length; byteTotal += byteLength; -@@ -1208,7 +1235,8 @@ public class ServerGamePacketListenerImpl +@@ -1209,7 +1236,8 @@ public class ServerGamePacketListenerImpl } if (byteTotal > byteAllowed) { @@ -1391,7 +1391,7 @@ index a3d0d331d367b8ddfd0ac450acd143ce7d3f7a9a..5fcd389b5483c4c11e7a007b2b6abb9a this.disconnectAsync(Component.literal("Book too large!"), org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_ACTION); // Paper - kick event cause // Paper - add proper async disconnect return; } -@@ -1227,31 +1255,45 @@ public class ServerGamePacketListenerImpl +@@ -1228,31 +1256,45 @@ public class ServerGamePacketListenerImpl Optional optional = packet.title(); optional.ifPresent(list::add); list.addAll(packet.pages()); @@ -1441,7 +1441,7 @@ index a3d0d331d367b8ddfd0ac450acd143ce7d3f7a9a..5fcd389b5483c4c11e7a007b2b6abb9a itemStack.set( DataComponents.WRITTEN_BOOK_CONTENT, new WrittenBookContent(this.filterableFromOutgoing(title), this.player.getName().getString(), 0, list, true) -@@ -1265,6 +1307,16 @@ public class ServerGamePacketListenerImpl +@@ -1266,6 +1308,16 @@ public class ServerGamePacketListenerImpl return this.player.isTextFilteringEnabled() ? Filterable.passThrough(filteredText.filteredOrEmpty()) : Filterable.from(filteredText); } @@ -1458,7 +1458,7 @@ index a3d0d331d367b8ddfd0ac450acd143ce7d3f7a9a..5fcd389b5483c4c11e7a007b2b6abb9a @Override public void handleEntityTagQuery(ServerboundEntityTagQueryPacket packet) { PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); -@@ -1300,7 +1352,15 @@ public class ServerGamePacketListenerImpl +@@ -1301,7 +1353,15 @@ public class ServerGamePacketListenerImpl @Override public void handleMovePlayer(ServerboundMovePlayerPacket packet) { PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); @@ -1475,7 +1475,7 @@ index a3d0d331d367b8ddfd0ac450acd143ce7d3f7a9a..5fcd389b5483c4c11e7a007b2b6abb9a this.disconnect(Component.translatable("multiplayer.disconnect.invalid_player_movement"), org.bukkit.event.player.PlayerKickEvent.Cause.INVALID_PLAYER_MOVEMENT); // Paper - kick event cause } else { ServerLevel serverLevel = this.player.serverLevel(); -@@ -1475,7 +1535,7 @@ public class ServerGamePacketListenerImpl +@@ -1476,7 +1536,7 @@ public class ServerGamePacketListenerImpl movedWrongly = true; if (event.getLogWarning()) // Paper end @@ -1484,7 +1484,7 @@ index a3d0d331d367b8ddfd0ac450acd143ce7d3f7a9a..5fcd389b5483c4c11e7a007b2b6abb9a } // Paper } -@@ -1541,6 +1601,8 @@ public class ServerGamePacketListenerImpl +@@ -1542,6 +1602,8 @@ public class ServerGamePacketListenerImpl this.lastYaw = to.getYaw(); this.lastPitch = to.getPitch(); @@ -1493,7 +1493,7 @@ index a3d0d331d367b8ddfd0ac450acd143ce7d3f7a9a..5fcd389b5483c4c11e7a007b2b6abb9a Location oldTo = to.clone(); PlayerMoveEvent event = new PlayerMoveEvent(player, from, to); this.cserver.getPluginManager().callEvent(event); -@@ -1597,6 +1659,13 @@ public class ServerGamePacketListenerImpl +@@ -1598,6 +1660,13 @@ public class ServerGamePacketListenerImpl this.player.tryResetCurrentImpulseContext(); } @@ -1507,7 +1507,7 @@ index a3d0d331d367b8ddfd0ac450acd143ce7d3f7a9a..5fcd389b5483c4c11e7a007b2b6abb9a this.player.checkMovementStatistics(this.player.getX() - x, this.player.getY() - y, this.player.getZ() - z); this.lastGoodX = this.player.getX(); this.lastGoodY = this.player.getY(); -@@ -1645,6 +1714,17 @@ public class ServerGamePacketListenerImpl +@@ -1646,6 +1715,17 @@ public class ServerGamePacketListenerImpl } } @@ -1525,7 +1525,7 @@ index a3d0d331d367b8ddfd0ac450acd143ce7d3f7a9a..5fcd389b5483c4c11e7a007b2b6abb9a // Paper start - optimise out extra getCubes private boolean hasNewCollision(final ServerLevel level, final Entity entity, final AABB oldBox, final AABB newBox) { final List collisionsBB = new java.util.ArrayList<>(); -@@ -2015,6 +2095,7 @@ public class ServerGamePacketListenerImpl +@@ -2016,6 +2096,7 @@ public class ServerGamePacketListenerImpl boolean cancelled; if (hitResult == null || hitResult.getType() != HitResult.Type.BLOCK) { @@ -1533,7 +1533,7 @@ index a3d0d331d367b8ddfd0ac450acd143ce7d3f7a9a..5fcd389b5483c4c11e7a007b2b6abb9a org.bukkit.event.player.PlayerInteractEvent event = CraftEventFactory.callPlayerInteractEvent(this.player, Action.RIGHT_CLICK_AIR, itemInHand, hand); cancelled = event.useItemInHand() == Event.Result.DENY; } else { -@@ -2758,6 +2839,7 @@ public class ServerGamePacketListenerImpl +@@ -2759,6 +2840,7 @@ public class ServerGamePacketListenerImpl AABB boundingBox = target.getBoundingBox(); if (this.player.canInteractWithEntity(boundingBox, io.papermc.paper.configuration.GlobalConfiguration.get().misc.clientInteractionLeniencyDistance.or(3.0))) { // Paper - configurable lenience value for interact range @@ -1541,7 +1541,7 @@ index a3d0d331d367b8ddfd0ac450acd143ce7d3f7a9a..5fcd389b5483c4c11e7a007b2b6abb9a packet.dispatch( new ServerboundInteractPacket.Handler() { private void performInteraction(InteractionHand hand, ServerGamePacketListenerImpl.EntityInteraction entityInteraction, PlayerInteractEntityEvent event) { // CraftBukkit -@@ -2770,6 +2852,8 @@ public class ServerGamePacketListenerImpl +@@ -2771,6 +2853,8 @@ public class ServerGamePacketListenerImpl ServerGamePacketListenerImpl.this.cserver.getPluginManager().callEvent(event); diff --git a/leaf-server/minecraft-patches/features/0008-Fix-Pufferfish-and-Purpur-patches.patch b/leaf-server/minecraft-patches/features/0008-Fix-Pufferfish-and-Purpur-patches.patch index 1e985b04..7f2591b9 100644 --- a/leaf-server/minecraft-patches/features/0008-Fix-Pufferfish-and-Purpur-patches.patch +++ b/leaf-server/minecraft-patches/features/0008-Fix-Pufferfish-and-Purpur-patches.patch @@ -78,10 +78,10 @@ index 55f708438e5d71cf14f4e632fc20a65b4bfb7d25..54895ed9ad9b9b2c4c12cfcce89af453 // Gale end - MultiPaper - skip unnecessary mob spawning computations int _int = this.level.getGameRules().getInt(GameRules.RULE_RANDOMTICKING); diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 1ba275fd76970774922bcd91bea6bf779bab32b7..a96f4f45d465b6f0e5b061877bd11f3caeeb1625 100644 +index 166454f24b46c6d0e9b1e52cf9f88212859476d2..cd9793763c9e804b25bf9bcf19bc9a401258166f 100644 --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1235,7 +1235,7 @@ public class ServerGamePacketListenerImpl +@@ -1236,7 +1236,7 @@ public class ServerGamePacketListenerImpl } if (byteTotal > byteAllowed) { @@ -142,7 +142,7 @@ index a5a8bdecddadac3de1b5a0c1a9849ce1cd52a530..f500f4e32e676712fcd0c877498acc27 public Entity(EntityType entityType, Level level) { this.type = entityType; diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java -index ac006d8738592bc5cb77033adc8c442ce302a476..ce2a9b6c4b903e5285e77f7ee64defd8e81029ae 100644 +index e66ad09280d8fb448953a6204d9fd81913227219..9124ba3ea2fca0ffa105147db1377a0dd7b818e0 100644 --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java @@ -1024,13 +1024,13 @@ public abstract class LivingEntity extends Entity implements Attackable { diff --git a/leaf-server/minecraft-patches/features/0013-Remove-UseItemOnPacket-Too-Far-check.patch b/leaf-server/minecraft-patches/features/0013-Remove-UseItemOnPacket-Too-Far-check.patch index 917d8f1f..f21c3315 100644 --- a/leaf-server/minecraft-patches/features/0013-Remove-UseItemOnPacket-Too-Far-check.patch +++ b/leaf-server/minecraft-patches/features/0013-Remove-UseItemOnPacket-Too-Far-check.patch @@ -7,10 +7,10 @@ This Check is added in 1.17.x -> 1.18.x that updated by Mojang. By removing this check, it gives ability for hackers to use some modules of hack clients. diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index a96f4f45d465b6f0e5b061877bd11f3caeeb1625..61bf3bfb41392d38c7e796f56cc0cce870e12631 100644 +index cd9793763c9e804b25bf9bcf19bc9a401258166f..6fbed156d25a068e8085934328ffab961ffd08d3 100644 --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2013,8 +2013,13 @@ public class ServerGamePacketListenerImpl +@@ -2014,8 +2014,13 @@ public class ServerGamePacketListenerImpl BlockPos blockPos = hitResult.getBlockPos(); if (this.player.canInteractWithBlock(blockPos, 1.0)) { Vec3 vec3 = location.subtract(Vec3.atCenterOf(blockPos)); diff --git a/leaf-server/minecraft-patches/features/0044-Improve-Purpur-AFK-system.patch b/leaf-server/minecraft-patches/features/0044-Improve-Purpur-AFK-system.patch index fc454c68..8a0cbecf 100644 --- a/leaf-server/minecraft-patches/features/0044-Improve-Purpur-AFK-system.patch +++ b/leaf-server/minecraft-patches/features/0044-Improve-Purpur-AFK-system.patch @@ -53,10 +53,10 @@ index 16a6aba187fa00fd7c3f739e46bc632987c1378f..8a9c2489730dd47cc776493695393e78 } else { getBukkitEntity().setPlayerListName(prefix + scoreboardName + suffix, true); diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 594ff2cf2a1f9eea2fb99997383af6d78dc424fb..ddd8a7a9b33618979ff0b69a95ce8041053082e8 100644 +index a902fd7c663ce588065d4b23ca4b1d48163e8977..4c39a5d0ee3bf532fd536884232df542154e8a48 100644 --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2272,6 +2272,7 @@ public class ServerGamePacketListenerImpl +@@ -2273,6 +2273,7 @@ public class ServerGamePacketListenerImpl @Override public void handleChatCommand(ServerboundChatCommandPacket packet) { @@ -64,7 +64,7 @@ index 594ff2cf2a1f9eea2fb99997383af6d78dc424fb..ddd8a7a9b33618979ff0b69a95ce8041 this.tryHandleChat(packet.command(), () -> { // CraftBukkit start - SPIGOT-7346: Prevent disconnected players from executing commands if (this.player.hasDisconnected()) { -@@ -2280,7 +2281,7 @@ public class ServerGamePacketListenerImpl +@@ -2281,7 +2282,7 @@ public class ServerGamePacketListenerImpl // CraftBukkit end this.performUnsignedChatCommand(packet.command()); this.detectRateSpam("/" + packet.command()); // Spigot @@ -73,7 +73,7 @@ index 594ff2cf2a1f9eea2fb99997383af6d78dc424fb..ddd8a7a9b33618979ff0b69a95ce8041 } private void performUnsignedChatCommand(String command) { -@@ -2313,6 +2314,7 @@ public class ServerGamePacketListenerImpl +@@ -2314,6 +2315,7 @@ public class ServerGamePacketListenerImpl public void handleSignedChatCommand(ServerboundChatCommandSignedPacket packet) { Optional optional = this.unpackAndApplyLastSeen(packet.lastSeenMessages()); if (!optional.isEmpty()) { @@ -81,7 +81,7 @@ index 594ff2cf2a1f9eea2fb99997383af6d78dc424fb..ddd8a7a9b33618979ff0b69a95ce8041 this.tryHandleChat(packet.command(), () -> { // CraftBukkit start - SPIGOT-7346: Prevent disconnected players from executing commands if (this.player.hasDisconnected()) { -@@ -2321,7 +2323,7 @@ public class ServerGamePacketListenerImpl +@@ -2322,7 +2324,7 @@ public class ServerGamePacketListenerImpl // CraftBukkit end this.performSignedChatCommand(packet, optional.get()); this.detectRateSpam("/" + packet.command()); // Spigot @@ -90,7 +90,7 @@ index 594ff2cf2a1f9eea2fb99997383af6d78dc424fb..ddd8a7a9b33618979ff0b69a95ce8041 } } -@@ -2426,12 +2428,17 @@ public class ServerGamePacketListenerImpl +@@ -2427,12 +2429,17 @@ public class ServerGamePacketListenerImpl return dispatcher.parse(command, this.player.createCommandSourceStack()); } @@ -110,7 +110,7 @@ index 594ff2cf2a1f9eea2fb99997383af6d78dc424fb..ddd8a7a9b33618979ff0b69a95ce8041 this.player.resetLastActionTime(); // CraftBukkit start if (sync) { -@@ -2443,6 +2450,40 @@ public class ServerGamePacketListenerImpl +@@ -2444,6 +2451,40 @@ public class ServerGamePacketListenerImpl } } diff --git a/leaf-server/minecraft-patches/features/0085-Multithreaded-Tracker.patch b/leaf-server/minecraft-patches/features/0085-Multithreaded-Tracker.patch index a15a8293..b0a5032c 100644 --- a/leaf-server/minecraft-patches/features/0085-Multithreaded-Tracker.patch +++ b/leaf-server/minecraft-patches/features/0085-Multithreaded-Tracker.patch @@ -373,10 +373,10 @@ index 275b640f4536366152f59acf071dd4eba15696c8..a669a59a42f814480879a52d2da5e04c } } diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 04bf8bba0d8c0d5459605253dcc3f135bf43fd95..abe79d07196de0a10a382d4c37161c7eb4a604ae 100644 +index 327b3bc89920c4ab02c1126dc63bca05ce3abefe..1415043bee5fbbfcf9dab9184a9418d52f531f62 100644 --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1819,7 +1819,7 @@ public class ServerGamePacketListenerImpl +@@ -1820,7 +1820,7 @@ public class ServerGamePacketListenerImpl } public void internalTeleport(PositionMoveRotation posMoveRotation, Set relatives) { diff --git a/leaf-server/minecraft-patches/features/0164-Reduce-PlayerChunk-Updates.patch b/leaf-server/minecraft-patches/features/0164-Reduce-PlayerChunk-Updates.patch index 8a4ce281..db0736c3 100644 --- a/leaf-server/minecraft-patches/features/0164-Reduce-PlayerChunk-Updates.patch +++ b/leaf-server/minecraft-patches/features/0164-Reduce-PlayerChunk-Updates.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Reduce PlayerChunk Updates diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index abe79d07196de0a10a382d4c37161c7eb4a604ae..51079419496900b86ff5e9ed41150831681e6d0b 100644 +index 1415043bee5fbbfcf9dab9184a9418d52f531f62..1a09ea1953169b72d67126283b5f581c2797506a 100644 --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1367,6 +1367,8 @@ public class ServerGamePacketListenerImpl +@@ -1368,6 +1368,8 @@ public class ServerGamePacketListenerImpl this.resetPosition(); } @@ -17,7 +17,7 @@ index abe79d07196de0a10a382d4c37161c7eb4a604ae..51079419496900b86ff5e9ed41150831 if (!this.updateAwaitingTeleport() && this.player.hasClientLoaded()) { double d = clampHorizontal(packet.getX(this.player.getX())); final double toX = d; // Paper - OBFHELPER double d1 = clampVertical(packet.getY(this.player.getY())); final double toY = d1; // Paper - OBFHELPER -@@ -1638,7 +1640,7 @@ public class ServerGamePacketListenerImpl +@@ -1639,7 +1641,7 @@ public class ServerGamePacketListenerImpl && !isFallFlying && !isAutoSpinAttack && this.noBlocksAround(this.player);