From 9b5f3e1bd96fa0580f182630930884203130da76 Mon Sep 17 00:00:00 2001 From: Bacteriawa Date: Sat, 8 Aug 2026 01:51:27 +0800 Subject: [PATCH] Update Folia --- gradle.properties | 2 +- .../features/0001-Rebrand-to-Lophine.patch | 2 +- .../features/0002-Luminol-Config-System.patch | 4 +- .../features/0003-KioCG-Chunk-API.patch | 14 +++---- .../features/0008-Tick-regions-api.patch | 4 +- .../features/0009-Leaves-Leaves-plugin.patch | 8 ++-- .../0011-World-load-unload-APIs.patch | 2 +- .../0013-Leaves-Add-fakeplayer-api.patch | 8 ++-- .../features/0014-Leaves-Replay-Mod-API.patch | 8 ++-- .../features/0001-Luminol-Config-System.patch | 6 +-- .../0002-Correct-player-respawn-place.patch | 2 +- ...-Configurable-region-format-framewor.patch | 2 +- ...o-not-enable-any-debug-subscriptions.patch | 2 +- ...sk-returning-of-ServerConfigurationP.patch | 4 +- .../0012-Fix-riding-statistics-desync.patch | 8 ++-- ...016-Fix-entity-portal-teleport-speed.patch | 6 +-- ...-player-auto-saving-ignores-interval.patch | 2 +- ...8-Force-disable-builtin-spark-plugin.patch | 12 +++--- ...t-teleprotAsync-calls-in-move-events.patch | 8 ++-- ...-when-teleportation-or-firstly-creat.patch | 8 ++-- ...f-entity-was-moving-to-another-regio.patch | 2 +- .../0025-World-load-unload-APIs.patch | 30 +++++++------- ...iiju-Entity-tick-and-removal-limiter.patch | 12 +++--- ...iju-Vanilla-end-portal-teleportation.patch | 10 ++--- ...sync-protocol-switching-optimization.patch | 20 +++++----- .../0030-Add-config-for-server-mod-name.patch | 4 +- .../0034-Add-config-for-vanilla-random.patch | 2 +- ...ly-datapack-command-Fix-datapack-com.patch | 4 +- ...r-with-chunkhot-membar-and-regionbar.patch | 14 +++---- .../0047-Add-config-for-item-multitask.patch | 6 +-- ...g-teleportation-event-APIs-for-folia.patch | 14 +++---- .../0050-Add-Portal-rate-limiter.patch | 16 ++++---- ...-Add-config-for-waypoint-restoration.patch | 6 +-- ...-Secure-seed-and-matter-seed-command.patch | 2 +- ...ess-creating-stats-json-bases-on-pla.patch | 2 +- .../0058-Leaf-fast-bit-radix-sort.patch | 4 +- ...-Configurable-vanilla-username-check.patch | 4 +- ...60-Purpur-Lobotomize-stuck-villagers.patch | 2 +- ...fish-Reduce-projectile-chunk-loading.patch | 12 +++--- .../0064-Leaves-Disable-packet-limit.patch | 8 ++-- ...Leaves-Lithium-Sleeping-Block-Entity.patch | 18 ++++----- ...aves-Disable-moved-wrongly-threshold.patch | 6 +-- ...Skip-entity-move-if-movement-is-zero.patch | 4 +- ...timize-random-calls-in-chunk-ticking.patch | 2 +- ...on-check-has-physics-before-same-veh.patch | 2 +- ...gible-planar-movement-multiplication.patch | 2 +- .../0081-Gale-Reduce-array-allocations.patch | 10 ++--- .../features/0084-Server-I18n.patch | 2 +- ...urpur-Barrels-and-enderchests-6-rows.patch | 4 +- ...-to-disable-some-check-for-operators.patch | 6 +-- ...-to-enable-cross-region-damage-trace.patch | 2 +- ...dd-config-to-enable-save-all-command.patch | 4 +- ...-config-to-enable-raytracing-tracker.patch | 10 ++--- .../0096-Spawn-invulnerable-time.patch | 2 +- .../0097-Leaves-Item-overstack-util.patch | 12 +++--- ...100-Leaves-Leaves-Base-Protocol-Core.patch | 6 +-- ...s-Configurable-trading-with-the-void.patch | 4 +- .../0102-Leaves-Servux-Protocol.patch | 2 +- .../0106-Leaves-Syncmatica-Protocol.patch | 2 +- .../0108-Leaves-Xaero-Map-Protocol.patch | 2 +- .../features/0110-Leaves-Jade-Protocol.patch | 4 +- ...Alternative-block-placement-Protocol.patch | 4 +- .../features/0112-Leaves-Fakeplayer.patch | 28 ++++++------- .../features/0113-Leaves-Replay-Mod-API.patch | 16 ++++---- .../0114-Leaves-Creative-fly-no-clip.patch | 2 +- .../0116-Global-Entities-Counter.patch | 8 ++-- ...eaves-Catch-update-suppression-crash.patch | 10 ++--- .../features/0120-Instant-Block-Updater.patch | 10 ++--- .../features/0126-Carpet-features.patch | 26 ++++++------- ...8-Add-Vanilla-like-experience-Config.patch | 2 +- ...-Restore-vanilla-ender-pearl-loading.patch | 4 +- ...-Fix-wrong-variable-passing-in-Regio.patch | 4 +- ...-Fix-folia-nether-portal-ticket-plac.patch | 6 +-- ...-RegionizedTaskQueue-queue-TTL-optim.patch | 4 +- ...-Reduce-ticket-operations-in-nether-.patch | 6 +-- .../features/0002-Luminol-Config-System.patch | 4 +- ...4-Force-disable-builtin-spark-plugin.patch | 2 +- .../0005-World-load-unload-APIs.patch | 10 ++--- ...Add-config-to-disable-async-catchers.patch | 2 +- ...ig-to-avoid-of-folia-supported-check.patch | 4 +- ...-with-chunkhot-membar-and-region-bar.patch | 10 ++--- ...-Secure-seed-and-matter-seed-command.patch | 4 +- .../features/0016-Leaves-Leaves-plugin.patch | 4 +- ...020-Leaves-Leaves-Base-Protocol-Core.patch | 2 +- .../0022-Leaves-Leaves-Fakeplayer.patch | 10 ++--- .../features/0023-Leaves-Replay-Mod-API.patch | 39 +++++++------------ 86 files changed, 301 insertions(+), 312 deletions(-) diff --git a/gradle.properties b/gradle.properties index 4a1b2e4..f8258c5 100644 --- a/gradle.properties +++ b/gradle.properties @@ -9,7 +9,7 @@ release=true # true for push to repo, false for skip push repo, auto for detect by release value pushRepo=auto -foliaRef=e48800d446d2bdeb24a8d31d671554440687e846 +foliaRef=57f643f10e0a9d01024773232d38ae666067d593 org.gradle.configuration-cache=true org.gradle.caching=true diff --git a/lophine-api/paper-patches/features/0001-Rebrand-to-Lophine.patch b/lophine-api/paper-patches/features/0001-Rebrand-to-Lophine.patch index da61747..da62731 100644 --- a/lophine-api/paper-patches/features/0001-Rebrand-to-Lophine.patch +++ b/lophine-api/paper-patches/features/0001-Rebrand-to-Lophine.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Rebrand to Lophine diff --git a/src/main/java/io/papermc/paper/ServerBuildInfo.java b/src/main/java/io/papermc/paper/ServerBuildInfo.java -index 652ff54e7c50412503725d628bfe72ed03059790..1727ea0b873ee4f9a86cca62eac6dc3a5063b4e6 100644 +index 56a5877181e8d37518b178c95155e892c442e96d..ebe0290bf0235af2ba353ac1f74b29080daebba4 100644 --- a/src/main/java/io/papermc/paper/ServerBuildInfo.java +++ b/src/main/java/io/papermc/paper/ServerBuildInfo.java @@ -19,6 +19,17 @@ public interface ServerBuildInfo { diff --git a/lophine-api/paper-patches/features/0002-Luminol-Config-System.patch b/lophine-api/paper-patches/features/0002-Luminol-Config-System.patch index eb294cb..110ca63 100644 --- a/lophine-api/paper-patches/features/0002-Luminol-Config-System.patch +++ b/lophine-api/paper-patches/features/0002-Luminol-Config-System.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Luminol Config System diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index fb5ca3ab0ddba433a39e65572beeb955b50d6f72..a139182704a5f147661816d08907be8a7f8f7dde 100644 +index 067d901c69a54c4b6ae5a00488f0dacc5fde7961..209d1968f4bff3b33785fd8bfbeea5ae231e581a 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2776,6 +2776,12 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2774,6 +2774,12 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi */ void allowPausing(@NotNull org.bukkit.plugin.Plugin plugin, boolean value); // Paper end - API to check if the server is sleeping diff --git a/lophine-api/paper-patches/features/0003-KioCG-Chunk-API.patch b/lophine-api/paper-patches/features/0003-KioCG-Chunk-API.patch index f758d36..3ef6074 100644 --- a/lophine-api/paper-patches/features/0003-KioCG-Chunk-API.patch +++ b/lophine-api/paper-patches/features/0003-KioCG-Chunk-API.patch @@ -1,6 +1,6 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Helvetica Volubi -Date: Sun, 28 Jun 2026 16:40:49 +0800 +From: Bacteriawa +Date: Sat, 8 Aug 2026 01:25:33 +0800 Subject: [PATCH] KioCG Chunk API @@ -16,13 +16,13 @@ index d873b78f6935a23ff8f6092b80968267b182cc0f..b4323370859dd4d9e86614484cdb9d2e + long getChunkHotAvg(); // KioCG } diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index 7a719d31fbc7633a9bb87ea97338190ee3a6047a..b79b9a2ad108c0488d3cc3862f72985059bb4988 100644 +index 65e83e171ab4c514662b9344e08f7065fa9efaa1..274af6397b5f7c0b6787e2669de80e54858950a2 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -4020,4 +4020,6 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM - default ObjectContents asObjectContents() { - return this.getPlayerProfile().asObjectContents(); - } +@@ -4050,4 +4050,6 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM + * clearing any fixed pose in the process. + */ + void unsetFixedPose(); + + long getNearbyChunkHot(); // KioCG } diff --git a/lophine-api/paper-patches/features/0008-Tick-regions-api.patch b/lophine-api/paper-patches/features/0008-Tick-regions-api.patch index 3f80e3d..550d962 100644 --- a/lophine-api/paper-patches/features/0008-Tick-regions-api.patch +++ b/lophine-api/paper-patches/features/0008-Tick-regions-api.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Tick regions api diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java -index c66cd17fd037b73d8ff04dd2ed328ca25e8b0f1a..b86cd3b37ec3fd63f34acd6bf17f6a91c24b5038 100644 +index bf2f7c4959f9f2cd43bbd4d4310e7eedf10cf892..bccb33456d84384bd90887822e16cbad65986106 100644 --- a/src/main/java/org/bukkit/World.java +++ b/src/main/java/org/bukkit/World.java -@@ -4708,4 +4708,8 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient +@@ -4719,4 +4719,8 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient } } } diff --git a/lophine-api/paper-patches/features/0009-Leaves-Leaves-plugin.patch b/lophine-api/paper-patches/features/0009-Leaves-Leaves-plugin.patch index 7544cf0..c9034d6 100644 --- a/lophine-api/paper-patches/features/0009-Leaves-Leaves-plugin.patch +++ b/lophine-api/paper-patches/features/0009-Leaves-Leaves-plugin.patch @@ -8,10 +8,10 @@ As part of: Leaves (https://github.com/HyacinthHaru/Leaves/blob/90080d238e2fcfc1 Licensed under: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html) diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java -index 8a24b84db656da4cec59e9bccac306467c8155b0..0ac1e049fad85de8365380b03e60d915ee643f16 100644 +index 325d797766de527268eb18bcf9db594ca3a0c519..e922a0eefb03db5e33f3306aaea558b6ed61b42a 100644 --- a/src/main/java/org/bukkit/Bukkit.java +++ b/src/main/java/org/bukkit/Bukkit.java -@@ -3046,4 +3046,10 @@ public final class Bukkit { +@@ -3045,4 +3045,10 @@ public final class Bukkit { public static void restart() { server.restart(); } @@ -23,10 +23,10 @@ index 8a24b84db656da4cec59e9bccac306467c8155b0..0ac1e049fad85de8365380b03e60d915 + // Leaves end - Feature API } diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index a139182704a5f147661816d08907be8a7f8f7dde..a8c262064e4058f786c62c333130c4cac0ce4b66 100644 +index 209d1968f4bff3b33785fd8bfbeea5ae231e581a..ac19fd1b6b8e48313c79d9fb26c3df50f67b64b8 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2782,6 +2782,10 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2780,6 +2780,10 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi me.earthme.luminol.api.config.LuminolConfigBuilder getLuminolConfigBuilder(); // Luminol end - Luminol Config API diff --git a/lophine-api/paper-patches/features/0011-World-load-unload-APIs.patch b/lophine-api/paper-patches/features/0011-World-load-unload-APIs.patch index 64db6bb..41e3264 100644 --- a/lophine-api/paper-patches/features/0011-World-load-unload-APIs.patch +++ b/lophine-api/paper-patches/features/0011-World-load-unload-APIs.patch @@ -5,7 +5,7 @@ Subject: [PATCH] World load/unload APIs diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index a8c262064e4058f786c62c333130c4cac0ce4b66..3c92440fbef6e6970cd800e0038a625a775eda9a 100644 +index ac19fd1b6b8e48313c79d9fb26c3df50f67b64b8..c037307f926d64bac3b51a91aa61f63d0357770c 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java @@ -775,6 +775,17 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi diff --git a/lophine-api/paper-patches/features/0013-Leaves-Add-fakeplayer-api.patch b/lophine-api/paper-patches/features/0013-Leaves-Add-fakeplayer-api.patch index 3141dfd..22ee423 100644 --- a/lophine-api/paper-patches/features/0013-Leaves-Add-fakeplayer-api.patch +++ b/lophine-api/paper-patches/features/0013-Leaves-Add-fakeplayer-api.patch @@ -8,10 +8,10 @@ As a part of : Leaves (https://github.com/LeavesMC/Leaves) Licensed under: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html) diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java -index 0ac1e049fad85de8365380b03e60d915ee643f16..a747fbe107dcc134558ca8ecfbe30e81245a5742 100644 +index e922a0eefb03db5e33f3306aaea558b6ed61b42a..7120bbea89c1c240b09562c73833f21a9980886f 100644 --- a/src/main/java/org/bukkit/Bukkit.java +++ b/src/main/java/org/bukkit/Bukkit.java -@@ -3052,4 +3052,15 @@ public final class Bukkit { +@@ -3051,4 +3051,15 @@ public final class Bukkit { return server.getFeatureManager(); } // Leaves end - Feature API @@ -28,10 +28,10 @@ index 0ac1e049fad85de8365380b03e60d915ee643f16..a747fbe107dcc134558ca8ecfbe30e81 + // Leaves end - Bot API } diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index 3c92440fbef6e6970cd800e0038a625a775eda9a..c8fc95a85b162cc71aa8dada8f87f4fe6f5dad12 100644 +index c037307f926d64bac3b51a91aa61f63d0357770c..6c91cabdcacf7a9bf6421fbb7d52aa17516100f8 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2827,4 +2827,13 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2825,4 +2825,13 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi */ double @Nullable [] getRegionTPS(@NotNull World world, int chunkX, int chunkZ); // Folia end - region TPS API diff --git a/lophine-api/paper-patches/features/0014-Leaves-Replay-Mod-API.patch b/lophine-api/paper-patches/features/0014-Leaves-Replay-Mod-API.patch index a2680fb..648698f 100644 --- a/lophine-api/paper-patches/features/0014-Leaves-Replay-Mod-API.patch +++ b/lophine-api/paper-patches/features/0014-Leaves-Replay-Mod-API.patch @@ -8,10 +8,10 @@ As a part of : Leaves (https://github.com/LeavesMC/Leaves) Licensed under: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html) diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java -index a747fbe107dcc134558ca8ecfbe30e81245a5742..b09a90f8187a15ddaa15f231f46f51f2b1d2c1ed 100644 +index 7120bbea89c1c240b09562c73833f21a9980886f..b114df0dde2e5bede7bb2956359fdd4ca25ac3da 100644 --- a/src/main/java/org/bukkit/Bukkit.java +++ b/src/main/java/org/bukkit/Bukkit.java -@@ -3063,4 +3063,10 @@ public final class Bukkit { +@@ -3062,4 +3062,10 @@ public final class Bukkit { return server.getBotManager(); } // Leaves end - Bot API @@ -23,10 +23,10 @@ index a747fbe107dcc134558ca8ecfbe30e81245a5742..b09a90f8187a15ddaa15f231f46f51f2 + // Leaves end - Photographer API } diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index c8fc95a85b162cc71aa8dada8f87f4fe6f5dad12..5e4da280f7bed1084ebc2814d23901ad072e116d 100644 +index 6c91cabdcacf7a9bf6421fbb7d52aa17516100f8..e6295c4bb86286aa893b55b77ddbfb2f63fdd05c 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2836,4 +2836,8 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2834,4 +2834,8 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi */ @NotNull org.leavesmc.leaves.entity.bot.BotManager getBotManager(); // Leaves end - Bot API diff --git a/lophine-server/minecraft-patches/features/0001-Luminol-Config-System.patch b/lophine-server/minecraft-patches/features/0001-Luminol-Config-System.patch index 988d6cb..9df9d18 100644 --- a/lophine-server/minecraft-patches/features/0001-Luminol-Config-System.patch +++ b/lophine-server/minecraft-patches/features/0001-Luminol-Config-System.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Luminol Config System diff --git a/net/minecraft/server/Main.java b/net/minecraft/server/Main.java -index e2939cc39a8c103e4c4d7b01d39b5546486e4fbc..a557d488e4e289a61aeb9aed0cc133a0a7ce8f8c 100644 +index 693ce1c23c7be6406eda22da57aa4a1b86a08f5f..4385488983a7544eb6d9193d913dc55294f4620d 100644 --- a/net/minecraft/server/Main.java +++ b/net/minecraft/server/Main.java @@ -110,6 +110,7 @@ public class Main { @@ -17,10 +17,10 @@ index e2939cc39a8c103e4c4d7b01d39b5546486e4fbc..a557d488e4e289a61aeb9aed0cc133a0 Bootstrap.bootStrap(); Bootstrap.validate(); diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java -index 6f13870a1b463049dd37cf1c65d0bdecfc35b5c4..a49c46eb7df50fc3c5587a2c3668ab6edc887107 100644 +index be15a671e0b39b455cd5983f4b90f8f3022a2ebc..56d26866cb8f413684e62558e5609b273efb8552 100644 --- a/net/minecraft/server/MinecraftServer.java +++ b/net/minecraft/server/MinecraftServer.java -@@ -1169,6 +1169,9 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop queue = new java.util.ArrayDeque<>(); queue.add(this); -@@ -4211,14 +4217,24 @@ public abstract class Entity +@@ -4207,14 +4213,24 @@ public abstract class Entity for (EntityTreeNode passenger : passengers) { queue.add(passenger); diff --git a/lophine-server/minecraft-patches/features/0016-Fix-entity-portal-teleport-speed.patch b/lophine-server/minecraft-patches/features/0016-Fix-entity-portal-teleport-speed.patch index 6201d7d..8d44c7a 100644 --- a/lophine-server/minecraft-patches/features/0016-Fix-entity-portal-teleport-speed.patch +++ b/lophine-server/minecraft-patches/features/0016-Fix-entity-portal-teleport-speed.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Fix entity portal-teleport speed diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java -index c6434ff2e5c211887c2e98c8462a49e0e1cb5b21..534f103234eb92571c664cbcfea4ce4e990d3ea8 100644 +index 35ab432bbd59aba80a6eaca1769e6aa82c8a7e46..6950fa2462353f30ee02e1d0091cfcf289f63939 100644 --- a/net/minecraft/server/level/ServerLevel.java +++ b/net/minecraft/server/level/ServerLevel.java @@ -1492,7 +1492,27 @@ public class ServerLevel extends Level implements WorldGenLevel, ServerEntityGet @@ -46,7 +46,7 @@ index c6434ff2e5c211887c2e98c8462a49e0e1cb5b21..534f103234eb92571c664cbcfea4ce4e } else {entity.inactiveTick();} // Paper - EAR 2 profiler.pop(); diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index 47eef926f57053ace7ea140261570c4970822062..7953b7ece0b5e3f41e85252cdfd8e400fab212ae 100644 +index b475a8fe259848749ee05ff6cf10e46f52f955d3..5e7cf38d241591715fec9ec008d3ac87bbaef662 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java @@ -387,6 +387,7 @@ public abstract class Entity @@ -57,7 +57,7 @@ index 47eef926f57053ace7ea140261570c4970822062..7953b7ece0b5e3f41e85252cdfd8e400 public void inactiveTick() { } -@@ -3595,6 +3596,7 @@ public abstract class Entity +@@ -3591,6 +3592,7 @@ public abstract class Entity } else { if (this.portalProcess == null || !this.portalProcess.isSamePortal(portal)) { this.portalProcess = new PortalProcessor(portal, pos.immutable()); diff --git a/lophine-server/minecraft-patches/features/0017-Fix-player-auto-saving-ignores-interval.patch b/lophine-server/minecraft-patches/features/0017-Fix-player-auto-saving-ignores-interval.patch index 536f21d..3c6e4fc 100644 --- a/lophine-server/minecraft-patches/features/0017-Fix-player-auto-saving-ignores-interval.patch +++ b/lophine-server/minecraft-patches/features/0017-Fix-player-auto-saving-ignores-interval.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Fix player auto saving ignores interval diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java -index bc390caff901a3b37a5a4ca3619dd9339fa4cb07..6e39d752aef322fc1cc12bf221cff057cad18578 100644 +index 6c2196726a0669bddda456a089aeec0d9d9bdfa3..0802483484015fd92dec211aae9fd33e45621f74 100644 --- a/net/minecraft/server/level/ServerPlayer.java +++ b/net/minecraft/server/level/ServerPlayer.java @@ -208,7 +208,7 @@ import org.slf4j.Logger; diff --git a/lophine-server/minecraft-patches/features/0018-Force-disable-builtin-spark-plugin.patch b/lophine-server/minecraft-patches/features/0018-Force-disable-builtin-spark-plugin.patch index ef10887..a7ced01 100644 --- a/lophine-server/minecraft-patches/features/0018-Force-disable-builtin-spark-plugin.patch +++ b/lophine-server/minecraft-patches/features/0018-Force-disable-builtin-spark-plugin.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Force disable builtin spark plugin The spark passed down from paper has some memory leaking issue, so we fully removed it from the code to prevent that memory leaking issue. diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java -index c74f76b46259204b33b69ad08bb03c81b8b36961..cc8364891a5d2196e8809479db984b67b5bcb079 100644 +index dd63f14cf6b857202146348b2242673af1883cb7..88ccf32b3c1b3506fb76be5ae520168b6b167aa3 100644 --- a/net/minecraft/server/MinecraftServer.java +++ b/net/minecraft/server/MinecraftServer.java @@ -672,8 +672,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop= emptyTickThreshold) { @@ -47,7 +47,7 @@ index c74f76b46259204b33b69ad08bb03c81b8b36961..cc8364891a5d2196e8809479db984b67 if (this.emptyTicks == emptyTickThreshold) { LOGGER.info("Server empty for {} seconds, pausing", this.pauseWhenEmptySeconds()); this.autoSave(); -@@ -1685,7 +1685,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop, ServerLevel> newLevels = Maps.newLinkedHashMap(oldLevels); newLevels.remove(level.dimension()); diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java -index 534f103234eb92571c664cbcfea4ce4e990d3ea8..c4d9d890db784d376b876d70f0468df6edb75168 100644 +index 6950fa2462353f30ee02e1d0091cfcf289f63939..def5d4ce012dba5f819680d671235173467bfe7a 100644 --- a/net/minecraft/server/level/ServerLevel.java +++ b/net/minecraft/server/level/ServerLevel.java @@ -221,6 +221,12 @@ public class ServerLevel extends Level implements WorldGenLevel, ServerEntityGet @@ -275,7 +275,7 @@ index 534f103234eb92571c664cbcfea4ce4e990d3ea8..c4d9d890db784d376b876d70f0468df6 // CraftBukkit start private final ResourceKey typeKey; diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java -index 6e39d752aef322fc1cc12bf221cff057cad18578..00dfc496f4e437393f0fc5707f50783418f263f4 100644 +index 0802483484015fd92dec211aae9fd33e45621f74..4c9915087798f6548bb22574051c7b0b5aed7732 100644 --- a/net/minecraft/server/level/ServerPlayer.java +++ b/net/minecraft/server/level/ServerPlayer.java @@ -1694,7 +1694,30 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc @@ -322,10 +322,10 @@ index 6e39d752aef322fc1cc12bf221cff057cad18578..00dfc496f4e437393f0fc5707f507834 } ); diff --git a/net/minecraft/server/network/ServerConfigurationPacketListenerImpl.java b/net/minecraft/server/network/ServerConfigurationPacketListenerImpl.java -index 97f4c546663fb19558246366a3d8d77f2b9327ef..e5304e9d1ea57c01a1147621a42a9b584878f765 100644 +index 111789b4aca281dd1899dfbcc4e7e0ca36d74b51..2d3b0243f061aeaa979ddfc89c0361ecc29edcde 100644 --- a/net/minecraft/server/network/ServerConfigurationPacketListenerImpl.java +++ b/net/minecraft/server/network/ServerConfigurationPacketListenerImpl.java -@@ -210,8 +210,23 @@ public class ServerConfigurationPacketListenerImpl extends ServerCommonPacketLis +@@ -219,8 +219,23 @@ public class ServerConfigurationPacketListenerImpl extends ServerCommonPacketLis this.switchToMain = serverPlayer; // now the connection responsibility is transferred to the region @@ -350,7 +350,7 @@ index 97f4c546663fb19558246366a3d8d77f2b9327ef..e5304e9d1ea57c01a1147621a42a9b58 world.moonrise$getChunkTaskScheduler().scheduleTickingState( chunkPos.x(), chunkPos.z(), net.minecraft.server.level.FullChunkStatus.ENTITY_TICKING, true, ca.spottedleaf.concurrentutil.util.Priority.HIGHER, -@@ -223,9 +238,15 @@ public class ServerConfigurationPacketListenerImpl extends ServerCommonPacketLis +@@ -232,9 +247,15 @@ public class ServerConfigurationPacketListenerImpl extends ServerCommonPacketLis ); io.papermc.paper.threadedregions.RegionizedServer.getInstance().taskQueue.queueTickTaskQueue( world, chunkPos.x(), chunkPos.z(), () -> { @@ -367,7 +367,7 @@ index 97f4c546663fb19558246366a3d8d77f2b9327ef..e5304e9d1ea57c01a1147621a42a9b58 ); } diff --git a/net/minecraft/server/network/config/PrepareSpawnTask.java b/net/minecraft/server/network/config/PrepareSpawnTask.java -index 48f51b0f94df3e59c9410129489c63a4287bc0bc..2682f8702785b1e501748a308c5e394b8b664428 100644 +index 9fad06eda81b4c2c1889a9cfa7a6948e7ee01862..854f8954ccfd8c34c9f9c91fd1805260f9b429b5 100644 --- a/net/minecraft/server/network/config/PrepareSpawnTask.java +++ b/net/minecraft/server/network/config/PrepareSpawnTask.java @@ -104,6 +104,16 @@ public class PrepareSpawnTask implements ConfigurationTask { @@ -429,7 +429,7 @@ index 48f51b0f94df3e59c9410129489c63a4287bc0bc..2682f8702785b1e501748a308c5e394b private final Vec2 spawnAngle; diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index 9270b887448023b6ace2e7fae6b632755ce90600..66ddbdb130867a508ba161a570d101dbe6353246 100644 +index 33c9692a59c58c44a77b1077553e2bda88cb8305..e8047a06a2df17fde9965508c1ebcf1fc4d25989 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java @@ -392,6 +392,9 @@ public abstract class Entity @@ -442,7 +442,7 @@ index 9270b887448023b6ace2e7fae6b632755ce90600..66ddbdb130867a508ba161a570d101db // CraftBukkit end // Paper start -@@ -4538,6 +4541,17 @@ public abstract class Entity +@@ -4534,6 +4537,17 @@ public abstract class Entity } } @@ -460,7 +460,7 @@ index 9270b887448023b6ace2e7fae6b632755ce90600..66ddbdb130867a508ba161a570d101db // TODO any events that can modify go HERE // check for same region -@@ -4556,6 +4570,14 @@ public abstract class Entity +@@ -4552,6 +4566,14 @@ public abstract class Entity } for (EntityTreeNode entity : passengerTree.getFullTree()) { @@ -475,7 +475,7 @@ index 9270b887448023b6ace2e7fae6b632755ce90600..66ddbdb130867a508ba161a570d101db entity.root.teleportSyncSameRegion(pos, yaw, pitch, velocity); } -@@ -4571,8 +4593,8 @@ public abstract class Entity +@@ -4567,8 +4589,8 @@ public abstract class Entity // performs add/remove from world logic which will also perform add/remove tracker logic } @@ -486,7 +486,7 @@ index 9270b887448023b6ace2e7fae6b632755ce90600..66ddbdb130867a508ba161a570d101db } return true; } -@@ -4589,7 +4611,7 @@ public abstract class Entity +@@ -4585,7 +4607,7 @@ public abstract class Entity node.root = node.root.transformForAsyncTeleport(destination, pos, yaw, pitch, velocity); } @@ -495,7 +495,7 @@ index 9270b887448023b6ace2e7fae6b632755ce90600..66ddbdb130867a508ba161a570d101db return true; } -@@ -4868,6 +4890,13 @@ public abstract class Entity +@@ -4864,6 +4886,13 @@ public abstract class Entity ca.spottedleaf.moonrise.common.util.CoordinateUtils.getChunkX(initialPosition), ca.spottedleaf.moonrise.common.util.CoordinateUtils.getChunkZ(initialPosition) ); @@ -509,7 +509,7 @@ index 9270b887448023b6ace2e7fae6b632755ce90600..66ddbdb130867a508ba161a570d101db // first, remove entity/passengers from world EntityTreeNode passengerTree = this.detachPassengers(); -@@ -4925,6 +4954,10 @@ public abstract class Entity +@@ -4921,6 +4950,10 @@ public abstract class Entity if (info.postTeleportTransition() != null) { info.postTeleportTransition().onTransition(teleported); } diff --git a/lophine-server/minecraft-patches/features/0027-Kaiiju-Entity-tick-and-removal-limiter.patch b/lophine-server/minecraft-patches/features/0027-Kaiiju-Entity-tick-and-removal-limiter.patch index 881cf7c..6b23475 100644 --- a/lophine-server/minecraft-patches/features/0027-Kaiiju-Entity-tick-and-removal-limiter.patch +++ b/lophine-server/minecraft-patches/features/0027-Kaiiju-Entity-tick-and-removal-limiter.patch @@ -1,6 +1,6 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Bacteriawa -Date: Tue, 21 Apr 2026 01:41:14 +0800 +Date: Sat, 8 Aug 2026 01:27:42 +0800 Subject: [PATCH] Kaiiju: Entity tick and removal limiter Co-authored by: Xymb @@ -8,19 +8,19 @@ As part of: Kaiiju (https://github.com/KaiijuMC/Kaiiju/blob/c2b7aec8f7b418a39a2e Licensed under: GPL-3.0 (https://github.com/KaiijuMC/Kaiiju/blob/c2b7aec8f7b418a39a2ec408e6411e6f752379da/LICENSE) diff --git a/io/papermc/paper/threadedregions/RegionizedWorldData.java b/io/papermc/paper/threadedregions/RegionizedWorldData.java -index cb15cfbc684ae9e9d9634886f707c2df10063139..f32d118e1e925b2155cef3fcdcb1e194c541e242 100644 +index c8f13da82c55cc5c1fe1c922a87e3eccb1117937..981458f6697a79dbc9fc8cf41c088c98e556c6dd 100644 --- a/io/papermc/paper/threadedregions/RegionizedWorldData.java +++ b/io/papermc/paper/threadedregions/RegionizedWorldData.java -@@ -354,6 +354,7 @@ public final class RegionizedWorldData { +@@ -349,6 +349,7 @@ public final class RegionizedWorldData { private final IteratorSafeOrderedReferenceSet navigatingMobs = new IteratorSafeOrderedReferenceSet<>(); - public final ReferenceList trackerEntities = new ReferenceList<>(EMPTY_ENTITY_ARRAY); // Moonrise - entity tracker - public final ReferenceList trackerUnloadedEntities = new ReferenceList<>(EMPTY_ENTITY_ARRAY); // Moonrise - entity tracker + public ReferenceList trackerEntities = new ReferenceList<>(EMPTY_ENTITY_ARRAY); // Moonrise - entity tracker + public boolean iteratingTrackerEntities; + public final dev.kaiijumc.kaiiju.KaiijuEntityThrottler entityThrottler = new dev.kaiijumc.kaiiju.KaiijuEntityThrottler(); // Kaiiju // block ticking private final ObjectLinkedOpenHashSet blockEvents = new ObjectLinkedOpenHashSet<>(); diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java -index c4d9d890db784d376b876d70f0468df6edb75168..0641b98ef3298eb682ceae83f60b730f3bf90103 100644 +index def5d4ce012dba5f819680d671235173467bfe7a..1c01ec9597c47b7296f498a897f1fd2333c8c4d4 100644 --- a/net/minecraft/server/level/ServerLevel.java +++ b/net/minecraft/server/level/ServerLevel.java @@ -917,6 +917,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ServerEntityGet diff --git a/lophine-server/minecraft-patches/features/0028-Kaiiju-Vanilla-end-portal-teleportation.patch b/lophine-server/minecraft-patches/features/0028-Kaiiju-Vanilla-end-portal-teleportation.patch index 4249346..28c67ff 100644 --- a/lophine-server/minecraft-patches/features/0028-Kaiiju-Vanilla-end-portal-teleportation.patch +++ b/lophine-server/minecraft-patches/features/0028-Kaiiju-Vanilla-end-portal-teleportation.patch @@ -8,10 +8,10 @@ As part of: Kaiiju (https://github.com/KaiijuMC/Kaiiju/blob/c2b7aec8f7b418a39a2e Licensed under: GPL-3.0 (https://github.com/KaiijuMC/Kaiiju/blob/c2b7aec8f7b418a39a2ec408e6411e6f752379da/LICENSE) diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index 66ddbdb130867a508ba161a570d101dbe6353246..df82f900580ad1b71960eab890a7a6215f578421 100644 +index e8047a06a2df17fde9965508c1ebcf1fc4d25989..3b98ef4310d9f996437af9f12ab3de2cf6f4dd63 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java -@@ -4676,15 +4676,19 @@ public abstract class Entity +@@ -4672,15 +4672,19 @@ public abstract class Entity targetPos, 16, // load 16 blocks to be safe from block physics ca.spottedleaf.concurrentutil.util.Priority.HIGH, (chunks) -> { @@ -35,7 +35,7 @@ index 66ddbdb130867a508ba161a570d101dbe6353246..df82f900580ad1b71960eab890a7a621 TeleportTransition.PLAY_PORTAL_SOUND.then(TeleportTransition.PLACE_PORTAL_TICKET), org.bukkit.event.player.PlayerTeleportEvent.TeleportCause.END_PORTAL, TeleportTransition.PassengerTeleportationMode.POSITION_RIDER -@@ -4700,11 +4704,15 @@ public abstract class Entity +@@ -4696,11 +4700,15 @@ public abstract class Entity ca.spottedleaf.concurrentutil.util.Priority.HIGH, (chunks) -> { BlockPos adjustedSpawn = destination.getHeightmapPos(Heightmap.Types.MOTION_BLOCKING_NO_LEAVES, spawnPos); @@ -53,7 +53,7 @@ index 66ddbdb130867a508ba161a570d101dbe6353246..df82f900580ad1b71960eab890a7a621 false, false, Relative.union(Relative.DELTA, Relative.ROTATION), TeleportTransition.PLAY_PORTAL_SOUND.then(TeleportTransition.PLACE_PORTAL_TICKET), -@@ -4885,6 +4893,10 @@ public abstract class Entity +@@ -4881,6 +4889,10 @@ public abstract class Entity return false; } @@ -64,7 +64,7 @@ index 66ddbdb130867a508ba161a570d101dbe6353246..df82f900580ad1b71960eab890a7a621 Vec3 initialPosition = this.position(); ChunkPos initialPositionChunk = new ChunkPos( ca.spottedleaf.moonrise.common.util.CoordinateUtils.getChunkX(initialPosition), -@@ -4959,9 +4971,14 @@ public abstract class Entity +@@ -4955,9 +4967,14 @@ public abstract class Entity destination.levelUnloadStateLock.releaseRead(); // Luminol end diff --git a/lophine-server/minecraft-patches/features/0029-Async-protocol-switching-optimization.patch b/lophine-server/minecraft-patches/features/0029-Async-protocol-switching-optimization.patch index 10b9f58..ff9a8b3 100644 --- a/lophine-server/minecraft-patches/features/0029-Async-protocol-switching-optimization.patch +++ b/lophine-server/minecraft-patches/features/0029-Async-protocol-switching-optimization.patch @@ -1,6 +1,6 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Helvetica Volubi -Date: Sun, 28 Jun 2026 19:58:46 +0800 +From: Bacteriawa +Date: Sat, 8 Aug 2026 01:29:57 +0800 Subject: [PATCH] Async protocol switching optimization @@ -137,10 +137,10 @@ index 40f54536422fa38bd84017fc634808016b4de58b..ecaa296f576c5c90fda89e0406d65526 + } diff --git a/net/minecraft/server/network/ServerConfigurationPacketListenerImpl.java b/net/minecraft/server/network/ServerConfigurationPacketListenerImpl.java -index e5304e9d1ea57c01a1147621a42a9b584878f765..af337f77545df94760b12a2b2f5eaf43d18e3774 100644 +index 2d3b0243f061aeaa979ddfc89c0361ecc29edcde..e074fe9eb6a1e6cb30b7de522fcac673dcb81960 100644 --- a/net/minecraft/server/network/ServerConfigurationPacketListenerImpl.java +++ b/net/minecraft/server/network/ServerConfigurationPacketListenerImpl.java -@@ -188,8 +188,9 @@ public class ServerConfigurationPacketListenerImpl extends ServerCommonPacketLis +@@ -197,8 +197,9 @@ public class ServerConfigurationPacketListenerImpl extends ServerCommonPacketLis public void handleConfigurationFinished(final ServerboundFinishConfigurationPacket packet) { PacketUtils.ensureRunningOnSameThread(packet, this, this.server.packetProcessor()); this.finishCurrentTask(JoinWorldTask.TYPE); @@ -151,7 +151,7 @@ index e5304e9d1ea57c01a1147621a42a9b584878f765..af337f77545df94760b12a2b2f5eaf43 try { PlayerList playerList = this.server.getPlayerList(); if (playerList.getPlayer(this.gameProfile.id()) != null) { -@@ -256,6 +257,18 @@ public class ServerConfigurationPacketListenerImpl extends ServerCommonPacketLis +@@ -265,6 +266,18 @@ public class ServerConfigurationPacketListenerImpl extends ServerCommonPacketLis LOGGER.error("Couldn't place player in world", e); this.disconnect(DISCONNECT_REASON_INVALID_DATA); } @@ -171,10 +171,10 @@ index e5304e9d1ea57c01a1147621a42a9b584878f765..af337f77545df94760b12a2b2f5eaf43 @Override diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 0c5fb17e7cce18eac68183cc3b5de6fc6451dc50..1ea8e03a4dc39486505d21bff1d15cb2339cafc2 100644 +index 9be6d486082d344fb91fd74207eee83ca2f8e869..40b409ad07eaa03473712ba83bc4ccd9a5c0f932 100644 --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2901,7 +2901,13 @@ public class ServerGamePacketListenerImpl +@@ -2902,7 +2902,13 @@ public class ServerGamePacketListenerImpl } // Folia end - rewrite login process - move connection ownership to global region this.waitingForSwitchToConfig = true; // Folia - rewrite login process - fix bad ordering of this field write - moved down this.send(ClientboundStartConfigurationPacket.INSTANCE); @@ -188,7 +188,7 @@ index 0c5fb17e7cce18eac68183cc3b5de6fc6451dc50..1ea8e03a4dc39486505d21bff1d15cb2 } @Override -@@ -3786,12 +3792,26 @@ public class ServerGamePacketListenerImpl +@@ -3787,12 +3793,26 @@ public class ServerGamePacketListenerImpl } final ServerConfigurationPacketListenerImpl listener = new ServerConfigurationPacketListenerImpl(this.server, this.connection, this.createCookie(this.player.clientInformation())); // Paper @@ -253,12 +253,12 @@ index f2329d1a9d9d4bf4c9d771e25e54f2f9ef65a76c..deee051c103f9797f4612e06c12f293e @Override diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java -index e7579a9873362317dd82b63306cf650af9472574..53449af103c1774f68cb0c296d47e7032e4e3843 100644 +index 259eb7574841b1b885093b534440f8a40db4e8e2..2975a879320faed5f6591489f86d3f909072cbaa 100644 --- a/net/minecraft/server/players/PlayerList.java +++ b/net/minecraft/server/players/PlayerList.java @@ -237,9 +237,11 @@ public abstract class PlayerList { // only after setting the connection listener to game type, add the connection to this regions list - level.getCurrentWorldData().connections.add(connection); + level.getCurrentWorldData().addConnection(player); // Folia end - rewrite login process + if (!me.earthme.luminol.config.modules.optimizations.AsyncProtocolChangeConfig.enabled) { // Luminol - Async protocol switch // we will run async switch once these main thread logics became done connection.setupInboundProtocol( diff --git a/lophine-server/minecraft-patches/features/0030-Add-config-for-server-mod-name.patch b/lophine-server/minecraft-patches/features/0030-Add-config-for-server-mod-name.patch index b60c27c..37b102c 100644 --- a/lophine-server/minecraft-patches/features/0030-Add-config-for-server-mod-name.patch +++ b/lophine-server/minecraft-patches/features/0030-Add-config-for-server-mod-name.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add config for server mod name diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java -index 7c67a8a6cf83ab80d3a8b37c5ff03e7a56497bc9..b2823c71ecb5e1f7a3c4c5b9f691d4cdb5419db3 100644 +index 8bc18bf35537d5bbf2dacef34886b9a95d44a340..daf45761bdc88848ba81b7595b5abd5635dfd607 100644 --- a/net/minecraft/server/MinecraftServer.java +++ b/net/minecraft/server/MinecraftServer.java -@@ -2072,7 +2072,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop portalFound = new ca.spottedleaf.concurrentutil.completable.CallbackCompletable<>(); -@@ -4892,6 +4949,15 @@ public abstract class Entity +@@ -4888,6 +4945,15 @@ public abstract class Entity if (!this.canPortalAsync(destination, takePassengers)) { return false; } diff --git a/lophine-server/minecraft-patches/features/0050-Add-Portal-rate-limiter.patch b/lophine-server/minecraft-patches/features/0050-Add-Portal-rate-limiter.patch index 441b32b..9b1c950 100644 --- a/lophine-server/minecraft-patches/features/0050-Add-Portal-rate-limiter.patch +++ b/lophine-server/minecraft-patches/features/0050-Add-Portal-rate-limiter.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add Portal rate limiter diff --git a/io/papermc/paper/threadedregions/RegionizedWorldData.java b/io/papermc/paper/threadedregions/RegionizedWorldData.java -index f32d118e1e925b2155cef3fcdcb1e194c541e242..2d5d4170e1f45ae9113c37623b4066861dc79d64 100644 +index 981458f6697a79dbc9fc8cf41c088c98e556c6dd..4dbbe03d949811bf6140a35faa5e8cee8f7e28f0 100644 --- a/io/papermc/paper/threadedregions/RegionizedWorldData.java +++ b/io/papermc/paper/threadedregions/RegionizedWorldData.java -@@ -157,6 +157,10 @@ public final class RegionizedWorldData { +@@ -154,6 +154,10 @@ public final class RegionizedWorldData { for (final ChunkHolder chunkHolder : from.chunkHoldersToBroadcast) { into.chunkHoldersToBroadcast.add(chunkHolder); } @@ -19,7 +19,7 @@ index f32d118e1e925b2155cef3fcdcb1e194c541e242..2d5d4170e1f45ae9113c37623b406686 } @Override -@@ -322,6 +326,12 @@ public final class RegionizedWorldData { +@@ -316,6 +320,12 @@ public final class RegionizedWorldData { into.chunkHoldersToBroadcast.add(chunkHolder); } } @@ -32,7 +32,7 @@ index f32d118e1e925b2155cef3fcdcb1e194c541e242..2d5d4170e1f45ae9113c37623b406686 } }; -@@ -343,6 +353,35 @@ public final class RegionizedWorldData { +@@ -338,6 +348,35 @@ public final class RegionizedWorldData { return this.isHandlingTick; } @@ -69,10 +69,10 @@ index f32d118e1e925b2155cef3fcdcb1e194c541e242..2d5d4170e1f45ae9113c37623b406686 // this is copy on write to allow packet processing to iterate safely private final CopyOnWriteArrayList localPlayers = new CopyOnWriteArrayList<>(); diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java -index e43aa6daa8d4465764348be5b82be5f163ef0819..f4274e844018992bba7c32d2146198efc034631e 100644 +index ff6809944c2dd8a2cc7c11a8b05b0f7c17b5fb4c..fe1b70edb24e2ded42f8ca1f5ddfbae7151b147a 100644 --- a/net/minecraft/server/MinecraftServer.java +++ b/net/minecraft/server/MinecraftServer.java -@@ -1973,6 +1973,9 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop level + " " + level.dimension().identifier()); profiler.push("tick"); @@ -82,7 +82,7 @@ index e43aa6daa8d4465764348be5b82be5f163ef0819..f4274e844018992bba7c32d2146198ef try { foliaProfiler.startTimer(level.tickTimerId); try { // Folia - profiler -@@ -1987,6 +1990,9 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop playerx.connection.send(packet)); // Paper - per-world game rules } else if (rule == GameRules.LOCATOR_BAR) { // this.getAllLevels().forEach(level -> { // Paper - per-world game rules @@ -33,7 +33,7 @@ index f4274e844018992bba7c32d2146198efc034631e..42ee15c813761702031d5a63f0d080b1 level.players().forEach(waypointManager::updatePlayer); } else { diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java -index 402e2f01f2b3a8e9ce5c818f07581b4dab38fc26..a1c3f3e5c7c3f32e0bdead33ebd72c7601295291 100644 +index adde187ad84ad75047096736de6e51ef81897d61..303233dcb0b33bf874fd71ee953565886e990138 100644 --- a/net/minecraft/server/level/ServerLevel.java +++ b/net/minecraft/server/level/ServerLevel.java @@ -690,7 +690,8 @@ public class ServerLevel extends Level implements WorldGenLevel, ServerEntityGet diff --git a/lophine-server/minecraft-patches/features/0052-Leaf-Secure-seed-and-matter-seed-command.patch b/lophine-server/minecraft-patches/features/0052-Leaf-Secure-seed-and-matter-seed-command.patch index bfbf771..913200c 100644 --- a/lophine-server/minecraft-patches/features/0052-Leaf-Secure-seed-and-matter-seed-command.patch +++ b/lophine-server/minecraft-patches/features/0052-Leaf-Secure-seed-and-matter-seed-command.patch @@ -63,7 +63,7 @@ index 7927769cf9bccb892745f4d1390eb83b2861d1bb..414c21345879f589fb61130180d0ca60 } diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java -index a1c3f3e5c7c3f32e0bdead33ebd72c7601295291..85eed61919b3c2ef93943e1c1b50fbcbca6fb319 100644 +index 303233dcb0b33bf874fd71ee953565886e990138..1024e68e1e3344b02c6e37c501a4ac989f486463 100644 --- a/net/minecraft/server/level/ServerLevel.java +++ b/net/minecraft/server/level/ServerLevel.java @@ -639,6 +639,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ServerEntityGet diff --git a/lophine-server/minecraft-patches/features/0055-Leaf-Remove-useless-creating-stats-json-bases-on-pla.patch b/lophine-server/minecraft-patches/features/0055-Leaf-Remove-useless-creating-stats-json-bases-on-pla.patch index 98e7996..5cc002b 100644 --- a/lophine-server/minecraft-patches/features/0055-Leaf-Remove-useless-creating-stats-json-bases-on-pla.patch +++ b/lophine-server/minecraft-patches/features/0055-Leaf-Remove-useless-creating-stats-json-bases-on-pla.patch @@ -9,7 +9,7 @@ As part of: Leaf (https://github.com/Winds-Studio/Leaf/blob/7f3e240bbe0970683c40 Licensed under: MIT (https://github.com/Winds-Studio/Leaf/blob/7f3e240bbe0970683c40279a7a65f0fde47503b6/licenses/MIT.txt) diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java -index 53449af103c1774f68cb0c296d47e7032e4e3843..a8f051e6aff31a723a3ba59842fac3a43f4911fe 100644 +index 2975a879320faed5f6591489f86d3f909072cbaa..d1683d4853f0d0190d9eae31706c99001229c026 100644 --- a/net/minecraft/server/players/PlayerList.java +++ b/net/minecraft/server/players/PlayerList.java @@ -1294,22 +1294,26 @@ public abstract class PlayerList { diff --git a/lophine-server/minecraft-patches/features/0058-Leaf-fast-bit-radix-sort.patch b/lophine-server/minecraft-patches/features/0058-Leaf-fast-bit-radix-sort.patch index bacceb4..57ddb88 100644 --- a/lophine-server/minecraft-patches/features/0058-Leaf-fast-bit-radix-sort.patch +++ b/lophine-server/minecraft-patches/features/0058-Leaf-fast-bit-radix-sort.patch @@ -8,10 +8,10 @@ This is a part of Leaf(https://github.com/Winds-Studio/Leaf/blob/d0ed97cf45dfa94 Original license: https://github.com/Winds-Studio/Leaf/blob/d0ed97cf45dfa94f686ef32f0eea1ec7323f78d5/LICENSE.md diff --git a/io/papermc/paper/threadedregions/RegionizedWorldData.java b/io/papermc/paper/threadedregions/RegionizedWorldData.java -index 2d5d4170e1f45ae9113c37623b4066861dc79d64..48fea9051efe038a823d7c2c9ae3bf28078f2fcc 100644 +index 4dbbe03d949811bf6140a35faa5e8cee8f7e28f0..ab607bcc767068c89bf034013652102c232d35a9 100644 --- a/io/papermc/paper/threadedregions/RegionizedWorldData.java +++ b/io/papermc/paper/threadedregions/RegionizedWorldData.java -@@ -457,6 +457,7 @@ public final class RegionizedWorldData { +@@ -452,6 +452,7 @@ public final class RegionizedWorldData { public final PathTypeCache pathTypesByPosCache = new PathTypeCache(); public final List temporaryChunkTickList = new java.util.ArrayList<>(); public final Set chunkHoldersToBroadcast = new ReferenceLinkedOpenHashSet<>(); diff --git a/lophine-server/minecraft-patches/features/0059-Leaf-Configurable-vanilla-username-check.patch b/lophine-server/minecraft-patches/features/0059-Leaf-Configurable-vanilla-username-check.patch index d2195eb..775f798 100644 --- a/lophine-server/minecraft-patches/features/0059-Leaf-Configurable-vanilla-username-check.patch +++ b/lophine-server/minecraft-patches/features/0059-Leaf-Configurable-vanilla-username-check.patch @@ -8,7 +8,7 @@ A part of Leaf(https://github.com/Winds-Studio/Leaf/blob/edb0504069139beaa6f39ef License: https://github.com/Winds-Studio/Leaf/blob/edb0504069139beaa6f39efa4702370c2576b3fc/LICENSE.md diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java -index 42ee15c813761702031d5a63f0d080b135be2e0f..1736816e26c255645d62696814cd539ee1ffed8d 100644 +index 35aa8df4aecd91387997f01c258f0d549dfba0f8..908cff4caa1457e07d809fb793d00d367ae42320 100644 --- a/net/minecraft/server/MinecraftServer.java +++ b/net/minecraft/server/MinecraftServer.java @@ -217,7 +217,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop -Date: Fri, 1 May 2026 21:47:48 +0800 +From: Bacteriawa +Date: Sat, 8 Aug 2026 01:31:30 +0800 Subject: [PATCH] Pufferfish: Reduce projectile chunk loading A part of Pufferfish(https://github.com/Pufferfish-gg/Pufferfish) @@ -9,10 +9,10 @@ Original patch: https://github.com/pufferfish-gg/Pufferfish/blob/ver/1.21/puffer Original license(GPL-3.0): https://github.com/pufferfish-gg/Pufferfish/blob/ver/1.21/PATCH-LICENSE diff --git a/io/papermc/paper/threadedregions/RegionizedWorldData.java b/io/papermc/paper/threadedregions/RegionizedWorldData.java -index 48fea9051efe038a823d7c2c9ae3bf28078f2fcc..c9f2d54be6f0699c2bf922c66ba0bafc7fb83ccc 100644 +index ab607bcc767068c89bf034013652102c232d35a9..0bf23b7ceacf7d962270cb513abce050670c172e 100644 --- a/io/papermc/paper/threadedregions/RegionizedWorldData.java +++ b/io/papermc/paper/threadedregions/RegionizedWorldData.java -@@ -339,6 +339,10 @@ public final class RegionizedWorldData { +@@ -333,6 +333,10 @@ public final class RegionizedWorldData { private RegionizedServer.WorldLevelData tickData; @@ -21,8 +21,8 @@ index 48fea9051efe038a823d7c2c9ae3bf28078f2fcc..c9f2d54be6f0699c2bf922c66ba0bafc + public long pufferfish$loadedTick = 0L; + // Luminol end // connections - public final List connections = new ArrayList<>(); - + private static final Connection[] EMPTY_CONNECTION_ARRAY = new Connection[0]; + private final ReferenceList connections = new ReferenceList<>(EMPTY_CONNECTION_ARRAY); diff --git a/net/minecraft/world/entity/projectile/Projectile.java b/net/minecraft/world/entity/projectile/Projectile.java index 721e3b083846fd363a31311196bc4c681969215c..81aafd64cc80038eaafba059373db3682afb8c2c 100644 --- a/net/minecraft/world/entity/projectile/Projectile.java diff --git a/lophine-server/minecraft-patches/features/0064-Leaves-Disable-packet-limit.patch b/lophine-server/minecraft-patches/features/0064-Leaves-Disable-packet-limit.patch index 7cfade5..5f4a0fb 100644 --- a/lophine-server/minecraft-patches/features/0064-Leaves-Disable-packet-limit.patch +++ b/lophine-server/minecraft-patches/features/0064-Leaves-Disable-packet-limit.patch @@ -20,7 +20,7 @@ index ecaa296f576c5c90fda89e0406d6552628ef5de3..d2e9d46bbd9ee4ce45419b11499d7a7b synchronized (PACKET_LIMIT_LOCK) { if (this.allPacketCounts != null) { diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index a2146662c8ec83f62547bcd813c0e4dcb10efc07..31c6defd8941a2c9e55eca3c8ca5623111e98e51 100644 +index 95715be85fe2d35d219a496f6677732833d6b345..1bd8ae7e1250a56cff636b010c371144adbb7ad0 100644 --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -892,7 +892,7 @@ public class ServerGamePacketListenerImpl @@ -32,7 +32,7 @@ index a2146662c8ec83f62547bcd813c0e4dcb10efc07..31c6defd8941a2c9e55eca3c8ca56231 this.disconnectAsync(Component.translatable("disconnect.spam"), org.bukkit.event.player.PlayerKickEvent.Cause.SPAM); // Paper - Kick event cause // Paper - add proper async disconnect return; } -@@ -2128,6 +2128,7 @@ public class ServerGamePacketListenerImpl +@@ -2129,6 +2129,7 @@ public class ServerGamePacketListenerImpl private long lastLimitedPacket = -1; private boolean checkLimit(long timestamp) { @@ -40,7 +40,7 @@ index a2146662c8ec83f62547bcd813c0e4dcb10efc07..31c6defd8941a2c9e55eca3c8ca56231 if (!io.papermc.paper.configuration.GlobalConfiguration.get().spamLimiter.incomingPacketThreshold.enabled()) { return true; } -@@ -2694,6 +2695,8 @@ public class ServerGamePacketListenerImpl +@@ -2695,6 +2696,8 @@ public class ServerGamePacketListenerImpl // Spigot start - spam exclusions private void detectRateSpam(final TickThrottler throttler, final String message) { @@ -49,7 +49,7 @@ index a2146662c8ec83f62547bcd813c0e4dcb10efc07..31c6defd8941a2c9e55eca3c8ca56231 if (org.spigotmc.SpigotConfig.enableSpamExclusions) { for (String exclude : org.spigotmc.SpigotConfig.spamExclusions) { if (exclude != null && message.startsWith(exclude)) { -@@ -3492,7 +3495,7 @@ public class ServerGamePacketListenerImpl +@@ -3493,7 +3496,7 @@ public class ServerGamePacketListenerImpl @Override public void handlePlaceRecipe(final ServerboundPlaceRecipePacket packet) { // Paper start - auto recipe limit diff --git a/lophine-server/minecraft-patches/features/0066-Leaves-Lithium-Sleeping-Block-Entity.patch b/lophine-server/minecraft-patches/features/0066-Leaves-Lithium-Sleeping-Block-Entity.patch index 197647f..af305b5 100644 --- a/lophine-server/minecraft-patches/features/0066-Leaves-Lithium-Sleeping-Block-Entity.patch +++ b/lophine-server/minecraft-patches/features/0066-Leaves-Lithium-Sleeping-Block-Entity.patch @@ -9,7 +9,7 @@ Origin patch link: https://github.com/LeavesMC/Leaves/blob/master/leaves-server/ Origin license: https://github.com/LeavesMC/Leaves/blob/master/LICENSE.md diff --git a/io/papermc/paper/threadedregions/RegionizedWorldData.java b/io/papermc/paper/threadedregions/RegionizedWorldData.java -index c9f2d54be6f0699c2bf922c66ba0bafc7fb83ccc..24e186d05aa0333885178f444fade3b9c930ac97 100644 +index 0bf23b7ceacf7d962270cb513abce050670c172e..9820d2e18cbcb5fbc07fe57dd93101809ed2727d 100644 --- a/io/papermc/paper/threadedregions/RegionizedWorldData.java +++ b/io/papermc/paper/threadedregions/RegionizedWorldData.java @@ -65,6 +65,10 @@ import java.util.Set; @@ -56,7 +56,7 @@ index c9f2d54be6f0699c2bf922c66ba0bafc7fb83ccc..24e186d05aa0333885178f444fade3b9 // connections for (final Connection conn : from.connections) { into.connections.add(conn); -@@ -114,16 +144,22 @@ public final class RegionizedWorldData { +@@ -111,16 +141,22 @@ public final class RegionizedWorldData { from.fluidLevelTicks.merge(into.fluidLevelTicks, fromRedstoneTimeOffset); // tile entity ticking @@ -83,7 +83,7 @@ index c9f2d54be6f0699c2bf922c66ba0bafc7fb83ccc..24e186d05aa0333885178f444fade3b9 if (tileEntity != null) { tileEntity.updateTicks(fromTickOffset, fromRedstoneTimeOffset); } -@@ -167,6 +203,37 @@ public final class RegionizedWorldData { +@@ -164,6 +200,37 @@ public final class RegionizedWorldData { public void split(final RegionizedWorldData from, final int chunkToRegionShift, final Long2ReferenceOpenHashMap regionToData, final ReferenceOpenHashSet dataSet) { @@ -121,7 +121,7 @@ index c9f2d54be6f0699c2bf922c66ba0bafc7fb83ccc..24e186d05aa0333885178f444fade3b9 // connections for (final Connection conn : from.connections) { final ServerPlayer player = conn.getPlayer(); -@@ -243,8 +310,9 @@ public final class RegionizedWorldData { +@@ -237,8 +304,9 @@ public final class RegionizedWorldData { from.fluidLevelTicks.split(chunkToRegionShift, levelTicksFluidRegionData); // tile entity ticking @@ -133,7 +133,7 @@ index c9f2d54be6f0699c2bf922c66ba0bafc7fb83ccc..24e186d05aa0333885178f444fade3b9 final int chunkX = pos.getX() >> 4; final int chunkZ = pos.getZ() >> 4; -@@ -254,8 +322,9 @@ public final class RegionizedWorldData { +@@ -248,8 +316,9 @@ public final class RegionizedWorldData { } // else: when a chunk unloads, it does not actually _remove_ the tile entity from the list, it just gets // marked as removed. So if there is no section, it's probably removed! } @@ -145,7 +145,7 @@ index c9f2d54be6f0699c2bf922c66ba0bafc7fb83ccc..24e186d05aa0333885178f444fade3b9 final int chunkX = pos.getX() >> 4; final int chunkZ = pos.getZ() >> 4; -@@ -488,6 +557,11 @@ public final class RegionizedWorldData { +@@ -483,6 +552,11 @@ public final class RegionizedWorldData { public final io.papermc.paper.redstone.RedstoneWireTurbo turbo; // Environment attribute system public Reference2ObjectOpenHashMap, EnvironmentAttributeSystem.ValueSampler> attributeSamplers; @@ -240,7 +240,7 @@ index 6e08d50794c4af4405f3e164a3fd46f376b3f78f..dd2d0940eece3e85078e574f66f71a4c int getContainerSize(); diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index 90b5d7806af8913735c4105b6e347bfdb78094e0..0ba8f401c9cd0e15187b4faee78667c543fded92 100644 +index 7b5fac05a53a80a7c9cdae4986f35c30285bcf81..77ff989f2d2c2705a82d0e99e532c7073eb42825 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java @@ -324,7 +324,7 @@ public abstract class Entity @@ -252,7 +252,7 @@ index 90b5d7806af8913735c4105b6e347bfdb78094e0..0ba8f401c9cd0e15187b4faee78667c5 private final VecDeltaCodec packetPositionCodec = new VecDeltaCodec(); public boolean needsSync; public boolean syncPosition; -@@ -4471,11 +4471,13 @@ public abstract class Entity +@@ -4467,11 +4467,13 @@ public abstract class Entity } protected Entity transformForAsyncTeleport(ServerLevel destination, Vec3 pos, Float yaw, Float pitch, Vec3 velocity) { @@ -266,7 +266,7 @@ index 90b5d7806af8913735c4105b6e347bfdb78094e0..0ba8f401c9cd0e15187b4faee78667c5 if (copy instanceof net.minecraft.world.entity.boss.enderdragon.EnderDragon dragon) dragon.syncDragonPartsAfterTeleportTransform(); // Luminol - Sync dragon part when teleportation or firstly created // vanilla code used to call remove _after_ copying, and some stuff is required to be after copy - so add hook here // for example, clearing of inventory after switching dimensions -@@ -6151,8 +6153,29 @@ public abstract class Entity +@@ -6147,8 +6149,29 @@ public abstract class Entity this.setBoundingBox(this.makeBoundingBox()); } // Paper end - Block invalid positions and bounding box diff --git a/lophine-server/minecraft-patches/features/0068-Leaves-Disable-moved-wrongly-threshold.patch b/lophine-server/minecraft-patches/features/0068-Leaves-Disable-moved-wrongly-threshold.patch index b4f2c91..bd4ee01 100644 --- a/lophine-server/minecraft-patches/features/0068-Leaves-Disable-moved-wrongly-threshold.patch +++ b/lophine-server/minecraft-patches/features/0068-Leaves-Disable-moved-wrongly-threshold.patch @@ -8,7 +8,7 @@ As part of: Leaves (https://github.com/LeavesMC/Leaves/blob/f553c53e4230aa032e54 Licensed under: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html) diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 31c6defd8941a2c9e55eca3c8ca5623111e98e51..164e2101688a9f29ecfa83f62141d8cb9df22ed1 100644 +index 1bd8ae7e1250a56cff636b010c371144adbb7ad0..6b0856e836f041aa8bfe274d0444d6ce3165b1ce 100644 --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -644,7 +644,7 @@ public class ServerGamePacketListenerImpl @@ -29,7 +29,7 @@ index 31c6defd8941a2c9e55eca3c8ca5623111e98e51..164e2101688a9f29ecfa83f62141d8cb fail = true; LOGGER.warn("{} (vehicle of {}) moved wrongly! {}", vehicle.getPlainTextName(), this.player.getPlainTextName(), Math.sqrt(movedDist)); } -@@ -1614,7 +1614,7 @@ public class ServerGamePacketListenerImpl +@@ -1615,7 +1615,7 @@ public class ServerGamePacketListenerImpl if (this.shouldCheckPlayerMovement(isFallFlying)) { float metersPerTick = isFallFlying ? 300.0F : 100.0F; @@ -38,7 +38,7 @@ index 31c6defd8941a2c9e55eca3c8ca5623111e98e51..164e2101688a9f29ecfa83f62141d8cb // CraftBukkit end // Paper start - Add fail move event io.papermc.paper.event.player.PlayerFailMoveEvent event = fireFailMove(io.papermc.paper.event.player.PlayerFailMoveEvent.FailReason.MOVED_TOO_QUICKLY, -@@ -1675,7 +1675,8 @@ public class ServerGamePacketListenerImpl +@@ -1676,7 +1676,8 @@ public class ServerGamePacketListenerImpl zDist = targetZ - this.player.getZ(); movedDist = xDist * xDist + yDist * yDist + zDist * zDist; boolean movedWrongly = false; // Paper - Add fail move event; rename diff --git a/lophine-server/minecraft-patches/features/0072-Gale-Skip-entity-move-if-movement-is-zero.patch b/lophine-server/minecraft-patches/features/0072-Gale-Skip-entity-move-if-movement-is-zero.patch index be8c318..98d4405 100644 --- a/lophine-server/minecraft-patches/features/0072-Gale-Skip-entity-move-if-movement-is-zero.patch +++ b/lophine-server/minecraft-patches/features/0072-Gale-Skip-entity-move-if-movement-is-zero.patch @@ -10,7 +10,7 @@ VMP (https://github.com/RelativityMC/VMP-fabric) Licensed under: MIT (https://opensource.org/licenses/MIT) diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index 0ba8f401c9cd0e15187b4faee78667c543fded92..ae0504263666103a588b6855cb27304582c38938 100644 +index 77ff989f2d2c2705a82d0e99e532c7073eb42825..3c3420c51d70eb9afb80db43635246a546d1562c 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java @@ -1155,8 +1155,14 @@ public abstract class Entity @@ -28,7 +28,7 @@ index 0ba8f401c9cd0e15187b4faee78667c543fded92..ae0504263666103a588b6855cb273045 final Vec3 originalMovement = delta; // Paper - Expose pre-collision velocity // Paper start - detailed watchdog information ca.spottedleaf.moonrise.common.util.TickThread.ensureTickThread("Cannot move an entity off-main"); -@@ -5645,6 +5651,11 @@ public abstract class Entity +@@ -5641,6 +5647,11 @@ public abstract class Entity } public final void setBoundingBox(final AABB bb) { diff --git a/lophine-server/minecraft-patches/features/0074-Gale-Optimize-random-calls-in-chunk-ticking.patch b/lophine-server/minecraft-patches/features/0074-Gale-Optimize-random-calls-in-chunk-ticking.patch index 89477d0..842aefe 100644 --- a/lophine-server/minecraft-patches/features/0074-Gale-Optimize-random-calls-in-chunk-ticking.patch +++ b/lophine-server/minecraft-patches/features/0074-Gale-Optimize-random-calls-in-chunk-ticking.patch @@ -57,7 +57,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java -index 85eed61919b3c2ef93943e1c1b50fbcbca6fb319..3fda5043937af3d66ab44c41b7e76822a3ddf53b 100644 +index 1024e68e1e3344b02c6e37c501a4ac989f486463..2e84df044e65d2f145a190d1bbbb7de205d85e77 100644 --- a/net/minecraft/server/level/ServerLevel.java +++ b/net/minecraft/server/level/ServerLevel.java @@ -1059,7 +1059,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ServerEntityGet diff --git a/lophine-server/minecraft-patches/features/0077-Gale-For-collision-check-has-physics-before-same-veh.patch b/lophine-server/minecraft-patches/features/0077-Gale-For-collision-check-has-physics-before-same-veh.patch index 9c78487..dbb1b49 100644 --- a/lophine-server/minecraft-patches/features/0077-Gale-For-collision-check-has-physics-before-same-veh.patch +++ b/lophine-server/minecraft-patches/features/0077-Gale-For-collision-check-has-physics-before-same-veh.patch @@ -20,7 +20,7 @@ As part of: Akarin (https://github.com/Akarin-project/Akarin) Licensed under: GPL-3.0-only (https://www.gnu.org/licenses/gpl-3.0.html) diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index ae0504263666103a588b6855cb27304582c38938..92cb0b1722bd5bcf9996c3f6b9b62c980b70e229 100644 +index 3c3420c51d70eb9afb80db43635246a546d1562c..f38ce49165b6c46d039e82d676e24832e93a402e 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java @@ -2441,8 +2441,8 @@ public abstract class Entity diff --git a/lophine-server/minecraft-patches/features/0078-Gale-Skip-negligible-planar-movement-multiplication.patch b/lophine-server/minecraft-patches/features/0078-Gale-Skip-negligible-planar-movement-multiplication.patch index ee7e52f..ebb5de1 100644 --- a/lophine-server/minecraft-patches/features/0078-Gale-Skip-negligible-planar-movement-multiplication.patch +++ b/lophine-server/minecraft-patches/features/0078-Gale-Skip-negligible-planar-movement-multiplication.patch @@ -7,7 +7,7 @@ License: GPL-3.0-only (https://www.gnu.org/licenses/gpl-3.0.html) Gale - https://github.com/GaleMC/Gale diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index 92cb0b1722bd5bcf9996c3f6b9b62c980b70e229..43e07a3c98e80f874f55411beac39e215ffdc3cf 100644 +index f38ce49165b6c46d039e82d676e24832e93a402e..0868c067c5a455d1984d59b22426c2f019b25c9f 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java @@ -1302,8 +1302,17 @@ public abstract class Entity diff --git a/lophine-server/minecraft-patches/features/0081-Gale-Reduce-array-allocations.patch b/lophine-server/minecraft-patches/features/0081-Gale-Reduce-array-allocations.patch index 4bfc348..0fe58b2 100644 --- a/lophine-server/minecraft-patches/features/0081-Gale-Reduce-array-allocations.patch +++ b/lophine-server/minecraft-patches/features/0081-Gale-Reduce-array-allocations.patch @@ -27,7 +27,7 @@ As part of: JettPack (https://gitlab.com/Titaniumtown/JettPack) Licensed under: GPL-3.0-only (https://www.gnu.org/licenses/gpl-3.0.html) diff --git a/ca/spottedleaf/moonrise/patches/chunk_system/level/entity/ChunkEntitySlices.java b/ca/spottedleaf/moonrise/patches/chunk_system/level/entity/ChunkEntitySlices.java -index 8d9ce3d301d5f7e4106587ae00adb8dd5b8b6f88..dd8a4e445928d93667702dedbd35ab3e0f94f3be 100644 +index 5b7ed8e5067683143c99473a126e17baa531903c..ece13c12b793ede92ec67850ab6d5a88fddb8afa 100644 --- a/ca/spottedleaf/moonrise/patches/chunk_system/level/entity/ChunkEntitySlices.java +++ b/ca/spottedleaf/moonrise/patches/chunk_system/level/entity/ChunkEntitySlices.java @@ -400,7 +400,6 @@ public final class ChunkEntitySlices { @@ -137,7 +137,7 @@ index 2e71a1cbabf3405e3e4fd5349a1784d895e7e60c..42de919064680b1a464d813976ca5e69 if (!itemStack.isEmpty()) { slots.add(Pair.of(slot, itemStack.copy())); diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java -index 75a36bbd5671992e78fe36a9b3d946ba465919d5..e029278822f264bd0c66060cd0031a515d43e98f 100644 +index 055911982349bab23ba8d6c88f06c01456a86167..82ffe2cd08f3187a69d81b65d6903c5b8deeba0d 100644 --- a/net/minecraft/server/level/ServerPlayer.java +++ b/net/minecraft/server/level/ServerPlayer.java @@ -1424,7 +1424,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc @@ -150,10 +150,10 @@ index 75a36bbd5671992e78fe36a9b3d946ba465919d5..e029278822f264bd0c66060cd0031a51 this.getInventory().equipment.set(value, net.minecraft.world.item.ItemStack.EMPTY); } diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 164e2101688a9f29ecfa83f62141d8cb9df22ed1..2a383eee714b7da08b552c5bfb3988fad3cadb93 100644 +index 6b0856e836f041aa8bfe274d0444d6ce3165b1ce..4be8ef7acd34c4768a86422063eb07075d35583c 100644 --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -3027,7 +3027,7 @@ public class ServerGamePacketListenerImpl +@@ -3028,7 +3028,7 @@ public class ServerGamePacketListenerImpl // SPIGOT-7136 - Allays if (target instanceof net.minecraft.world.entity.animal.allay.Allay || target instanceof net.minecraft.world.entity.animal.equine.AbstractHorse) { // Paper - Fix horse armor desync ServerGamePacketListenerImpl.this.send(new net.minecraft.network.protocol.game.ClientboundSetEquipmentPacket( @@ -287,7 +287,7 @@ index 9e4293c6df1851a852423b469577388d2254e169..952b09fba4cf7de90110a7aa4b96dc03 ItemStack itemStack = this.equipment.get(slot); // Paper if (!itemStack.isEmpty() && !EnchantmentHelper.has(itemStack, EnchantmentEffectComponents.PREVENT_EQUIPMENT_DROP)) { diff --git a/net/minecraft/world/entity/player/Player.java b/net/minecraft/world/entity/player/Player.java -index a4bc767b799c050ce07a3685f655b4ba947d2466..a447b9fbb579591c62b3d8f8e2527796feefc4a0 100644 +index a26025ec6c3c6fe84bfc598176a6d4ff49de4a41..5e4f2061aecef57d89acc456acfc347953a386aa 100644 --- a/net/minecraft/world/entity/player/Player.java +++ b/net/minecraft/world/entity/player/Player.java @@ -346,7 +346,7 @@ public abstract class Player extends Avatar implements ContainerUser { diff --git a/lophine-server/minecraft-patches/features/0084-Server-I18n.patch b/lophine-server/minecraft-patches/features/0084-Server-I18n.patch index 05756ff..b7d21a2 100644 --- a/lophine-server/minecraft-patches/features/0084-Server-I18n.patch +++ b/lophine-server/minecraft-patches/features/0084-Server-I18n.patch @@ -26,7 +26,7 @@ index 47cd33bce908744e64356b585853d6a8ecf82443..bb4011d3c6a1d2a5aa66e68fe719cd5e loadFromJson(stream, output); } catch (IOException | JsonParseException e) { diff --git a/net/minecraft/server/Main.java b/net/minecraft/server/Main.java -index a557d488e4e289a61aeb9aed0cc133a0a7ce8f8c..ca349619bcdd0682c9d66d54fc55cac268fc443b 100644 +index 4385488983a7544eb6d9193d913dc55294f4620d..9269f9918c4f1eda8ae9cc487da2826ca09a10fb 100644 --- a/net/minecraft/server/Main.java +++ b/net/minecraft/server/Main.java @@ -167,6 +167,8 @@ public class Main { diff --git a/lophine-server/minecraft-patches/features/0085-Purpur-Barrels-and-enderchests-6-rows.patch b/lophine-server/minecraft-patches/features/0085-Purpur-Barrels-and-enderchests-6-rows.patch index 21b6074..cabb439 100644 --- a/lophine-server/minecraft-patches/features/0085-Purpur-Barrels-and-enderchests-6-rows.patch +++ b/lophine-server/minecraft-patches/features/0085-Purpur-Barrels-and-enderchests-6-rows.patch @@ -8,7 +8,7 @@ As part of: Purpur (https://github.com/PurpurMC/Purpur/blob/dc46f46d28dcdcaf33bb Licensed under: MIT (https://github.com/PurpurMC/Purpur/blob/dc46f46d28dcdcaf33bb533f9571a107db98c1d7/LICENSE) diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java -index 2939aa1ecd68504424198dd7c90c71c6c1aa4c80..8b7e4814b00d6f6c9f25cce5186905f165b97c2f 100644 +index a98c9b287885e2c353cf75dbb7f004cf67c0d802..1dcb4fe3e2c250554e4f065caf21b37ea659e621 100644 --- a/net/minecraft/server/players/PlayerList.java +++ b/net/minecraft/server/players/PlayerList.java @@ -961,6 +961,10 @@ public abstract class PlayerList { @@ -23,7 +23,7 @@ index 2939aa1ecd68504424198dd7c90c71c6c1aa4c80..8b7e4814b00d6f6c9f25cce5186905f1 // Paper start - whitelist verify event / login event diff --git a/net/minecraft/world/entity/player/Player.java b/net/minecraft/world/entity/player/Player.java -index a447b9fbb579591c62b3d8f8e2527796feefc4a0..9fdc8134fdde2cdd7724a459a29e51f4ad943403 100644 +index 5e4f2061aecef57d89acc456acfc347953a386aa..e7b6c83a4e7bd83f6c5a1d772c42c51bf1d1bed1 100644 --- a/net/minecraft/world/entity/player/Player.java +++ b/net/minecraft/world/entity/player/Player.java @@ -175,6 +175,7 @@ public abstract class Player extends Avatar implements ContainerUser { diff --git a/lophine-server/minecraft-patches/features/0086-Add-config-to-disable-some-check-for-operators.patch b/lophine-server/minecraft-patches/features/0086-Add-config-to-disable-some-check-for-operators.patch index 1739488..3487bb1 100644 --- a/lophine-server/minecraft-patches/features/0086-Add-config-to-disable-some-check-for-operators.patch +++ b/lophine-server/minecraft-patches/features/0086-Add-config-to-disable-some-check-for-operators.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add config to disable some check for operators diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 2a383eee714b7da08b552c5bfb3988fad3cadb93..6f5d5b123f69b7bdc3960e0ad216ec291aa100c3 100644 +index 4be8ef7acd34c4768a86422063eb07075d35583c..57c2748dccf3bcb4f8464f3bc0fe3df39a2c8cb5 100644 --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -402,7 +402,7 @@ public class ServerGamePacketListenerImpl @@ -35,7 +35,7 @@ index 2a383eee714b7da08b552c5bfb3988fad3cadb93..6f5d5b123f69b7bdc3960e0ad216ec29 fail = true; LOGGER.warn("{} (vehicle of {}) moved wrongly! {}", vehicle.getPlainTextName(), this.player.getPlainTextName(), Math.sqrt(movedDist)); } -@@ -1619,7 +1619,7 @@ public class ServerGamePacketListenerImpl +@@ -1620,7 +1620,7 @@ public class ServerGamePacketListenerImpl // Paper start - Add fail move event io.papermc.paper.event.player.PlayerFailMoveEvent event = fireFailMove(io.papermc.paper.event.player.PlayerFailMoveEvent.FailReason.MOVED_TOO_QUICKLY, targetX, targetY, targetZ, targetYRot, targetXRot, true); @@ -44,7 +44,7 @@ index 2a383eee714b7da08b552c5bfb3988fad3cadb93..6f5d5b123f69b7bdc3960e0ad216ec29 if (event.getLogWarning()) { LOGGER.warn("{} moved too quickly! {},{},{}", this.player.getPlainTextName(), xDist, yDist, zDist); } -@@ -1685,7 +1685,7 @@ public class ServerGamePacketListenerImpl +@@ -1686,7 +1686,7 @@ public class ServerGamePacketListenerImpl // Paper start - Add fail move event io.papermc.paper.event.player.PlayerFailMoveEvent event = fireFailMove(io.papermc.paper.event.player.PlayerFailMoveEvent.FailReason.MOVED_WRONGLY, targetX, targetY, targetZ, targetYRot, targetXRot, true); diff --git a/lophine-server/minecraft-patches/features/0087-Add-config-to-enable-cross-region-damage-trace.patch b/lophine-server/minecraft-patches/features/0087-Add-config-to-enable-cross-region-damage-trace.patch index 962166e..5c6f9f0 100644 --- a/lophine-server/minecraft-patches/features/0087-Add-config-to-enable-cross-region-damage-trace.patch +++ b/lophine-server/minecraft-patches/features/0087-Add-config-to-enable-cross-region-damage-trace.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add config to enable cross region damage trace diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java -index e029278822f264bd0c66060cd0031a515d43e98f..0a6c85ff078df07f80faf7cfb39d301d5788584e 100644 +index 82ffe2cd08f3187a69d81b65d6903c5b8deeba0d..dcd1b874b68bc2e780f5a5a2ba8ac7a6a16a65f4 100644 --- a/net/minecraft/server/level/ServerPlayer.java +++ b/net/minecraft/server/level/ServerPlayer.java @@ -1448,6 +1448,13 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc diff --git a/lophine-server/minecraft-patches/features/0088-Add-config-to-enable-save-all-command.patch b/lophine-server/minecraft-patches/features/0088-Add-config-to-enable-save-all-command.patch index b4e2f64..c217d11 100644 --- a/lophine-server/minecraft-patches/features/0088-Add-config-to-enable-save-all-command.patch +++ b/lophine-server/minecraft-patches/features/0088-Add-config-to-enable-save-all-command.patch @@ -48,10 +48,10 @@ index 5a5f7f7fefacaa0d77ec389d6eb332eff519496a..f0f6175569100589102d9d76b3ff8f55 SaveOnCommand.register(this.dispatcher); SetPlayerIdleTimeoutCommand.register(this.dispatcher); diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java -index 1736816e26c255645d62696814cd539ee1ffed8d..a0c285d2cb666d0f9bd0e859e0dac414254325c3 100644 +index 908cff4caa1457e07d809fb793d00d367ae42320..143b7a167dcbf015a7318f2fe5e0798418fa2572 100644 --- a/net/minecraft/server/MinecraftServer.java +++ b/net/minecraft/server/MinecraftServer.java -@@ -1652,6 +1652,11 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 20 * 10 && this.isAlive(); } // KioCG @@ -96,7 +96,7 @@ index 31619890f1bd4f458b6f9a31fac8cefaafe09e8e..50643bd0b546a1ff70031ea39e2610f2 public EntityType( final EntityType.EntityFactory factory, diff --git a/net/minecraft/world/entity/player/Player.java b/net/minecraft/world/entity/player/Player.java -index 9fdc8134fdde2cdd7724a459a29e51f4ad943403..c6fa9dff800b1491b1e0fc5d7e1dc16b99b8c7db 100644 +index e7b6c83a4e7bd83f6c5a1d772c42c51bf1d1bed1..449a2904fb1190f68de72bc47eb8220f50002577 100644 --- a/net/minecraft/world/entity/player/Player.java +++ b/net/minecraft/world/entity/player/Player.java @@ -186,6 +186,25 @@ public abstract class Player extends Avatar implements ContainerUser { diff --git a/lophine-server/minecraft-patches/features/0096-Spawn-invulnerable-time.patch b/lophine-server/minecraft-patches/features/0096-Spawn-invulnerable-time.patch index 933f44d..52e784d 100644 --- a/lophine-server/minecraft-patches/features/0096-Spawn-invulnerable-time.patch +++ b/lophine-server/minecraft-patches/features/0096-Spawn-invulnerable-time.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Spawn invulnerable time diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java -index 0a6c85ff078df07f80faf7cfb39d301d5788584e..729fc979fb313ddf2a5c6a04a9a0790440d15830 100644 +index dcd1b874b68bc2e780f5a5a2ba8ac7a6a16a65f4..14eaa25d67e9dbaad5ae4c6d6be4ae640b2fc015 100644 --- a/net/minecraft/server/level/ServerPlayer.java +++ b/net/minecraft/server/level/ServerPlayer.java @@ -245,6 +245,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc diff --git a/lophine-server/minecraft-patches/features/0097-Leaves-Item-overstack-util.patch b/lophine-server/minecraft-patches/features/0097-Leaves-Item-overstack-util.patch index bd8b0c0..c06d5b3 100644 --- a/lophine-server/minecraft-patches/features/0097-Leaves-Item-overstack-util.patch +++ b/lophine-server/minecraft-patches/features/0097-Leaves-Item-overstack-util.patch @@ -38,10 +38,10 @@ index be357d315f5c83349a7f7287ff45e92137950a8c..a542e38ea6a1e8fc81466acbca071d89 if (count > 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 6f5d5b123f69b7bdc3960e0ad216ec291aa100c3..f036ef938bdd66ab87610e76c8c878bf3d3c86b1 100644 +index 57c2748dccf3bcb4f8464f3bc0fe3df39a2c8cb5..9907e58908eb17874cc938337888dfe4ad4c060f 100644 --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -3232,7 +3232,7 @@ public class ServerGamePacketListenerImpl +@@ -3233,7 +3233,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 6f5d5b123f69b7bdc3960e0ad216ec291aa100c3..f036ef938bdd66ab87610e76c8c878bf toPlace = Math.min(toPlace, slot.container.getMaxStackSize() - clickedItem.getCount()); if (toPlace == 1) { action = InventoryAction.PLACE_ONE; -@@ -3268,7 +3268,7 @@ public class ServerGamePacketListenerImpl +@@ -3269,7 +3269,7 @@ public class ServerGamePacketListenerImpl } } else if (ItemStack.isSameItemSameComponents(cursor, clickedItem)) { if (clickedItem.getCount() >= 0) { @@ -59,7 +59,7 @@ index 6f5d5b123f69b7bdc3960e0ad216ec291aa100c3..f036ef938bdd66ab87610e76c8c878bf // As of 1.5, this is result slots only action = InventoryAction.PICKUP_ALL; } -@@ -3485,6 +3485,7 @@ public class ServerGamePacketListenerImpl +@@ -3486,6 +3486,7 @@ public class ServerGamePacketListenerImpl this.player.containerMenu.broadcastFullState(); } else { this.player.containerMenu.broadcastChanges(); @@ -67,7 +67,7 @@ index 6f5d5b123f69b7bdc3960e0ad216ec291aa100c3..f036ef938bdd66ab87610e76c8c878bf } 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. -@@ -3596,7 +3597,7 @@ public class ServerGamePacketListenerImpl +@@ -3597,7 +3598,7 @@ public class ServerGamePacketListenerImpl } boolean validSlot = packet.slotNum() >= 1 && packet.slotNum() <= 45; @@ -76,7 +76,7 @@ index 6f5d5b123f69b7bdc3960e0ad216ec291aa100c3..f036ef938bdd66ab87610e76c8c878bf 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(); -@@ -3638,6 +3639,7 @@ public class ServerGamePacketListenerImpl +@@ -3639,6 +3640,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/0100-Leaves-Leaves-Base-Protocol-Core.patch b/lophine-server/minecraft-patches/features/0100-Leaves-Leaves-Base-Protocol-Core.patch index 2081e4e..ee6f486 100644 --- a/lophine-server/minecraft-patches/features/0100-Leaves-Leaves-Base-Protocol-Core.patch +++ b/lophine-server/minecraft-patches/features/0100-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 a0c285d2cb666d0f9bd0e859e0dac414254325c3..9614a22c4b67e5e3a46e46fa69d22c136d4beb4b 100644 +index 143b7a167dcbf015a7318f2fe5e0798418fa2572..22ad0846be08292b07b363b6b96f7431f87a4f3d 100644 --- a/net/minecraft/server/MinecraftServer.java +++ b/net/minecraft/server/MinecraftServer.java -@@ -2016,6 +2016,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/0112-Leaves-Fakeplayer.patch b/lophine-server/minecraft-patches/features/0112-Leaves-Fakeplayer.patch index 1e783da..0508ee7 100644 --- a/lophine-server/minecraft-patches/features/0112-Leaves-Fakeplayer.patch +++ b/lophine-server/minecraft-patches/features/0112-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 9614a22c4b67e5e3a46e46fa69d22c136d4beb4b..5bc6baf2a13b78f65e5851a22ca79dbcaed957b2 100644 +index 22ad0846be08292b07b363b6b96f7431f87a4f3d..07add4a7a350ac61b7fa7797874ab24d5289b9b1 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<>(); -@@ -1195,6 +1197,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 9614a22c4b67e5e3a46e46fa69d22c136d4beb4b..5bc6baf2a13b78f65e5851a22ca79dbc this.emptyTicks++; } else { this.emptyTicks = 0; -@@ -1806,6 +1818,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0) { this.playerList.saveAll(playerSaveInterval); @@ -79,7 +79,7 @@ index 9614a22c4b67e5e3a46e46fa69d22c136d4beb4b..5bc6baf2a13b78f65e5851a22ca79dbc } if (region == null && fullSave) { // Folia - region threading - don't auto save level data this.saveGlobalData(false); -@@ -2044,6 +2057,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop= limit) { diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java -index 5bc6baf2a13b78f65e5851a22ca79dbcaed957b2..803faa6b80a42d16687ea8b109973938d02f4a36 100644 +index 07add4a7a350ac61b7fa7797874ab24d5289b9b1..d1a0585e4a9fe85d8a99507bb8a55d175c1804e3 100644 --- a/net/minecraft/server/MinecraftServer.java +++ b/net/minecraft/server/MinecraftServer.java -@@ -1909,7 +1909,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 -@@ -2538,7 +2538,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop itemEntityMovementTrackerMap = new it.unimi.dsi.fastutil.objects.Object2ObjectLinkedOpenHashMap<>(); // Luminol end @@ -18,7 +18,7 @@ index 24e186d05aa0333885178f444fade3b9c930ac97..5724a276cf4fdd41f239c47e4352ec05 public final TickRegions.TickRegionData regionData; public RegionizedWorldData(final ServerLevel world, final TickRegions.TickRegionData regionData) { -@@ -575,6 +578,15 @@ public final class RegionizedWorldData { +@@ -570,6 +573,15 @@ public final class RegionizedWorldData { this.turbo = new io.papermc.paper.redstone.RedstoneWireTurbo((RedStoneWireBlock)Blocks.REDSTONE_WIRE); this.regionData = regionData; @@ -99,7 +99,7 @@ index 414c21345879f589fb61130180d0ca606e37a454..98284b695cec2fcd968b594d7944c635 NaturalSpawner.spawnForChunk(this.level, chunk, spawnCookie, spawningCategories); } diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java -index 08a6fc0e58d61b1765e704c500b3aec635e69560..ae88e57974f631ff2494c35d6e02049ba5d38014 100644 +index 1dda86db63f47a6cccb8e144ae2c6d3b11043cb1..68db8f0b571778f9a1c3cb7b6faf1e271fedd304 100644 --- a/net/minecraft/server/level/ServerLevel.java +++ b/net/minecraft/server/level/ServerLevel.java @@ -823,6 +823,11 @@ public class ServerLevel extends Level implements WorldGenLevel, ServerEntityGet diff --git a/lophine-server/minecraft-patches/features/0117-Leaves-Catch-update-suppression-crash.patch b/lophine-server/minecraft-patches/features/0117-Leaves-Catch-update-suppression-crash.patch index 5a51f04..6fce4df 100644 --- a/lophine-server/minecraft-patches/features/0117-Leaves-Catch-update-suppression-crash.patch +++ b/lophine-server/minecraft-patches/features/0117-Leaves-Catch-update-suppression-crash.patch @@ -36,10 +36,10 @@ index 20fa23988efbfb50c664fa48cc823adbe8e6ce58..1a95ccd745f4789225d711ab6fe497c6 throw PacketUtils.makeReportedException(e, this.packet, this.listener); } diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java -index 803faa6b80a42d16687ea8b109973938d02f4a36..6c5cdfebb3a362c51b3b940397e10536dc67afc8 100644 +index d1a0585e4a9fe85d8a99507bb8a55d175c1804e3..657801b605ff49af0a7b80e17bc45b89e243b35e 100644 --- a/net/minecraft/server/MinecraftServer.java +++ b/net/minecraft/server/MinecraftServer.java -@@ -1998,11 +1998,30 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop capturedBlockStates = new java.util.LinkedHashMap<>(); // Paper -@@ -572,7 +572,11 @@ public final class RegionizedWorldData { +@@ -567,7 +567,11 @@ public final class RegionizedWorldData { this.world = world; this.blockLevelTicks = new LevelTicks<>(world::isPositionTickingWithEntitiesLoaded, world, true); this.fluidLevelTicks = new LevelTicks<>(world::isPositionTickingWithEntitiesLoaded, world, false); @@ -30,7 +30,7 @@ index 5724a276cf4fdd41f239c47e4352ec05736a5e49..3a50e625160d0dad6bd8fa534b719087 this.nearbyPlayers = new NearbyPlayers(world); this.wireHandler = new alternate.current.wire.WireHandler(world); this.turbo = new io.papermc.paper.redstone.RedstoneWireTurbo((RedStoneWireBlock)Blocks.REDSTONE_WIRE); -@@ -901,4 +905,4 @@ public final class RegionizedWorldData { +@@ -915,4 +919,4 @@ public final class RegionizedWorldData { public int getChunkCount() { return this.chunks.size(); } @@ -38,7 +38,7 @@ index 5724a276cf4fdd41f239c47e4352ec05736a5e49..3a50e625160d0dad6bd8fa534b719087 \ No newline at end of file +} diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java -index 6b8073023833fc9e99684944802dc5941833aa4c..132122f23a697109696852cf383fa1b0186e0210 100644 +index ff146441b9665ae5f70e1f8acd8bd8fae52d810f..8eca4b0a82d738f873f9e01a7424aaf7ee3735a2 100644 --- a/net/minecraft/server/level/ServerLevel.java +++ b/net/minecraft/server/level/ServerLevel.java @@ -991,11 +991,15 @@ public class ServerLevel extends Level implements WorldGenLevel, ServerEntityGet diff --git a/lophine-server/minecraft-patches/features/0126-Carpet-features.patch b/lophine-server/minecraft-patches/features/0126-Carpet-features.patch index 2664946..480b989 100644 --- a/lophine-server/minecraft-patches/features/0126-Carpet-features.patch +++ b/lophine-server/minecraft-patches/features/0126-Carpet-features.patch @@ -128,7 +128,7 @@ index 8cc4fe9feb57902a4b9a6a26e6175ac00a2cef65..9ab1a812e43145120859734075e2ac99 // Paper start - fix converting txt to json file; moved from constructor } diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java -index 2c15275066923cb488be8e1d7777785466768332..9e8157e6a6df32d00fd1f689a6005ce0f7e0dfbd 100644 +index ac6561a1552f7a2f724fefe0aa1507dbd9a703ef..d393f485965ddd960b4a3cb26ad7eb48deccb4ab 100644 --- a/net/minecraft/server/level/ServerPlayer.java +++ b/net/minecraft/server/level/ServerPlayer.java @@ -260,6 +260,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc @@ -173,10 +173,10 @@ index 2c15275066923cb488be8e1d7777785466768332..9e8157e6a6df32d00fd1f689a6005ce0 public ClientInformation clientInformation() { diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 77b9cd3d14eddc735d9131597916405fde4230ec..52187fe9d2c907e31cf961a93f599231a70ac08c 100644 +index 11d177e486958727f880f073550ae5db7e233dcd..e489da1acbb77c003951b608856ea706570cbed6 100644 --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2091,7 +2091,15 @@ public class ServerGamePacketListenerImpl +@@ -2092,7 +2092,15 @@ public class ServerGamePacketListenerImpl this.player.gameMode.capturedBlockEntity = false; this.player.gameMode.captureSentBlockEntities = true; // Paper end - Send block entities after destroy prediction @@ -193,7 +193,7 @@ index 77b9cd3d14eddc735d9131597916405fde4230ec..52187fe9d2c907e31cf961a93f599231 this.ackBlockChangesUpTo(packet.getSequence()); // Paper start - Send block entities after destroy prediction this.player.gameMode.captureSentBlockEntities = false; -@@ -2194,7 +2202,9 @@ public class ServerGamePacketListenerImpl +@@ -2195,7 +2203,9 @@ public class ServerGamePacketListenerImpl if (!me.earthme.luminol.config.modules.fixes.ItemMultitaskConfig.enabled) { // Luminol - Add item multitask config this.player.stopUsingItem(); // CraftBukkit - SPIGOT-4706 } // Luminol - Add item multitask config @@ -204,7 +204,7 @@ index 77b9cd3d14eddc735d9131597916405fde4230ec..52187fe9d2c907e31cf961a93f599231 if (interactionResult.consumesAction()) { CriteriaTriggers.ANY_BLOCK_USE.trigger(this.player, blockHit.getBlockPos(), itemStack); } -@@ -2299,7 +2309,10 @@ public class ServerGamePacketListenerImpl +@@ -2300,7 +2310,10 @@ public class ServerGamePacketListenerImpl } // CraftBukkit end @@ -216,7 +216,7 @@ index 77b9cd3d14eddc735d9131597916405fde4230ec..52187fe9d2c907e31cf961a93f599231 && success.swingSource() == InteractionResult.SwingSource.SERVER) { this.player.swing(hand, true); } -@@ -2307,6 +2320,16 @@ public class ServerGamePacketListenerImpl +@@ -2308,6 +2321,16 @@ public class ServerGamePacketListenerImpl } } @@ -233,7 +233,7 @@ index 77b9cd3d14eddc735d9131597916405fde4230ec..52187fe9d2c907e31cf961a93f599231 @Override public void handleTeleportToEntityPacket(final ServerboundTeleportToEntityPacket packet) { PacketUtils.ensureRunningOnSameThread(packet, this, this.player.level()); -@@ -2687,6 +2710,10 @@ public class ServerGamePacketListenerImpl +@@ -2688,6 +2711,10 @@ public class ServerGamePacketListenerImpl if (true) throw new UnsupportedOperationException(); // Folia - region threading final String conversationInput = rawMessage; this.server.processQueue.add(() -> ServerGamePacketListenerImpl.this.getCraftPlayer().acceptConversationInput(conversationInput)); @@ -244,7 +244,7 @@ index 77b9cd3d14eddc735d9131597916405fde4230ec..52187fe9d2c907e31cf961a93f599231 } 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 { -@@ -2699,6 +2726,9 @@ public class ServerGamePacketListenerImpl +@@ -2700,6 +2727,9 @@ public class ServerGamePacketListenerImpl // Spigot start - spam exclusions private void detectRateSpam(final TickThrottler throttler, final String message) { @@ -254,7 +254,7 @@ index 77b9cd3d14eddc735d9131597916405fde4230ec..52187fe9d2c907e31cf961a93f599231 if (me.earthme.luminol.config.modules.misc.PaperPacketLimiterConfig.forceDisable) return; // Leaves - disable // CraftBukkit start - replaced with thread safe throttle if (org.spigotmc.SpigotConfig.enableSpamExclusions) { -@@ -3645,8 +3675,10 @@ public class ServerGamePacketListenerImpl +@@ -3646,8 +3676,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) { @@ -268,7 +268,7 @@ index 77b9cd3d14eddc735d9131597916405fde4230ec..52187fe9d2c907e31cf961a93f599231 } else { LOGGER.warn("Player {} was dropping items too fast in creative mode, ignoring.", this.player.getPlainTextName()); diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java -index 575b4eabcaac48ae87b69dd037493ebfe0a1212c..516561a25d28f2c7bcc3e71c5f2f9da99c2899c3 100644 +index 7f3492a909536ca14577c3ec3aa511e98ca5551f..2d6500eb0a01f455de8d7a627cabcc06bb60ca61 100644 --- a/net/minecraft/server/players/PlayerList.java +++ b/net/minecraft/server/players/PlayerList.java @@ -280,7 +280,7 @@ public abstract class PlayerList { @@ -521,7 +521,7 @@ index d2ac2a0c5bb18c2bca18e5166ed65afd01166e04..6b3adf1af870c3d710494d34d2f25850 } } diff --git a/net/minecraft/world/entity/player/Player.java b/net/minecraft/world/entity/player/Player.java -index d46abbea2153cac2d939416fafeac7f905fe0e02..e224c1b8977cd97f2868f7db56c1df22a6820918 100644 +index 8709dabd6d3574e53210543321ca88c778594afc..76af5d1aa163e399cd4b5ed1ffd0a03757e31555 100644 --- a/net/minecraft/world/entity/player/Player.java +++ b/net/minecraft/world/entity/player/Player.java @@ -560,7 +560,15 @@ public abstract class Player extends Avatar implements ContainerUser { @@ -842,7 +842,7 @@ index b90077b44ce81d5d60f9d0ad2414f0b7c6b1e720..4f4512d30717e5e41bd98703574485c0 final ObjectArrayList ret = new ObjectArrayList<>(); diff --git a/net/minecraft/world/level/block/CarvedPumpkinBlock.java b/net/minecraft/world/level/block/CarvedPumpkinBlock.java -index 4ed03c9bb81a903c6ec68efe72845f20b083f3ac..003c19d8cad2ae5af770923a76735e4944b24c28 100644 +index 5a316fedee1992efd4a21c4678b659c4589d57ec..f0a46c30b3c446cdc52a8198608d7f60441b7d1b 100644 --- a/net/minecraft/world/level/block/CarvedPumpkinBlock.java +++ b/net/minecraft/world/level/block/CarvedPumpkinBlock.java @@ -59,7 +59,10 @@ public class CarvedPumpkinBlock extends HorizontalDirectionalBlock { @@ -868,7 +868,7 @@ index 4ed03c9bb81a903c6ec68efe72845f20b083f3ac..003c19d8cad2ae5af770923a76735e49 } private WeatheringCopper.WeatherState getWeatherStateFromPattern(final BlockPattern.BlockPatternMatch copperGolemMatch) { -@@ -159,6 +166,44 @@ public class CarvedPumpkinBlock extends HorizontalDirectionalBlock { +@@ -162,6 +169,44 @@ public class CarvedPumpkinBlock extends HorizontalDirectionalBlock { builder.add(FACING); } diff --git a/lophine-server/minecraft-patches/features/0128-Add-Vanilla-like-experience-Config.patch b/lophine-server/minecraft-patches/features/0128-Add-Vanilla-like-experience-Config.patch index 5eab4ea..9861032 100644 --- a/lophine-server/minecraft-patches/features/0128-Add-Vanilla-like-experience-Config.patch +++ b/lophine-server/minecraft-patches/features/0128-Add-Vanilla-like-experience-Config.patch @@ -21,7 +21,7 @@ index dd17339fe2f9d7660b20eed05b61d6231302aa82..d997e4f7ae6ee4e81f5fffe874f2895d } diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java -index 9e8157e6a6df32d00fd1f689a6005ce0f7e0dfbd..2da765eb74c4e84254857ad05b7af82eb8500fc3 100644 +index d393f485965ddd960b4a3cb26ad7eb48deccb4ab..27a6970fe699b9346b7ca69e1cfa04833a1c0b57 100644 --- a/net/minecraft/server/level/ServerPlayer.java +++ b/net/minecraft/server/level/ServerPlayer.java @@ -2339,7 +2339,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc diff --git a/lophine-server/minecraft-patches/features/0129-Restore-vanilla-ender-pearl-loading.patch b/lophine-server/minecraft-patches/features/0129-Restore-vanilla-ender-pearl-loading.patch index 27a7b0f..1ddbbc6 100644 --- a/lophine-server/minecraft-patches/features/0129-Restore-vanilla-ender-pearl-loading.patch +++ b/lophine-server/minecraft-patches/features/0129-Restore-vanilla-ender-pearl-loading.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Restore vanilla ender pearl loading diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java -index 2da765eb74c4e84254857ad05b7af82eb8500fc3..d0b9f4140952d0d0416b257077a885d352b40bd1 100644 +index 27a6970fe699b9346b7ca69e1cfa04833a1c0b57..28ce624e9952e9d45930d4550ef80d1e788f5916 100644 --- a/net/minecraft/server/level/ServerPlayer.java +++ b/net/minecraft/server/level/ServerPlayer.java @@ -277,7 +277,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc @@ -66,7 +66,7 @@ index 2da765eb74c4e84254857ad05b7af82eb8500fc3..d0b9f4140952d0d0416b257077a885d3 public Set getEnderPearls() { diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java -index 516561a25d28f2c7bcc3e71c5f2f9da99c2899c3..eb652157ef25e83b897f52aff3c49c09c6f656c8 100644 +index 2d6500eb0a01f455de8d7a627cabcc06bb60ca61..2cfae6cb39fb4d2b24f6e773d9df1f24130bfbe3 100644 --- a/net/minecraft/server/players/PlayerList.java +++ b/net/minecraft/server/players/PlayerList.java @@ -749,11 +749,13 @@ public abstract class PlayerList { diff --git a/lophine-server/minecraft-patches/features/0130-Anonymous-Object-Fix-wrong-variable-passing-in-Regio.patch b/lophine-server/minecraft-patches/features/0130-Anonymous-Object-Fix-wrong-variable-passing-in-Regio.patch index 2e84069..950d9af 100644 --- a/lophine-server/minecraft-patches/features/0130-Anonymous-Object-Fix-wrong-variable-passing-in-Regio.patch +++ b/lophine-server/minecraft-patches/features/0130-Anonymous-Object-Fix-wrong-variable-passing-in-Regio.patch @@ -9,10 +9,10 @@ This patch is used with permission from the original author. Licensed under: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html) diff --git a/io/papermc/paper/threadedregions/RegionizedWorldData.java b/io/papermc/paper/threadedregions/RegionizedWorldData.java -index 3a50e625160d0dad6bd8fa534b719087dae7881d..20439c632044ae9b4358bfba309b378b3de98601 100644 +index 1cc5d99f24737d09b7ddef985edf36b460b90d0f..2d725c3dfdd09400f783486f734ad53b8211f879 100644 --- a/io/papermc/paper/threadedregions/RegionizedWorldData.java +++ b/io/papermc/paper/threadedregions/RegionizedWorldData.java -@@ -841,7 +841,7 @@ public final class RegionizedWorldData { +@@ -855,7 +855,7 @@ public final class RegionizedWorldData { } public void setTickingBlockEntities(final boolean to) { diff --git a/lophine-server/minecraft-patches/features/0135-Anonymous-Object-Fix-folia-nether-portal-ticket-plac.patch b/lophine-server/minecraft-patches/features/0135-Anonymous-Object-Fix-folia-nether-portal-ticket-plac.patch index 83010aa..409a575 100644 --- a/lophine-server/minecraft-patches/features/0135-Anonymous-Object-Fix-folia-nether-portal-ticket-plac.patch +++ b/lophine-server/minecraft-patches/features/0135-Anonymous-Object-Fix-folia-nether-portal-ticket-plac.patch @@ -33,10 +33,10 @@ index ea93ac07ec6d4e83d1d0904daf721132e2bbecc3..4252672ad2aaf03d50e5ea6a681e9964 public static class IntBounds { diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index acc9caf8559cd341ea17d3b58f13cdac7de18564..489011f9af49fa3407038bd2f00439443307d179 100644 +index f15f0ca83ff2313d2e025db984c4fa1d492c5a70..6d6b1024ef7467bc7f72693a655a25eeede1b0f8 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java -@@ -4851,7 +4851,7 @@ public abstract class Entity +@@ -4847,7 +4847,7 @@ public abstract class Entity portalInfoCompletable.complete( new TeleportTransition(destination, Vec3.atCenterOf(targetPos), Vec3.ZERO, 90.0f, 0.0f, @@ -45,7 +45,7 @@ index acc9caf8559cd341ea17d3b58f13cdac7de18564..489011f9af49fa3407038bd2f0043944 ); return; } -@@ -4863,7 +4863,7 @@ public abstract class Entity +@@ -4859,7 +4859,7 @@ public abstract class Entity portalInfoCompletable.complete( net.minecraft.world.level.block.NetherPortalBlock.createDimensionTransition( destination, portal, originalPortalDirection, relativePos, diff --git a/lophine-server/minecraft-patches/features/0136-Anonymous-Object-RegionizedTaskQueue-queue-TTL-optim.patch b/lophine-server/minecraft-patches/features/0136-Anonymous-Object-RegionizedTaskQueue-queue-TTL-optim.patch index 879e58b..9bf8fe9 100644 --- a/lophine-server/minecraft-patches/features/0136-Anonymous-Object-RegionizedTaskQueue-queue-TTL-optim.patch +++ b/lophine-server/minecraft-patches/features/0136-Anonymous-Object-RegionizedTaskQueue-queue-TTL-optim.patch @@ -133,10 +133,10 @@ index fe0a6bd90cba4869a0ee11723832f2dee5039f62..53579b6faa9d55485088d59ec2fd1e42 throw new IllegalStateException("Negative reference count"); } diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java -index 6c5cdfebb3a362c51b3b940397e10536dc67afc8..4a00b2399a190b609f7b0944e407f3b087e617b5 100644 +index 657801b605ff49af0a7b80e17bc45b89e243b35e..b498cecb37cf83d31ad4a02bb1acecf7328e7aa6 100644 --- a/net/minecraft/server/MinecraftServer.java +++ b/net/minecraft/server/MinecraftServer.java -@@ -1756,6 +1756,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop -Date: Wed, 6 May 2026 18:27:15 +0800 +Date: Sat, 8 Aug 2026 01:32:35 +0800 Subject: [PATCH] Add tpsbar with chunkhot membar and region bar @@ -22,12 +22,12 @@ index f020f310c4bca49a23de91bea72ccd9941c0b03c..10b351d8bd6b0e117ecbe961ae2f1016 + // KioCG end } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index a3f2e97c1e0c9c2add3c5efd5a5cebe84ace78bf..d47c1b8cc17eb13669fbe21670c3a6eaaa995844 100644 +index e20a66e56f2e4520b2708d6ebc377392e4362816..7bbadcab57d3a2dbba0a4c48de043966454a1d50 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -3396,4 +3396,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player, PluginMessa - super.knockback(strength, directionX, directionZ); - this.entity.hurtMarked = true; +@@ -3420,4 +3420,11 @@ public class CraftPlayer extends CraftHumanEntity implements Player, PluginMessa + this.getHandle().fixedPose = false; + this.getHandle().updatePlayerPose(); } + + // KioCG start - ChunkHot diff --git a/lophine-server/paper-patches/features/0014-Leaf-Secure-seed-and-matter-seed-command.patch b/lophine-server/paper-patches/features/0014-Leaf-Secure-seed-and-matter-seed-command.patch index 1c95246..e3cf94a 100644 --- a/lophine-server/paper-patches/features/0014-Leaf-Secure-seed-and-matter-seed-command.patch +++ b/lophine-server/paper-patches/features/0014-Leaf-Secure-seed-and-matter-seed-command.patch @@ -25,10 +25,10 @@ index 10b351d8bd6b0e117ecbe961ae2f101686a38fe4..fb89f6ef3adac92639d999f173383c3e @Override diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 606235c9af5afce55be8bbc963e8af7291a050c5..8cfa8a077ffc4b297f802a63f1d414ad004e45b7 100644 +index 9e40ea5f161eef4d74084c081d4df912cbe65548..685f69bf0adf4fe2ed03d94c9187d230fc9b67c8 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -1261,7 +1261,11 @@ public final class CraftServer implements Server { +@@ -1260,7 +1260,11 @@ public final class CraftServer implements Server { .orElse(null); RegistryAccess contextRegistryAccess = registryAccess; if (worldGenSettings == null) { diff --git a/lophine-server/paper-patches/features/0016-Leaves-Leaves-plugin.patch b/lophine-server/paper-patches/features/0016-Leaves-Leaves-plugin.patch index d958458..11f1b78 100644 --- a/lophine-server/paper-patches/features/0016-Leaves-Leaves-plugin.patch +++ b/lophine-server/paper-patches/features/0016-Leaves-Leaves-plugin.patch @@ -244,10 +244,10 @@ index 26422904751647a061397ce978bba752149003cd..884ed63dab16acca83fe8f421762f256 } diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 8cfa8a077ffc4b297f802a63f1d414ad004e45b7..d61f38fdf84830c2e94dee8dd7c9a0400ec07318 100644 +index 685f69bf0adf4fe2ed03d94c9187d230fc9b67c8..d290c5c873685f8b281b85d7a9af3a70b73e14b1 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -3110,6 +3110,13 @@ public final class CraftServer implements Server { +@@ -3109,6 +3109,13 @@ public final class CraftServer implements Server { } // Luminol end - Config API diff --git a/lophine-server/paper-patches/features/0020-Leaves-Leaves-Base-Protocol-Core.patch b/lophine-server/paper-patches/features/0020-Leaves-Leaves-Base-Protocol-Core.patch index 9664233..44eb9a8 100644 --- a/lophine-server/paper-patches/features/0020-Leaves-Leaves-Base-Protocol-Core.patch +++ b/lophine-server/paper-patches/features/0020-Leaves-Leaves-Base-Protocol-Core.patch @@ -8,7 +8,7 @@ As a part of : Leaves (https://github.com/LeavesMC/Leaves/blob/3e7f4a313ff0d2469 Licensed under: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html) diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index d61f38fdf84830c2e94dee8dd7c9a0400ec07318..14a8a00d9c1fc7d49d6f870bf10b9a5e178b1189 100644 +index d290c5c873685f8b281b85d7a9af3a70b73e14b1..be308fcc90df58993be31473f907dab4478290ad 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -479,6 +479,7 @@ public final class CraftServer implements Server { diff --git a/lophine-server/paper-patches/features/0022-Leaves-Leaves-Fakeplayer.patch b/lophine-server/paper-patches/features/0022-Leaves-Leaves-Fakeplayer.patch index 8b7e501..9581941 100644 --- a/lophine-server/paper-patches/features/0022-Leaves-Leaves-Fakeplayer.patch +++ b/lophine-server/paper-patches/features/0022-Leaves-Leaves-Fakeplayer.patch @@ -53,7 +53,7 @@ index 3a47e4c633ee016d5deeb6a5ee9e2e26769d5193..efb47f914fd0c0e966c6921ed1b26c41 if (nmsEntity.level() != this.getHandle().getLevel()) { throw new IllegalArgumentException(entity + " wasn't created with this world, you must create the entity with the world you want to add it to."); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 14a8a00d9c1fc7d49d6f870bf10b9a5e178b1189..7fd08dac549261c50cf5723ef380ba90ea0da56f 100644 +index be308fcc90df58993be31473f907dab4478290ad..7247666a8baee283f4d99a489e7a14fa9543f803 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -304,6 +304,7 @@ public final class CraftServer implements Server { @@ -72,7 +72,7 @@ index 14a8a00d9c1fc7d49d6f870bf10b9a5e178b1189..7fd08dac549261c50cf5723ef380ba90 } public boolean getCommandBlockOverride(String command) { -@@ -1380,7 +1382,7 @@ public final class CraftServer implements Server { +@@ -1379,7 +1381,7 @@ public final class CraftServer implements Server { return false; } @@ -81,7 +81,7 @@ index 14a8a00d9c1fc7d49d6f870bf10b9a5e178b1189..7fd08dac549261c50cf5723ef380ba90 return false; } -@@ -3119,6 +3121,13 @@ public final class CraftServer implements Server { +@@ -3118,6 +3120,13 @@ public final class CraftServer implements Server { } // Leaves end - Feature API @@ -148,10 +148,10 @@ index f5373786032b3f1db8e6c0c928c781998b2fe194..ca6be9faab3f93da7e91bf73997111b7 CraftParticle.createParticleParam(particle, data), // Particle force, diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 00749be3b16fd09c6b952c93631c808ff5657f20..0f6378ca80bea5d4d7f1cb7d788a57390bc27c59 100644 +index 555f15b3abbd5ba2f4e6558a7c29cde109098a07..a812186b84ee188c6b2276f173bdded37791f593 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -130,6 +130,8 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -131,6 +131,8 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { return new CraftHumanEntity(server, (net.minecraft.world.entity.player.Player) entity); } diff --git a/lophine-server/paper-patches/features/0023-Leaves-Replay-Mod-API.patch b/lophine-server/paper-patches/features/0023-Leaves-Replay-Mod-API.patch index 21db2fc..30dbdb1 100644 --- a/lophine-server/paper-patches/features/0023-Leaves-Replay-Mod-API.patch +++ b/lophine-server/paper-patches/features/0023-Leaves-Replay-Mod-API.patch @@ -1,6 +1,6 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Helvetica Volubi -Date: Sun, 16 Nov 2025 15:55:47 +0800 +From: Bacteriawa +Date: Sat, 8 Aug 2026 01:49:35 +0800 Subject: [PATCH] Leaves: Replay Mod API Co-authored by: violetc <58360096+s-yh-china@users.noreply.github.com> @@ -21,7 +21,7 @@ index 14fa5421107a571739f868eecb00d71dd3d29fef..0fce6dc8bffc341da2e7242422b4153b } // Leaves end - skip bot diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 7fd08dac549261c50cf5723ef380ba90ea0da56f..7cfa9a5a1629c3af1e1105b137cbfc4c0aabe86e 100644 +index 7247666a8baee283f4d99a489e7a14fa9543f803..e8359235c5fa0681c2d0d12cf66d6abbc0fe4d97 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -305,6 +305,7 @@ public final class CraftServer implements Server { @@ -41,23 +41,25 @@ index 7fd08dac549261c50cf5723ef380ba90ea0da56f..7cfa9a5a1629c3af1e1105b137cbfc4c this.serverVersion = io.papermc.paper.ServerBuildInfo.buildInfo().asString(io.papermc.paper.ServerBuildInfo.StringRepresentation.VERSION_SIMPLE); // Paper - improve version this.structureManager = new CraftStructureManager(console.getStructureManager(), console.registryAccess()); this.serverTickManager = new CraftServerTickManager(console.tickRateManager()); -@@ -3192,4 +3193,11 @@ public final class CraftServer implements Server { - } +@@ -3127,6 +3128,13 @@ public final class CraftServer implements Server { } - // Folia end - region TPS API -+ + // Leaves end - Bot API + + // Leaves start - replay mod api + @Override + public org.leavesmc.leaves.entity.photographer.CraftPhotographerManager getPhotographerManager() { + return photographerManager; + } + // Leaves end - replay mod api - } ++ + // Folia start - region TPS API + /** + * Gets the TPS from the region which owns the specified location, or {@code null} if no region owns diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 0f6378ca80bea5d4d7f1cb7d788a57390bc27c59..610e19b82919f05b0ebf20854e0f9b4a77a2b063 100644 +index a812186b84ee188c6b2276f173bdded37791f593..d51660ecccf8f1425ea1462ae7e1d455fd795451 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -131,6 +131,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -132,6 +132,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { } if (entity instanceof org.leavesmc.leaves.bot.ServerBot bot) { return new org.leavesmc.leaves.entity.bot.CraftBot(server, bot); } @@ -66,10 +68,10 @@ index 0f6378ca80bea5d4d7f1cb7d788a57390bc27c59..610e19b82919f05b0ebf20854e0f9b4a // Special case complex part, since there is no extra entity type for them if (entity instanceof EnderDragonPart complexPart) { diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index d47c1b8cc17eb13669fbe21670c3a6eaaa995844..0f522b90f300431f1d5daa62c9a3fd6d260e1feb 100644 +index 7bbadcab57d3a2dbba0a4c48de043966454a1d50..9135327aacf818d3b80ec1102e2b11f40ac93261 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -2084,7 +2084,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player, PluginMessa +@@ -2092,7 +2092,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player, PluginMessa @Override public boolean canSee(Player player) { @@ -78,19 +80,6 @@ index d47c1b8cc17eb13669fbe21670c3a6eaaa995844..0f522b90f300431f1d5daa62c9a3fd6d } @Override -diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -index c189f583598f94fc7944afcabe130c5ee9504c0d..2e56d20d50d8a5d5630816b822b10a43ce3fa6c7 100644 ---- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -@@ -294,7 +294,7 @@ public final class CraftMagicNumbers implements UnsafeValues { - Bukkit.getLogger().log(Level.SEVERE, "Error saving advancement " + key, ex); - } - -- MinecraftServer.getServer().getPlayerList().getPlayers().forEach(player -> { -+ net.minecraft.server.MinecraftServer.getServer().getPlayerList().realPlayers.forEach(player -> { // Leaves - only real players - player.getAdvancements().reload(MinecraftServer.getServer().getAdvancements()); - player.getAdvancements().flushDirty(player, false); - }); diff --git a/src/main/java/org/bukkit/craftbukkit/util/LazyPlayerSet.java b/src/main/java/org/bukkit/craftbukkit/util/LazyPlayerSet.java index 15261d2e96347584e4baf65f12b336b73a68cd37..83af50de50a03e164d572f3c3466b6d0b42ed138 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/LazyPlayerSet.java