From 3251e0d8e0ca1b67f7fe67b6c4df5f074f39cbdd Mon Sep 17 00:00:00 2001 From: Helvetica Volubi Date: Wed, 1 Jul 2026 23:27:02 +0800 Subject: [PATCH] Update Luminol --- gradle.properties | 2 +- ...02-Fix-datapack-command-save-function.patch | 4 ++-- ...g-to-disable-some-check-for-operators.patch | 2 +- ...Add-config-to-enable-save-all-command.patch | 4 ++-- .../0015-Leaves-Item-overstack-util.patch | 12 ++++++------ ...0018-Leaves-Leaves-Base-Protocol-Core.patch | 4 ++-- .../features/0021-LeavesHooks.patch | 2 +- .../0024-Leaves-Syncmatica-Protocol.patch | 2 +- .../features/0028-Leaves-Jade-Protocol.patch | 4 ++-- ...-Alternative-block-placement-Protocol.patch | 4 ++-- .../features/0030-Leaves-Fakeplayer.patch | 14 +++++++------- .../features/0031-Leaves-Replay-Mod-API.patch | 12 ++++++------ ...Leaves-Catch-update-suppression-crash.patch | 4 ++-- .../features/0044-Carpet-features.patch | 18 +++++++++--------- .../features/0001-Rebrand-to-Lophine.patch | 2 +- 15 files changed, 45 insertions(+), 45 deletions(-) diff --git a/gradle.properties b/gradle.properties index 0417dad..65c72eb 100644 --- a/gradle.properties +++ b/gradle.properties @@ -9,7 +9,7 @@ release=pre # true for push to repo, false for skip push repo, auto for detect by release value pushRepo=false -luminolRef=46e35e889eedc4dff3dc51dde30419f62333c55b +luminolRef=306c3152058211f704ad81e71ae097416d8f8b58 org.gradle.configuration-cache=true org.gradle.caching=true diff --git a/lophine-server/minecraft-patches/features/0002-Fix-datapack-command-save-function.patch b/lophine-server/minecraft-patches/features/0002-Fix-datapack-command-save-function.patch index c41aad2..e55acaf 100644 --- a/lophine-server/minecraft-patches/features/0002-Fix-datapack-command-save-function.patch +++ b/lophine-server/minecraft-patches/features/0002-Fix-datapack-command-save-function.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Fix datapack command save function diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java -index 00c42fa41e7f002b078ec4f50154477da872d9eb..03e50cf36bad1e2f377cdebe6dc333e0d4c185c4 100644 +index 478f896c4fc948a45a463d51c5a78a0a029eb376..56bd710443b794320f97f6e775247df9b09c4c0e 100644 --- a/net/minecraft/server/MinecraftServer.java +++ b/net/minecraft/server/MinecraftServer.java -@@ -2445,6 +2445,16 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop maxAllowedCount) { source.sendFailure(Component.translatable("commands.give.failed.toomanyitems", maxAllowedCount, prototypeItemStack.getDisplayName())); diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index bddf77458a524fb0e6712398b785565985c21452..57d95a22043cc0e229e302700a75fdc5e2d341b6 100644 +index 83dfc138415f676ac1831e577819ce0471640dbd..dcea7e64dd2fbad34f5de3bd682d72e4428b10a8 100644 --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -3214,7 +3214,7 @@ public class ServerGamePacketListenerImpl +@@ -3219,7 +3219,7 @@ public class ServerGamePacketListenerImpl } else if (slot.mayPlace(cursor)) { if (ItemStack.isSameItemSameComponents(clickedItem, cursor)) { int toPlace = packet.buttonNum() == 0 ? cursor.getCount() : 1; @@ -50,7 +50,7 @@ index bddf77458a524fb0e6712398b785565985c21452..57d95a22043cc0e229e302700a75fdc5 toPlace = Math.min(toPlace, slot.container.getMaxStackSize() - clickedItem.getCount()); if (toPlace == 1) { action = InventoryAction.PLACE_ONE; -@@ -3250,7 +3250,7 @@ public class ServerGamePacketListenerImpl +@@ -3255,7 +3255,7 @@ public class ServerGamePacketListenerImpl } } else if (ItemStack.isSameItemSameComponents(cursor, clickedItem)) { if (clickedItem.getCount() >= 0) { @@ -59,7 +59,7 @@ index bddf77458a524fb0e6712398b785565985c21452..57d95a22043cc0e229e302700a75fdc5 // As of 1.5, this is result slots only action = InventoryAction.PICKUP_ALL; } -@@ -3467,6 +3467,7 @@ public class ServerGamePacketListenerImpl +@@ -3472,6 +3472,7 @@ public class ServerGamePacketListenerImpl this.player.containerMenu.broadcastFullState(); } else { this.player.containerMenu.broadcastChanges(); @@ -67,7 +67,7 @@ index bddf77458a524fb0e6712398b785565985c21452..57d95a22043cc0e229e302700a75fdc5 } if (packet.buttonNum() == Inventory.SLOT_OFFHAND && this.player.containerMenu != this.player.inventoryMenu) this.player.containerSynchronizer.sendOffHandSlotChange(); // Paper - update offhand data when the player is clicking in an inventory not their own as the sychronizer does not include offhand slots if (io.papermc.paper.configuration.GlobalConfiguration.get().unsupportedSettings.updateEquipmentOnPlayerActions) this.player.detectEquipmentUpdates(); // Paper - Force update attributes. -@@ -3578,7 +3579,7 @@ public class ServerGamePacketListenerImpl +@@ -3583,7 +3584,7 @@ public class ServerGamePacketListenerImpl } boolean validSlot = packet.slotNum() >= 1 && packet.slotNum() <= 45; @@ -76,7 +76,7 @@ index bddf77458a524fb0e6712398b785565985c21452..57d95a22043cc0e229e302700a75fdc5 if (drop || (validSlot && !ItemStack.matches(this.player.inventoryMenu.getSlot(packet.slotNum()).getItem(), packet.itemStack()))) { // Insist on valid slot // CraftBukkit start - Call click event org.bukkit.inventory.InventoryView inventory = this.player.inventoryMenu.getBukkitView(); -@@ -3620,6 +3621,7 @@ public class ServerGamePacketListenerImpl +@@ -3625,6 +3626,7 @@ public class ServerGamePacketListenerImpl this.player.inventoryMenu.getSlot(packet.slotNum()).setByPlayer(itemStack); this.player.inventoryMenu.setRemoteSlot(packet.slotNum(), itemStack); this.player.inventoryMenu.broadcastChanges(); diff --git a/lophine-server/minecraft-patches/features/0018-Leaves-Leaves-Base-Protocol-Core.patch b/lophine-server/minecraft-patches/features/0018-Leaves-Leaves-Base-Protocol-Core.patch index deaf758..4494cac 100644 --- a/lophine-server/minecraft-patches/features/0018-Leaves-Leaves-Base-Protocol-Core.patch +++ b/lophine-server/minecraft-patches/features/0018-Leaves-Leaves-Base-Protocol-Core.patch @@ -36,10 +36,10 @@ index 08e253662a2c183c0ab53a51cc07485cff33bf2c..1bd678d668a1febc129f4cb4d0d95ea2 }; } diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java -index fb9b0cb1b8b1fd6c5666a3990a4e74824d4bef7e..3234e9b00a20faa521618ae5e2f9dbb99868d377 100644 +index c27779b5ca53aad8c87830b2e2647dbfcdcb762b..a4536d82830370ce74313cf9721968b3344f3f08 100644 --- a/net/minecraft/server/MinecraftServer.java +++ b/net/minecraft/server/MinecraftServer.java -@@ -2001,6 +2001,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop> 4, pos.getZ() >> 4, 8) && this.player.isWithinBlockInteractionRange(pos, 1.0)) { // Folia - do not allow players to interact with blocks outside the current region Vec3 distance = location.subtract(Vec3.atCenterOf(pos)); double limit = 1.0000001; diff --git a/lophine-server/minecraft-patches/features/0030-Leaves-Fakeplayer.patch b/lophine-server/minecraft-patches/features/0030-Leaves-Fakeplayer.patch index 0277f3a..3964478 100644 --- a/lophine-server/minecraft-patches/features/0030-Leaves-Fakeplayer.patch +++ b/lophine-server/minecraft-patches/features/0030-Leaves-Fakeplayer.patch @@ -33,7 +33,7 @@ index d2e9d46bbd9ee4ce45419b11499d7a7bc50f0219..848967dbe41694411603ef369cfdc3a0 private final java.util.concurrent.atomic.AtomicBoolean disconnectionHandled = new java.util.concurrent.atomic.AtomicBoolean(false); // Folia - region threading - may be called concurrently during configuration stage private int receivedPackets; diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java -index 3234e9b00a20faa521618ae5e2f9dbb99868d377..f6ace71d151d428149e8c9615c3b91e0f213ae7c 100644 +index a4536d82830370ce74313cf9721968b3344f3f08..c91e4b2143e4a801a124dfb9c2f807445539685f 100644 --- a/net/minecraft/server/MinecraftServer.java +++ b/net/minecraft/server/MinecraftServer.java @@ -296,6 +296,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop S spin(final Function factory) { + ca.spottedleaf.dataconverter.minecraft.datatypes.MCTypeRegistry.init(); // Paper - rewrite data converter system AtomicReference serverReference = new AtomicReference<>(); - Thread thread = new ca.spottedleaf.moonrise.common.util.TickThread(() -> serverReference.get().runServer(), "Server thread"); -@@ -1190,6 +1192,16 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0) { // Folia - region threading - this is complicated to implement, and even if done correctly is messy @@ -71,7 +71,7 @@ index 3234e9b00a20faa521618ae5e2f9dbb99868d377..f6ace71d151d428149e8c9615c3b91e0 this.emptyTicks++; } else { this.emptyTicks = 0; -@@ -1791,6 +1803,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0) { this.playerList.saveAll(playerSaveInterval); @@ -79,7 +79,7 @@ index 3234e9b00a20faa521618ae5e2f9dbb99868d377..f6ace71d151d428149e8c9615c3b91e0 } if (region == null && fullSave) { // Folia - region threading - don't auto save level data this.saveGlobalData(false); -@@ -2029,6 +2042,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop= limit) { diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java -index f6ace71d151d428149e8c9615c3b91e0f213ae7c..d7a7f7e7daf45bc0912aae008f3fed35201925fe 100644 +index c91e4b2143e4a801a124dfb9c2f807445539685f..31702272280b853d8a0a688eb162859412f5a646 100644 --- a/net/minecraft/server/MinecraftServer.java +++ b/net/minecraft/server/MinecraftServer.java -@@ -1894,7 +1894,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { // Folia - region threading // Paper start - Expand PlayerGameModeChangeEvent org.bukkit.event.player.PlayerGameModeChangeEvent event = updatedPlayer.setGameMode(gameType, org.bukkit.event.player.PlayerGameModeChangeEvent.Cause.DEFAULT_GAMEMODE, null); // Folia - region threading -@@ -2523,7 +2523,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop ServerGamePacketListenerImpl.this.getCraftPlayer().acceptConversationInput(conversationInput)); @@ -235,7 +235,7 @@ index b5e19220cd137c91ee992aa011593d625f741222..d94111b1171e83822885f616db4cd6fc } else if (this.player.getChatVisibility() == ChatVisiblity.SYSTEM) { // Re-add "Command Only" flag check this.send(new ClientboundSystemChatPacket(Component.translatable("chat.cannotSend").withStyle(ChatFormatting.RED), false)); } else { -@@ -2681,6 +2708,9 @@ public class ServerGamePacketListenerImpl +@@ -2686,6 +2713,9 @@ public class ServerGamePacketListenerImpl // Spigot start - spam exclusions private void detectRateSpam(final TickThrottler throttler, final String message) { @@ -245,7 +245,7 @@ index b5e19220cd137c91ee992aa011593d625f741222..d94111b1171e83822885f616db4cd6fc if (me.earthme.luminol.config.modules.misc.PaperPacketLimiterConfig.forceDisable) return; // Leaves - disable // CraftBukkit start - replaced with thread safe throttle if (org.spigotmc.SpigotConfig.enableSpamExclusions) { -@@ -3627,8 +3657,10 @@ public class ServerGamePacketListenerImpl +@@ -3632,8 +3662,10 @@ public class ServerGamePacketListenerImpl if (org.leavesmc.leaves.util.ItemOverstackUtils.hasOverstackingItem()) this.player.containerMenu.sendSingleSlot(packet.slotNum(), itemStack); // Leaves - item over-stack util - force send carried item if (io.papermc.paper.configuration.GlobalConfiguration.get().unsupportedSettings.updateEquipmentOnPlayerActions) this.player.detectEquipmentUpdates(); // Paper - Force update attributes. } else if (drop && validData) { @@ -676,7 +676,7 @@ index 6812ade4d9de26d507234b8357b109ec7e5cbb50..071d2cd7e0c2e5bba0732590ba804a5c public void addRecipe(RecipeHolder holder) { org.spigotmc.AsyncCatcher.catchOp("Recipe Add"); // Spigot diff --git a/net/minecraft/world/level/Level.java b/net/minecraft/world/level/Level.java -index fb368e4c09b44744ba634c22934b27ea804ea00e..6d3a5d648f4d04945a64e76995c0f4b5f81af779 100644 +index bfc8e50a9e0d1ec13092cdd4bee0efba94a24da7..9691985eff543ad71174c2be3033ed7901390413 100644 --- a/net/minecraft/world/level/Level.java +++ b/net/minecraft/world/level/Level.java @@ -1179,7 +1179,13 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl diff --git a/lophine-server/paper-patches/features/0001-Rebrand-to-Lophine.patch b/lophine-server/paper-patches/features/0001-Rebrand-to-Lophine.patch index aca64cc..bbf59ce 100644 --- a/lophine-server/paper-patches/features/0001-Rebrand-to-Lophine.patch +++ b/lophine-server/paper-patches/features/0001-Rebrand-to-Lophine.patch @@ -35,7 +35,7 @@ index fcdfd4f6de5e1c2d5e80c7f3d8cb0b33a62d257d..6eaa4e9bd1ecbfa531313ce1f470d55e metrics.addCustomChart(new Metrics.DrilldownPie("java_version", () -> { Map> map = new HashMap<>(); diff --git a/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java b/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java -index 5dc8e9065ea1f3eeea73fcd049c1f9818f5d25d8..a6b22e9bd010815607e19034cc141784bec398f0 100644 +index fd7cd6f72390c71d036ebfc0e4c67dad51eb2e9c..818ad9b9fc952fff13baea1e8f48840daa2a1541 100644 --- a/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java +++ b/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java @@ -40,8 +40,8 @@ public class PaperVersionFetcher implements VersionFetcher {