diff --git a/leaf-api/paper-patches/features/0018-PlayerInventoryOverflowEvent.patch b/leaf-api/paper-patches/features/0017-PlayerInventoryOverflowEvent.patch similarity index 100% rename from leaf-api/paper-patches/features/0018-PlayerInventoryOverflowEvent.patch rename to leaf-api/paper-patches/features/0017-PlayerInventoryOverflowEvent.patch diff --git a/leaf-api/paper-patches/features/0019-Raytrace-AntiXray-SDK-integration.patch b/leaf-api/paper-patches/features/0018-Raytrace-AntiXray-SDK-integration.patch similarity index 100% rename from leaf-api/paper-patches/features/0019-Raytrace-AntiXray-SDK-integration.patch rename to leaf-api/paper-patches/features/0018-Raytrace-AntiXray-SDK-integration.patch diff --git a/leaf-api/paper-patches/features/0017-Async-structure-locate-api.patch b/leaf-archived-patches/unapplied/api/paper-patches/features/0017-Async-structure-locate-api.patch similarity index 100% rename from leaf-api/paper-patches/features/0017-Async-structure-locate-api.patch rename to leaf-archived-patches/unapplied/api/paper-patches/features/0017-Async-structure-locate-api.patch diff --git a/leaf-archived-patches/unapplied/server/minecraft-patches/features/0030-Configurable-movement-speed-of-more-entities.patch b/leaf-archived-patches/unapplied/server/minecraft-patches/features/1030-Configurable-movement-speed-of-more-entities.patch similarity index 100% rename from leaf-archived-patches/unapplied/server/minecraft-patches/features/0030-Configurable-movement-speed-of-more-entities.patch rename to leaf-archived-patches/unapplied/server/minecraft-patches/features/1030-Configurable-movement-speed-of-more-entities.patch diff --git a/leaf-archived-patches/unapplied/server/minecraft-patches/features/0031-Faster-sequencing-of-futures-for-chunk-structure-gen.patch b/leaf-archived-patches/unapplied/server/minecraft-patches/features/1031-Faster-sequencing-of-futures-for-chunk-structure-gen.patch similarity index 100% rename from leaf-archived-patches/unapplied/server/minecraft-patches/features/0031-Faster-sequencing-of-futures-for-chunk-structure-gen.patch rename to leaf-archived-patches/unapplied/server/minecraft-patches/features/1031-Faster-sequencing-of-futures-for-chunk-structure-gen.patch diff --git a/leaf-archived-patches/unapplied/server/minecraft-patches/features/0032-Reduce-active-items-finding-hopper-nearby-check.patch b/leaf-archived-patches/unapplied/server/minecraft-patches/features/1032-Reduce-active-items-finding-hopper-nearby-check.patch similarity index 100% rename from leaf-archived-patches/unapplied/server/minecraft-patches/features/0032-Reduce-active-items-finding-hopper-nearby-check.patch rename to leaf-archived-patches/unapplied/server/minecraft-patches/features/1032-Reduce-active-items-finding-hopper-nearby-check.patch diff --git a/leaf-archived-patches/unapplied/server/minecraft-patches/features/0018-Akarin-Save-Json-list-asynchronously.patch b/leaf-server/minecraft-patches/features/0105-Akarin-Save-Json-list-asynchronously.patch similarity index 100% rename from leaf-archived-patches/unapplied/server/minecraft-patches/features/0018-Akarin-Save-Json-list-asynchronously.patch rename to leaf-server/minecraft-patches/features/0105-Akarin-Save-Json-list-asynchronously.patch diff --git a/leaf-archived-patches/unapplied/server/minecraft-patches/features/0019-Slice-Smooth-Teleports.patch b/leaf-server/minecraft-patches/features/0106-Slice-Smooth-Teleports.patch similarity index 74% rename from leaf-archived-patches/unapplied/server/minecraft-patches/features/0019-Slice-Smooth-Teleports.patch rename to leaf-server/minecraft-patches/features/0106-Slice-Smooth-Teleports.patch index d3df0b1e..fa1aa078 100644 --- a/leaf-archived-patches/unapplied/server/minecraft-patches/features/0019-Slice-Smooth-Teleports.patch +++ b/leaf-server/minecraft-patches/features/0106-Slice-Smooth-Teleports.patch @@ -9,22 +9,22 @@ Original project: https://github.com/Cryptite/Slice Co-authored-by: HaHaWTH <102713261+HaHaWTH@users.noreply.github.com> diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java -index 668c173dc69b4ab77d91666dc2059f2b9afd7ee7..d44c3baa2ef30d5cd4c46e491ff9198fa558513c 100644 +index 1d7e48a8bea7356982b9c4bf1f4dd4877a8d9f44..50278223ec57f32a75bf413f57529f365267a4ee 100644 --- a/net/minecraft/server/level/ServerPlayer.java +++ b/net/minecraft/server/level/ServerPlayer.java -@@ -403,6 +403,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc - private boolean tpsBar = false; // Purpur - Implement TPSBar - private boolean compassBar = false; // Purpur - Add compass command - private boolean ramBar = false; // Purpur - Implement rambar commands +@@ -421,6 +421,7 @@ public class ServerPlayer extends Player { + public @Nullable com.destroystokyo.paper.event.entity.PlayerNaturallySpawnCreaturesEvent playerNaturallySpawnedEvent; // Paper - PlayerNaturallySpawnCreaturesEvent + public @Nullable String clientBrandName = null; // Paper - Brand support + public @Nullable org.bukkit.event.player.PlayerQuitEvent.QuitReason quitReason = null; // Paper - Add API for quit reason; there are a lot of changes to do if we change all methods leading to the event + public boolean smoothWorldTeleport; // Slice - // Paper start - rewrite chunk system - private ca.spottedleaf.moonrise.patches.chunk_system.player.RegionizedPlayerChunkLoader.PlayerChunkLoaderData chunkLoader; + public ServerPlayer(MinecraftServer server, ServerLevel level, GameProfile gameProfile, ClientInformation clientInformation) { + super(level, level.getSharedSpawnPos(), level.getSharedSpawnAngle(), gameProfile); diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java -index 13edcfd9debc68167a3ea45699229d525d931f68..9a2f2dc1eb471776de6049590cb16e8a061aa24e 100644 +index e62f24dcdc5f09ce9c316615f2c67778570bcc6e..2d932aa5a90cf00bbe4756f7108c7601561677d3 100644 --- a/net/minecraft/server/players/PlayerList.java +++ b/net/minecraft/server/players/PlayerList.java -@@ -798,11 +798,11 @@ public abstract class PlayerList { +@@ -794,11 +794,11 @@ public abstract class PlayerList { byte b = (byte)(keepInventory ? 1 : 0); ServerLevel serverLevel = serverPlayer.serverLevel(); LevelData levelData = serverLevel.getLevelData(); @@ -38,7 +38,7 @@ index 13edcfd9debc68167a3ea45699229d525d931f68..9a2f2dc1eb471776de6049590cb16e8a serverPlayer.connection.send(new ClientboundSetDefaultSpawnPositionPacket(level.getSharedSpawnPos(), level.getSharedSpawnAngle())); serverPlayer.connection.send(new ClientboundChangeDifficultyPacket(levelData.getDifficulty(), levelData.isDifficultyLocked())); serverPlayer.connection -@@ -876,6 +876,8 @@ public abstract class PlayerList { +@@ -875,6 +875,8 @@ public abstract class PlayerList { return serverPlayer; } diff --git a/leaf-archived-patches/unapplied/server/minecraft-patches/features/0026-Petal-Async-Pathfinding.patch b/leaf-server/minecraft-patches/features/0107-Petal-Async-Pathfinding.patch similarity index 94% rename from leaf-archived-patches/unapplied/server/minecraft-patches/features/0026-Petal-Async-Pathfinding.patch rename to leaf-server/minecraft-patches/features/0107-Petal-Async-Pathfinding.patch index f1e7b57a..eb50ea62 100644 --- a/leaf-archived-patches/unapplied/server/minecraft-patches/features/0026-Petal-Async-Pathfinding.patch +++ b/leaf-server/minecraft-patches/features/0107-Petal-Async-Pathfinding.patch @@ -19,10 +19,10 @@ This patch was ported downstream from the Petal fork. Makes most pathfinding-related work happen asynchronously diff --git a/net/minecraft/world/entity/Mob.java b/net/minecraft/world/entity/Mob.java -index 14d9dceacc82cc6c085dab8f52e59a318dd8cae5..8b3dfb1385a2252a4aaead5558c0ffbd5c204971 100644 +index 92ebc61aa7f6f70292a384b56bd8ef77a15e485c..a1ecb7c5ee0e1fe1164e277d8991d6d990035f76 100644 --- a/net/minecraft/world/entity/Mob.java +++ b/net/minecraft/world/entity/Mob.java -@@ -255,6 +255,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab +@@ -242,6 +242,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab @Nullable @Override public LivingEntity getTarget() { @@ -31,13 +31,13 @@ index 14d9dceacc82cc6c085dab8f52e59a318dd8cae5..8b3dfb1385a2252a4aaead5558c0ffbd } diff --git a/net/minecraft/world/entity/ai/behavior/AcquirePoi.java b/net/minecraft/world/entity/ai/behavior/AcquirePoi.java -index 7f0975f8bd6d5f8ca28f503f93c8cb5c42557420..eb71f045d3e8698a8a9e9f51176c2884f71a034c 100644 +index 7470150b5c613ae31d94170d9f5eedac67add63d..5bcc53eef44faa1d3dccb72d1fd4be476c2f3793 100644 --- a/net/minecraft/world/entity/ai/behavior/AcquirePoi.java +++ b/net/minecraft/world/entity/ai/behavior/AcquirePoi.java -@@ -102,21 +102,20 @@ public class AcquirePoi { - } - } - // Paper end - optimise POI access +@@ -98,21 +98,20 @@ public class AcquirePoi { + .limit(5L) + .filter(pair1 -> predicate.test(level, pair1.getSecond())) + .collect(Collectors.toSet()); - Path path = findPathToPois(mob, set); - if (path != null && path.canReach()) { - BlockPos target = path.getTarget(); @@ -60,15 +60,14 @@ index 7f0975f8bd6d5f8ca28f503f93c8cb5c42557420..eb71f045d3e8698a8a9e9f51176c2884 - for (Pair, BlockPos> pair : set) { - map.computeIfAbsent(pair.getSecond().asLong(), l -> new AcquirePoi.JitteredLinearRetry(level.random, time)); - } -- } -+ // Kaiiju end -+ Path path = findPathToPois(mob, set); -+ processPath(acquirablePois, entityEventId, (Long2ObjectMap) map, memoryAccessor, level, mob, time, poiManager, set, path); -+ } // Kaiiju - Async path processing ++ Path path = findPathToPois(mob, set); ++ processPath(acquirablePois, entityEventId, map, memoryAccessor, level, mob, time, poiManager, set, path); + } ++ // Kaiiju end - Async path processing return true; } -@@ -128,6 +127,34 @@ public class AcquirePoi { +@@ -124,6 +123,34 @@ public class AcquirePoi { : BehaviorBuilder.create(instance -> instance.group(instance.absent(existingAbsentMemory)).apply(instance, memoryAccessor -> oneShot)); } @@ -94,7 +93,7 @@ index 7f0975f8bd6d5f8ca28f503f93c8cb5c42557420..eb71f045d3e8698a8a9e9f51176c2884 + }); + } else { + for (Pair, BlockPos> pair : set) { -+ map.computeIfAbsent(pair.getSecond().asLong(), l -> new JitteredLinearRetry(level.random, time)); ++ map.computeIfAbsent(pair.getSecond().asLong(), l -> new AcquirePoi.JitteredLinearRetry(level.random, time)); + } + } + } @@ -402,7 +401,7 @@ index 045cfafb3afe8271d60852ae3c7cdcb039b44d4f..3f55b00e2f8924a8450df8a3f9812a4a } diff --git a/net/minecraft/world/entity/ai/navigation/PathNavigation.java b/net/minecraft/world/entity/ai/navigation/PathNavigation.java -index 6c8fb611943aee8cabc471c63166f9b44ef14826..25ef9b67eee01c6df466031c5dbc728b1a754ab2 100644 +index 6bbdfc748f1ce66689c63424fadcf261b1e967b3..84e855a4a9890a4772aee2383797cbc3d9b46dc3 100644 --- a/net/minecraft/world/entity/ai/navigation/PathNavigation.java +++ b/net/minecraft/world/entity/ai/navigation/PathNavigation.java @@ -167,6 +167,10 @@ public abstract class PathNavigation { @@ -515,15 +514,14 @@ index 2979846853898d78a2df19df2287da16dbe4ae71..1289a6e85f3fdb9187323343b6c20e17 } diff --git a/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java b/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java -index 1f96fd5085bacb4c584576c7cb9f51e7898e9b03..8819717c5307a90abc493cf801b4e795c13b3460 100644 +index 6e9325f0800a35637fdec5edb8a514ea03741762..7ee85d8e9035093484f67437ec80755169436a88 100644 --- a/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java +++ b/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java -@@ -57,17 +57,32 @@ public class NearestBedSensor extends Sensor { - java.util.List, BlockPos>> poiposes = new java.util.ArrayList<>(); - // don't ask me why it's unbounded. ask mojang. - io.papermc.paper.util.PoiAccess.findAnyPoiPositions(poiManager, type -> type.is(PoiTypes.HOME), predicate, entity.blockPosition(), level.purpurConfig.villagerNearestBedSensorSearchRadius, PoiManager.Occupancy.ANY, false, Integer.MAX_VALUE, poiposes); // Purpur - Configurable villager search radius -- Path path = AcquirePoi.findPathToPois(entity, new java.util.HashSet<>(poiposes)); -- // Paper end - optimise POI access +@@ -57,16 +57,31 @@ public class NearestBedSensor extends Sensor { + holder -> holder.is(PoiTypes.HOME), predicate, entity.blockPosition(), 48, PoiManager.Occupancy.ANY + ) + .collect(Collectors.toSet()); +- Path path = AcquirePoi.findPathToPois(entity, set); - if (path != null && path.canReach()) { - BlockPos target = path.getTarget(); - Optional> type = poiManager.getType(target); @@ -534,14 +532,13 @@ index 1f96fd5085bacb4c584576c7cb9f51e7898e9b03..8819717c5307a90abc493cf801b4e795 - this.batchCache.long2LongEntrySet().removeIf(entry -> entry.getLongValue() < this.lastUpdate); + // Kaiiju start - await on async path processing + if (org.dreeam.leaf.config.modules.async.AsyncPathfinding.enabled) { -+ Path possiblePath = AcquirePoi.findPathToPois(entity, new java.util.HashSet<>(poiposes)); ++ Path possiblePath = AcquirePoi.findPathToPois(entity, new java.util.HashSet<>(set)); + org.dreeam.leaf.async.path.AsyncPathProcessor.awaitProcessing(possiblePath, path -> { + processPath(entity, poiManager, path); + }); + } else { + // Kaiiju end -+ Path path = AcquirePoi.findPathToPois(entity, new java.util.HashSet<>(poiposes)); -+ // Paper end - optimise POI access ++ Path path = AcquirePoi.findPathToPois(entity, new java.util.HashSet<>(set)); + processPath(entity, poiManager, path); + } // Kaiiju - async path processing + } @@ -562,10 +559,10 @@ index 1f96fd5085bacb4c584576c7cb9f51e7898e9b03..8819717c5307a90abc493cf801b4e795 + // Leaf end - Kaiiju - await on async path processing } diff --git a/net/minecraft/world/entity/animal/Bee.java b/net/minecraft/world/entity/animal/Bee.java -index d5727999eb67ff30dbf47865d59452483338e170..6fffa2e98e54ab015762417af8507d11c164e765 100644 +index edca2fa21e600fa1e7ef91af673adaae7d4c86c4..6eb3a46ea67a30b7c88961a0c2168fc030cc14ad 100644 --- a/net/minecraft/world/entity/animal/Bee.java +++ b/net/minecraft/world/entity/animal/Bee.java -@@ -936,7 +936,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -856,7 +856,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { } else { Bee.this.pathfindRandomlyTowards(Bee.this.hivePos); } @@ -574,7 +571,7 @@ index d5727999eb67ff30dbf47865d59452483338e170..6fffa2e98e54ab015762417af8507d11 boolean flag = this.pathfindDirectlyTowards(Bee.this.hivePos); if (!flag) { this.dropAndBlacklistHive(); -@@ -990,7 +990,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -910,7 +910,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { return true; } else { Path path = Bee.this.navigation.getPath(); @@ -584,10 +581,10 @@ index d5727999eb67ff30dbf47865d59452483338e170..6fffa2e98e54ab015762417af8507d11 } } diff --git a/net/minecraft/world/entity/animal/frog/Frog.java b/net/minecraft/world/entity/animal/frog/Frog.java -index e5ec23c413e0d7da6f6b9c43925a7aa247946895..6e5cb137b3aa91321528d00a1433009cb9a0e656 100644 +index bd80e58179fe577693fa419a77989b0db39abb04..ba215c4ebefe3b49b77cc94ee5855debe7f60c84 100644 --- a/net/minecraft/world/entity/animal/frog/Frog.java +++ b/net/minecraft/world/entity/animal/frog/Frog.java -@@ -479,9 +479,25 @@ public class Frog extends Animal implements VariantHolder> { +@@ -431,9 +431,25 @@ public class Frog extends Animal { return pathType != PathType.WATER_BORDER && super.canCutCorner(pathType); } @@ -614,10 +611,10 @@ index e5ec23c413e0d7da6f6b9c43925a7aa247946895..6e5cb137b3aa91321528d00a1433009c } } diff --git a/net/minecraft/world/entity/monster/Drowned.java b/net/minecraft/world/entity/monster/Drowned.java -index 6c73245b8d04f194e72165aa0000ca79a95db59d..f5e6673ff2bd3029585b9ffea10df5d549f1cdd6 100644 +index 4978cd2a7a84130fc0de1cc481b39d61f388c812..8b39391015f76d6fc9c740385f4ac683b85eebe1 100644 --- a/net/minecraft/world/entity/monster/Drowned.java +++ b/net/minecraft/world/entity/monster/Drowned.java -@@ -313,7 +313,7 @@ public class Drowned extends Zombie implements RangedAttackMob { +@@ -239,7 +239,7 @@ public class Drowned extends Zombie implements RangedAttackMob { protected boolean closeToNextPos() { Path path = this.getNavigation().getPath(); @@ -627,10 +624,10 @@ index 6c73245b8d04f194e72165aa0000ca79a95db59d..f5e6673ff2bd3029585b9ffea10df5d5 if (target != null) { double d = this.distanceToSqr(target.getX(), target.getY(), target.getZ()); diff --git a/net/minecraft/world/entity/monster/Strider.java b/net/minecraft/world/entity/monster/Strider.java -index 241526239bdbd5d9276f85e7fca46a7051f46a25..ae4ee948971e931e4fdc4ec2187f5182195c626c 100644 +index afa584e2aba6bebfb2dd343215b043c983281853..ed86080491c982c81306319e3730bfbd115d06aa 100644 --- a/net/minecraft/world/entity/monster/Strider.java +++ b/net/minecraft/world/entity/monster/Strider.java -@@ -579,9 +579,25 @@ public class Strider extends Animal implements ItemSteerable, Saddleable { +@@ -507,9 +507,25 @@ public class Strider extends Animal implements ItemSteerable { super(strider, level); } @@ -657,10 +654,10 @@ index 241526239bdbd5d9276f85e7fca46a7051f46a25..ae4ee948971e931e4fdc4ec2187f5182 } diff --git a/net/minecraft/world/entity/monster/warden/Warden.java b/net/minecraft/world/entity/monster/warden/Warden.java -index 26f3fe1c80b0d87b96076432f35fe4f95f92ce13..3a43790fb91e778f4fc0730aecd0dde4a6d301c8 100644 +index 42ca4243d86ef4a14a9ce70da4b79f6c8eeb3a7d..ce66ded89ed851264affc075d65aa1c5abe84dc8 100644 --- a/net/minecraft/world/entity/monster/warden/Warden.java +++ b/net/minecraft/world/entity/monster/warden/Warden.java -@@ -599,6 +599,16 @@ public class Warden extends Monster implements VibrationSystem { +@@ -555,6 +555,16 @@ public class Warden extends Monster implements VibrationSystem { @Override protected PathFinder createPathFinder(int maxVisitedNodes) { this.nodeEvaluator = new WalkNodeEvaluator(); @@ -678,10 +675,10 @@ index 26f3fe1c80b0d87b96076432f35fe4f95f92ce13..3a43790fb91e778f4fc0730aecd0dde4 @Override protected float distance(Node first, Node second) { diff --git a/net/minecraft/world/level/block/ShulkerBoxBlock.java b/net/minecraft/world/level/block/ShulkerBoxBlock.java -index cdf835ff107bc1eadde706d69384e687626fce70..31066accd82da2b8b36d9a9d8676dc887af31fed 100644 +index 49bac7af90b0a7c490141be6357563447783c6ca..8aedb5497ea52ae59e477162cb8089694a17f091 100644 --- a/net/minecraft/world/level/block/ShulkerBoxBlock.java +++ b/net/minecraft/world/level/block/ShulkerBoxBlock.java -@@ -217,9 +217,16 @@ public class ShulkerBoxBlock extends BaseEntityBlock { +@@ -166,9 +166,16 @@ public class ShulkerBoxBlock extends BaseEntityBlock { @Override protected VoxelShape getShape(BlockState state, BlockGetter level, BlockPos pos, CollisionContext context) { diff --git a/leaf-archived-patches/unapplied/server/minecraft-patches/features/0027-Petal-reduce-work-done-by-game-event-system.patch b/leaf-server/minecraft-patches/features/0108-Petal-reduce-work-done-by-game-event-system.patch similarity index 93% rename from leaf-archived-patches/unapplied/server/minecraft-patches/features/0027-Petal-reduce-work-done-by-game-event-system.patch rename to leaf-server/minecraft-patches/features/0108-Petal-reduce-work-done-by-game-event-system.patch index 21055c6b..95e7f9d5 100644 --- a/leaf-archived-patches/unapplied/server/minecraft-patches/features/0027-Petal-reduce-work-done-by-game-event-system.patch +++ b/leaf-server/minecraft-patches/features/0108-Petal-reduce-work-done-by-game-event-system.patch @@ -11,7 +11,7 @@ Original project: https://github.com/Bloom-host/Petal 2. EuclideanGameEventListenerRegistry is not used concurrently so we ban that usage for improved performance with allays diff --git a/net/minecraft/world/level/block/entity/SculkCatalystBlockEntity.java b/net/minecraft/world/level/block/entity/SculkCatalystBlockEntity.java -index 1638eccef431fb68775af624110f1968f0c6dabd..62038854696bd946f58e0e8d26da02415c34e4b1 100644 +index 2627583ab12d886b1fba0b1d1e599f942926b499..440d70811d96f97d3463c6aff131cbc5bd588254 100644 --- a/net/minecraft/world/level/block/entity/SculkCatalystBlockEntity.java +++ b/net/minecraft/world/level/block/entity/SculkCatalystBlockEntity.java @@ -65,7 +65,7 @@ public class SculkCatalystBlockEntity extends BlockEntity implements GameEventLi @@ -38,10 +38,10 @@ index 1638eccef431fb68775af624110f1968f0c6dabd..62038854696bd946f58e0e8d26da0241 if (entity.getLastHurtByMob() instanceof ServerPlayer serverPlayer) { DamageSource damageSource = entity.getLastDamageSource() == null diff --git a/net/minecraft/world/level/chunk/LevelChunk.java b/net/minecraft/world/level/chunk/LevelChunk.java -index 95972e7d5e0357ff5884f1cb2f7596c5029f999d..290163335cf3967e2745442fd7d4d4fa16fb7bc0 100644 +index 626e87d9c1862fe0c896172ee240844e50d7902f..f5a627d900298218e8dbbf12d5950dc8a01bd39e 100644 --- a/net/minecraft/world/level/chunk/LevelChunk.java +++ b/net/minecraft/world/level/chunk/LevelChunk.java -@@ -79,7 +79,19 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p +@@ -80,7 +80,19 @@ public class LevelChunk extends ChunkAccess { private Supplier fullStatus; @Nullable private LevelChunk.PostLoadProcessor postLoad; @@ -62,7 +62,7 @@ index 95972e7d5e0357ff5884f1cb2f7596c5029f999d..290163335cf3967e2745442fd7d4d4fa private final LevelChunkTicks blockTicks; private final LevelChunkTicks fluidTicks; private LevelChunk.UnsavedListener unsavedListener = chunkPos -> {}; -@@ -154,7 +166,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p +@@ -110,7 +122,7 @@ public class LevelChunk extends ChunkAccess { ) { super(pos, data, level, net.minecraft.server.MinecraftServer.getServer().registryAccess().lookupOrThrow(Registries.BIOME), inhabitedTime, sections, blendingData); // Paper - Anti-Xray - The world isn't ready yet, use server singleton for registry this.level = (ServerLevel) level; // CraftBukkit - type @@ -71,7 +71,7 @@ index 95972e7d5e0357ff5884f1cb2f7596c5029f999d..290163335cf3967e2745442fd7d4d4fa for (Heightmap.Types types : Heightmap.Types.values()) { if (ChunkStatus.FULL.heightmapsAfter().contains(types)) { -@@ -266,10 +278,27 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p +@@ -206,10 +218,27 @@ public class LevelChunk extends ChunkAccess { @Override public GameEventListenerRegistry getListenerRegistry(int sectionY) { @@ -103,7 +103,7 @@ index 95972e7d5e0357ff5884f1cb2f7596c5029f999d..290163335cf3967e2745442fd7d4d4fa } // Paper start - Perf: Reduce instructions and provide final method -@@ -609,7 +638,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p +@@ -556,7 +585,7 @@ public class LevelChunk extends ChunkAccess { } private void removeGameEventListenerRegistry(int sectionY) { @@ -173,10 +173,10 @@ index 5175fc90a1fc61c832c6697997a97ae199b195ac..fc56ef2d5ed813db51e35b635e373b6f return flag; } diff --git a/net/minecraft/world/level/gameevent/GameEventDispatcher.java b/net/minecraft/world/level/gameevent/GameEventDispatcher.java -index 1e9b066ef468ae840eda3c1f6c4b68111a5e862c..1074ab996b48782a76d5afeb6fc790bdd33210ee 100644 +index b06ded98c01cd2a71d52b96070a6b23da1e40f9c..a781038d42166e1dd1bfee0fbd5c2db8ec1d08c0 100644 --- a/net/minecraft/world/level/gameevent/GameEventDispatcher.java +++ b/net/minecraft/world/level/gameevent/GameEventDispatcher.java -@@ -44,6 +44,7 @@ public class GameEventDispatcher { +@@ -38,6 +38,7 @@ public class GameEventDispatcher { int sectionPosCoord5 = SectionPos.blockToSectionCoord(blockPos.getZ() + notificationRadius); List list = new ArrayList<>(); GameEventListenerRegistry.ListenerVisitor listenerVisitor = (listener, pos1) -> { diff --git a/leaf-archived-patches/unapplied/server/minecraft-patches/features/0028-Reduce-canSee-work.patch b/leaf-server/minecraft-patches/features/0109-Reduce-canSee-work.patch similarity index 76% rename from leaf-archived-patches/unapplied/server/minecraft-patches/features/0028-Reduce-canSee-work.patch rename to leaf-server/minecraft-patches/features/0109-Reduce-canSee-work.patch index 0896647f..94318af0 100644 --- a/leaf-archived-patches/unapplied/server/minecraft-patches/features/0028-Reduce-canSee-work.patch +++ b/leaf-server/minecraft-patches/features/0109-Reduce-canSee-work.patch @@ -7,10 +7,10 @@ Co-authored by: Martijn Muijsers Co-authored by: MachineBreaker diff --git a/net/minecraft/world/level/Level.java b/net/minecraft/world/level/Level.java -index 98cb62d4b79c0918abe139f198c5be118b9133c4..b39d67ab9ed446885111a5387d3332c36b4f3cc9 100644 +index 270720ac00b0dc4ccbe08b789728dd09d0a9f1e3..c0c0c095154a8c7910df27ee4f0641ac60df637c 100644 --- a/net/minecraft/world/level/Level.java +++ b/net/minecraft/world/level/Level.java -@@ -1006,17 +1006,19 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl +@@ -308,17 +308,19 @@ public abstract class Level implements LevelAccessor, UUIDLookup, AutoCl for (int i = 0, len = entities.size(); i < len; ++i) { Entity entity = entities.get(i); @@ -19,8 +19,8 @@ index 98cb62d4b79c0918abe139f198c5be118b9133c4..b39d67ab9ed446885111a5387d3332c3 - continue; - } - -+ // Leaf - Reduce canSee work - move up - // !entity1.dead && entity1.i && (entity == null || !entity1.x(entity)); ++ // Leaf start - Reduce canSee work - move up + // !entity1.isRemoved() && entity1.blocksBuilding && (entity == null || !entity1.isPassengerOfSameVehicle(entity)) // elide the last check since vanilla calls with entity = null // only we care about the source for the canSee check if (entity.isRemoved() || !entity.blocksBuilding) { @@ -33,5 +33,5 @@ index 98cb62d4b79c0918abe139f198c5be118b9133c4..b39d67ab9ed446885111a5387d3332c3 + continue; + } - if (net.minecraft.world.phys.shapes.Shapes.joinIsNotEmpty(voxelshape, net.minecraft.world.phys.shapes.Shapes.create(entity.getBoundingBox()), net.minecraft.world.phys.shapes.BooleanOp.AND)) { + if (net.minecraft.world.phys.shapes.Shapes.joinIsNotEmpty(collisionShape, net.minecraft.world.phys.shapes.Shapes.create(entity.getBoundingBox()), net.minecraft.world.phys.shapes.BooleanOp.AND)) { return false; diff --git a/leaf-archived-patches/unapplied/server/minecraft-patches/features/0029-Fix-sprint-glitch.patch b/leaf-server/minecraft-patches/features/0110-Fix-sprint-glitch.patch similarity index 83% rename from leaf-archived-patches/unapplied/server/minecraft-patches/features/0029-Fix-sprint-glitch.patch rename to leaf-server/minecraft-patches/features/0110-Fix-sprint-glitch.patch index a772263c..e3329c76 100644 --- a/leaf-archived-patches/unapplied/server/minecraft-patches/features/0029-Fix-sprint-glitch.patch +++ b/leaf-server/minecraft-patches/features/0110-Fix-sprint-glitch.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Fix sprint glitch diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java -index c9870c7ce29e240d60b5b29bdf4deba85023be60..ca1d8c9ea018368cc85da46185aee71df8d48ce0 100644 +index 08c2021a43f626ae142d38d0d0492bffeb1b346b..e65914c2623197031d50508af5c45a4db6b98836 100644 --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java -@@ -1379,7 +1379,8 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1358,7 +1358,8 @@ public abstract class LivingEntity extends Entity implements Attackable { player.setRealHealth(health); } diff --git a/leaf-archived-patches/unapplied/server/paper-patches/features/0007-Remove-Timings.patch b/leaf-server/paper-patches/features/0024-Remove-Timings.patch similarity index 66% rename from leaf-archived-patches/unapplied/server/paper-patches/features/0007-Remove-Timings.patch rename to leaf-server/paper-patches/features/0024-Remove-Timings.patch index 04d531b9..ec51bec3 100644 --- a/leaf-archived-patches/unapplied/server/paper-patches/features/0007-Remove-Timings.patch +++ b/leaf-server/paper-patches/features/0024-Remove-Timings.patch @@ -46,18 +46,3 @@ index 097500a59336db1bbfffcd1aa4cff7a8586e46ec..f06076864582ed153c6154fd7f3e9101 } @Override -diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 1816ec002c91d108529e9b1dcd7b5f0a7fbc52ef..aa6f0588f282e3152ef9639d6fb2b8cd1d54bdb7 100644 ---- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java -+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -1049,10 +1049,8 @@ public final class CraftServer implements Server { - commands.performCommand(results, commandLine, commandLine, true); - } catch (CommandException ex) { - this.pluginManager.callEvent(new com.destroystokyo.paper.event.server.ServerExceptionEvent(new com.destroystokyo.paper.exception.ServerCommandException(ex, target, sender, args))); // Paper -- //target.timings.stopTiming(); // Spigot // Paper - throw ex; - } catch (Throwable ex) { -- //target.timings.stopTiming(); // Spigot // Paper - String msg = "Unhandled exception executing '" + commandLine + "' in " + target; - this.pluginManager.callEvent(new com.destroystokyo.paper.event.server.ServerExceptionEvent(new com.destroystokyo.paper.exception.ServerCommandException(ex, target, sender, args))); // Paper - throw new CommandException(msg, ex); diff --git a/leaf-archived-patches/unapplied/server/paper-patches/features/0008-KeYi-Player-Skull-API.patch b/leaf-server/paper-patches/features/0025-KeYi-Player-Skull-API.patch similarity index 80% rename from leaf-archived-patches/unapplied/server/paper-patches/features/0008-KeYi-Player-Skull-API.patch rename to leaf-server/paper-patches/features/0025-KeYi-Player-Skull-API.patch index b2ca3d6e..e4172af0 100644 --- a/leaf-archived-patches/unapplied/server/paper-patches/features/0008-KeYi-Player-Skull-API.patch +++ b/leaf-server/paper-patches/features/0025-KeYi-Player-Skull-API.patch @@ -7,13 +7,13 @@ Original license: MIT Original project: https://github.com/KeYiMC/KeYi diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 3ba69aa0ac247ecb3406664af606126b30c56ff9..e0ab197ef364b7a95e1f5beade5f55c2744b8edc 100644 +index e1f26ff10f83ea28b09dfba5b02caea182a8f445..d81979c51c81ba08cfb3a401b3f7fde84f492065 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -3719,4 +3719,31 @@ public class CraftPlayer extends CraftHumanEntity implements Player { - this.getHandle().connection.send(new net.minecraft.network.protocol.game.ClientboundPlayerCombatKillPacket(getEntityId(), io.papermc.paper.adventure.PaperAdventure.asVanilla(message))); +@@ -3593,4 +3593,31 @@ public class CraftPlayer extends CraftHumanEntity implements Player { + public void setSimplifyContainerDesyncCheck(final boolean simplifyContainerDesyncCheck) { + this.simplifyContainerDesyncCheck = simplifyContainerDesyncCheck; } - // Purpur end - Death screen API + + // Leaf start - KeYi - Player Skull API + @Override diff --git a/leaf-archived-patches/unapplied/server/paper-patches/features/0009-Slice-Smooth-Teleports.patch b/leaf-server/paper-patches/features/0026-Slice-Smooth-Teleports.patch similarity index 90% rename from leaf-archived-patches/unapplied/server/paper-patches/features/0009-Slice-Smooth-Teleports.patch rename to leaf-server/paper-patches/features/0026-Slice-Smooth-Teleports.patch index 511d12b3..8be8d7dc 100644 --- a/leaf-archived-patches/unapplied/server/paper-patches/features/0009-Slice-Smooth-Teleports.patch +++ b/leaf-server/paper-patches/features/0026-Slice-Smooth-Teleports.patch @@ -9,10 +9,10 @@ Original project: https://github.com/Cryptite/Slice Co-authored-by: HaHaWTH <102713261+HaHaWTH@users.noreply.github.com> diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index e0ab197ef364b7a95e1f5beade5f55c2744b8edc..2f027c504859f7ef41ef243bbc16535c6595ec28 100644 +index d81979c51c81ba08cfb3a401b3f7fde84f492065..905cea7470f7bb8dee27bbfc4d267d46c28fe21b 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -1381,6 +1381,25 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -1361,6 +1361,25 @@ public class CraftPlayer extends CraftHumanEntity implements Player { // Paper end - Teleportation API } diff --git a/leaf-archived-patches/unapplied/server/paper-patches/features/0012-Skip-event-if-no-listeners.patch b/leaf-server/paper-patches/features/0027-Skip-event-if-no-listeners.patch similarity index 85% rename from leaf-archived-patches/unapplied/server/paper-patches/features/0012-Skip-event-if-no-listeners.patch rename to leaf-server/paper-patches/features/0027-Skip-event-if-no-listeners.patch index 6998ab47..7521ceb0 100644 --- a/leaf-archived-patches/unapplied/server/paper-patches/features/0012-Skip-event-if-no-listeners.patch +++ b/leaf-server/paper-patches/features/0027-Skip-event-if-no-listeners.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Skip event if no listeners diff --git a/src/main/java/io/papermc/paper/plugin/manager/PaperEventManager.java b/src/main/java/io/papermc/paper/plugin/manager/PaperEventManager.java -index 780f3a48152fef6a06dc67bf7fbd1965b13bc4fa..379c2dc1853e45a96dda9b13bf28b7e08f65658a 100644 +index 4c003acccdd2dd17918b15316001e52e7670123e..db031298c2090eb36032de4b52335c62186e4cfb 100644 --- a/src/main/java/io/papermc/paper/plugin/manager/PaperEventManager.java +++ b/src/main/java/io/papermc/paper/plugin/manager/PaperEventManager.java -@@ -35,6 +35,10 @@ class PaperEventManager { +@@ -35,15 +35,16 @@ class PaperEventManager { // SimplePluginManager public void callEvent(@NotNull Event event) { @@ -19,9 +19,8 @@ index 780f3a48152fef6a06dc67bf7fbd1965b13bc4fa..379c2dc1853e45a96dda9b13bf28b7e0 if (event.isAsynchronous() && this.server.isPrimaryThread()) { throw new IllegalStateException(event.getEventName() + " may only be triggered asynchronously."); } else if (!event.isAsynchronous() && !this.server.isPrimaryThread() && !this.server.isStopping()) { -@@ -46,9 +50,6 @@ class PaperEventManager { + throw new IllegalStateException(event.getEventName() + " may only be triggered synchronously."); } - // Leaves end - skip photographer - HandlerList handlers = event.getHandlers(); - RegisteredListener[] listeners = handlers.getRegisteredListeners(); diff --git a/leaf-archived-patches/unapplied/src/main/java/org/dreeam/leaf/async/path/AsyncPath.java b/leaf-server/src/main/java/org/dreeam/leaf/async/path/AsyncPath.java similarity index 100% rename from leaf-archived-patches/unapplied/src/main/java/org/dreeam/leaf/async/path/AsyncPath.java rename to leaf-server/src/main/java/org/dreeam/leaf/async/path/AsyncPath.java diff --git a/leaf-archived-patches/unapplied/src/main/java/org/dreeam/leaf/async/path/AsyncPathProcessor.java b/leaf-server/src/main/java/org/dreeam/leaf/async/path/AsyncPathProcessor.java similarity index 100% rename from leaf-archived-patches/unapplied/src/main/java/org/dreeam/leaf/async/path/AsyncPathProcessor.java rename to leaf-server/src/main/java/org/dreeam/leaf/async/path/AsyncPathProcessor.java diff --git a/leaf-archived-patches/unapplied/src/main/java/org/dreeam/leaf/async/path/NodeEvaluatorCache.java b/leaf-server/src/main/java/org/dreeam/leaf/async/path/NodeEvaluatorCache.java similarity index 100% rename from leaf-archived-patches/unapplied/src/main/java/org/dreeam/leaf/async/path/NodeEvaluatorCache.java rename to leaf-server/src/main/java/org/dreeam/leaf/async/path/NodeEvaluatorCache.java diff --git a/leaf-archived-patches/unapplied/src/main/java/org/dreeam/leaf/async/path/NodeEvaluatorFeatures.java b/leaf-server/src/main/java/org/dreeam/leaf/async/path/NodeEvaluatorFeatures.java similarity index 100% rename from leaf-archived-patches/unapplied/src/main/java/org/dreeam/leaf/async/path/NodeEvaluatorFeatures.java rename to leaf-server/src/main/java/org/dreeam/leaf/async/path/NodeEvaluatorFeatures.java diff --git a/leaf-archived-patches/unapplied/src/main/java/org/dreeam/leaf/async/path/NodeEvaluatorGenerator.java b/leaf-server/src/main/java/org/dreeam/leaf/async/path/NodeEvaluatorGenerator.java similarity index 100% rename from leaf-archived-patches/unapplied/src/main/java/org/dreeam/leaf/async/path/NodeEvaluatorGenerator.java rename to leaf-server/src/main/java/org/dreeam/leaf/async/path/NodeEvaluatorGenerator.java diff --git a/leaf-archived-patches/unapplied/src/main/java/org/dreeam/leaf/async/path/NodeEvaluatorType.java b/leaf-server/src/main/java/org/dreeam/leaf/async/path/NodeEvaluatorType.java similarity index 100% rename from leaf-archived-patches/unapplied/src/main/java/org/dreeam/leaf/async/path/NodeEvaluatorType.java rename to leaf-server/src/main/java/org/dreeam/leaf/async/path/NodeEvaluatorType.java diff --git a/leaf-archived-patches/unapplied/src/main/java/org/dreeam/leaf/async/path/PathProcessState.java b/leaf-server/src/main/java/org/dreeam/leaf/async/path/PathProcessState.java similarity index 100% rename from leaf-archived-patches/unapplied/src/main/java/org/dreeam/leaf/async/path/PathProcessState.java rename to leaf-server/src/main/java/org/dreeam/leaf/async/path/PathProcessState.java diff --git a/leaf-archived-patches/unapplied/src/main/java/org/dreeam/leaf/async/path/PathfindTaskRejectPolicy.java b/leaf-server/src/main/java/org/dreeam/leaf/async/path/PathfindTaskRejectPolicy.java similarity index 100% rename from leaf-archived-patches/unapplied/src/main/java/org/dreeam/leaf/async/path/PathfindTaskRejectPolicy.java rename to leaf-server/src/main/java/org/dreeam/leaf/async/path/PathfindTaskRejectPolicy.java diff --git a/leaf-archived-patches/unapplied/src/main/java/org/dreeam/leaf/config/modules/async/AsyncPathfinding.java b/leaf-server/src/main/java/org/dreeam/leaf/config/modules/async/AsyncPathfinding.java similarity index 100% rename from leaf-archived-patches/unapplied/src/main/java/org/dreeam/leaf/config/modules/async/AsyncPathfinding.java rename to leaf-server/src/main/java/org/dreeam/leaf/config/modules/async/AsyncPathfinding.java