From 19c6e4028a4ad6a32e33494a72788909bc6ae570 Mon Sep 17 00:00:00 2001 From: Dreeam <61569423+Dreeam-qwq@users.noreply.github.com> Date: Thu, 10 Apr 2025 05:03:36 -0400 Subject: [PATCH] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@7612b5d0 Add identifier comparator for Plugin tickets PaperMC/Paper@35b466e3 Add support for getting data components from entities PaperMC/Paper@9f50f858 patch PaperMC/Paper@42623c4b no patch PaperMC/Paper@0cf73158 Bump to adventure 4.20.0 (#12391) PaperMC/Paper@e8eba887 Merge remote-tracking branch 'origin/main' into update/1.21.5 PaperMC/Paper@212dfc94 Correctly track raw data reader index for antixray PaperMC/Paper@cb0676a4 Commodore for Potions and Cows PaperMC/Paper@62256c51 add missed cow diff --- gradle.properties | 2 +- leaf-api/build.gradle.kts.patch | 2 +- .../features/0013-Purpur-API-Changes.patch | 10 +++---- .../0023-Make-book-writing-configurable.patch | 4 +-- ...hat-commands-before-player-has-joine.patch | 4 +-- ...33-Do-not-log-empty-message-warnings.patch | 4 +-- .../0047-Reduce-array-allocations.patch | 4 +-- ...0099-Purpur-Server-Minecraft-Changes.patch | 30 +++++++++---------- ...00-Fix-Pufferfish-and-Purpur-patches.patch | 4 +-- ...Remove-UseItemOnPacket-Too-Far-check.patch | 4 +-- .../0130-Improve-Purpur-AFK-system.patch | 14 ++++----- .../features/0170-Multithreaded-Tracker.patch | 4 +-- ...timizations-on-SerializableChunkData.patch | 10 +++---- ...er-PR-Throttle-failed-spawn-attempts.patch | 14 ++++----- .../0009-Purpur-Server-Paper-Changes.patch | 13 ++++---- ...p-EntityScheduler-s-executeTick-chec.patch | 6 ++-- 16 files changed, 64 insertions(+), 65 deletions(-) diff --git a/gradle.properties b/gradle.properties index 924d0b45..da1be72a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group=cn.dreeam.leaf mcVersion=1.21.5 version=1.21.5-R0.1-SNAPSHOT -paperCommit=71ccae077355f854d5be0ece38a300d0499721b4 +paperCommit=62256c5182f0c12ca286708e9e7ac5e8f442fcd3 org.gradle.configuration-cache=true org.gradle.caching=true diff --git a/leaf-api/build.gradle.kts.patch b/leaf-api/build.gradle.kts.patch index f8fb0c73..344f6357 100644 --- a/leaf-api/build.gradle.kts.patch +++ b/leaf-api/build.gradle.kts.patch @@ -6,7 +6,7 @@ -val annotationsVersion = "26.0.1" +val annotationsVersion = "26.0.2" // Leaf - Bump Dependencies - val adventureVersion = "4.18.0" + val adventureVersion = "4.20.0" val bungeeCordChatVersion = "1.21-R0.2-deprecated+build.21" -val slf4jVersion = "2.0.9" -val log4jVersion = "2.17.1" diff --git a/leaf-api/paper-patches/features/0013-Purpur-API-Changes.patch b/leaf-api/paper-patches/features/0013-Purpur-API-Changes.patch index f6ecdc9b..c944659d 100644 --- a/leaf-api/paper-patches/features/0013-Purpur-API-Changes.patch +++ b/leaf-api/paper-patches/features/0013-Purpur-API-Changes.patch @@ -811,10 +811,10 @@ index 332c55fd6b4b3a8c0cad920a6e765ecc40e684e4..10a8d64ad2da0be2c14f34c3e7d1957c // Paper start /** diff --git a/src/main/java/org/bukkit/entity/Entity.java b/src/main/java/org/bukkit/entity/Entity.java -index 50094f04c5a09b87bb24a37ead0a9a574a3fae83..97ba2c698da6820eae7d254008579bb64052f474 100644 +index 5a3a538c56892a1f3dd5bd437f77b1659da9bd99..5031e3b170af96c4aab85c0aea07f679d9711575 100644 --- a/src/main/java/org/bukkit/entity/Entity.java +++ b/src/main/java/org/bukkit/entity/Entity.java -@@ -1214,4 +1214,59 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent +@@ -1215,4 +1215,59 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent */ void broadcastHurtAnimation(@NotNull java.util.Collection players); // Paper end - broadcast hurt animation @@ -1329,10 +1329,10 @@ index f1f97a85ec713c05c882d7588f4a3e4a017f4795..813f6cd253322538bdf96eb323dd23a7 + // Purpur end } diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java -index 70a52a26de6e37154ac322ab28af211d5fdd93ff..f1d00fbad3a41800c2607facfe7a287d300c3f7f 100644 +index 41d000b81a793277e330fb62c848ab4c8c56d657..1f524abf07666e325a877c90414d6838f485ca71 100644 --- a/src/main/java/org/bukkit/inventory/ItemStack.java +++ b/src/main/java/org/bukkit/inventory/ItemStack.java -@@ -22,6 +22,13 @@ import org.bukkit.material.MaterialData; +@@ -23,6 +23,13 @@ import org.bukkit.material.MaterialData; import org.bukkit.persistence.PersistentDataContainer; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -1346,7 +1346,7 @@ index 70a52a26de6e37154ac322ab28af211d5fdd93ff..f1d00fbad3a41800c2607facfe7a287d /** * Represents a stack of items. -@@ -1371,4 +1378,482 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat +@@ -1372,4 +1379,482 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat return this.craftDelegate.matchesWithoutData(item, excludeTypes, ignoreCount); } // Paper end - data component API diff --git a/leaf-server/minecraft-patches/features/0023-Make-book-writing-configurable.patch b/leaf-server/minecraft-patches/features/0023-Make-book-writing-configurable.patch index bcde6b09..3ca86769 100644 --- a/leaf-server/minecraft-patches/features/0023-Make-book-writing-configurable.patch +++ b/leaf-server/minecraft-patches/features/0023-Make-book-writing-configurable.patch @@ -22,10 +22,10 @@ you to easily disable books, should you want to preemptively remove this functionality before additional exploits are found. diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 5e921c490814be31fc2843327c0e2cc76bda6620..df7142bbfec170966373dcf4ac50e4bbc5ba4e53 100644 +index f49a2c18ec20a7181951389066b7d062b48d43fa..7aa2c1c070e77a580dcc12865956119e42a33ba3 100644 --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1191,6 +1191,11 @@ public class ServerGamePacketListenerImpl +@@ -1223,6 +1223,11 @@ public class ServerGamePacketListenerImpl @Override public void handleEditBook(ServerboundEditBookPacket packet) { diff --git a/leaf-server/minecraft-patches/features/0031-Do-not-process-chat-commands-before-player-has-joine.patch b/leaf-server/minecraft-patches/features/0031-Do-not-process-chat-commands-before-player-has-joine.patch index ab67f28b..c590547c 100644 --- a/leaf-server/minecraft-patches/features/0031-Do-not-process-chat-commands-before-player-has-joine.patch +++ b/leaf-server/minecraft-patches/features/0031-Do-not-process-chat-commands-before-player-has-joine.patch @@ -25,10 +25,10 @@ index d6826e878efb3e5532d23f04cc8e951a937cf29f..62e49f844c477c92894d77b469c1537b public @Nullable com.destroystokyo.paper.event.entity.PlayerNaturallySpawnCreaturesEvent playerNaturallySpawnedEvent; // Paper - PlayerNaturallySpawnCreaturesEvent public @Nullable String clientBrandName = null; // Paper - Brand support diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index df7142bbfec170966373dcf4ac50e4bbc5ba4e53..dea2a849a1d1f2dcfc1e63eb873ada999780bf66 100644 +index 7aa2c1c070e77a580dcc12865956119e42a33ba3..f961d38cde80187673d27f9c6fa1239dd505fef5 100644 --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2334,7 +2334,7 @@ public class ServerGamePacketListenerImpl +@@ -2404,7 +2404,7 @@ public class ServerGamePacketListenerImpl this.disconnectAsync(Component.translatable("multiplayer.disconnect.illegal_characters"), org.bukkit.event.player.PlayerKickEvent.Cause.ILLEGAL_CHARACTERS); // Paper - add proper async disconnect } else if (this.player.isRemoved() || this.player.getChatVisibility() == ChatVisiblity.HIDDEN) { // CraftBukkit - dead men tell no tales this.send(new ClientboundSystemChatPacket(Component.translatable("chat.disabled.options").withStyle(ChatFormatting.RED), false)); diff --git a/leaf-server/minecraft-patches/features/0033-Do-not-log-empty-message-warnings.patch b/leaf-server/minecraft-patches/features/0033-Do-not-log-empty-message-warnings.patch index 7491c437..e7649a14 100644 --- a/leaf-server/minecraft-patches/features/0033-Do-not-log-empty-message-warnings.patch +++ b/leaf-server/minecraft-patches/features/0033-Do-not-log-empty-message-warnings.patch @@ -7,10 +7,10 @@ License: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html) Gale - https://galemc.org diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index dea2a849a1d1f2dcfc1e63eb873ada999780bf66..804afc38f2be37258ee68d601674a2832b61bfc6 100644 +index f961d38cde80187673d27f9c6fa1239dd505fef5..1f1df6616e416389fc5f84878469f0fed3254de7 100644 --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2416,7 +2416,7 @@ public class ServerGamePacketListenerImpl +@@ -2486,7 +2486,7 @@ public class ServerGamePacketListenerImpl // CraftBukkit start String rawMessage = message.signedContent(); if (rawMessage.isEmpty()) { diff --git a/leaf-server/minecraft-patches/features/0047-Reduce-array-allocations.patch b/leaf-server/minecraft-patches/features/0047-Reduce-array-allocations.patch index 73d17e5d..dc9b7a1f 100644 --- a/leaf-server/minecraft-patches/features/0047-Reduce-array-allocations.patch +++ b/leaf-server/minecraft-patches/features/0047-Reduce-array-allocations.patch @@ -139,10 +139,10 @@ index 3cb0407c022c0b3e8627fc1d9736d3eee0609039..609b3020e5c044c51d80680bb0e9f3ca return ret; } diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 804afc38f2be37258ee68d601674a2832b61bfc6..7142de40a5ff9d1009bb06e73172877e8bf80962 100644 +index 1f1df6616e416389fc5f84878469f0fed3254de7..7e00e8b0eb9a7aaffc37ef4d98b9205d58e9c5b2 100644 --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2706,7 +2706,7 @@ public class ServerGamePacketListenerImpl +@@ -2776,7 +2776,7 @@ public class ServerGamePacketListenerImpl // SPIGOT-7136 - Allays if (target instanceof net.minecraft.world.entity.animal.allay.Allay || target instanceof net.minecraft.world.entity.animal.horse.AbstractHorse) { // Paper - Fix horse armor desync ServerGamePacketListenerImpl.this.send(new net.minecraft.network.protocol.game.ClientboundSetEquipmentPacket( diff --git a/leaf-server/minecraft-patches/features/0099-Purpur-Server-Minecraft-Changes.patch b/leaf-server/minecraft-patches/features/0099-Purpur-Server-Minecraft-Changes.patch index 8d729045..ff49a724 100644 --- a/leaf-server/minecraft-patches/features/0099-Purpur-Server-Minecraft-Changes.patch +++ b/leaf-server/minecraft-patches/features/0099-Purpur-Server-Minecraft-Changes.patch @@ -1275,7 +1275,7 @@ index 8c3255661221f8afbccb661bec3afb47e4059403..ea7710c17bfc9fcfe736c3a2e83898b7 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 7142de40a5ff9d1009bb06e73172877e8bf80962..4b59db324e71846d233e43bafcdae658bcc70328 100644 +index 7e00e8b0eb9a7aaffc37ef4d98b9205d58e9c5b2..90d0c59c66c2e18d601838886ff55bb428547779 100644 --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -321,6 +321,20 @@ public class ServerGamePacketListenerImpl @@ -1312,7 +1312,7 @@ index 7142de40a5ff9d1009bb06e73172877e8bf80962..4b59db324e71846d233e43bafcdae658 this.player.resetLastActionTime(); // CraftBukkit - SPIGOT-854 this.disconnect(Component.translatable("multiplayer.disconnect.idling"), org.bukkit.event.player.PlayerKickEvent.Cause.IDLING); // Paper - kick event cause } -@@ -615,6 +635,8 @@ public class ServerGamePacketListenerImpl +@@ -624,6 +644,8 @@ public class ServerGamePacketListenerImpl this.lastYaw = to.getYaw(); this.lastPitch = to.getPitch(); @@ -1321,7 +1321,7 @@ index 7142de40a5ff9d1009bb06e73172877e8bf80962..4b59db324e71846d233e43bafcdae658 Location oldTo = to.clone(); PlayerMoveEvent event = new PlayerMoveEvent(player, from, to); this.cserver.getPluginManager().callEvent(event); -@@ -671,6 +693,7 @@ public class ServerGamePacketListenerImpl +@@ -703,6 +725,7 @@ public class ServerGamePacketListenerImpl PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); if (packet.getId() == this.awaitingTeleport) { if (this.awaitingPositionFromClient == null) { @@ -1329,7 +1329,7 @@ index 7142de40a5ff9d1009bb06e73172877e8bf80962..4b59db324e71846d233e43bafcdae658 this.disconnect(Component.translatable("multiplayer.disconnect.invalid_player_movement"), org.bukkit.event.player.PlayerKickEvent.Cause.INVALID_PLAYER_MOVEMENT); // Paper - kick event cause return; } -@@ -1204,6 +1227,10 @@ public class ServerGamePacketListenerImpl +@@ -1236,6 +1259,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; @@ -1340,7 +1340,7 @@ index 7142de40a5ff9d1009bb06e73172877e8bf80962..4b59db324e71846d233e43bafcdae658 for (final String page : pageList) { final int byteLength = page.getBytes(java.nio.charset.StandardCharsets.UTF_8).length; byteTotal += byteLength; -@@ -1228,7 +1255,8 @@ public class ServerGamePacketListenerImpl +@@ -1260,7 +1287,8 @@ public class ServerGamePacketListenerImpl } if (byteTotal > byteAllowed) { @@ -1350,7 +1350,7 @@ index 7142de40a5ff9d1009bb06e73172877e8bf80962..4b59db324e71846d233e43bafcdae658 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; } -@@ -1247,31 +1275,45 @@ public class ServerGamePacketListenerImpl +@@ -1279,31 +1307,45 @@ public class ServerGamePacketListenerImpl Optional optional = packet.title(); optional.ifPresent(list::add); list.addAll(packet.pages()); @@ -1400,7 +1400,7 @@ index 7142de40a5ff9d1009bb06e73172877e8bf80962..4b59db324e71846d233e43bafcdae658 itemStack.set( DataComponents.WRITTEN_BOOK_CONTENT, new WrittenBookContent(this.filterableFromOutgoing(title), this.player.getName().getString(), 0, list, true) -@@ -1285,6 +1327,16 @@ public class ServerGamePacketListenerImpl +@@ -1317,6 +1359,16 @@ public class ServerGamePacketListenerImpl return this.player.isTextFilteringEnabled() ? Filterable.passThrough(filteredText.filteredOrEmpty()) : Filterable.from(filteredText); } @@ -1417,7 +1417,7 @@ index 7142de40a5ff9d1009bb06e73172877e8bf80962..4b59db324e71846d233e43bafcdae658 @Override public void handleEntityTagQuery(ServerboundEntityTagQueryPacket packet) { PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); -@@ -1320,7 +1372,15 @@ public class ServerGamePacketListenerImpl +@@ -1352,7 +1404,15 @@ public class ServerGamePacketListenerImpl @Override public void handleMovePlayer(ServerboundMovePlayerPacket packet) { PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); @@ -1434,7 +1434,7 @@ index 7142de40a5ff9d1009bb06e73172877e8bf80962..4b59db324e71846d233e43bafcdae658 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(); -@@ -1501,7 +1561,7 @@ public class ServerGamePacketListenerImpl +@@ -1534,7 +1594,7 @@ public class ServerGamePacketListenerImpl movedWrongly = true; if (event.getLogWarning()) // Paper end @@ -1443,7 +1443,7 @@ index 7142de40a5ff9d1009bb06e73172877e8bf80962..4b59db324e71846d233e43bafcdae658 } // Paper } -@@ -1557,6 +1617,8 @@ public class ServerGamePacketListenerImpl +@@ -1600,6 +1660,8 @@ public class ServerGamePacketListenerImpl this.lastYaw = to.getYaw(); this.lastPitch = to.getPitch(); @@ -1452,7 +1452,7 @@ index 7142de40a5ff9d1009bb06e73172877e8bf80962..4b59db324e71846d233e43bafcdae658 Location oldTo = to.clone(); PlayerMoveEvent event = new PlayerMoveEvent(player, from, to); this.cserver.getPluginManager().callEvent(event); -@@ -1612,6 +1674,13 @@ public class ServerGamePacketListenerImpl +@@ -1655,6 +1717,13 @@ public class ServerGamePacketListenerImpl this.player.tryResetCurrentImpulseContext(); } @@ -1466,7 +1466,7 @@ index 7142de40a5ff9d1009bb06e73172877e8bf80962..4b59db324e71846d233e43bafcdae658 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(); -@@ -1629,6 +1698,17 @@ public class ServerGamePacketListenerImpl +@@ -1672,6 +1741,17 @@ public class ServerGamePacketListenerImpl } } @@ -1484,7 +1484,7 @@ index 7142de40a5ff9d1009bb06e73172877e8bf80962..4b59db324e71846d233e43bafcdae658 private boolean shouldCheckPlayerMovement(boolean isElytraMovement) { if (this.isSingleplayerOwner()) { return false; -@@ -2005,6 +2085,7 @@ public class ServerGamePacketListenerImpl +@@ -2075,6 +2155,7 @@ public class ServerGamePacketListenerImpl boolean cancelled; if (hitResult == null || hitResult.getType() != HitResult.Type.BLOCK) { @@ -1492,7 +1492,7 @@ index 7142de40a5ff9d1009bb06e73172877e8bf80962..4b59db324e71846d233e43bafcdae658 org.bukkit.event.player.PlayerInteractEvent event = CraftEventFactory.callPlayerInteractEvent(this.player, Action.RIGHT_CLICK_AIR, itemInHand, hand); cancelled = event.useItemInHand() == Event.Result.DENY; } else { -@@ -2677,6 +2758,7 @@ public class ServerGamePacketListenerImpl +@@ -2747,6 +2828,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 @@ -1500,7 +1500,7 @@ index 7142de40a5ff9d1009bb06e73172877e8bf80962..4b59db324e71846d233e43bafcdae658 packet.dispatch( new ServerboundInteractPacket.Handler() { private void performInteraction(InteractionHand hand, ServerGamePacketListenerImpl.EntityInteraction entityInteraction, PlayerInteractEntityEvent event) { // CraftBukkit -@@ -2689,6 +2771,8 @@ public class ServerGamePacketListenerImpl +@@ -2759,6 +2841,8 @@ public class ServerGamePacketListenerImpl ServerGamePacketListenerImpl.this.cserver.getPluginManager().callEvent(event); diff --git a/leaf-server/minecraft-patches/features/0100-Fix-Pufferfish-and-Purpur-patches.patch b/leaf-server/minecraft-patches/features/0100-Fix-Pufferfish-and-Purpur-patches.patch index 16a23f19..55ece446 100644 --- a/leaf-server/minecraft-patches/features/0100-Fix-Pufferfish-and-Purpur-patches.patch +++ b/leaf-server/minecraft-patches/features/0100-Fix-Pufferfish-and-Purpur-patches.patch @@ -65,10 +65,10 @@ index 35fd539eb2bfe60ad17ab1e558a01273666acc54..445bbdc8da7f1fdbddfc4d8787d78fea this.values[this.vp++ & 0xFF] = (int)(l * 100L / Runtime.getRuntime().maxMemory()); this.repaint(); diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 4b59db324e71846d233e43bafcdae658bcc70328..413fac2acf8cc467d328ccb1fe01399722d02941 100644 +index 90d0c59c66c2e18d601838886ff55bb428547779..62586fc315b473761579daa863f89df150fb9576 100644 --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1255,7 +1255,7 @@ public class ServerGamePacketListenerImpl +@@ -1287,7 +1287,7 @@ public class ServerGamePacketListenerImpl } if (byteTotal > byteAllowed) { diff --git a/leaf-server/minecraft-patches/features/0105-Remove-UseItemOnPacket-Too-Far-check.patch b/leaf-server/minecraft-patches/features/0105-Remove-UseItemOnPacket-Too-Far-check.patch index 0f374941..f62aee9f 100644 --- a/leaf-server/minecraft-patches/features/0105-Remove-UseItemOnPacket-Too-Far-check.patch +++ b/leaf-server/minecraft-patches/features/0105-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 413fac2acf8cc467d328ccb1fe01399722d02941..776c23f64fdda3bcc93d66e811be7438c22be1f7 100644 +index 62586fc315b473761579daa863f89df150fb9576..956a19d137243baddcc44927b3ae77697ca0bfdf 100644 --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2003,8 +2003,13 @@ public class ServerGamePacketListenerImpl +@@ -2073,8 +2073,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/0130-Improve-Purpur-AFK-system.patch b/leaf-server/minecraft-patches/features/0130-Improve-Purpur-AFK-system.patch index 0047aa25..bcd041e0 100644 --- a/leaf-server/minecraft-patches/features/0130-Improve-Purpur-AFK-system.patch +++ b/leaf-server/minecraft-patches/features/0130-Improve-Purpur-AFK-system.patch @@ -53,10 +53,10 @@ index fe2710ee9b8a4452ff339a0b15ccf357a7c25336..f0e9dac266ef24f8e07460a1b08a244d } else { getBukkitEntity().setPlayerListName(prefix + scoreboardName + suffix, true); diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 776c23f64fdda3bcc93d66e811be7438c22be1f7..4287bb927a25206016298be2cc659d5920b3c414 100644 +index 956a19d137243baddcc44927b3ae77697ca0bfdf..41251d29a881d31283cb647a7d74fa402c1b422f 100644 --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2259,6 +2259,7 @@ public class ServerGamePacketListenerImpl +@@ -2329,6 +2329,7 @@ public class ServerGamePacketListenerImpl @Override public void handleChatCommand(ServerboundChatCommandPacket packet) { @@ -64,7 +64,7 @@ index 776c23f64fdda3bcc93d66e811be7438c22be1f7..4287bb927a25206016298be2cc659d59 this.tryHandleChat(packet.command(), () -> { // CraftBukkit start - SPIGOT-7346: Prevent disconnected players from executing commands if (this.player.hasDisconnected()) { -@@ -2267,7 +2268,7 @@ public class ServerGamePacketListenerImpl +@@ -2337,7 +2338,7 @@ public class ServerGamePacketListenerImpl // CraftBukkit end this.performUnsignedChatCommand(packet.command()); this.detectRateSpam("/" + packet.command()); // Spigot @@ -73,7 +73,7 @@ index 776c23f64fdda3bcc93d66e811be7438c22be1f7..4287bb927a25206016298be2cc659d59 } private void performUnsignedChatCommand(String command) { -@@ -2300,6 +2301,7 @@ public class ServerGamePacketListenerImpl +@@ -2370,6 +2371,7 @@ public class ServerGamePacketListenerImpl public void handleSignedChatCommand(ServerboundChatCommandSignedPacket packet) { Optional optional = this.unpackAndApplyLastSeen(packet.lastSeenMessages()); if (!optional.isEmpty()) { @@ -81,7 +81,7 @@ index 776c23f64fdda3bcc93d66e811be7438c22be1f7..4287bb927a25206016298be2cc659d59 this.tryHandleChat(packet.command(), () -> { // CraftBukkit start - SPIGOT-7346: Prevent disconnected players from executing commands if (this.player.hasDisconnected()) { -@@ -2308,7 +2310,7 @@ public class ServerGamePacketListenerImpl +@@ -2378,7 +2380,7 @@ public class ServerGamePacketListenerImpl // CraftBukkit end this.performSignedChatCommand(packet, optional.get()); this.detectRateSpam("/" + packet.command()); // Spigot @@ -90,7 +90,7 @@ index 776c23f64fdda3bcc93d66e811be7438c22be1f7..4287bb927a25206016298be2cc659d59 } } -@@ -2415,12 +2417,17 @@ public class ServerGamePacketListenerImpl +@@ -2485,12 +2487,17 @@ public class ServerGamePacketListenerImpl return dispatcher.parse(command, this.player.createCommandSourceStack()); } @@ -110,7 +110,7 @@ index 776c23f64fdda3bcc93d66e811be7438c22be1f7..4287bb927a25206016298be2cc659d59 this.player.resetLastActionTime(); // CraftBukkit start if (sync) { -@@ -2432,6 +2439,40 @@ public class ServerGamePacketListenerImpl +@@ -2502,6 +2509,40 @@ public class ServerGamePacketListenerImpl } } diff --git a/leaf-server/minecraft-patches/features/0170-Multithreaded-Tracker.patch b/leaf-server/minecraft-patches/features/0170-Multithreaded-Tracker.patch index bf62832b..4f2fead7 100644 --- a/leaf-server/minecraft-patches/features/0170-Multithreaded-Tracker.patch +++ b/leaf-server/minecraft-patches/features/0170-Multithreaded-Tracker.patch @@ -212,10 +212,10 @@ index d23ed8dbda5132337c8c96c67cf924e438ea9f4b..889b7e8752129dd3b5ba196c4b294496 } diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 5e693808b54efd77a40ccf0bafdf5a2aa7245da3..296c46d0a705dbb0085f3f58d574f4f4e0732668 100644 +index 27ca0be25253b35ebfe54b725f9ba28a120f4ea0..94dd2887398cbebb60200e9a5c61c01b2fda0a7f 100644 --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -1806,7 +1806,7 @@ public class ServerGamePacketListenerImpl +@@ -1876,7 +1876,7 @@ public class ServerGamePacketListenerImpl } public void internalTeleport(PositionMoveRotation posMoveRotation, Set relatives) { diff --git a/leaf-server/minecraft-patches/features/0217-Some-Optimizations-on-SerializableChunkData.patch b/leaf-server/minecraft-patches/features/0217-Some-Optimizations-on-SerializableChunkData.patch index bfabc9d1..a1bcbe2c 100644 --- a/leaf-server/minecraft-patches/features/0217-Some-Optimizations-on-SerializableChunkData.patch +++ b/leaf-server/minecraft-patches/features/0217-Some-Optimizations-on-SerializableChunkData.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Some Optimizations on SerializableChunkData diff --git a/net/minecraft/world/level/chunk/storage/SerializableChunkData.java b/net/minecraft/world/level/chunk/storage/SerializableChunkData.java -index cbb6d1f6e715316e170936d29b816c0e6b02478d..0ed7534dad28e93cd0d1af8616f6d882c47dccf4 100644 +index 749096358fccbd5d1d13801092255c51096eb001..62a40e88fc03b7f383bd750d72c42747ddd591b4 100644 --- a/net/minecraft/world/level/chunk/storage/SerializableChunkData.java +++ b/net/minecraft/world/level/chunk/storage/SerializableChunkData.java -@@ -470,14 +470,16 @@ public record SerializableChunkData( +@@ -469,14 +469,16 @@ public record SerializableChunkData( throw new IllegalArgumentException("Chunk can't be serialized: " + chunk); } else { ChunkPos pos = chunk.getPos(); @@ -28,7 +28,7 @@ index cbb6d1f6e715316e170936d29b816c0e6b02478d..0ed7534dad28e93cd0d1af8616f6d882 final LevelChunkSection[] chunkSections = chunk.getSections(); final ca.spottedleaf.moonrise.patches.starlight.light.SWMRNibbleArray[] blockNibbles = ((ca.spottedleaf.moonrise.patches.starlight.chunk.StarlightChunk)chunk).starlight$getBlockNibbles(); -@@ -509,10 +511,11 @@ public record SerializableChunkData( +@@ -508,10 +510,11 @@ public record SerializableChunkData( ((ca.spottedleaf.moonrise.patches.starlight.storage.StarlightSectionData)(Object)sectionData).starlight$setSkyLightState(skyNibble.state); } @@ -41,7 +41,7 @@ index cbb6d1f6e715316e170936d29b816c0e6b02478d..0ed7534dad28e93cd0d1af8616f6d882 List list1 = new ArrayList<>(chunk.getBlockEntitiesPos().size()); for (BlockPos blockPos : chunk.getBlockEntitiesPos()) { -@@ -522,7 +525,16 @@ public record SerializableChunkData( +@@ -521,7 +524,16 @@ public record SerializableChunkData( } } @@ -59,7 +59,7 @@ index cbb6d1f6e715316e170936d29b816c0e6b02478d..0ed7534dad28e93cd0d1af8616f6d882 long[] longs = null; if (chunk.getPersistedStatus().getChunkType() == ChunkType.PROTOCHUNK) { ProtoChunk protoChunk = (ProtoChunk)chunk; -@@ -538,14 +550,18 @@ public record SerializableChunkData( +@@ -537,14 +549,18 @@ public record SerializableChunkData( for (Entry entry : chunk.getHeightmaps()) { if (chunk.getPersistedStatus().heightmapsAfter().contains(entry.getKey())) { long[] rawData = entry.getValue().getRawData(); diff --git a/leaf-server/minecraft-patches/features/0226-Paper-PR-Throttle-failed-spawn-attempts.patch b/leaf-server/minecraft-patches/features/0226-Paper-PR-Throttle-failed-spawn-attempts.patch index 98c920e1..04579cf9 100644 --- a/leaf-server/minecraft-patches/features/0226-Paper-PR-Throttle-failed-spawn-attempts.patch +++ b/leaf-server/minecraft-patches/features/0226-Paper-PR-Throttle-failed-spawn-attempts.patch @@ -175,7 +175,7 @@ index 6683df8d0f5a61ab094393f761a3d3a22d6e0455..4fd9313ce2c87383685d80e2533b93d5 // Paper start - rewrite chunk system private volatile ca.spottedleaf.moonrise.patches.starlight.light.SWMRNibbleArray[] blockNibbles; diff --git a/net/minecraft/world/level/chunk/storage/SerializableChunkData.java b/net/minecraft/world/level/chunk/storage/SerializableChunkData.java -index 0ed7534dad28e93cd0d1af8616f6d882c47dccf4..a829a828d2f1abbf403ef77d258cd635ad9bf6de 100644 +index 62a40e88fc03b7f383bd750d72c42747ddd591b4..6f4f431d5197e8157908191709776ff6d406207b 100644 --- a/net/minecraft/world/level/chunk/storage/SerializableChunkData.java +++ b/net/minecraft/world/level/chunk/storage/SerializableChunkData.java @@ -92,6 +92,7 @@ public record SerializableChunkData( @@ -206,7 +206,7 @@ index 0ed7534dad28e93cd0d1af8616f6d882c47dccf4..a829a828d2f1abbf403ef77d258cd635 List list3 = tag.getList("entities").stream().flatMap(ListTag::compoundStream).toList(); List list4 = tag.getList("block_entities").stream().flatMap(ListTag::compoundStream).toList(); CompoundTag compoundOrEmpty = tag.getCompoundOrEmpty("structures"); -@@ -269,6 +283,7 @@ public record SerializableChunkData( +@@ -268,6 +282,7 @@ public record SerializableChunkData( list4, compoundOrEmpty , tag.get("ChunkBukkitValues") // CraftBukkit - ChunkBukkitValues @@ -214,7 +214,7 @@ index 0ed7534dad28e93cd0d1af8616f6d882c47dccf4..a829a828d2f1abbf403ef77d258cd635 ); } } -@@ -425,6 +440,15 @@ public record SerializableChunkData( +@@ -424,6 +439,15 @@ public record SerializableChunkData( chunkAccess.addPackedPostProcess(this.postProcessingSections[i], i); } @@ -230,7 +230,7 @@ index 0ed7534dad28e93cd0d1af8616f6d882c47dccf4..a829a828d2f1abbf403ef77d258cd635 if (chunkType == ChunkType.LEVELCHUNK) { return this.loadStarlightLightData(level, new ImposterProtoChunk((LevelChunk)chunkAccess, false)); // Paper - starlight } else { -@@ -571,6 +595,7 @@ public record SerializableChunkData( +@@ -570,6 +594,7 @@ public record SerializableChunkData( persistentDataContainer = chunk.persistentDataContainer.toTagCompound(); } // CraftBukkit end @@ -238,7 +238,7 @@ index 0ed7534dad28e93cd0d1af8616f6d882c47dccf4..a829a828d2f1abbf403ef77d258cd635 return new SerializableChunkData( level.registryAccess().lookupOrThrow(Registries.BIOME), pos, -@@ -591,6 +616,7 @@ public record SerializableChunkData( +@@ -590,6 +615,7 @@ public record SerializableChunkData( list1, compoundTag , persistentDataContainer // CraftBukkit - persistentDataContainer @@ -246,7 +246,7 @@ index 0ed7534dad28e93cd0d1af8616f6d882c47dccf4..a829a828d2f1abbf403ef77d258cd635 ); } } -@@ -675,6 +701,21 @@ public record SerializableChunkData( +@@ -674,6 +700,21 @@ public record SerializableChunkData( compoundTag.put("ChunkBukkitValues", this.persistentDataContainer); } // CraftBukkit end @@ -268,7 +268,7 @@ index 0ed7534dad28e93cd0d1af8616f6d882c47dccf4..a829a828d2f1abbf403ef77d258cd635 // Paper start - starlight if (this.lightCorrect && !this.chunkStatus.isBefore(net.minecraft.world.level.chunk.status.ChunkStatus.LIGHT)) { // clobber vanilla value to force vanilla to relight -@@ -882,4 +923,50 @@ public record SerializableChunkData( +@@ -881,4 +922,50 @@ public record SerializableChunkData( } // Paper end - starlight - convert from record } diff --git a/leaf-server/paper-patches/features/0009-Purpur-Server-Paper-Changes.patch b/leaf-server/paper-patches/features/0009-Purpur-Server-Paper-Changes.patch index 85470d8e..86ab976c 100644 --- a/leaf-server/paper-patches/features/0009-Purpur-Server-Paper-Changes.patch +++ b/leaf-server/paper-patches/features/0009-Purpur-Server-Paper-Changes.patch @@ -893,10 +893,10 @@ index 4d5958405e1c86c289d24500705686e7da02c3f6..86541e322fcacb6c525af39ba2675b71 @Override diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 5aa8eab78e99408b0beb64d7ed07ff1bc61541db..83a23a82335eac087d36fd27ca6c6417960b881f 100644 +index 9e271f0e587be1ab9258937774121763b34e9e0f..8f9af0c5396abf25534eaee17b81982024eb9fcd 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -95,6 +95,25 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -98,6 +98,25 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { this.entityType = CraftEntityType.minecraftToBukkit(entity.getType()); } @@ -922,7 +922,7 @@ index 5aa8eab78e99408b0beb64d7ed07ff1bc61541db..83a23a82335eac087d36fd27ca6c6417 public static CraftEntity getEntity(CraftServer server, T entity) { Preconditions.checkArgument(entity != null, "Unknown entity"); -@@ -252,6 +271,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -255,6 +274,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { boolean retainPassengers = flagSet.contains(io.papermc.paper.entity.TeleportFlag.EntityState.RETAIN_PASSENGERS); // Don't allow teleporting between worlds while keeping passengers if (flagSet.contains(io.papermc.paper.entity.TeleportFlag.EntityState.RETAIN_PASSENGERS) && this.entity.isVehicle() && location.getWorld() != this.getWorld()) { @@ -930,11 +930,10 @@ index 5aa8eab78e99408b0beb64d7ed07ff1bc61541db..83a23a82335eac087d36fd27ca6c6417 return false; } -@@ -1263,4 +1283,27 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { - ((CraftPlayer) player).sendHurtAnimation(0, this); - } +@@ -1281,4 +1301,26 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { + return this.entity.get(io.papermc.paper.datacomponent.PaperDataComponentType.bukkitToMinecraft(type)) != null; } -+ + + // Purpur start - Ridables + @Override + public org.bukkit.entity.Player getRider() { diff --git a/leaf-server/paper-patches/features/0031-SparklyPaper-Skip-EntityScheduler-s-executeTick-chec.patch b/leaf-server/paper-patches/features/0031-SparklyPaper-Skip-EntityScheduler-s-executeTick-chec.patch index 063fde55..ad9cbff5 100644 --- a/leaf-server/paper-patches/features/0031-SparklyPaper-Skip-EntityScheduler-s-executeTick-chec.patch +++ b/leaf-server/paper-patches/features/0031-SparklyPaper-Skip-EntityScheduler-s-executeTick-chec.patch @@ -88,10 +88,10 @@ index c03608fec96b51e1867f43d8f42e5aefb1520e46..56268cf8d184e0b6cd46de8c2e893ad3 + // Leaf end - SparklyPaper - skip EntityScheduler's executeTick checks if there isn't any tasks to be run } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 83a23a82335eac087d36fd27ca6c6417960b881f..5a707acb7cda4097f822e3dcb17bdf26ca5c9f59 100644 +index 8f9af0c5396abf25534eaee17b81982024eb9fcd..31fe8bd91b5d2825af445e3d37d582a206202bf8 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -80,7 +80,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -83,7 +83,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { private final CraftPersistentDataContainer persistentDataContainer = new CraftPersistentDataContainer(CraftEntity.DATA_TYPE_REGISTRY); protected net.kyori.adventure.pointer.Pointers adventure$pointers; // Paper - implement pointers // Paper start - Folia shedulers @@ -100,7 +100,7 @@ index 83a23a82335eac087d36fd27ca6c6417960b881f..5a707acb7cda4097f822e3dcb17bdf26 private final io.papermc.paper.threadedregions.scheduler.FoliaEntityScheduler apiScheduler = new io.papermc.paper.threadedregions.scheduler.FoliaEntityScheduler(this); @Override -@@ -93,6 +93,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -96,6 +96,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { this.server = server; this.entity = entity; this.entityType = CraftEntityType.minecraftToBukkit(entity.getType());