From 91e00f34ffdab19b532dd13fd0315aaafaf73762 Mon Sep 17 00:00:00 2001 From: Helvetica Volubi Date: Mon, 6 Jul 2026 01:25:07 +0800 Subject: [PATCH] Update Luminol to fix some bugs --- gradle.properties | 2 +- .../features/0001-Rebrand-to-Lophine.patch | 8 +- .../features/0007-Carpet-features.patch | 10 +-- ...2-Fix-datapack-command-save-function.patch | 4 +- ...urpur-Barrels-and-enderchests-6-rows.patch | 2 +- ...-to-disable-some-check-for-operators.patch | 2 +- ...dd-config-to-enable-save-all-command.patch | 10 +-- ...-config-to-enable-raytracing-tracker.patch | 6 +- .../features/0011-Add-tick-rate-support.patch | 4 +- .../0016-Leaves-Item-overstack-util.patch | 4 +- ...019-Leaves-Leaves-Base-Protocol-Core.patch | 6 +- ...s-Configurable-trading-with-the-void.patch | 6 +- .../0021-Leaves-Servux-Protocol.patch | 4 +- .../0025-Leaves-Syncmatica-Protocol.patch | 2 +- .../features/0026-Leaves-BBOR-Protocol.patch | 2 +- .../0027-Leaves-Xaero-Map-Protocol.patch | 2 +- .../features/0029-Leaves-Jade-Protocol.patch | 2 +- ...Alternative-block-placement-Protocol.patch | 2 +- .../features/0031-Leaves-Fakeplayer.patch | 28 +++--- .../features/0032-Leaves-Replay-Mod-API.patch | 22 ++--- .../0035-Global-Entities-Counter.patch | 16 ++-- ...eaves-Catch-update-suppression-crash.patch | 12 +-- .../features/0039-Instant-Block-Updater.patch | 12 +-- ...et-placed-block-on-exception-Do-not.patch} | 2 +- ...43-Leaves-Old-Block-remove-behaviour.patch | 4 +- .../features/0045-Carpet-features.patch | 89 ++++++++++++++++--- .../0046-Carpet-Features-Compatible.patch | 83 +---------------- ...-Restore-vanilla-ender-pearl-loading.patch | 4 +- ...004-Leaves-Leaves-Base-Protocol-Core.patch | 2 +- .../0006-Leaves-Leaves-Fakeplayer.patch | 16 ++-- .../features/0007-Leaves-Replay-Mod-API.patch | 6 +- 31 files changed, 183 insertions(+), 191 deletions(-) rename lophine-server/minecraft-patches/features/{0042-Leaves-Old-Block-remove-behaviour.patch => 0042-Leaves-Do-not-reset-placed-block-on-exception-Do-not.patch} (97%) diff --git a/gradle.properties b/gradle.properties index f3de747..e39365d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -9,7 +9,7 @@ release=pre # true for push to repo, false for skip push repo, auto for detect by release value pushRepo=auto -luminolRef=5d11bf421d9480136b510b87877733c68d14f05d +luminolRef=bd964477d5dfea9a2349541c1a75c5afbebe48db org.gradle.configuration-cache=true org.gradle.caching=true diff --git a/lophine-server/luminol-patches/features/0001-Rebrand-to-Lophine.patch b/lophine-server/luminol-patches/features/0001-Rebrand-to-Lophine.patch index b469053..679a28b 100644 --- a/lophine-server/luminol-patches/features/0001-Rebrand-to-Lophine.patch +++ b/lophine-server/luminol-patches/features/0001-Rebrand-to-Lophine.patch @@ -5,14 +5,14 @@ Subject: [PATCH] Rebrand to Lophine diff --git a/src/main/java/me/earthme/luminol/config/ConfigManager.java b/src/main/java/me/earthme/luminol/config/ConfigManager.java -index a2f5a99ee45a0810fd338ccf6f71df3a077ca62b..05e1aa84586284ac0389e7023f975bfb08438535 100644 +index 3b700b214ac6818cd75c34b207aa1436f52231e7..315c137cb9dbac51a8ac0d63f0ae0127e57c6c9f 100644 --- a/src/main/java/me/earthme/luminol/config/ConfigManager.java +++ b/src/main/java/me/earthme/luminol/config/ConfigManager.java -@@ -24,6 +24,7 @@ public class ConfigManager { +@@ -25,6 +25,7 @@ public class ConfigManager { public static void initConfigs() { - registerConfig("luminol", ConfigsInstance.of("luminol", "me.earthme.luminol.config.modules")); -+ registerConfig("lophine", ConfigsInstance.of("lophine", "fun.bm.lophine.config.modules")); // add lophine global config + registerConfig("luminol", builder.of("luminol", "me.earthme.luminol.config.modules")); ++ registerConfig("lophine", builder.of("lophine", "fun.bm.lophine.config.modules")); // add lophine global config preLoad(); } diff --git a/lophine-server/luminol-patches/features/0007-Carpet-features.patch b/lophine-server/luminol-patches/features/0007-Carpet-features.patch index 5b1b734..fa402f4 100644 --- a/lophine-server/luminol-patches/features/0007-Carpet-features.patch +++ b/lophine-server/luminol-patches/features/0007-Carpet-features.patch @@ -5,15 +5,15 @@ Subject: [PATCH] Carpet features diff --git a/src/main/java/me/earthme/luminol/config/ConfigManager.java b/src/main/java/me/earthme/luminol/config/ConfigManager.java -index 05e1aa84586284ac0389e7023f975bfb08438535..5a8c94337e42584ddaf25ef289327777e7ac675e 100644 +index 315c137cb9dbac51a8ac0d63f0ae0127e57c6c9f..2a2d6aff636ad960638b357d224a631c89d23d33 100644 --- a/src/main/java/me/earthme/luminol/config/ConfigManager.java +++ b/src/main/java/me/earthme/luminol/config/ConfigManager.java -@@ -25,6 +25,15 @@ public class ConfigManager { +@@ -26,6 +26,15 @@ public class ConfigManager { public static void initConfigs() { - registerConfig("luminol", ConfigsInstance.of("luminol", "me.earthme.luminol.config.modules")); - registerConfig("lophine", ConfigsInstance.of("lophine", "fun.bm.lophine.config.modules")); // add lophine global config + registerConfig("luminol", builder.of("luminol", "me.earthme.luminol.config.modules")); + registerConfig("lophine", builder.of("lophine", "fun.bm.lophine.config.modules")); // add lophine global config + // Lophine start - add carpet config -+ registerConfig("lophine_carpet", ConfigsInstance.of( ++ registerConfig("lophine_carpet", builder.of( + new java.io.File("lophine_config"), + "lophine_carpet", + "lophine_carpet_config.toml", diff --git a/lophine-server/minecraft-patches/features/0002-Fix-datapack-command-save-function.patch b/lophine-server/minecraft-patches/features/0002-Fix-datapack-command-save-function.patch index e55acaf..1d4710f 100644 --- a/lophine-server/minecraft-patches/features/0002-Fix-datapack-command-save-function.patch +++ b/lophine-server/minecraft-patches/features/0002-Fix-datapack-command-save-function.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Fix datapack command save function diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java -index 478f896c4fc948a45a463d51c5a78a0a029eb376..56bd710443b794320f97f6e775247df9b09c4c0e 100644 +index fb5f9176916931b23ebf4a5b7ecdfc5285ffbc2b..ecdcf0db97341d2cb460f86f451cecd5c40dbfee 100644 --- a/net/minecraft/server/MinecraftServer.java +++ b/net/minecraft/server/MinecraftServer.java -@@ -2447,6 +2447,16 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 20 * 10 && this.isAlive(); } // KioCG diff --git a/lophine-server/minecraft-patches/features/0011-Add-tick-rate-support.patch b/lophine-server/minecraft-patches/features/0011-Add-tick-rate-support.patch index 2c7a8b1..bba3cec 100644 --- a/lophine-server/minecraft-patches/features/0011-Add-tick-rate-support.patch +++ b/lophine-server/minecraft-patches/features/0011-Add-tick-rate-support.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add tick rate support diff --git a/io/papermc/paper/threadedregions/RegionizedServer.java b/io/papermc/paper/threadedregions/RegionizedServer.java -index cbfb4bdde0f32ec3996e5baa7e7ed5749e2d12a0..64c9f1d36ac9f02f0dd574ffb995e56a08631bfc 100644 +index 79ef1e69ec364beec69b37c6850c038cdba73b4c..6fb3c88463ff69bddb7d8dcde0e5339567d3e1c6 100644 --- a/io/papermc/paper/threadedregions/RegionizedServer.java +++ b/io/papermc/paper/threadedregions/RegionizedServer.java -@@ -371,6 +371,14 @@ public final class RegionizedServer { +@@ -272,6 +272,14 @@ public final class RegionizedServer { this.globalTick(world, tickCount); } diff --git a/lophine-server/minecraft-patches/features/0016-Leaves-Item-overstack-util.patch b/lophine-server/minecraft-patches/features/0016-Leaves-Item-overstack-util.patch index 0282cd7..c5f78a5 100644 --- a/lophine-server/minecraft-patches/features/0016-Leaves-Item-overstack-util.patch +++ b/lophine-server/minecraft-patches/features/0016-Leaves-Item-overstack-util.patch @@ -38,7 +38,7 @@ 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 83dfc138415f676ac1831e577819ce0471640dbd..dcea7e64dd2fbad34f5de3bd682d72e4428b10a8 100644 +index fe6e1aea364620f82de44b942da0d3846c7d17b5..fd1ceb8c6f20b515e3a054050feeb443de33038c 100644 --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -3219,7 +3219,7 @@ public class ServerGamePacketListenerImpl @@ -354,7 +354,7 @@ index 0e86b025bad2c336cc360c2ce764dad0a75de1b6..1873b9376df57ff73d2a1583b60a512c public @Nullable Identifier getNoItemIcon() { diff --git a/net/minecraft/world/item/ItemStack.java b/net/minecraft/world/item/ItemStack.java -index 173d4c93c4f3a361946b6fe5d2aa55d596641a98..0a0fef94619eabe8c56082f3c17c663a4943ded0 100644 +index a6805d436fd3675e385cbf8a3e5b262ae694ed90..f15ee24339b04e4fe395755bf3503c17886f1782 100644 --- a/net/minecraft/world/item/ItemStack.java +++ b/net/minecraft/world/item/ItemStack.java @@ -159,7 +159,7 @@ public final class ItemStack implements DataComponentHolder, ItemInstance, Chang diff --git a/lophine-server/minecraft-patches/features/0019-Leaves-Leaves-Base-Protocol-Core.patch b/lophine-server/minecraft-patches/features/0019-Leaves-Leaves-Base-Protocol-Core.patch index 4494cac..8e9d3f2 100644 --- a/lophine-server/minecraft-patches/features/0019-Leaves-Leaves-Base-Protocol-Core.patch +++ b/lophine-server/minecraft-patches/features/0019-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 c27779b5ca53aad8c87830b2e2647dbfcdcb762b..a4536d82830370ce74313cf9721968b3344f3f08 100644 +index 437abeb7b2d021b38b438d0e046f05809e196930..2ccf454454582d53aee210917218c0867556181e 100644 --- a/net/minecraft/server/MinecraftServer.java +++ b/net/minecraft/server/MinecraftServer.java -@@ -2003,6 +2003,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<>(); -@@ -1192,6 +1194,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 a4536d82830370ce74313cf9721968b3344f3f08..c91e4b2143e4a801a124dfb9c2f80744 this.emptyTicks++; } else { this.emptyTicks = 0; -@@ -1793,6 +1805,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0) { this.playerList.saveAll(playerSaveInterval); @@ -79,7 +79,7 @@ index a4536d82830370ce74313cf9721968b3344f3f08..c91e4b2143e4a801a124dfb9c2f80744 } if (region == null && fullSave) { // Folia - region threading - don't auto save level data this.saveGlobalData(false); -@@ -2031,6 +2044,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop> oldType = PoiTypes.forState(oldState); -@@ -3094,6 +3102,11 @@ public class ServerLevel extends Level implements WorldGenLevel, ServerEntityGet +@@ -3068,6 +3076,11 @@ public class ServerLevel extends Level implements WorldGenLevel, ServerEntityGet // ServerLevel.this.getChunkSource().addEntity(entity); // Paper - ignore and warn about illegal addEntity calls instead of crashing server; moved down below valid=true if (entity instanceof ServerPlayer player) { ServerLevel.this.players.add(player); @@ -322,7 +322,7 @@ index 813837938b056c64f3059fe773c3d93b4f657867..81120d1ac352995cd690dff676a3ef6b if (player.isReceivingWaypoints()) { ServerLevel.this.getWaypointManager().addPlayer(player); } -@@ -3175,6 +3188,11 @@ public class ServerLevel extends Level implements WorldGenLevel, ServerEntityGet +@@ -3149,6 +3162,11 @@ public class ServerLevel extends Level implements WorldGenLevel, ServerEntityGet ServerLevel.this.getChunkSource().removeEntity(entity); if (entity instanceof ServerPlayer player) { ServerLevel.this.players.remove(player); @@ -446,7 +446,7 @@ index 12190f2a2856b0d0cf95144d0b1622f1b9600bf6..be01f06d4ee02854345842c97382e8b6 // Paper start - utility method for common conversion back to the game profile diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java -index bb3049ed94088337f18f2373f97846b2f0add8f1..b5a22510fede9521a0d8330272876d2ceedfb1cc 100644 +index ca1e635b0fdf3d0d17447b43a558fe030536d297..ed50484ca24ef24b1e5bef9f6369dfa4b30c359c 100644 --- a/net/minecraft/server/players/PlayerList.java +++ b/net/minecraft/server/players/PlayerList.java @@ -320,6 +320,19 @@ public abstract class PlayerList { @@ -533,7 +533,7 @@ index bb3049ed94088337f18f2373f97846b2f0add8f1..b5a22510fede9521a0d8330272876d2c public @Nullable ServerPlayer getPlayer(final String playerName) { diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index cc47f02936cad38627c2ee87e54aa8b80a66a8af..bab9b0dbbcb76e4474305db7540f1e703ef0ae62 100644 +index b7cc122d45ecaf922ca1aca8ff5f1632965ad357..8631acfea913aceabefad3d418d282042bbaca1a 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java @@ -1263,7 +1263,7 @@ public abstract class Entity @@ -732,7 +732,7 @@ index f6d37cba8ab5688501be9170720a0b6ded810819..fdd03c9d73a8a0527d0ead3fbbba2008 final Player player, final ClickAction clickAction, final Slot slot, final ItemStack clicked, final ItemStack carried ) { diff --git a/net/minecraft/world/item/ItemStack.java b/net/minecraft/world/item/ItemStack.java -index 0a0fef94619eabe8c56082f3c17c663a4943ded0..ed8cb72e4cff33fb8e0f453b1354c0392bbc6934 100644 +index f15ee24339b04e4fe395755bf3503c17886f1782..2ba711dc758d0d8530b0fb6f0939ed88ec5df169 100644 --- a/net/minecraft/world/item/ItemStack.java +++ b/net/minecraft/world/item/ItemStack.java @@ -458,7 +458,7 @@ public final class ItemStack implements DataComponentHolder, ItemInstance, Chang diff --git a/lophine-server/minecraft-patches/features/0032-Leaves-Replay-Mod-API.patch b/lophine-server/minecraft-patches/features/0032-Leaves-Replay-Mod-API.patch index 249d301..b4c62a3 100644 --- a/lophine-server/minecraft-patches/features/0032-Leaves-Replay-Mod-API.patch +++ b/lophine-server/minecraft-patches/features/0032-Leaves-Replay-Mod-API.patch @@ -88,10 +88,10 @@ index 6c05b9276bdc267a36376f6c64592a50e4b2b36e..21d2c97b3d1e1d29c9de02b6acd58985 result.add(player); if (result.size() >= limit) { diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java -index c91e4b2143e4a801a124dfb9c2f807445539685f..31702272280b853d8a0a688eb162859412f5a646 100644 +index dd2a108f31bcbc1beae8c820c22baaa515fec7ec..67bdd2887afed082fd1bae03f030f2d25d55e282 100644 --- a/net/minecraft/server/MinecraftServer.java +++ b/net/minecraft/server/MinecraftServer.java -@@ -1896,7 +1896,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 -@@ -2525,7 +2525,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop itemEntityMovementTrackerMap = new it.unimi.dsi.fastutil.objects.Object2ObjectLinkedOpenHashMap<>(); // Luminol end @@ -18,7 +18,7 @@ index 6a90942f4fc3c0b366aadf7a4cead6f684eba1cd..273260d6c0da23a9cf735ccade55c1ef public final TickRegions.TickRegionData regionData; public RegionizedWorldData(final ServerLevel world, final TickRegions.TickRegionData regionData) { -@@ -570,6 +573,15 @@ public final class RegionizedWorldData { +@@ -575,6 +578,15 @@ public final class RegionizedWorldData { this.turbo = new io.papermc.paper.redstone.RedstoneWireTurbo((RedStoneWireBlock)Blocks.REDSTONE_WIRE); this.regionData = regionData; @@ -35,7 +35,7 @@ index 6a90942f4fc3c0b366aadf7a4cead6f684eba1cd..273260d6c0da23a9cf735ccade55c1ef this.updateTickData(); } diff --git a/net/minecraft/server/level/ServerChunkCache.java b/net/minecraft/server/level/ServerChunkCache.java -index c3b14503e1bd9025730febc883bead942beb61f7..72c4884e9aebc957333cfedf06c6f49f973828c8 100644 +index 0011653c857ee82f86355cc49b170120d9f96cfd..237ac6912f3b30c0405493b6ce9ca4765c19f985 100644 --- a/net/minecraft/server/level/ServerChunkCache.java +++ b/net/minecraft/server/level/ServerChunkCache.java @@ -511,6 +511,26 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon @@ -99,7 +99,7 @@ index c3b14503e1bd9025730febc883bead942beb61f7..72c4884e9aebc957333cfedf06c6f49f NaturalSpawner.spawnForChunk(this.level, chunk, spawnCookie, spawningCategories); } diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java -index 0ffaec22ab8e336aa4fc540f9e578d37f7640ae4..e9b19099f8defa8ba39d94fb585dec27a5c804ea 100644 +index 598867ffa41c8d38e0c18550071ac25935e34229..eee0cd75cc0e551cb521be190c40044cca313c5b 100644 --- a/net/minecraft/server/level/ServerLevel.java +++ b/net/minecraft/server/level/ServerLevel.java @@ -822,6 +822,11 @@ public class ServerLevel extends Level implements WorldGenLevel, ServerEntityGet @@ -114,7 +114,7 @@ index 0ffaec22ab8e336aa4fc540f9e578d37f7640ae4..e9b19099f8defa8ba39d94fb585dec27 final io.papermc.paper.threadedregions.RegionizedWorldData regionizedWorldData = this.getCurrentWorldData(); // Folia - regionised ticking final ca.spottedleaf.leafprofiler.RegionizedProfiler.Handle foliaProfiler = io.papermc.paper.threadedregions.TickRegionScheduler.getProfiler(); // Folia - profiler ProfilerFiller profiler = Profiler.get(); -@@ -2910,6 +2915,11 @@ public class ServerLevel extends Level implements WorldGenLevel, ServerEntityGet +@@ -2884,6 +2889,11 @@ public class ServerLevel extends Level implements WorldGenLevel, ServerEntityGet public void close() throws IOException { super.close(); //this.entityManager.close(); // Paper - rewrite chunk system @@ -126,7 +126,7 @@ index 0ffaec22ab8e336aa4fc540f9e578d37f7640ae4..e9b19099f8defa8ba39d94fb585dec27 } @Override -@@ -3139,6 +3149,11 @@ public class ServerLevel extends Level implements WorldGenLevel, ServerEntityGet +@@ -3113,6 +3123,11 @@ public class ServerLevel extends Level implements WorldGenLevel, ServerEntityGet entity.inWorld = true; // CraftBukkit - Mark entity as in world entity.valid = true; // CraftBukkit ServerLevel.this.getChunkSource().addEntity(entity); // Paper - ignore and warn about illegal addEntity calls instead of crashing server @@ -138,7 +138,7 @@ index 0ffaec22ab8e336aa4fc540f9e578d37f7640ae4..e9b19099f8defa8ba39d94fb585dec27 // Paper start - Entity origin API if (entity.origin == null) { entity.origin = entity.position(); -@@ -3154,6 +3169,11 @@ public class ServerLevel extends Level implements WorldGenLevel, ServerEntityGet +@@ -3128,6 +3143,11 @@ public class ServerLevel extends Level implements WorldGenLevel, ServerEntityGet @Override public void onTrackingEnd(final Entity entity) { org.spigotmc.AsyncCatcher.catchOp("entity unregister"); // Spigot diff --git a/lophine-server/minecraft-patches/features/0036-Leaves-Catch-update-suppression-crash.patch b/lophine-server/minecraft-patches/features/0036-Leaves-Catch-update-suppression-crash.patch index ad19e31..3bbeaf9 100644 --- a/lophine-server/minecraft-patches/features/0036-Leaves-Catch-update-suppression-crash.patch +++ b/lophine-server/minecraft-patches/features/0036-Leaves-Catch-update-suppression-crash.patch @@ -36,10 +36,10 @@ index 10fa576838c726d026df078eef6c693d14c2cbda..03c4fab3f9be4f69d8c418e6fdd88211 throw PacketUtils.makeReportedException(e, this.packet, this.listener); } diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java -index 31702272280b853d8a0a688eb162859412f5a646..156bbc6b959ba4902e683ec0c75d9308ed6742f8 100644 +index 67bdd2887afed082fd1bae03f030f2d25d55e282..64c4dc62b5dbfee8ae4df3efb9dcbc5740ff22fd 100644 --- a/net/minecraft/server/MinecraftServer.java +++ b/net/minecraft/server/MinecraftServer.java -@@ -1985,11 +1985,30 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop capturedBlockStates = new java.util.LinkedHashMap<>(); // Paper -@@ -567,7 +567,11 @@ public final class RegionizedWorldData { +@@ -572,7 +572,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 273260d6c0da23a9cf735ccade55c1ef813b7ddc..bf1aa9f070fac655cdfbe9471947b011 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); -@@ -896,4 +900,4 @@ public final class RegionizedWorldData { +@@ -901,4 +905,4 @@ public final class RegionizedWorldData { public int getChunkCount() { return this.chunks.size(); } @@ -38,10 +38,10 @@ index 273260d6c0da23a9cf735ccade55c1ef813b7ddc..bf1aa9f070fac655cdfbe9471947b011 \ No newline at end of file +} diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java -index a6696547dcd44bfa46fe45c198327f03f5e663df..f3f02ee651a429f98222fe075d048e9798777996 100644 +index 6e830a841802cf121dcb9ba245e30ab7a6567e83..ca68d73cdc0f679a5f653c8e2ae27f590d7a84b5 100644 --- a/net/minecraft/server/level/ServerLevel.java +++ b/net/minecraft/server/level/ServerLevel.java -@@ -1016,11 +1016,15 @@ public class ServerLevel extends Level implements WorldGenLevel, ServerEntityGet +@@ -990,11 +990,15 @@ public class ServerLevel extends Level implements WorldGenLevel, ServerEntityGet // Paper - rewrite chunk system profiler.pop(); profiler.push("debugSynchronizers"); diff --git a/lophine-server/minecraft-patches/features/0042-Leaves-Old-Block-remove-behaviour.patch b/lophine-server/minecraft-patches/features/0042-Leaves-Do-not-reset-placed-block-on-exception-Do-not.patch similarity index 97% rename from lophine-server/minecraft-patches/features/0042-Leaves-Old-Block-remove-behaviour.patch rename to lophine-server/minecraft-patches/features/0042-Leaves-Do-not-reset-placed-block-on-exception-Do-not.patch index b0512b7..4286fb4 100644 --- a/lophine-server/minecraft-patches/features/0042-Leaves-Old-Block-remove-behaviour.patch +++ b/lophine-server/minecraft-patches/features/0042-Leaves-Do-not-reset-placed-block-on-exception-Do-not.patch @@ -37,7 +37,7 @@ index 3b5aa0c45647c694e908aaae2a027db02b4f8385..aebcab247f49ada6af76b3c0e6094413 // CraftBukkit start - special case for handling block placement with water lilies, frog spawn and snow buckets if (player != null && (this instanceof PlaceOnWaterBlockItem || this instanceof SolidBucketItem)) { diff --git a/net/minecraft/world/level/chunk/LevelChunk.java b/net/minecraft/world/level/chunk/LevelChunk.java -index a71b37b391ceaf1a77b9e184fd37be86b6c818dd..51e7c9287bc39d1ffaa60946c009711acdfa8572 100644 +index 668e2b12d706ba2b0727ac7e2ba0698d997e415b..f103b1633f7483bd57da760e59fea132c63faec5 100644 --- a/net/minecraft/world/level/chunk/LevelChunk.java +++ b/net/minecraft/world/level/chunk/LevelChunk.java @@ -1018,12 +1018,6 @@ public class LevelChunk extends ChunkAccess implements DebugValueSource, ca.spot diff --git a/lophine-server/minecraft-patches/features/0043-Leaves-Old-Block-remove-behaviour.patch b/lophine-server/minecraft-patches/features/0043-Leaves-Old-Block-remove-behaviour.patch index 694f2f2..9b63d0e 100644 --- a/lophine-server/minecraft-patches/features/0043-Leaves-Old-Block-remove-behaviour.patch +++ b/lophine-server/minecraft-patches/features/0043-Leaves-Old-Block-remove-behaviour.patch @@ -700,7 +700,7 @@ index 49b3f9e78ae9db257b653a6094619880784c6370..b451f8234e92c36fa1395a80b01dc878 protected void affectNeighborsAfterRemoval(final BlockState state, final ServerLevel level, final BlockPos pos, final boolean movedByPiston) { if (!movedByPiston) { diff --git a/net/minecraft/world/level/block/entity/BlockEntityType.java b/net/minecraft/world/level/block/entity/BlockEntityType.java -index ea48b6db56d06ddb12a3b16882e09f0e2eb26433..0a3fec59c53df270c6d7bcc2379e0f6b9d753afd 100644 +index cda0d6d01035570844f03e523db7721cc6cc3e6d..b88b1b123563f06ce00f20ce775a3dfcd5df79de 100644 --- a/net/minecraft/world/level/block/entity/BlockEntityType.java +++ b/net/minecraft/world/level/block/entity/BlockEntityType.java @@ -28,7 +28,7 @@ public class BlockEntityType { @@ -797,7 +797,7 @@ index 7358c75802a37e84e30b1b94a046251d2547a388..972b953a579120c1c05f2dc9bfc2b408 this.getBlock().affectNeighborsAfterRemoval(this.asState(), level, pos, movedByPiston); } diff --git a/net/minecraft/world/level/chunk/LevelChunk.java b/net/minecraft/world/level/chunk/LevelChunk.java -index 51e7c9287bc39d1ffaa60946c009711acdfa8572..c3b32f9c4c2fa17bef629453e3315c12387f5a92 100644 +index f103b1633f7483bd57da760e59fea132c63faec5..a4d5bf1773a9ce8184a940384696f0d38690a421 100644 --- a/net/minecraft/world/level/chunk/LevelChunk.java +++ b/net/minecraft/world/level/chunk/LevelChunk.java @@ -425,6 +425,8 @@ public class LevelChunk extends ChunkAccess implements DebugValueSource, ca.spot diff --git a/lophine-server/minecraft-patches/features/0045-Carpet-features.patch b/lophine-server/minecraft-patches/features/0045-Carpet-features.patch index a3f56ce..9b977b6 100644 --- a/lophine-server/minecraft-patches/features/0045-Carpet-features.patch +++ b/lophine-server/minecraft-patches/features/0045-Carpet-features.patch @@ -5,18 +5,18 @@ Subject: [PATCH] Carpet features diff --git a/io/papermc/paper/threadedregions/RegionizedServer.java b/io/papermc/paper/threadedregions/RegionizedServer.java -index 64c9f1d36ac9f02f0dd574ffb995e56a08631bfc..cb68671e513fc812723b2abbdd21e8d6e18cf808 100644 +index 6fb3c88463ff69bddb7d8dcde0e5339567d3e1c6..7ee9eb8439330724c537f9b1451be78dd3a107ad 100644 --- a/io/papermc/paper/threadedregions/RegionizedServer.java +++ b/io/papermc/paper/threadedregions/RegionizedServer.java -@@ -337,6 +337,7 @@ public final class RegionizedServer { - } - this.randomWalk(); - */ +@@ -238,6 +238,7 @@ public final class RegionizedServer { + private long tickCount; + + private void globalTick(final long tickCount) { + final long tickStartNanos = System.nanoTime(); // Lophine - Carpet features ++this.tickCount; // Luminol start - Add a config to enable tick command if (me.earthme.luminol.config.modules.experiment.CommandConfig.tick) { -@@ -379,6 +380,10 @@ public final class RegionizedServer { +@@ -280,6 +281,10 @@ public final class RegionizedServer { } // Lophine end - Add a config to enable tick command @@ -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 4034b4b9bd5e567b882169b5b1e17f75b64ba8db..e5fdb195aaea5d4041d2fd33e3f96966ef1c5412 100644 +index 4034b4b9bd5e567b882169b5b1e17f75b64ba8db..4c53b688ed6b26ca7231841f3235f9a824416bba 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 @@ -139,6 +139,15 @@ index 4034b4b9bd5e567b882169b5b1e17f75b64ba8db..e5fdb195aaea5d4041d2fd33e3f96966 private @Nullable Vec3 startingToFallPosition; private @Nullable Vec3 enteredNetherPosition; private @Nullable Vec3 enteredLavaOnVehiclePosition; +@@ -2168,7 +2169,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc + this.lastSentFood = -1; + this.teleportSpectators(transition, oldLevel); + // Leaves start - bot support +- if (fun.bm.lophine.config.modules.function.FakeplayerConfig.enable) { ++ if (fun.bm.lophine.config.modules.function.FakeplayerConfig.checkEnabled()) { + this.server.getBotList().bots.forEach(bot -> bot.sendFakeDataIfNeed(this, true)); // Leaves - render bot + } + // Leaves end - bot support @@ -2805,6 +2806,11 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc this.setShoulderEntityRight(oldPlayer.getShoulderEntityRight()); this.setLastDeathLocation(oldPlayer.getLastDeathLocation()); @@ -164,7 +173,7 @@ index 4034b4b9bd5e567b882169b5b1e17f75b64ba8db..e5fdb195aaea5d4041d2fd33e3f96966 public ClientInformation clientInformation() { diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 2ada9d75ee70754a3992a32660d125c4328ff264..91eb538fe3f7134573f3974728ffc527cae5bfae 100644 +index aec23bc77fc78eea6a3137b71a6923c217ad40a7..3f3125e0f198f5530057371d631d8e32584907eb 100644 --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -2078,7 +2078,15 @@ public class ServerGamePacketListenerImpl @@ -258,6 +267,37 @@ index 2ada9d75ee70754a3992a32660d125c4328ff264..91eb538fe3f7134573f3974728ffc527 this.player.drop(itemStack, true); } 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 1a849654efcd42cdea3f85020fd8d018bc651b57..d88c54b27193dc2c4d2c8f539437bf5f6fb8466c 100644 +--- a/net/minecraft/server/players/PlayerList.java ++++ b/net/minecraft/server/players/PlayerList.java +@@ -308,7 +308,7 @@ public abstract class PlayerList { + // org.leavesmc.leaves.protocol.core.LeavesProtocolManager.handlePlayerJoin(player); // Leaves - protocol + + // Leaves start - bot support +- if (fun.bm.lophine.config.modules.function.FakeplayerConfig.enable) { ++ if (fun.bm.lophine.config.modules.function.FakeplayerConfig.checkEnabled()) { + org.leavesmc.leaves.bot.ServerBot bot = this.server.getBotList().getBotByName(player.getScoreboardName()); + if (bot != null) { + this.server.getBotList().removeBot(bot, org.leavesmc.leaves.event.bot.BotRemoveEvent.RemoveReason.INTERNAL, player.getBukkitEntity(), false, false); +@@ -491,7 +491,7 @@ public abstract class PlayerList { + org.leavesmc.leaves.protocol.core.LeavesProtocolManager.handlePlayerJoin(player); // Leaves - protocol + + // Leaves start - bot support +- if (fun.bm.lophine.config.modules.function.FakeplayerConfig.enable) { ++ if (fun.bm.lophine.config.modules.function.FakeplayerConfig.checkEnabled()) { + org.leavesmc.leaves.bot.ServerBot bot = this.server.getBotList().getBotByName(player.getScoreboardName()); + if (bot != null) { + this.server.getBotList().removeBot(bot, org.leavesmc.leaves.event.bot.BotRemoveEvent.RemoveReason.INTERNAL, player.getBukkitEntity(), false, false); +@@ -1019,7 +1019,7 @@ public abstract class PlayerList { + ).callEvent(); + // Paper end + // Leaves start - bot support +- if (fun.bm.lophine.config.modules.function.FakeplayerConfig.enable) { ++ if (fun.bm.lophine.config.modules.function.FakeplayerConfig.checkEnabled()) { + this.server.getBotList().bots.forEach(bot -> bot.sendFakeDataIfNeed(player, true)); // Leaves - render bot + } + // Leaves end - bot support diff --git a/net/minecraft/world/entity/ExperienceOrb.java b/net/minecraft/world/entity/ExperienceOrb.java index b95c56e0699fbe16e65efcf010cd514f0ac0962f..0125d59551accd9005aa33a5c7cc8ec288fb7757 100644 --- a/net/minecraft/world/entity/ExperienceOrb.java @@ -676,7 +716,7 @@ index 6812ade4d9de26d507234b8357b109ec7e5cbb50..071d2cd7e0c2e5bba0732590ba804a5c public void addRecipe(RecipeHolder holder) { org.spigotmc.AsyncCatcher.catchOp("Recipe Add"); // Spigot diff --git a/net/minecraft/world/level/Level.java b/net/minecraft/world/level/Level.java -index bfc8e50a9e0d1ec13092cdd4bee0efba94a24da7..9691985eff543ad71174c2be3033ed7901390413 100644 +index 000e4924e8e338728715a3946002903a3118a98a..55d83a1a97077033191f0f0c220e99095f2a314d 100644 --- a/net/minecraft/world/level/Level.java +++ b/net/minecraft/world/level/Level.java @@ -1179,7 +1179,13 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl @@ -1054,9 +1094,27 @@ index c27fc92d6ff9dd7e07a61513601ef73ff16cf842..e5915893a06e332992c34b8ac5115955 + // Lophine end - Carpet features } diff --git a/net/minecraft/world/level/block/entity/HopperBlockEntity.java b/net/minecraft/world/level/block/entity/HopperBlockEntity.java -index 569f96a1b0b8a03b6a70775f4b7f58a66feed939..c23976cd72d7556ef96e04a7009031fc07b7a4fd 100644 +index 569f96a1b0b8a03b6a70775f4b7f58a66feed939..df57ae93f91daf8daed2fef48b685c72f0615763 100644 --- a/net/minecraft/world/level/block/entity/HopperBlockEntity.java +++ b/net/minecraft/world/level/block/entity/HopperBlockEntity.java +@@ -241,7 +241,7 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen + } + + // Leaves start - Wool hopper counter +- if (fun.bm.lophine.config.modules.function.WoolHopperCounterConfig.unlimitedSpeed && org.leavesmc.leaves.util.HopperCounter.isEnabled()) { ++ if (fun.bm.lophine.carpet.config.modules.WoolHopperCounterConfig.hopperCountersUnlimitedSpeed && org.leavesmc.leaves.util.HopperCounter.isEnabled()) { + net.minecraft.world.item.DyeColor woolColor = org.leavesmc.leaves.util.WoolUtils.getWoolColorAtPosition(level, entity.getBlockPos().relative(state.getValue(HopperBlock.FACING))); + if (woolColor != null) { + for (int i = 0; i < Short.MAX_VALUE; i++) { +@@ -259,7 +259,7 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen + if (changed) { + entity.setCooldown(level.spigotConfig.hopperTransfer); // Spigot + // Leaves start - Wool hopper counter +- if (fun.bm.lophine.config.modules.function.WoolHopperCounterConfig.unlimitedSpeed && org.leavesmc.leaves.util.HopperCounter.isEnabled() && woolHopperCounter(level, pos, state, HopperBlockEntity.getContainerAt(level, pos))) { ++ if (fun.bm.lophine.carpet.config.modules.WoolHopperCounterConfig.hopperCountersUnlimitedSpeed && org.leavesmc.leaves.util.HopperCounter.isEnabled() && woolHopperCounter(level, pos, state, HopperBlockEntity.getContainerAt(level, pos))) { + entity.setCooldown(0); + return true; + } @@ -296,6 +296,10 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen private static boolean hopperPush(final Level level, final Container destination, final Direction direction, final HopperBlockEntity hopper) { io.papermc.paper.threadedregions.RegionizedWorldData worldData = level.getCurrentWorldData(); // Folia - region threading @@ -1084,6 +1142,15 @@ index 569f96a1b0b8a03b6a70775f4b7f58a66feed939..c23976cd72d7556ef96e04a7009031fc origItemStack = origItemStack.copy(true); origItemStack.setCount(originalItemCount); if (!origItemStack.isEmpty()) { +@@ -655,7 +668,7 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen + } + + public static boolean addItem(final Container container, final ItemEntity entity) { +- if (fun.bm.lophine.config.modules.function.WoolHopperCounterConfig.unlimitedSpeed && org.leavesmc.leaves.util.HopperCounter.isEnabled() && entity.isRemoved()) return false; // Leaves - Wool hopper counter ++ if (fun.bm.lophine.carpet.config.modules.WoolHopperCounterConfig.hopperCountersUnlimitedSpeed && org.leavesmc.leaves.util.HopperCounter.isEnabled() && entity.isRemoved()) return false; // Leaves - Wool hopper counter + boolean changed = false; + // CraftBukkit start + if (org.bukkit.event.inventory.InventoryPickupItemEvent.getHandlerList().getRegisteredListeners().length > 0) { // Paper - optimize hoppers diff --git a/net/minecraft/world/level/block/piston/PistonBaseBlock.java b/net/minecraft/world/level/block/piston/PistonBaseBlock.java index b4f5d462e4012451328210018c24de5a1d9e8c2e..e8f7944220d76d5c9111c6552e7904751aa26018 100644 --- a/net/minecraft/world/level/block/piston/PistonBaseBlock.java @@ -1115,7 +1182,7 @@ index 972b953a579120c1c05f2dc9bfc2b408d6071d26..a60bb8af6b6aa356193befa9d7e9cdfc return function != null ? function.evaluate(this.asState(), pos) : Vec3.ZERO; } diff --git a/net/minecraft/world/level/chunk/LevelChunk.java b/net/minecraft/world/level/chunk/LevelChunk.java -index c3b32f9c4c2fa17bef629453e3315c12387f5a92..62e760dcf3f499822800e243103cdc27a25b8cbe 100644 +index a4d5bf1773a9ce8184a940384696f0d38690a421..cd8ccc6de723bc01390b0439382ea69c775640ba 100644 --- a/net/minecraft/world/level/chunk/LevelChunk.java +++ b/net/minecraft/world/level/chunk/LevelChunk.java @@ -425,10 +425,10 @@ public class LevelChunk extends ChunkAccess implements DebugValueSource, ca.spot diff --git a/lophine-server/minecraft-patches/features/0046-Carpet-Features-Compatible.patch b/lophine-server/minecraft-patches/features/0046-Carpet-Features-Compatible.patch index 63fca0c..83023e1 100644 --- a/lophine-server/minecraft-patches/features/0046-Carpet-Features-Compatible.patch +++ b/lophine-server/minecraft-patches/features/0046-Carpet-Features-Compatible.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Carpet Features Compatible diff --git a/io/papermc/paper/threadedregions/RegionizedServer.java b/io/papermc/paper/threadedregions/RegionizedServer.java -index cb68671e513fc812723b2abbdd21e8d6e18cf808..fb8dc7e4e6652222ed901b77a7bc263f671123bb 100644 +index 7ee9eb8439330724c537f9b1451be78dd3a107ad..7577533f82688304f06c445fd5a1c3fa3c4575fc 100644 --- a/io/papermc/paper/threadedregions/RegionizedServer.java +++ b/io/papermc/paper/threadedregions/RegionizedServer.java -@@ -340,7 +340,7 @@ public final class RegionizedServer { +@@ -241,7 +241,7 @@ public final class RegionizedServer { final long tickStartNanos = System.nanoTime(); // Lophine - Carpet features ++this.tickCount; // Luminol start - Add a config to enable tick command @@ -17,7 +17,7 @@ index cb68671e513fc812723b2abbdd21e8d6e18cf808..fb8dc7e4e6652222ed901b77a7bc263f MinecraftServer.getServer().tickRateManager().tick(); } // Luminol end - Add a config to enable tick command -@@ -531,7 +531,7 @@ public final class RegionizedServer { +@@ -435,7 +435,7 @@ public final class RegionizedServer { } private void tickTime(final ServerLevel world, final long tickCount) { @@ -52,83 +52,8 @@ index 03f3fe221b14f0317947d74e25049bcce2ebeb66..6882e85fb6413e5c346c189a82b69f3e TickCommand.register(this.dispatcher); // Folia - region threading - TODO later } // Luminol end - Add a config to enable tick command -diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java -index e5fdb195aaea5d4041d2fd33e3f96966ef1c5412..4c53b688ed6b26ca7231841f3235f9a824416bba 100644 ---- a/net/minecraft/server/level/ServerPlayer.java -+++ b/net/minecraft/server/level/ServerPlayer.java -@@ -2169,7 +2169,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc - this.lastSentFood = -1; - this.teleportSpectators(transition, oldLevel); - // Leaves start - bot support -- if (fun.bm.lophine.config.modules.function.FakeplayerConfig.enable) { -+ if (fun.bm.lophine.config.modules.function.FakeplayerConfig.checkEnabled()) { - this.server.getBotList().bots.forEach(bot -> bot.sendFakeDataIfNeed(this, true)); // Leaves - render bot - } - // Leaves end - bot support -diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java -index 049648756f9053895e773efdca33fe65b3555b10..36b8cf8c466c9cd4369ceab49e3ac84f224142b8 100644 ---- a/net/minecraft/server/players/PlayerList.java -+++ b/net/minecraft/server/players/PlayerList.java -@@ -308,7 +308,7 @@ public abstract class PlayerList { - // org.leavesmc.leaves.protocol.core.LeavesProtocolManager.handlePlayerJoin(player); // Leaves - protocol - - // Leaves start - bot support -- if (fun.bm.lophine.config.modules.function.FakeplayerConfig.enable) { -+ if (fun.bm.lophine.config.modules.function.FakeplayerConfig.checkEnabled()) { - org.leavesmc.leaves.bot.ServerBot bot = this.server.getBotList().getBotByName(player.getScoreboardName()); - if (bot != null) { - this.server.getBotList().removeBot(bot, org.leavesmc.leaves.event.bot.BotRemoveEvent.RemoveReason.INTERNAL, player.getBukkitEntity(), false, false); -@@ -491,7 +491,7 @@ public abstract class PlayerList { - org.leavesmc.leaves.protocol.core.LeavesProtocolManager.handlePlayerJoin(player); // Leaves - protocol - - // Leaves start - bot support -- if (fun.bm.lophine.config.modules.function.FakeplayerConfig.enable) { -+ if (fun.bm.lophine.config.modules.function.FakeplayerConfig.checkEnabled()) { - org.leavesmc.leaves.bot.ServerBot bot = this.server.getBotList().getBotByName(player.getScoreboardName()); - if (bot != null) { - this.server.getBotList().removeBot(bot, org.leavesmc.leaves.event.bot.BotRemoveEvent.RemoveReason.INTERNAL, player.getBukkitEntity(), false, false); -@@ -1019,7 +1019,7 @@ public abstract class PlayerList { - ).callEvent(); - // Paper end - // Leaves start - bot support -- if (fun.bm.lophine.config.modules.function.FakeplayerConfig.enable) { -+ if (fun.bm.lophine.config.modules.function.FakeplayerConfig.checkEnabled()) { - this.server.getBotList().bots.forEach(bot -> bot.sendFakeDataIfNeed(player, true)); // Leaves - render bot - } - // Leaves end - bot support -diff --git a/net/minecraft/world/level/block/entity/HopperBlockEntity.java b/net/minecraft/world/level/block/entity/HopperBlockEntity.java -index c23976cd72d7556ef96e04a7009031fc07b7a4fd..df57ae93f91daf8daed2fef48b685c72f0615763 100644 ---- a/net/minecraft/world/level/block/entity/HopperBlockEntity.java -+++ b/net/minecraft/world/level/block/entity/HopperBlockEntity.java -@@ -241,7 +241,7 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen - } - - // Leaves start - Wool hopper counter -- if (fun.bm.lophine.config.modules.function.WoolHopperCounterConfig.unlimitedSpeed && org.leavesmc.leaves.util.HopperCounter.isEnabled()) { -+ if (fun.bm.lophine.carpet.config.modules.WoolHopperCounterConfig.hopperCountersUnlimitedSpeed && org.leavesmc.leaves.util.HopperCounter.isEnabled()) { - net.minecraft.world.item.DyeColor woolColor = org.leavesmc.leaves.util.WoolUtils.getWoolColorAtPosition(level, entity.getBlockPos().relative(state.getValue(HopperBlock.FACING))); - if (woolColor != null) { - for (int i = 0; i < Short.MAX_VALUE; i++) { -@@ -259,7 +259,7 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen - if (changed) { - entity.setCooldown(level.spigotConfig.hopperTransfer); // Spigot - // Leaves start - Wool hopper counter -- if (fun.bm.lophine.config.modules.function.WoolHopperCounterConfig.unlimitedSpeed && org.leavesmc.leaves.util.HopperCounter.isEnabled() && woolHopperCounter(level, pos, state, HopperBlockEntity.getContainerAt(level, pos))) { -+ if (fun.bm.lophine.carpet.config.modules.WoolHopperCounterConfig.hopperCountersUnlimitedSpeed && org.leavesmc.leaves.util.HopperCounter.isEnabled() && woolHopperCounter(level, pos, state, HopperBlockEntity.getContainerAt(level, pos))) { - entity.setCooldown(0); - return true; - } -@@ -668,7 +668,7 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen - } - - public static boolean addItem(final Container container, final ItemEntity entity) { -- if (fun.bm.lophine.config.modules.function.WoolHopperCounterConfig.unlimitedSpeed && org.leavesmc.leaves.util.HopperCounter.isEnabled() && entity.isRemoved()) return false; // Leaves - Wool hopper counter -+ if (fun.bm.lophine.carpet.config.modules.WoolHopperCounterConfig.hopperCountersUnlimitedSpeed && org.leavesmc.leaves.util.HopperCounter.isEnabled() && entity.isRemoved()) return false; // Leaves - Wool hopper counter - boolean changed = false; - // CraftBukkit start - if (org.bukkit.event.inventory.InventoryPickupItemEvent.getHandlerList().getRegisteredListeners().length > 0) { // Paper - optimize hoppers diff --git a/net/minecraft/world/level/dimension/end/EnderDragonFight.java b/net/minecraft/world/level/dimension/end/EnderDragonFight.java -index 8ff7320973dc4fd6ccc4ef7c1742686e0ed0e29a..373de7d03492ce907dba39a12749442116705d90 100644 +index 3388bf5d2cff00b397af1dd7b9ab93669985b35c..e70a6c295e8c26bdf56528826801f037ad0f93b0 100644 --- a/net/minecraft/world/level/dimension/end/EnderDragonFight.java +++ b/net/minecraft/world/level/dimension/end/EnderDragonFight.java @@ -323,7 +323,7 @@ public class EnderDragonFight extends SavedData { diff --git a/lophine-server/minecraft-patches/features/0049-Restore-vanilla-ender-pearl-loading.patch b/lophine-server/minecraft-patches/features/0049-Restore-vanilla-ender-pearl-loading.patch index 85f82c1..8c70fdf 100644 --- a/lophine-server/minecraft-patches/features/0049-Restore-vanilla-ender-pearl-loading.patch +++ b/lophine-server/minecraft-patches/features/0049-Restore-vanilla-ender-pearl-loading.patch @@ -66,7 +66,7 @@ index cef9c7887332b91e2466a97a5250db81f7af0dcf..a17212c1910ce9490fe8df8c4ef507e2 public Set getEnderPearls() { diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java -index 36b8cf8c466c9cd4369ceab49e3ac84f224142b8..808e144f4621daf98d1710dac103f970073b16fc 100644 +index d88c54b27193dc2c4d2c8f539437bf5f6fb8466c..998d60b7f3f49b37b01ab6dcf7b3568faa00c276 100644 --- a/net/minecraft/server/players/PlayerList.java +++ b/net/minecraft/server/players/PlayerList.java @@ -798,11 +798,13 @@ public abstract class PlayerList { @@ -89,7 +89,7 @@ index 36b8cf8c466c9cd4369ceab49e3ac84f224142b8..808e144f4621daf98d1710dac103f970 level.removePlayerImmediately(player, Entity.RemovalReason.UNLOADED_WITH_PLAYER); diff --git a/net/minecraft/world/entity/projectile/throwableitemprojectile/ThrownEnderpearl.java b/net/minecraft/world/entity/projectile/throwableitemprojectile/ThrownEnderpearl.java -index 7c0a462e6c89e325cbba4d86076b5b84a1f5124d..5b1cd3ab1eb07dc20a249ae86606824005e861a3 100644 +index ad35eafa457f706879ba8a9c92b3a34e620ee2d6..7b607a9fb9955f0a1b843ed59d6b15e97fd37325 100644 --- a/net/minecraft/world/entity/projectile/throwableitemprojectile/ThrownEnderpearl.java +++ b/net/minecraft/world/entity/projectile/throwableitemprojectile/ThrownEnderpearl.java @@ -31,7 +31,11 @@ import net.minecraft.world.phys.Vec3; diff --git a/lophine-server/paper-patches/features/0004-Leaves-Leaves-Base-Protocol-Core.patch b/lophine-server/paper-patches/features/0004-Leaves-Leaves-Base-Protocol-Core.patch index eaa4e8d..9664233 100644 --- a/lophine-server/paper-patches/features/0004-Leaves-Leaves-Base-Protocol-Core.patch +++ b/lophine-server/paper-patches/features/0004-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 3899586cafbe96bede09e86ebe92cc7f735efe97..3a49ce66bcc2451ac049ca4ba1ed32a94a3a1aa6 100644 +index d61f38fdf84830c2e94dee8dd7c9a0400ec07318..14a8a00d9c1fc7d49d6f870bf10b9a5e178b1189 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/0006-Leaves-Leaves-Fakeplayer.patch b/lophine-server/paper-patches/features/0006-Leaves-Leaves-Fakeplayer.patch index ba0bb0c..b8bba42 100644 --- a/lophine-server/paper-patches/features/0006-Leaves-Leaves-Fakeplayer.patch +++ b/lophine-server/paper-patches/features/0006-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 3a49ce66bcc2451ac049ca4ba1ed32a94a3a1aa6..b4586829e0c898702e6a4b593e6c79e56e47429b 100644 +index 14a8a00d9c1fc7d49d6f870bf10b9a5e178b1189..7fd08dac549261c50cf5723ef380ba90ea0da56f 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 { @@ -81,7 +81,7 @@ index 3a49ce66bcc2451ac049ca4ba1ed32a94a3a1aa6..b4586829e0c898702e6a4b593e6c79e5 return false; } -@@ -3115,6 +3117,13 @@ public final class CraftServer implements Server { +@@ -3119,6 +3121,13 @@ public final class CraftServer implements Server { } // Leaves end - Feature API @@ -96,7 +96,7 @@ index 3a49ce66bcc2451ac049ca4ba1ed32a94a3a1aa6..b4586829e0c898702e6a4b593e6c79e5 /** * 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/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 0232298df7804675cc5bdb85e99991fa9bbfa57a..4e4ff1cdcf88890ad76b39a89399e353edba54bb 100644 +index 5fc4b44c05b34b64dfdfc1fe996124ec03490465..d90a194ac7ec1fd496fb305caf6752732bccfb45 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java @@ -247,7 +247,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { @@ -108,7 +108,7 @@ index 0232298df7804675cc5bdb85e99991fa9bbfa57a..4e4ff1cdcf88890ad76b39a89399e353 } @Override -@@ -1121,9 +1121,9 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -1122,9 +1122,9 @@ public class CraftWorld extends CraftRegionAccessor implements World { @Override public List getPlayers() { @@ -120,7 +120,7 @@ index 0232298df7804675cc5bdb85e99991fa9bbfa57a..4e4ff1cdcf88890ad76b39a89399e353 HumanEntity bukkitEntity = human.getBukkitEntity(); if ((bukkitEntity != null) && (bukkitEntity instanceof Player)) { -@@ -1623,7 +1623,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -1624,7 +1624,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { public void playSound(final net.kyori.adventure.sound.Sound sound) { org.spigotmc.AsyncCatcher.catchOp("play sound"); // Paper final long seed = sound.seed().orElseGet(this.world.getRandom()::nextLong); @@ -129,7 +129,7 @@ index 0232298df7804675cc5bdb85e99991fa9bbfa57a..4e4ff1cdcf88890ad76b39a89399e353 player.connection.send(io.papermc.paper.adventure.PaperAdventure.asSoundPacket(sound, player.getX(), player.getY(), player.getZ(), seed, null)); } } -@@ -1651,7 +1651,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -1652,7 +1652,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { org.spigotmc.AsyncCatcher.catchOp("play sound"); // Paper final long seed = sound.seed().orElseGet(this.getHandle().getRandom()::nextLong); if (emitter == net.kyori.adventure.sound.Sound.Emitter.self()) { @@ -138,7 +138,7 @@ index 0232298df7804675cc5bdb85e99991fa9bbfa57a..4e4ff1cdcf88890ad76b39a89399e353 player.connection.send(io.papermc.paper.adventure.PaperAdventure.asSoundPacket(sound, player, seed, null)); } } else if (emitter instanceof CraftEntity craftEntity) { -@@ -1774,7 +1774,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -1775,7 +1775,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { Preconditions.checkArgument(particle.getDataType().isInstance(data), "data (%s) should be %s", data.getClass(), particle.getDataType()); } this.getHandle().sendParticlesSource( @@ -148,7 +148,7 @@ index 0232298df7804675cc5bdb85e99991fa9bbfa57a..4e4ff1cdcf88890ad76b39a89399e353 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 cd15211b08d112811cd9692f7a3a841236dffb5d..e8d7d1cc5feb84b11f3a8c4b7167d29c3345da7e 100644 +index efcb8b97cd685e1243c770bf3e8daf03615abb1d..4722e027ed5869516adddf696ac030fd84df834d 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -128,6 +128,8 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { diff --git a/lophine-server/paper-patches/features/0007-Leaves-Replay-Mod-API.patch b/lophine-server/paper-patches/features/0007-Leaves-Replay-Mod-API.patch index 876b58b..43ce47f 100644 --- a/lophine-server/paper-patches/features/0007-Leaves-Replay-Mod-API.patch +++ b/lophine-server/paper-patches/features/0007-Leaves-Replay-Mod-API.patch @@ -21,7 +21,7 @@ index d0b763f07aee56f69a67c87d7dd15a44b6f44db7..bd301425f4c3cdf2b2bd22c1775b7ca9 } // 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 b4586829e0c898702e6a4b593e6c79e56e47429b..582ab8c10e38492b58c4d4b900b176d755bf289b 100644 +index 7fd08dac549261c50cf5723ef380ba90ea0da56f..7cfa9a5a1629c3af1e1105b137cbfc4c0aabe86e 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,7 +41,7 @@ index b4586829e0c898702e6a4b593e6c79e56e47429b..582ab8c10e38492b58c4d4b900b176d7 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()); -@@ -3188,4 +3189,11 @@ public final class CraftServer implements Server { +@@ -3192,4 +3193,11 @@ public final class CraftServer implements Server { } } // Folia end - region TPS API @@ -54,7 +54,7 @@ index b4586829e0c898702e6a4b593e6c79e56e47429b..582ab8c10e38492b58c4d4b900b176d7 + // Leaves end - replay mod api } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index e8d7d1cc5feb84b11f3a8c4b7167d29c3345da7e..9adce19e637c1495fdf5a7a247ea21b2b3c15205 100644 +index 4722e027ed5869516adddf696ac030fd84df834d..4d20f07ff4bf782e938ac990e2b9aaeb90b92db1 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -129,6 +129,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {