From 7ccc4501e7a659a78c78c79ea8d711989f93ca5b Mon Sep 17 00:00:00 2001 From: Dreeam <61569423+Dreeam-qwq@users.noreply.github.com> Date: Sun, 28 Sep 2025 05:10:39 -0400 Subject: [PATCH] Apply paper server patches --- README.md | 4 +- .../0028-Leaves-Protocol-Core.patch | 0 .../0029-Leaves-Replay-Mod-API.patch | 0 .../0060-cache-profile-data.patch | 0 .../unapplied/src}/CacheProfileLookup.java | 0 ...ncrease-time-statistics-in-intervals.patch | 76 +++---- ... 0081-Optimize-matching-item-checks.patch} | 4 +- ...h => 0082-Pre-compute-VarLong-sizes.patch} | 0 ...mize-VarInt-write-and-VarLong-write.patch} | 2 +- ... 0084-Reduce-RandomSource-instances.patch} | 36 ++-- ...Stack-lookups-for-reduced-visibilit.patch} | 4 +- ...ne-of-sight-cache-with-low-capacity.patch} | 0 ...-of-sight-updates-and-cache-lookups.patch} | 0 ...88-Pufferfish-Optimize-mob-spawning.patch} | 28 +-- ...ferfish-Dynamic-Activation-of-Brain.patch} | 46 ++-- .../0008-Purpur-Server-Paper-Changes.patch | 204 +++++++++--------- ...e-for-plugins-not-shutting-down-task.patch | 4 +- .../0017-CraftBukkit-UUID-to-world-map.patch | 10 +- .../0018-Specific-interval-TPS-API.patch | 4 +- .../features/0019-5-second-TPS-average.patch | 4 +- .../features/0020-Last-tick-time-API.patch | 4 +- .../features/0026-KeYi-Player-Skull-API.patch | 8 +- .../0027-Slice-Smooth-Teleports.patch | 4 +- ... => 0028-Skip-event-if-no-listeners.patch} | 7 +- ...SparklyPaper-Optimize-canSee-checks.patch} | 6 +- ...atch => 0030-Including-5s-in-getTPS.patch} | 4 +- ...eption-on-missing-ResourceKey-value.patch} | 0 ...-Virtual-Thread-for-async-scheduler.patch} | 0 ...onfigurable-chat-message-signatures.patch} | 0 ...ed.patch => 0034-Matter-Secure-Seed.patch} | 8 +- ...tch => 0035-Faster-random-generator.patch} | 0 ...onfigurable-unknown-command-message.patch} | 0 ...world-map-with-optimized-collection.patch} | 4 +- ...ntityType-minecraftToBukkit-convert.patch} | 0 ...patch => 0039-Multithreaded-Tracker.patch} | 14 +- ...-snapshots-for-acquiring-blockstate.patch} | 4 +- ...CraftServer-getworlds-list-creation.patch} | 4 +- ...k-key.patch => 0042-Cache-chunk-key.patch} | 0 ...> 0043-PlayerInventoryOverflowEvent.patch} | 0 ...17075-Block-Entities-Unload-Lag-Spi.patch} | 0 ...SparklyPaper-Parallel-world-ticking.patch} | 34 +-- ...046-Fish-Parallel-World-Ticking-API.patch} | 12 +- ...r-PR-Throttle-failed-spawn-attempts.patch} | 0 ...tch => 0048-Async-playerdata-saving.patch} | 13 +- ...g.patch => 0049-Async-chunk-sending.patch} | 4 +- ...050-Optimise-player-movement-checks.patch} | 0 ...atch => 0051-optimise-ReferenceList.patch} | 0 ...tBiome.patch => 0052-cache-getBiome.patch} | 0 ...hread.patch => 0053-dump-pwt-thread.patch} | 2 +- ...tion.patch => 0054-Paw-optimization.patch} | 2 +- ...pawn.patch => 0055-optimize-despawn.patch} | 0 ...patch => 0056-optimize-mob-spawning.patch} | 26 +-- ...ch => 0057-Toggleable-async-catcher.patch} | 2 +- ...x.patch => 0058-Bump-netty-to-4.2.x.patch} | 2 +- .../GaleGlobalConfiguration.java | 2 +- 55 files changed, 295 insertions(+), 297 deletions(-) rename {leaf-server/paper-patches/features => leaf-archived-patches/unapplied/paperserver}/0028-Leaves-Protocol-Core.patch (100%) rename {leaf-server/paper-patches/features => leaf-archived-patches/unapplied/paperserver}/0029-Leaves-Replay-Mod-API.patch (100%) rename {leaf-server/paper-patches/features => leaf-archived-patches/unapplied/paperserver}/0060-cache-profile-data.patch (100%) rename {leaf-server/src/main/java/org/dreeam/leaf/config/modules/misc => leaf-archived-patches/unapplied/src}/CacheProfileLookup.java (100%) rename leaf-server/minecraft-patches/features/{0083-Optimize-matching-item-checks.patch => 0081-Optimize-matching-item-checks.patch} (88%) rename leaf-server/minecraft-patches/features/{0084-Pre-compute-VarLong-sizes.patch => 0082-Pre-compute-VarLong-sizes.patch} (100%) rename leaf-server/minecraft-patches/features/{0085-Optimize-VarInt-write-and-VarLong-write.patch => 0083-Optimize-VarInt-write-and-VarLong-write.patch} (98%) rename leaf-server/minecraft-patches/features/{0086-Reduce-RandomSource-instances.patch => 0084-Reduce-RandomSource-instances.patch} (86%) rename leaf-server/minecraft-patches/features/{0087-Reduce-skull-ItemStack-lookups-for-reduced-visibilit.patch => 0085-Reduce-skull-ItemStack-lookups-for-reduced-visibilit.patch} (93%) rename leaf-server/minecraft-patches/features/{0088-Initialize-line-of-sight-cache-with-low-capacity.patch => 0086-Initialize-line-of-sight-cache-with-low-capacity.patch} (100%) rename leaf-server/minecraft-patches/features/{0089-Reduce-line-of-sight-updates-and-cache-lookups.patch => 0087-Reduce-line-of-sight-updates-and-cache-lookups.patch} (100%) rename leaf-server/minecraft-patches/features/{0090-Pufferfish-Optimize-mob-spawning.patch => 0088-Pufferfish-Optimize-mob-spawning.patch} (91%) rename leaf-server/minecraft-patches/features/{0091-Pufferfish-Dynamic-Activation-of-Brain.patch => 0089-Pufferfish-Dynamic-Activation-of-Brain.patch} (87%) rename leaf-server/paper-patches/features/{0030-Skip-event-if-no-listeners.patch => 0028-Skip-event-if-no-listeners.patch} (85%) rename leaf-server/paper-patches/features/{0031-SparklyPaper-Optimize-canSee-checks.patch => 0029-SparklyPaper-Optimize-canSee-checks.patch} (93%) rename leaf-server/paper-patches/features/{0032-Including-5s-in-getTPS.patch => 0030-Including-5s-in-getTPS.patch} (84%) rename leaf-server/paper-patches/features/{0033-Don-t-throw-exception-on-missing-ResourceKey-value.patch => 0031-Don-t-throw-exception-on-missing-ResourceKey-value.patch} (100%) rename leaf-server/paper-patches/features/{0034-Virtual-Thread-for-async-scheduler.patch => 0032-Virtual-Thread-for-async-scheduler.patch} (100%) rename leaf-server/paper-patches/features/{0035-Mirai-Configurable-chat-message-signatures.patch => 0033-Mirai-Configurable-chat-message-signatures.patch} (100%) rename leaf-server/paper-patches/features/{0036-Matter-Secure-Seed.patch => 0034-Matter-Secure-Seed.patch} (90%) rename leaf-server/paper-patches/features/{0037-Faster-random-generator.patch => 0035-Faster-random-generator.patch} (100%) rename leaf-server/paper-patches/features/{0038-Configurable-unknown-command-message.patch => 0036-Configurable-unknown-command-message.patch} (100%) rename leaf-server/paper-patches/features/{0039-Replace-world-map-with-optimized-collection.patch => 0037-Replace-world-map-with-optimized-collection.patch} (87%) rename leaf-server/paper-patches/features/{0040-Cache-CraftEntityType-minecraftToBukkit-convert.patch => 0038-Cache-CraftEntityType-minecraftToBukkit-convert.patch} (100%) rename leaf-server/paper-patches/features/{0041-Multithreaded-Tracker.patch => 0039-Multithreaded-Tracker.patch} (89%) rename leaf-server/paper-patches/features/{0042-EMC-Don-t-use-snapshots-for-acquiring-blockstate.patch => 0040-EMC-Don-t-use-snapshots-for-acquiring-blockstate.patch} (91%) rename leaf-server/paper-patches/features/{0043-Faster-CraftServer-getworlds-list-creation.patch => 0041-Faster-CraftServer-getworlds-list-creation.patch} (85%) rename leaf-server/paper-patches/features/{0044-Cache-chunk-key.patch => 0042-Cache-chunk-key.patch} (100%) rename leaf-server/paper-patches/features/{0045-PlayerInventoryOverflowEvent.patch => 0043-PlayerInventoryOverflowEvent.patch} (100%) rename leaf-server/paper-patches/features/{0046-Paper-PR-Fix-MC-117075-Block-Entities-Unload-Lag-Spi.patch => 0044-Paper-PR-Fix-MC-117075-Block-Entities-Unload-Lag-Spi.patch} (100%) rename leaf-server/paper-patches/features/{0047-SparklyPaper-Parallel-world-ticking.patch => 0045-SparklyPaper-Parallel-world-ticking.patch} (98%) rename leaf-server/paper-patches/features/{0048-Fish-Parallel-World-Ticking-API.patch => 0046-Fish-Parallel-World-Ticking-API.patch} (83%) rename leaf-server/paper-patches/features/{0049-Paper-PR-Throttle-failed-spawn-attempts.patch => 0047-Paper-PR-Throttle-failed-spawn-attempts.patch} (100%) rename leaf-server/paper-patches/features/{0050-Async-playerdata-saving.patch => 0048-Async-playerdata-saving.patch} (66%) rename leaf-server/paper-patches/features/{0051-Async-chunk-sending.patch => 0049-Async-chunk-sending.patch} (85%) rename leaf-server/paper-patches/features/{0052-Optimise-player-movement-checks.patch => 0050-Optimise-player-movement-checks.patch} (100%) rename leaf-server/paper-patches/features/{0053-optimise-ReferenceList.patch => 0051-optimise-ReferenceList.patch} (100%) rename leaf-server/paper-patches/features/{0054-cache-getBiome.patch => 0052-cache-getBiome.patch} (100%) rename leaf-server/paper-patches/features/{0055-dump-pwt-thread.patch => 0053-dump-pwt-thread.patch} (95%) rename leaf-server/paper-patches/features/{0056-Paw-optimization.patch => 0054-Paw-optimization.patch} (95%) rename leaf-server/paper-patches/features/{0057-optimize-despawn.patch => 0055-optimize-despawn.patch} (100%) rename leaf-server/paper-patches/features/{0058-optimize-mob-spawning.patch => 0056-optimize-mob-spawning.patch} (88%) rename leaf-server/paper-patches/features/{0059-Toggleable-async-catcher.patch => 0057-Toggleable-async-catcher.patch} (91%) rename leaf-server/paper-patches/features/{0061-Bump-netty-to-4.2.x.patch => 0058-Bump-netty-to-4.2.x.patch} (91%) diff --git a/README.md b/README.md index 7f16a9eb..e661073a 100644 --- a/README.md +++ b/README.md @@ -10,9 +10,9 @@ > [!WARNING] -> Current Leaf 1.21.9 is a temp branch which is isolated from the 1.21.8 branch. \ +> Current Leaf 1.21.9 is a temp branch which is independent of the 1.21.8 branch. \ > Update Paper upstream will be done every month, and will not receive fixes from Leaf 1.21.8, until Leaf 1.21.8 becomes stable again. \ -> It's only for people want to try or test 1.21.9, **DO NOT** use in production! +> It's only for people who want to try or test 1.21.9, **DO NOT** use in production! **English** | [中文](public/readme/README_CN.md) diff --git a/leaf-server/paper-patches/features/0028-Leaves-Protocol-Core.patch b/leaf-archived-patches/unapplied/paperserver/0028-Leaves-Protocol-Core.patch similarity index 100% rename from leaf-server/paper-patches/features/0028-Leaves-Protocol-Core.patch rename to leaf-archived-patches/unapplied/paperserver/0028-Leaves-Protocol-Core.patch diff --git a/leaf-server/paper-patches/features/0029-Leaves-Replay-Mod-API.patch b/leaf-archived-patches/unapplied/paperserver/0029-Leaves-Replay-Mod-API.patch similarity index 100% rename from leaf-server/paper-patches/features/0029-Leaves-Replay-Mod-API.patch rename to leaf-archived-patches/unapplied/paperserver/0029-Leaves-Replay-Mod-API.patch diff --git a/leaf-server/paper-patches/features/0060-cache-profile-data.patch b/leaf-archived-patches/unapplied/paperserver/0060-cache-profile-data.patch similarity index 100% rename from leaf-server/paper-patches/features/0060-cache-profile-data.patch rename to leaf-archived-patches/unapplied/paperserver/0060-cache-profile-data.patch diff --git a/leaf-server/src/main/java/org/dreeam/leaf/config/modules/misc/CacheProfileLookup.java b/leaf-archived-patches/unapplied/src/CacheProfileLookup.java similarity index 100% rename from leaf-server/src/main/java/org/dreeam/leaf/config/modules/misc/CacheProfileLookup.java rename to leaf-archived-patches/unapplied/src/CacheProfileLookup.java diff --git a/leaf-server/minecraft-patches/features/0080-Increase-time-statistics-in-intervals.patch b/leaf-server/minecraft-patches/features/0080-Increase-time-statistics-in-intervals.patch index 48ba30cf..ca04140e 100644 --- a/leaf-server/minecraft-patches/features/0080-Increase-time-statistics-in-intervals.patch +++ b/leaf-server/minecraft-patches/features/0080-Increase-time-statistics-in-intervals.patch @@ -44,44 +44,44 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -diff --git a/net/minecraft/world/entity/player/Player.java b/net/minecraft/world/entity/player/Player.java -index 6207ffb19f8d98ea6496e4d80495bf590b1be7ca..76b35938176a592beb8d490e11cf9970e5d09405 100644 ---- a/net/minecraft/world/entity/player/Player.java -+++ b/net/minecraft/world/entity/player/Player.java -@@ -166,6 +166,7 @@ public abstract class Player extends LivingEntity { - protected static final EntityDataAccessor DATA_PLAYER_MAIN_HAND = SynchedEntityData.defineId(Player.class, EntityDataSerializers.BYTE); - protected static final EntityDataAccessor DATA_SHOULDER_LEFT = SynchedEntityData.defineId(Player.class, EntityDataSerializers.COMPOUND_TAG); - protected static final EntityDataAccessor DATA_SHOULDER_RIGHT = SynchedEntityData.defineId(Player.class, EntityDataSerializers.COMPOUND_TAG); +diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java +index b5f666d69cf15fc81c6cc0e3f7030501567b205c..1f0532cfd4abb3fd578299919743b9dfc3231110 100644 +--- a/net/minecraft/server/level/ServerPlayer.java ++++ b/net/minecraft/server/level/ServerPlayer.java +@@ -223,6 +223,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc + ); + private static final boolean DEFAULT_SEEN_CREDITS = false; + private static final boolean DEFAULT_SPAWN_EXTRA_PARTICLES_ON_FALL = false; + public static int increaseTimeStatisticsInterval; // Gale - Hydrinity - increase time statistics in intervals - store as static field for fast access - public static final int CLIENT_LOADED_TIMEOUT_TIME = 60; - private static final short DEFAULT_SLEEP_TIMER = 0; - private static final float DEFAULT_EXPERIENCE_PROGRESS = 0.0F; -@@ -332,19 +333,23 @@ public abstract class Player extends LivingEntity { - this.moveCloak(); - if (this instanceof ServerPlayer serverPlayer) { - this.foodData.tick(serverPlayer); -- this.awardStat(Stats.PLAY_TIME); -- this.awardStat(Stats.TOTAL_WORLD_TIME); -+ // Gale start - Hydrinity - increase time statistics in intervals -+ if (increaseTimeStatisticsInterval == 1 || this.tickCount % increaseTimeStatisticsInterval == 0) { -+ this.awardStat(Stats.PLAY_TIME, increaseTimeStatisticsInterval); -+ this.awardStat(Stats.TOTAL_WORLD_TIME, increaseTimeStatisticsInterval); -+ // Gale end - Hydrinity - increase time statistics in intervals - if (this.isAlive()) { -- this.awardStat(Stats.TIME_SINCE_DEATH); -+ this.awardStat(Stats.TIME_SINCE_DEATH, increaseTimeStatisticsInterval); // Gale - Hydrinity - increase time statistics in intervals + public ServerGamePacketListenerImpl connection; + private final MinecraftServer server; + public ServerPlayerGameMode gameMode; +@@ -805,19 +806,23 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc + } + + this.foodData.tick(this); +- this.awardStat(Stats.PLAY_TIME); +- this.awardStat(Stats.TOTAL_WORLD_TIME); ++ // Gale start - Hydrinity - increase time statistics in intervals ++ if (increaseTimeStatisticsInterval == 1 || this.tickCount % increaseTimeStatisticsInterval == 0) { ++ this.awardStat(Stats.PLAY_TIME, increaseTimeStatisticsInterval); ++ this.awardStat(Stats.TOTAL_WORLD_TIME, increaseTimeStatisticsInterval); ++ // Gale end - Hydrinity - increase time statistics in intervals + if (this.isAlive()) { +- this.awardStat(Stats.TIME_SINCE_DEATH); ++ this.awardStat(Stats.TIME_SINCE_DEATH, increaseTimeStatisticsInterval); // Gale - Hydrinity - increase time statistics in intervals + } + + if (this.isDiscrete()) { +- this.awardStat(Stats.CROUCH_TIME); ++ this.awardStat(Stats.CROUCH_TIME, increaseTimeStatisticsInterval); // Gale - Hydrinity - increase time statistics in intervals + } + + if (!this.isSleeping()) { +- this.awardStat(Stats.TIME_SINCE_REST); ++ this.awardStat(Stats.TIME_SINCE_REST, increaseTimeStatisticsInterval); // Gale - Hydrinity - increase time statistics in intervals + } ++ } // Gale - Hydrinity - increase time statistics in intervals } - if (this.isDiscrete()) { -- this.awardStat(Stats.CROUCH_TIME); -+ this.awardStat(Stats.CROUCH_TIME, increaseTimeStatisticsInterval); // Gale - Hydrinity - increase time statistics in intervals - } - - if (!this.isSleeping()) { -- this.awardStat(Stats.TIME_SINCE_REST); -+ this.awardStat(Stats.TIME_SINCE_REST, increaseTimeStatisticsInterval); // Gale - Hydrinity - increase time statistics in intervals - } -+ } // Gale - Hydrinity - increase time statistics in intervals - } - - int i = 29999999; + for (int i = 0; i < this.getInventory().getContainerSize(); i++) { diff --git a/leaf-server/minecraft-patches/features/0083-Optimize-matching-item-checks.patch b/leaf-server/minecraft-patches/features/0081-Optimize-matching-item-checks.patch similarity index 88% rename from leaf-server/minecraft-patches/features/0083-Optimize-matching-item-checks.patch rename to leaf-server/minecraft-patches/features/0081-Optimize-matching-item-checks.patch index 501ad3ca..926ac8ac 100644 --- a/leaf-server/minecraft-patches/features/0083-Optimize-matching-item-checks.patch +++ b/leaf-server/minecraft-patches/features/0081-Optimize-matching-item-checks.patch @@ -7,10 +7,10 @@ License: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html) Gale - https://galemc.org diff --git a/net/minecraft/world/item/ItemStack.java b/net/minecraft/world/item/ItemStack.java -index 951c86278e8cb5cd801a5db2ebfabef8c6d813ef..6ceb6cf302bad28e453fa89ec16083b0e0c5c398 100644 +index 41aed4ca479c84337dbe368e1f752af498c5de24..e7a6310301de9c07666e4cf5cfe3ed2951213025 100644 --- a/net/minecraft/world/item/ItemStack.java +++ b/net/minecraft/world/item/ItemStack.java -@@ -864,11 +864,11 @@ public final class ItemStack implements DataComponentHolder { +@@ -865,11 +865,11 @@ public final class ItemStack implements DataComponentHolder { } public static boolean isSameItem(ItemStack stack, ItemStack other) { diff --git a/leaf-server/minecraft-patches/features/0084-Pre-compute-VarLong-sizes.patch b/leaf-server/minecraft-patches/features/0082-Pre-compute-VarLong-sizes.patch similarity index 100% rename from leaf-server/minecraft-patches/features/0084-Pre-compute-VarLong-sizes.patch rename to leaf-server/minecraft-patches/features/0082-Pre-compute-VarLong-sizes.patch diff --git a/leaf-server/minecraft-patches/features/0085-Optimize-VarInt-write-and-VarLong-write.patch b/leaf-server/minecraft-patches/features/0083-Optimize-VarInt-write-and-VarLong-write.patch similarity index 98% rename from leaf-server/minecraft-patches/features/0085-Optimize-VarInt-write-and-VarLong-write.patch rename to leaf-server/minecraft-patches/features/0083-Optimize-VarInt-write-and-VarLong-write.patch index ca4c2851..2ecdb19c 100644 --- a/leaf-server/minecraft-patches/features/0085-Optimize-VarInt-write-and-VarLong-write.patch +++ b/leaf-server/minecraft-patches/features/0083-Optimize-VarInt-write-and-VarLong-write.patch @@ -21,7 +21,7 @@ Given that we do a lot of varint writing as well, this should provide a small pe This includes a test to ensure that the behavior is as expected and fixes the initialization loop so that the correct results will be given. Much thanks to @octylFractal for acting as my duck while trying to figure this out. diff --git a/net/minecraft/network/VarInt.java b/net/minecraft/network/VarInt.java -index 4897ff4648083ebe737ae5b32bae344af27357e4..6f8dd31582f0e1d3a71acc7a142c1f4ec0539d9e 100644 +index 7a1cafc3fb56054a72591bfb446a433f959a6b28..01d0aa1bcd5d64e9ad0a029678760cfc7e699846 100644 --- a/net/minecraft/network/VarInt.java +++ b/net/minecraft/network/VarInt.java @@ -51,6 +51,41 @@ public class VarInt { diff --git a/leaf-server/minecraft-patches/features/0086-Reduce-RandomSource-instances.patch b/leaf-server/minecraft-patches/features/0084-Reduce-RandomSource-instances.patch similarity index 86% rename from leaf-server/minecraft-patches/features/0086-Reduce-RandomSource-instances.patch rename to leaf-server/minecraft-patches/features/0084-Reduce-RandomSource-instances.patch index 9f9cdbb2..31227a73 100644 --- a/leaf-server/minecraft-patches/features/0086-Reduce-RandomSource-instances.patch +++ b/leaf-server/minecraft-patches/features/0084-Reduce-RandomSource-instances.patch @@ -25,19 +25,19 @@ index 92a820d48057ffe2ef35919341b6cdf605ca939e..b9b1bf351070cd2a744cdb683974fb2a double d = center.x - maxRange; double d1 = center.y - maxRange; double d2 = center.x + maxRange; -diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java -index ee2671510d46a92732934cd5df0a0e42c4cae1f6..f68b92a85b2223d22cb96ee0f8d588af5696b947 100644 ---- a/net/minecraft/server/level/ServerPlayer.java -+++ b/net/minecraft/server/level/ServerPlayer.java -@@ -496,7 +496,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc - long l1 = l * l; - int i = l1 > 2147483647L ? Integer.MAX_VALUE : (int)l1; - int coprime = this.getCoprime(i); -- int randomInt = RandomSource.create().nextInt(i); -+ int randomInt = level.random.nextInt(i); // Gale - Patina - reduce RandomSource instances +diff --git a/net/minecraft/server/level/PlayerSpawnFinder.java b/net/minecraft/server/level/PlayerSpawnFinder.java +index 85a3c9c5fa59f336a687a1029a7fc8160e9777aa..064672576fdbc032566b8c8ec24ebde0b53db803 100644 +--- a/net/minecraft/server/level/PlayerSpawnFinder.java ++++ b/net/minecraft/server/level/PlayerSpawnFinder.java +@@ -44,7 +44,7 @@ public class PlayerSpawnFinder { + long l = radius * 2L + 1L; + this.candidateCount = (int)Math.min(1024L, l * l); + this.coprime = getCoprime(this.candidateCount); +- this.offset = RandomSource.create().nextInt(this.candidateCount); ++ this.offset = level.random.nextInt(this.candidateCount); // Gale - Patina - reduce RandomSource instances + } - for (int i1 = 0; i1 < i; i1++) { - int i2 = (randomInt + coprime * i1) % i; + public static CompletableFuture findSpawn(ServerLevel level, BlockPos pos) { diff --git a/net/minecraft/server/rcon/thread/QueryThreadGs4.java b/net/minecraft/server/rcon/thread/QueryThreadGs4.java index 0b8d279a53196f3998b1f6901738ca8e02ef7311..9add567d2ec2f5e9cd5bee84423c5a44433fe188 100644 --- a/net/minecraft/server/rcon/thread/QueryThreadGs4.java @@ -52,7 +52,7 @@ index 0b8d279a53196f3998b1f6901738ca8e02ef7311..9add567d2ec2f5e9cd5bee84423c5a44 } diff --git a/net/minecraft/world/entity/projectile/FishingHook.java b/net/minecraft/world/entity/projectile/FishingHook.java -index 5f3abbe943be394e9cb987945a238208940b5015..5b831ecd8f094bcae2ff50b96ccfc0d75b43a495 100644 +index 89767d2e8b2438db0f9bfe3504e637934725e995..7d310e21e226a0459e494e96baee2eed4a03f025 100644 --- a/net/minecraft/world/entity/projectile/FishingHook.java +++ b/net/minecraft/world/entity/projectile/FishingHook.java @@ -51,7 +51,7 @@ import org.slf4j.Logger; @@ -73,10 +73,10 @@ index 5f3abbe943be394e9cb987945a238208940b5015..5b831ecd8f094bcae2ff50b96ccfc0d7 public FishingHook(EntityType entityType, Level level) { diff --git a/net/minecraft/world/entity/raid/Raid.java b/net/minecraft/world/entity/raid/Raid.java -index afcf185c4e2c0648c96a872fbe1fbebb6012d513..aaa990b01e886812cc1dbad819e922b23d08889c 100644 +index dcfade2efe209b87a169738fc2ff23d8e24b53a6..7a1b00de908a495b8d5bf819bac937bcbba946e5 100644 --- a/net/minecraft/world/entity/raid/Raid.java +++ b/net/minecraft/world/entity/raid/Raid.java -@@ -121,7 +121,7 @@ public class Raid { +@@ -123,7 +123,7 @@ public class Raid { public final ServerBossEvent raidEvent = new ServerBossEvent(RAID_NAME_COMPONENT, BossEvent.BossBarColor.RED, BossEvent.BossBarOverlay.NOTCHED_10); private int postRaidTicks; private int raidCooldownTicks; @@ -85,7 +85,7 @@ index afcf185c4e2c0648c96a872fbe1fbebb6012d513..aaa990b01e886812cc1dbad819e922b2 public final int numGroups; private Raid.RaidStatus status; private int celebrationTicks; -@@ -508,7 +508,7 @@ public class Raid { +@@ -530,7 +530,7 @@ public class Raid { float f = 13.0F; int i = 64; Collection players = this.raidEvent.getPlayers(); @@ -94,7 +94,7 @@ index afcf185c4e2c0648c96a872fbe1fbebb6012d513..aaa990b01e886812cc1dbad819e922b2 for (ServerPlayer serverPlayer : level.players()) { Vec3 vec3 = serverPlayer.position(); -@@ -532,7 +532,7 @@ public class Raid { +@@ -554,7 +554,7 @@ public class Raid { for (Raid.RaiderType raiderType : Raid.RaiderType.VALUES) { int i1 = this.getDefaultNumSpawns(raiderType, i, shouldSpawnBonusGroup) @@ -104,7 +104,7 @@ index afcf185c4e2c0648c96a872fbe1fbebb6012d513..aaa990b01e886812cc1dbad819e922b2 for (int i3 = 0; i3 < i1; i3++) { diff --git a/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java b/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java -index c8b577a5d5f059aed368fa082bc4518cc2dbd0b0..ac5ab4ae88c8188635f5784a10002a6cdcad49b6 100644 +index 150b30d0cb17ebd9517b89e14065de64d2609d41..11c8f959fd323254a4ae01838a641adfe3d51a3d 100644 --- a/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java +++ b/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java @@ -248,7 +248,7 @@ public class TheEndGatewayBlockEntity extends TheEndPortalBlockEntity { diff --git a/leaf-server/minecraft-patches/features/0087-Reduce-skull-ItemStack-lookups-for-reduced-visibilit.patch b/leaf-server/minecraft-patches/features/0085-Reduce-skull-ItemStack-lookups-for-reduced-visibilit.patch similarity index 93% rename from leaf-server/minecraft-patches/features/0087-Reduce-skull-ItemStack-lookups-for-reduced-visibilit.patch rename to leaf-server/minecraft-patches/features/0085-Reduce-skull-ItemStack-lookups-for-reduced-visibilit.patch index 2a906a70..58f87a5e 100644 --- a/leaf-server/minecraft-patches/features/0087-Reduce-skull-ItemStack-lookups-for-reduced-visibilit.patch +++ b/leaf-server/minecraft-patches/features/0085-Reduce-skull-ItemStack-lookups-for-reduced-visibilit.patch @@ -18,10 +18,10 @@ this patch is focused around the sensors used for ai delete the line of sight cache less often and use a faster nearby comparison diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java -index d54c09c48edbfc999abd834b68ea5ceea13f39d2..66e248f348731318590ebd3bd070b7fddf5f0379 100644 +index 3c972e39a66c1aa9253eaae818eab6feac94c66d..dea4e1b292471eb672d2b7cc9369193a51e0a91c 100644 --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java -@@ -1033,15 +1033,16 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin +@@ -1040,15 +1040,16 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin } if (lookingEntity != null) { diff --git a/leaf-server/minecraft-patches/features/0088-Initialize-line-of-sight-cache-with-low-capacity.patch b/leaf-server/minecraft-patches/features/0086-Initialize-line-of-sight-cache-with-low-capacity.patch similarity index 100% rename from leaf-server/minecraft-patches/features/0088-Initialize-line-of-sight-cache-with-low-capacity.patch rename to leaf-server/minecraft-patches/features/0086-Initialize-line-of-sight-cache-with-low-capacity.patch diff --git a/leaf-server/minecraft-patches/features/0089-Reduce-line-of-sight-updates-and-cache-lookups.patch b/leaf-server/minecraft-patches/features/0087-Reduce-line-of-sight-updates-and-cache-lookups.patch similarity index 100% rename from leaf-server/minecraft-patches/features/0089-Reduce-line-of-sight-updates-and-cache-lookups.patch rename to leaf-server/minecraft-patches/features/0087-Reduce-line-of-sight-updates-and-cache-lookups.patch diff --git a/leaf-server/minecraft-patches/features/0090-Pufferfish-Optimize-mob-spawning.patch b/leaf-server/minecraft-patches/features/0088-Pufferfish-Optimize-mob-spawning.patch similarity index 91% rename from leaf-server/minecraft-patches/features/0090-Pufferfish-Optimize-mob-spawning.patch rename to leaf-server/minecraft-patches/features/0088-Pufferfish-Optimize-mob-spawning.patch index 3526ef0b..cd1b30e6 100644 --- a/leaf-server/minecraft-patches/features/0090-Pufferfish-Optimize-mob-spawning.patch +++ b/leaf-server/minecraft-patches/features/0088-Pufferfish-Optimize-mob-spawning.patch @@ -22,10 +22,10 @@ and, in my opinion, worth the low risk of minor mob-spawning-related inconsistencies. diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java -index e5a10873e2ee8e4f75861eee46dec16c701c086f..47e714fc564898f9a04a89a6b1b72f4c3adce2a0 100644 +index b315a43370b067d060130e387f91bb84e57bc536..5a8a850fced72df9791822af910aa3d21b229278 100644 --- a/net/minecraft/server/MinecraftServer.java +++ b/net/minecraft/server/MinecraftServer.java -@@ -286,6 +286,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop pluginsBlockingSleep = new java.util.HashSet<>(); // Paper - API to allow/disallow tick sleeping public static final long SERVER_INIT = System.nanoTime(); // Paper - Lag compensation @@ -33,7 +33,7 @@ index e5a10873e2ee8e4f75861eee46dec16c701c086f..47e714fc564898f9a04a89a6b1b72f4c public static S spin(Function threadFunction) { ca.spottedleaf.dataconverter.minecraft.datatypes.MCTypeRegistry.init(); // Paper - rewrite data converter system -@@ -1049,6 +1050,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop filteredSpawningCategories; -@@ -558,7 +613,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon +@@ -553,7 +608,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon } // Paper end - PlayerNaturallySpawnCreaturesEvent boolean flag = this.level.ticksPerSpawnCategory.getLong(org.bukkit.entity.SpawnCategory.ANIMAL) != 0L && this.level.getLevelData().getGameTime() % this.level.ticksPerSpawnCategory.getLong(org.bukkit.entity.SpawnCategory.ANIMAL) == 0L; // CraftBukkit @@ -159,7 +159,7 @@ index e53440bd5f0e659db0745a009540520f6dc41238..4979171c8da6f366aab636fb3058ca45 } else { filteredSpawningCategories = List.of(); } -@@ -573,7 +628,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon +@@ -568,7 +623,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon // Paper end - chunk tick iteration optimisation for (LevelChunk levelChunk : list) { @@ -168,7 +168,7 @@ index e53440bd5f0e659db0745a009540520f6dc41238..4979171c8da6f366aab636fb3058ca45 } } finally { list.clear(); -@@ -593,7 +648,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon +@@ -588,7 +643,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon } if (!spawnCategories.isEmpty()) { diff --git a/leaf-server/minecraft-patches/features/0091-Pufferfish-Dynamic-Activation-of-Brain.patch b/leaf-server/minecraft-patches/features/0089-Pufferfish-Dynamic-Activation-of-Brain.patch similarity index 87% rename from leaf-server/minecraft-patches/features/0091-Pufferfish-Dynamic-Activation-of-Brain.patch rename to leaf-server/minecraft-patches/features/0089-Pufferfish-Dynamic-Activation-of-Brain.patch index 7b3ca05e..e43f9320 100644 --- a/leaf-server/minecraft-patches/features/0091-Pufferfish-Dynamic-Activation-of-Brain.patch +++ b/leaf-server/minecraft-patches/features/0089-Pufferfish-Dynamic-Activation-of-Brain.patch @@ -71,10 +71,10 @@ index 63ff39f3db2e695c8a14b021045c17f6d3d2f23d..c9de5fbb56b7b455b4c8bc59539695fd } } diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java -index ad114ca013e0d09d40755acbe916586868a519ed..3f70fca36f67fa421314ff92d372a97112a19025 100644 +index dcd508e9dfc2fd05ee1f4222b39e007abc4a0944..6c4ce132ea9ef5dfa30a7355aa7f3f99eb074558 100644 --- a/net/minecraft/server/level/ServerLevel.java +++ b/net/minecraft/server/level/ServerLevel.java -@@ -775,6 +775,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -796,6 +796,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe this.entityTickList .forEach( entity -> { @@ -83,10 +83,10 @@ index ad114ca013e0d09d40755acbe916586868a519ed..3f70fca36f67fa421314ff92d372a971 if (!tickRateManager.isEntityFrozen(entity)) { entity.checkDespawn(); diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index 479cb2a3135b86bf1ae5132f8ddfbfb59c85cafc..1d2d06db06c6a44204a647822b1a2812567f64d9 100644 +index 81af1bbb579b752064fce0793afb413a935889e7..c365d0079ecc3f9040b2b95f86f24b35c83f1649 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java -@@ -364,6 +364,8 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -366,6 +366,8 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name public boolean fixedPose = false; // Paper - Expand Pose API private final int despawnTime; // Paper - entity despawn time limit public int totalEntityAge; // Paper - age-like counter for all entities @@ -96,10 +96,10 @@ index 479cb2a3135b86bf1ae5132f8ddfbfb59c85cafc..1d2d06db06c6a44204a647822b1a2812 // Paper start - EAR 2 public final boolean defaultActivationState; diff --git a/net/minecraft/world/entity/EntityType.java b/net/minecraft/world/entity/EntityType.java -index 96e1f8f40a0af4350155f192ac2126b523c9f0f5..388689c44cf63ade939e271d490051c9b3fe8034 100644 +index c7afd2c600a6fefea26c0f522e7cf8acef76447b..e0f963af1818bb41a87222ef987fec594b2b3798 100644 --- a/net/minecraft/world/entity/EntityType.java +++ b/net/minecraft/world/entity/EntityType.java -@@ -1085,6 +1085,7 @@ public class EntityType implements FeatureElement, EntityTypeT +@@ -1192,6 +1192,7 @@ public class EntityType implements FeatureElement, EntityTypeT private final boolean canSpawnFarFromPlayer; private final int clientTrackingRange; private final int updateInterval; @@ -125,10 +125,10 @@ index f6c673b1abe53afcb14fd68d590431027ed29f67..21deb221b87ecb70c8a0dc963ab79124 } } diff --git a/net/minecraft/world/entity/animal/allay/Allay.java b/net/minecraft/world/entity/animal/allay/Allay.java -index de3bf0b62371f06ecb5d2035638e352ca0c06182..69500fa0b207fc3d5b1bc2bd665fa39f6725d23d 100644 +index 83fb267fe5e4fc5adb67e698ec62d6403228b0a9..7c4ae0d67038b58d5bc3458faff89a035ec47a41 100644 --- a/net/minecraft/world/entity/animal/allay/Allay.java +++ b/net/minecraft/world/entity/animal/allay/Allay.java -@@ -222,8 +222,10 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS +@@ -221,8 +221,10 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS return 0.4F; } @@ -140,10 +140,10 @@ index de3bf0b62371f06ecb5d2035638e352ca0c06182..69500fa0b207fc3d5b1bc2bd665fa39f AllayAi.updateActivity(this); super.customServerAiStep(level); diff --git a/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/net/minecraft/world/entity/animal/axolotl/Axolotl.java -index 6a5e9e9582e322aaa1555933de97e545ba74f8f4..3475ecbd95fac6c6b6e792a23cb15cdb3395985f 100644 +index 7862a094f7d173123197cfc2feaa5819fe5158d1..d62e8f371a164f64085eb41349889334889e86e8 100644 --- a/net/minecraft/world/entity/animal/axolotl/Axolotl.java +++ b/net/minecraft/world/entity/animal/axolotl/Axolotl.java -@@ -325,8 +325,10 @@ public class Axolotl extends Animal implements Bucketable { +@@ -324,8 +324,10 @@ public class Axolotl extends Animal implements Bucketable { return true; } @@ -155,10 +155,10 @@ index 6a5e9e9582e322aaa1555933de97e545ba74f8f4..3475ecbd95fac6c6b6e792a23cb15cdb AxolotlAi.updateActivity(this); if (!this.isNoAi()) { diff --git a/net/minecraft/world/entity/animal/frog/Frog.java b/net/minecraft/world/entity/animal/frog/Frog.java -index b8703409dd3dc8e3020ed81b44ce4812984c88c3..f5c9ef8909f3852fc7a203265ae057232fa403ad 100644 +index 1a0f797880b4dc577a4a92cf4f1a778753f5702c..0c92ff63a2b30fdd3d0247762b61bbc5687ba380 100644 --- a/net/minecraft/world/entity/animal/frog/Frog.java +++ b/net/minecraft/world/entity/animal/frog/Frog.java -@@ -200,8 +200,10 @@ public class Frog extends Animal { +@@ -199,8 +199,10 @@ public class Frog extends Animal { VariantUtils.readVariant(input, Registries.FROG_VARIANT).ifPresent(this::setVariant); } @@ -170,10 +170,10 @@ index b8703409dd3dc8e3020ed81b44ce4812984c88c3..f5c9ef8909f3852fc7a203265ae05723 FrogAi.updateActivity(this); super.customServerAiStep(level); diff --git a/net/minecraft/world/entity/animal/frog/Tadpole.java b/net/minecraft/world/entity/animal/frog/Tadpole.java -index c1510a6f1146f446ed65a1f08984af6c29de439a..5392cb211a3dc841ab38710a4ef688bde7fbe067 100644 +index c468d0f2c6d22fe461763633821e2108bda5bce8..be8ee6551a0d5fede0601b08e339558d69dd1882 100644 --- a/net/minecraft/world/entity/animal/frog/Tadpole.java +++ b/net/minecraft/world/entity/animal/frog/Tadpole.java -@@ -96,8 +96,10 @@ public class Tadpole extends AbstractFish { +@@ -95,8 +95,10 @@ public class Tadpole extends AbstractFish { return SoundEvents.TADPOLE_FLOP; } @@ -185,10 +185,10 @@ index c1510a6f1146f446ed65a1f08984af6c29de439a..5392cb211a3dc841ab38710a4ef688bd TadpoleAi.updateActivity(this); super.customServerAiStep(level); diff --git a/net/minecraft/world/entity/animal/goat/Goat.java b/net/minecraft/world/entity/animal/goat/Goat.java -index bdac4929db71a39fc02985109cedc9cd316ec3cc..2a72d7f422c340dabef11a6dc680358207bee637 100644 +index bbf281cdd8cf0f69726ea2d8ac42fb4adc8d0123..23ca6091918a096d87c174cdd245383785053025 100644 --- a/net/minecraft/world/entity/animal/goat/Goat.java +++ b/net/minecraft/world/entity/animal/goat/Goat.java -@@ -186,8 +186,10 @@ public class Goat extends Animal { +@@ -185,8 +185,10 @@ public class Goat extends Animal { return (Brain)super.getBrain(); } @@ -200,10 +200,10 @@ index bdac4929db71a39fc02985109cedc9cd316ec3cc..2a72d7f422c340dabef11a6dc6803582 GoatAi.updateActivity(this); super.customServerAiStep(level); diff --git a/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/net/minecraft/world/entity/monster/hoglin/Hoglin.java -index bde6f9d9d1cc7a5ee8334ee9207afae304ddcfa9..084f82a7baaa309aa80cc33b4c01e54cf6da4b42 100644 +index 794ba36444f6a920259b9b761620393e1868fa24..4840ea0b663b246530ec4c1b708c11f9fd26e8e5 100644 --- a/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/net/minecraft/world/entity/monster/hoglin/Hoglin.java -@@ -158,8 +158,10 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { +@@ -157,8 +157,10 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { return (Brain)super.getBrain(); } @@ -215,10 +215,10 @@ index bde6f9d9d1cc7a5ee8334ee9207afae304ddcfa9..084f82a7baaa309aa80cc33b4c01e54c HoglinAi.updateActivity(this); if (this.isConverting()) { diff --git a/net/minecraft/world/entity/monster/piglin/Piglin.java b/net/minecraft/world/entity/monster/piglin/Piglin.java -index 689f200554d8c03313b3d194f209c527f315c29a..3e6cbf0166486995f7adcbd7b99a8b8c919956cd 100644 +index b99a9bb6fbc30a3834301feac5a3fabba30cccb3..2b1a68f96a4a63963f0c366395bc16904ebdedcc 100644 --- a/net/minecraft/world/entity/monster/piglin/Piglin.java +++ b/net/minecraft/world/entity/monster/piglin/Piglin.java -@@ -316,8 +316,10 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento +@@ -304,8 +304,10 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento return !this.cannotHunt; } @@ -230,10 +230,10 @@ index 689f200554d8c03313b3d194f209c527f315c29a..3e6cbf0166486995f7adcbd7b99a8b8c PiglinAi.updateActivity(this); super.customServerAiStep(level); diff --git a/net/minecraft/world/entity/monster/warden/Warden.java b/net/minecraft/world/entity/monster/warden/Warden.java -index dd6666bd8b8df4148a1557627ce2a6ddab245ed6..6a9d3b749e251d3dac6fda13318bf5a0bf21f82b 100644 +index 010872aeced18debc3c7d352bedf1c5d10a1255a..96dc91a27550057783cc66b6c06f881fc4737898 100644 --- a/net/minecraft/world/entity/monster/warden/Warden.java +++ b/net/minecraft/world/entity/monster/warden/Warden.java -@@ -275,8 +275,10 @@ public class Warden extends Monster implements VibrationSystem { +@@ -274,8 +274,10 @@ public class Warden extends Monster implements VibrationSystem { } } @@ -245,7 +245,7 @@ index dd6666bd8b8df4148a1557627ce2a6ddab245ed6..6a9d3b749e251d3dac6fda13318bf5a0 super.customServerAiStep(level); if ((this.tickCount + this.getId()) % 120 == 0) { diff --git a/net/minecraft/world/entity/npc/Villager.java b/net/minecraft/world/entity/npc/Villager.java -index 6cf2af33d22d3df8374746f5926f3f2d5093431d..f37759161b2a682612c6676cdd0d15908259776c 100644 +index 7a09ac3a26c73672acce43c72c00c581b9521262..859174abf74a6015491a66775e28dae9590032e7 100644 --- a/net/minecraft/world/entity/npc/Villager.java +++ b/net/minecraft/world/entity/npc/Villager.java @@ -177,6 +177,8 @@ public class Villager extends AbstractVillager implements ReputationEventHandler diff --git a/leaf-server/paper-patches/features/0008-Purpur-Server-Paper-Changes.patch b/leaf-server/paper-patches/features/0008-Purpur-Server-Paper-Changes.patch index ae2f7c22..a6443990 100644 --- a/leaf-server/paper-patches/features/0008-Purpur-Server-Paper-Changes.patch +++ b/leaf-server/paper-patches/features/0008-Purpur-Server-Paper-Changes.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Purpur Server Paper Changes Original license: MIT Original project: https://github.com/PurpurMC/Purpur -Commit: 0c9140aff1fac81adb2edae1dc75cc8b069b8c3b +Commit: 1f1d4dcb6eea1cbf80ae6bb9c2e4b363270bd4f4 Patches listed below are removed in this patch, They exists in Gale or Leaf: * "Rebrand.patch" @@ -26,8 +26,6 @@ Patches listed below are removed in this patch, They exists in Gale or Leaf: - Logger settings (suppressing pointless logs) * "org/bukkit/craftbukkit/scheduler/CraftScheduler.java.patch" - Rebrand -* "org/bukkit/craftbukkit/util/CraftMagicNumbers.java.patch" - - Rebrand * "org/bukkit/craftbukkit/util/Versioning.java.patch" - Rebrand * "org/spigotmc/TicksPerSecondCommand.java.patch" @@ -127,22 +125,23 @@ index 0000000000000000000000000000000000000000..15a226e3854d731f7724025ea3459c8a + } +} diff --git a/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java b/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java -index d243d661ea0efcd7bdb9716a2bbd0995cad8db16..74249a202a1dbfc227d5028e68991a1625a75554 100644 +index 771c6b266b913c948c225e59f8e300014fc413b3..ce78c014c2467523833ccd4de19ac5fbabe915ec 100644 --- a/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java +++ b/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java -@@ -142,6 +142,10 @@ public class MobGoalHelper { - // TODO these kinda should be checked on each release, in case nested classes changes - private static final Map NESTED_CLASS_NAMES = Util.make(new HashMap<>(), map -> { +@@ -143,6 +143,11 @@ public class MobGoalHelper { + private static final Map RENAMES = Util.make(new HashMap<>(), map -> { map.put("AbstractSkeleton$1", "AbstractSkeletonMelee"); + + // Purpur start - Add option to disable zombie aggressiveness towards villagers + map.put("Zombie$1", "ZombieAttackVillager"); + map.put("Drowned$1", "DrownedAttackVillager"); + // Purpur end - Add option to disable zombie aggressiveness towards villagers - ++ // remove duplicate map.put("TraderLlama$TraderLlamaDefendWanderingTraderGoal", "TraderLlamaDefendWanderingTraderGoal"); + map.put("AbstractIllager$RaiderOpenDoorGoal", "RaiderOpenDoorGoal"); diff --git a/src/main/java/io/papermc/paper/command/PaperPluginsCommand.java b/src/main/java/io/papermc/paper/command/PaperPluginsCommand.java -index d0a4e1642d1be33cd9e832f961301ab267e216bc..4a693643a3c51670c3425b8e9c2ab1f0a8e77e48 100644 +index 9c49bb7fb8c3ca4b62e73dcfca2669971defb181..727253cb847e56e8716bc6b17512c0eb515f34e3 100644 --- a/src/main/java/io/papermc/paper/command/PaperPluginsCommand.java +++ b/src/main/java/io/papermc/paper/command/PaperPluginsCommand.java @@ -74,10 +74,10 @@ public class PaperPluginsCommand { @@ -285,10 +284,10 @@ index a8e813ca89b033f061e695288b3383bdcf128531..96a377a07d8396f893954a3ba97fbf88 } if (SysoutCatcher.NAG_INTERVAL > 0 || SysoutCatcher.NAG_TIMEOUT > 0) { diff --git a/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java b/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java -index 54ab8a0b502a2665027f293e6ddebf6c0a2af215..f967560da343867fdc1c380a42874b0796633777 100644 +index 2a1506c936cb20e7f632004ba4f52fa49be6a0a2..cee3954179fd4a4d1ca3090a843c96676f9cc47b 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java -@@ -340,6 +340,12 @@ public class CraftOfflinePlayer implements OfflinePlayer, ConfigurationSerializa +@@ -337,6 +337,12 @@ public class CraftOfflinePlayer implements OfflinePlayer, ConfigurationSerializa @Override public Location getLocation() { @@ -301,7 +300,7 @@ index 54ab8a0b502a2665027f293e6ddebf6c0a2af215..f967560da343867fdc1c380a42874b07 CompoundTag data = this.getData(); if (data == null) { return null; -@@ -577,4 +583,183 @@ public class CraftOfflinePlayer implements OfflinePlayer, ConfigurationSerializa +@@ -574,4 +580,183 @@ public class CraftOfflinePlayer implements OfflinePlayer, ConfigurationSerializa manager.save(); } } @@ -486,10 +485,10 @@ index 54ab8a0b502a2665027f293e6ddebf6c0a2af215..f967560da343867fdc1c380a42874b07 + // Purpur end - OfflinePlayer API } diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 18a087e82383d0776504293bba513e247f4bc881..09054336441cbcce99d1fd82276c5f8c90bee28c 100644 +index 641d9ee9e2cd37592e900ae5a91f69a29fd60db3..4c471f5febee75d052cd2f1bc1ef9219f92d446b 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -429,6 +429,20 @@ public final class CraftServer implements Server { +@@ -416,6 +416,20 @@ public final class CraftServer implements Server { this.paperPluginManager = new io.papermc.paper.plugin.manager.PaperPluginManagerImpl(this, this.commandMap, pluginManager); this.pluginManager.paperPluginManager = this.paperPluginManager; // Paper end @@ -510,15 +509,15 @@ index 18a087e82383d0776504293bba513e247f4bc881..09054336441cbcce99d1fd82276c5f8c CraftRegistry.setMinecraftRegistry(console.registryAccess()); -@@ -1049,6 +1063,7 @@ public final class CraftServer implements Server { +@@ -993,6 +1007,7 @@ public final class CraftServer implements Server { org.spigotmc.SpigotConfig.init((File) this.console.options.valueOf("spigot-settings")); // Spigot this.console.paperConfigurations.reloadConfigs(this.console); this.console.galeConfigurations.reloadConfigs(this.console); // Gale - Gale configuration + org.purpurmc.purpur.PurpurConfig.init((File) console.options.valueOf("purpur-settings")); // Purpur - Purpur config files for (ServerLevel world : this.console.getAllLevels()) { // world.serverLevelData.setDifficulty(config.difficulty); // Paper - per level difficulty - world.setSpawnSettings(world.serverLevelData.getDifficulty() != Difficulty.PEACEFUL && config.spawnMonsters); // Paper - per level difficulty (from MinecraftServer#setDifficulty(ServerLevel, Difficulty, boolean)) -@@ -1064,6 +1079,7 @@ public final class CraftServer implements Server { + world.setSpawnSettings(world.serverLevelData.getDifficulty() != Difficulty.PEACEFUL && world.getGameRules().getBoolean(GameRules.RULE_SPAWN_MONSTERS)); // Paper - per level difficulty (from MinecraftServer#setDifficulty(ServerLevel, Difficulty, boolean)) +@@ -1008,6 +1023,7 @@ public final class CraftServer implements Server { } } world.spigotConfig.init(); // Spigot @@ -526,7 +525,7 @@ index 18a087e82383d0776504293bba513e247f4bc881..09054336441cbcce99d1fd82276c5f8c } Plugin[] pluginClone = pluginManager.getPlugins().clone(); // Paper -@@ -1081,6 +1097,7 @@ public final class CraftServer implements Server { +@@ -1025,6 +1041,7 @@ public final class CraftServer implements Server { org.spigotmc.SpigotConfig.registerCommands(); // Spigot io.papermc.paper.command.PaperCommands.registerCommands(this.console); // Paper this.spark.registerCommandBeforePlugins(this); // Paper - spark @@ -534,7 +533,7 @@ index 18a087e82383d0776504293bba513e247f4bc881..09054336441cbcce99d1fd82276c5f8c this.overrideAllCommandBlockCommands = this.commandsConfiguration.getStringList("command-block-overrides").contains("*"); this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions"); -@@ -1580,6 +1597,60 @@ public final class CraftServer implements Server { +@@ -1483,6 +1500,60 @@ public final class CraftServer implements Server { return true; } @@ -595,7 +594,7 @@ index 18a087e82383d0776504293bba513e247f4bc881..09054336441cbcce99d1fd82276c5f8c @Override public List getRecipesFor(ItemStack result) { Preconditions.checkArgument(result != null, "ItemStack cannot be null"); -@@ -2956,6 +3027,18 @@ public final class CraftServer implements Server { +@@ -2734,6 +2805,18 @@ public final class CraftServer implements Server { } // Gale end - Gale configuration - API @@ -614,7 +613,7 @@ index 18a087e82383d0776504293bba513e247f4bc881..09054336441cbcce99d1fd82276c5f8c @Override public void restart() { CraftServer.this.restart(); -@@ -3195,4 +3278,18 @@ public final class CraftServer implements Server { +@@ -2973,4 +3056,18 @@ public final class CraftServer implements Server { public void allowPausing(final Plugin plugin, final boolean value) { this.console.addPluginAllowingSleep(plugin.getName(), value); } @@ -634,10 +633,10 @@ index 18a087e82383d0776504293bba513e247f4bc881..09054336441cbcce99d1fd82276c5f8c + // Purpur end - Lagging threshold } diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index ee7a4169003b23766b5d2e6edf9221375d80d83c..61121d2efd0df2fcafdc4c272e1cd1b986f42e24 100644 +index 48f6f41d59983e52b9db41a7555423d6e9a416d4..c1d099a3f8feccf71cad7f617c3f739120b13992 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -2376,6 +2376,50 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -1954,6 +1954,52 @@ public class CraftWorld extends CraftRegionAccessor implements World { return (this.getHandle().getDragonFight() == null) ? null : new CraftDragonBattle(this.getHandle().getDragonFight()); } @@ -665,7 +664,8 @@ index ee7a4169003b23766b5d2e6edf9221375d80d83c..61121d2efd0df2fcafdc4c272e1cd1b9 + + @Override + public void sendBlockHighlight(Location location, int duration, String text, int argb) { -+ net.minecraft.network.protocol.game.DebugPackets.sendGameTestAddMarker(getHandle(), org.bukkit.craftbukkit.util.CraftLocation.toBlockPosition(location), text, argb, duration); ++ // Purpur - TODO: fix block highlight API ++ //net.minecraft.network.protocol.game.DebugPackets.sendGameTestAddMarker(getHandle(), org.bukkit.craftbukkit.util.CraftLocation.toBlockPosition(location), text, argb, duration); + } + + @Override @@ -681,7 +681,8 @@ index ee7a4169003b23766b5d2e6edf9221375d80d83c..61121d2efd0df2fcafdc4c272e1cd1b9 + + @Override + public void clearBlockHighlights() { -+ net.minecraft.network.protocol.game.DebugPackets.sendGameTestClearPacket(getHandle()); ++ // Purpur - TODO: fix block highlight API ++ //net.minecraft.network.protocol.game.DebugPackets.sendGameTestClearPacket(getHandle()); + } + // Purpur end - Debug Marker API + @@ -689,7 +690,7 @@ index ee7a4169003b23766b5d2e6edf9221375d80d83c..61121d2efd0df2fcafdc4c272e1cd1b9 public Collection getStructures(int x, int z) { return this.getStructures(x, z, struct -> true); diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java -index 7675acdca2162e403f4ff523bcdd6efe0cb42d49..748bd9650da4a209743b7a5dde584b2e19c5a578 100644 +index 5bd6da467a1f536eb56c93ea00f98050cfaa36d0..7e99752be20868606ab31b9db831c9940f970c9b 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java @@ -164,6 +164,14 @@ public class Main { @@ -800,7 +801,7 @@ index ed4692090a115d3d0a0826b10f77e903058eeec6..205c367fd5e2921d36f78ac7df5999d4 // Paper end } diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java b/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java -index 21443c9cbbbc69b81bb34ee63d8d31bd31894d2a..8b7008ca957a52c55f1a2c7bf0bbedc89477884d 100644 +index 1c448bc38fa554707e0bfb99ded70b093e49926c..77e6913358ac992b503712cccb871518770fee0b 100644 --- a/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java +++ b/src/main/java/org/bukkit/craftbukkit/block/CraftConduit.java @@ -75,7 +75,7 @@ public class CraftConduit extends CraftBlockEntityState impl @@ -859,7 +860,7 @@ index 000c5ea5d39d5ab6e5592012ab1cc7ee547505dc..140da7078217f833f490d88faaf803ab @Override diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index b38073628d3b1381ccc4e5c6c44b2b7ec8ba1273..476eefebace887064b728f08af40c746b6f70787 100644 +index 316302320b6b4b1b3d0e9545f37dbc5656dc6676..5e46428e5dd24c581c816125b52cb32de087d5f4 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -113,6 +113,25 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { @@ -924,10 +925,10 @@ index b38073628d3b1381ccc4e5c6c44b2b7ec8ba1273..476eefebace887064b728f08af40c746 + // Purpur end - Ridables } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java -index 8fba3cbac5d2d39e7db3d3261c68317dbc936736..b02826fc7390eb1fd7c2a1b597a5f1abf156b1c1 100644 +index 939cdd623253557712ca5284af421b3a7c33f612..aa32df881a5bfccd58d2a3b25cb4ee7373234879 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java -@@ -301,6 +301,7 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity { +@@ -289,6 +289,7 @@ public class CraftHumanEntity extends CraftLivingEntity implements HumanEntity { @Override public void recalculatePermissions() { this.perm.recalculatePermissions(); @@ -958,7 +959,7 @@ index 2d7be6f2afe32fd7555640989313052d37973e61..5bafbb876e4780ff6ea0408c95007bdf + // Purpur end - Summoner API } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java -index 33a0e5de4b96e3752ed60a77e9f20f38e434104e..24c169aeb21a9abf30e98362408dcd3576f12860 100644 +index d849e22060d0ec6d4b4ca8079ac5cec26e1a1855..4efb73372b91b8c83a6c5a2b2cb099d229db0621 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftItem.java @@ -145,4 +145,53 @@ public class CraftItem extends CraftEntity implements Item { @@ -1016,10 +1017,10 @@ index 33a0e5de4b96e3752ed60a77e9f20f38e434104e..24c169aeb21a9abf30e98362408dcd35 + // Purpur end - Item entity immunities } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 6b4e74b808b4fb6ac0143d5c82571657b2c49683..fc4fa99a993a017676da2be3cb254399d421bce1 100644 +index f3db4f49dd22ca077f1ddb65f11ed715a4f65f82..1e79357a3f31efd479720e78821962e5d6ff6db4 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -514,7 +514,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { +@@ -506,7 +506,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { net.minecraft.server.level.ServerPlayer nmsKiller = killer == null ? null : ((CraftPlayer) killer).getHandle(); this.getHandle().setLastHurtByMob(nmsKiller); if (nmsKiller != null) { @@ -1028,7 +1029,7 @@ index 6b4e74b808b4fb6ac0143d5c82571657b2c49683..fc4fa99a993a017676da2be3cb254399 } else { this.getHandle().lastHurtByPlayer = null; this.getHandle().lastHurtByPlayerMemoryTime = 0; -@@ -1167,4 +1167,16 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { +@@ -1142,4 +1142,16 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { public CombatTracker getCombatTracker() { return this.getHandle().getCombatTracker().paperCombatTracker; } @@ -1087,10 +1088,10 @@ index cabdcbef0e6f7ca41ff5677bc2e6a81665ca812d..c47ca9ab164b6abd28e979c944569181 @Override diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 322a1e38799a7bf45b8d3ee151b0b62df45d55d7..a40380fbafe1868c9fbb6623987c4f226e3f2150 100644 +index 975bc2bf7c19208a524cbd828e66c8eb60953aca..4eb7d90f38e744b51c11d334a44dacb0a9ac6956 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -565,10 +565,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player, PluginMessa +@@ -572,10 +572,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player, PluginMessa @Override public void setPlayerListName(String name) { @@ -1105,58 +1106,12 @@ index 322a1e38799a7bf45b8d3ee151b0b62df45d55d7..a40380fbafe1868c9fbb6623987c4f22 - this.getHandle().listName = name.equals(this.getName()) ? null : CraftChatMessage.fromStringOrNull(name); + this.getHandle().listName = name.equals(this.getName()) ? null : useMM ? io.papermc.paper.adventure.PaperAdventure.asVanilla(net.kyori.adventure.text.minimessage.MiniMessage.miniMessage().deserialize(name)) : CraftChatMessage.fromStringOrNull(name); // Purpur - AFK API if (this.getHandle().connection == null) return; // Paper - Updates are possible before the player has fully joined - for (ServerPlayer player : (List) this.server.getHandle().players) { + for (ServerPlayer player : this.server.getHandle().players) { if (player.getBukkitEntity().canSee(this)) { -@@ -1383,6 +1388,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player, PluginMessa - // Paper start - Teleport passenger API - // Don't allow teleporting between worlds while keeping passengers - if (ignorePassengers && entity.isVehicle() && location.getWorld() != this.getWorld()) { -+ if (!new org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent(entity.getBukkitEntity(), org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent.Reason.IS_VEHICLE, cause).callEvent()) // Purpur - Add EntityTeleportHinderedEvent - return false; +@@ -978,6 +983,80 @@ public class CraftPlayer extends CraftHumanEntity implements Player, PluginMessa } - -@@ -1404,6 +1410,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player, PluginMessa - } - - if (entity.isVehicle() && !ignorePassengers) { // Paper - Teleport API -+ if (!new org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent(entity.getBukkitEntity(), org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent.Reason.IS_VEHICLE, cause).callEvent()) // Purpur - Add EntityTeleportHinderedEvent - return false; - } - -@@ -2672,6 +2679,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player, PluginMessa - return this.getHandle().getAbilities().walkingSpeed * 2f; } -+ // Purpur start - OfflinePlayer API -+ @Override -+ public boolean teleportOffline(Location destination) { -+ return this.teleport(destination); -+ } -+ -+ @Override -+ public boolean teleportOffline(Location destination, PlayerTeleportEvent.TeleportCause cause) { -+ return this.teleport(destination, cause); -+ } -+ -+ @Override -+ public java.util.concurrent.CompletableFuture teleportOfflineAsync(Location destination) { -+ return this.teleportAsync(destination); -+ } -+ -+ @Override -+ public java.util.concurrent.CompletableFuture teleportOfflineAsync(Location destination, PlayerTeleportEvent.TeleportCause cause) { -+ return this.teleportAsync(destination, cause); -+ } -+ // Purpur end - OfflinePlayer API -+ - private void validateSpeed(float value) { - Preconditions.checkArgument(value <= 1f && value >= -1f, "Speed value (%s) need to be between -1f and 1f", value); - } -@@ -3522,4 +3551,76 @@ public class CraftPlayer extends CraftHumanEntity implements Player, PluginMessa - public PlayerGameConnection getConnection() { - return this.getHandle().connection.playerGameConnection; - } -+ + // Purpur start - Purpur client support + @Override + public boolean usesPurpurClient() { @@ -1200,7 +1155,8 @@ index 322a1e38799a7bf45b8d3ee151b0b62df45d55d7..a40380fbafe1868c9fbb6623987c4f22 + @Override + public void sendBlockHighlight(Location location, int duration, String text, int argb) { + if (this.getHandle().connection == null) return; -+ this.getHandle().connection.send(new net.minecraft.network.protocol.common.ClientboundCustomPayloadPacket(new net.minecraft.network.protocol.common.custom.GameTestAddMarkerDebugPayload(org.bukkit.craftbukkit.util.CraftLocation.toBlockPosition(location), argb, text, duration))); ++ // Purpur - TODO: fix block highlight API ++ //this.getHandle().connection.send(new net.minecraft.network.protocol.common.ClientboundCustomPayloadPacket(new net.minecraft.network.protocol.common.custom.GameTestAddMarkerDebugPayload(org.bukkit.craftbukkit.util.CraftLocation.toBlockPosition(location), argb, text, duration))); + } + + @Override @@ -1217,7 +1173,8 @@ index 322a1e38799a7bf45b8d3ee151b0b62df45d55d7..a40380fbafe1868c9fbb6623987c4f22 + @Override + public void clearBlockHighlights() { + if (this.getHandle().connection == null) return; -+ this.getHandle().connection.send(new net.minecraft.network.protocol.common.ClientboundCustomPayloadPacket(new net.minecraft.network.protocol.common.custom.GameTestClearMarkersDebugPayload())); ++ // Purpur - TODO: fix block highlight API ++ //this.getHandle().connection.send(new net.minecraft.network.protocol.common.ClientboundCustomPayloadPacket(new net.minecraft.network.protocol.common.custom.GameTestClearMarkersDebugPayload())); + } + // Purpur end - Debug Marker API + @@ -1228,7 +1185,55 @@ index 322a1e38799a7bf45b8d3ee151b0b62df45d55d7..a40380fbafe1868c9fbb6623987c4f22 + this.getHandle().connection.send(new net.minecraft.network.protocol.game.ClientboundPlayerCombatKillPacket(getEntityId(), io.papermc.paper.adventure.PaperAdventure.asVanilla(message))); + } + // Purpur end - Death screen API - } ++ + @Override + public void sendBlockDamage(Location loc, float progress, org.bukkit.entity.Entity source) { + Preconditions.checkArgument(source != null, "source must not be null"); +@@ -1347,6 +1426,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player, PluginMessa + // Paper start - Teleport passenger API + // Don't allow teleporting between worlds while keeping passengers + if (ignorePassengers && entity.isVehicle() && location.getWorld() != this.getWorld()) { ++ if (!new org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent(entity.getBukkitEntity(), org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent.Reason.IS_VEHICLE, cause).callEvent()) // Purpur - Add EntityTeleportHinderedEvent + return false; + } + +@@ -1368,6 +1448,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player, PluginMessa + } + + if (entity.isVehicle() && !ignorePassengers) { // Paper - Teleport API ++ if (!new org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent(entity.getBukkitEntity(), org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent.Reason.IS_VEHICLE, cause).callEvent()) // Purpur - Add EntityTeleportHinderedEvent + return false; + } + +@@ -2591,6 +2672,28 @@ public class CraftPlayer extends CraftHumanEntity implements Player, PluginMessa + return this.getHandle().getAbilities().walkingSpeed * 2f; + } + ++ // Purpur start - OfflinePlayer API ++ @Override ++ public boolean teleportOffline(Location destination) { ++ return this.teleport(destination); ++ } ++ ++ @Override ++ public boolean teleportOffline(Location destination, PlayerTeleportEvent.TeleportCause cause) { ++ return this.teleport(destination, cause); ++ } ++ ++ @Override ++ public java.util.concurrent.CompletableFuture teleportOfflineAsync(Location destination) { ++ return this.teleportAsync(destination); ++ } ++ ++ @Override ++ public java.util.concurrent.CompletableFuture teleportOfflineAsync(Location destination, PlayerTeleportEvent.TeleportCause cause) { ++ return this.teleportAsync(destination, cause); ++ } ++ // Purpur end - OfflinePlayer API ++ + private void validateSpeed(float value) { + Preconditions.checkArgument(value <= 1f && value >= -1f, "Speed value (%s) need to be between -1f and 1f", value); + } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftSnowman.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftSnowman.java index f03f9f94c51ef2f2eb24e4f65ec69b542b1c0a07..af60e3ef00ce1e98708d9963d466e72b6cde53cc 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftSnowman.java @@ -1291,13 +1296,13 @@ index 2e11df97e5c8ff5fbf22ba87946d6018ac8bbbed..83b779eb0adcaf2e6d5658cddc2607f6 + // Purpur end - Summoner API } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java -index 723a8e659485850632adf173e52669e6e4f3fcc0..98880f082af386f2a1dc64bc13667030d2824d25 100644 +index 723a8e659485850632adf173e52669e6e4f3fcc0..6317c2208fd842d4453f96a9c5dbc13ece0961f8 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java -@@ -135,4 +135,15 @@ public class CraftWolf extends CraftTameableAnimal implements Wolf { - super(holder); - } +@@ -90,6 +90,18 @@ public class CraftWolf extends CraftTameableAnimal implements Wolf { + this.getHandle().setSoundVariant(CraftSoundVariant.bukkitToMinecraftHolder(soundVariant)); } + + // Purpur start - Configurable chance for wolves to spawn rabid + @Override + public boolean isRabid() { @@ -1309,12 +1314,15 @@ index 723a8e659485850632adf173e52669e6e4f3fcc0..98880f082af386f2a1dc64bc13667030 + getHandle().setRabid(isRabid); + } + // Purpur end - Configurable chance for wolves to spawn rabid - } ++ + public static class CraftVariant extends HolderableBase implements Variant { + + public static Variant minecraftToBukkit(WolfVariant minecraft) { diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 183d83f023644c9c5dba0702ba2464566e74ad32..658385b2887d6debec7fc941c28621da5d263411 100644 +index e16a347e673cdb431c18010e6a01eacfc674c09f..07723b1c68580c6e47a39235bd75ade560aeca5d 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -525,6 +525,15 @@ public class CraftEventFactory { +@@ -516,6 +516,15 @@ public class CraftEventFactory { } craftServer.getPluginManager().callEvent(event); @@ -1330,7 +1338,7 @@ index 183d83f023644c9c5dba0702ba2464566e74ad32..658385b2887d6debec7fc941c28621da return event; } -@@ -1057,6 +1066,7 @@ public class CraftEventFactory { +@@ -1048,6 +1057,7 @@ public class CraftEventFactory { EntityDamageEvent event; if (damager != null) { event = new EntityDamageByEntityEvent(damager.getBukkitEntity(), damagee.getBukkitEntity(), cause, bukkitDamageSource, modifiers, modifierFunctions, critical); @@ -1767,10 +1775,10 @@ index 2b3844f5ecc1bfbf3f5dab1c00d06f8be27f39e9..4e535c287137ceedd4d48047b03f4578 + // Purpur end - Anvil API } diff --git a/src/main/java/org/bukkit/craftbukkit/legacy/MaterialRerouting.java b/src/main/java/org/bukkit/craftbukkit/legacy/MaterialRerouting.java -index db8d8e2a07296d62c3097f02b03319e2e1ba9394..4ba4d52961b4ba61fe2db130ee4368ff358920d4 100644 +index 9bc8055c36322c79077af57ab72d5493f5e65b7d..9f50bfc899d747f4e9287a646c6c6103bf501660 100644 --- a/src/main/java/org/bukkit/craftbukkit/legacy/MaterialRerouting.java +++ b/src/main/java/org/bukkit/craftbukkit/legacy/MaterialRerouting.java -@@ -708,4 +708,32 @@ public class MaterialRerouting { +@@ -703,4 +703,32 @@ public class MaterialRerouting { meta.setCanPlaceOn(materials); } // Paper end @@ -1819,7 +1827,7 @@ index a573499fb96cb08d96e0b20602fc423bfd0e2f52..eb9cbc29181ffc83acd556f26f2c0b4f + // Purpur end - Explorer Map API } diff --git a/src/main/java/org/bukkit/craftbukkit/util/permissions/CommandPermissions.java b/src/main/java/org/bukkit/craftbukkit/util/permissions/CommandPermissions.java -index de33ea03508552d0cc7dd548754c626af093dd7c..22f820dcef5a760eff77d5eb75c08125dc7ae367 100644 +index 8893a94d542952811ef9915ff6074b30892653d9..ae5d4348b8305f40fa87e17a202edbcb7b26e727 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/permissions/CommandPermissions.java +++ b/src/main/java/org/bukkit/craftbukkit/util/permissions/CommandPermissions.java @@ -23,7 +23,15 @@ public final class CommandPermissions { diff --git a/leaf-server/paper-patches/features/0011-Print-stack-trace-for-plugins-not-shutting-down-task.patch b/leaf-server/paper-patches/features/0011-Print-stack-trace-for-plugins-not-shutting-down-task.patch index 38e363c9..e4597096 100644 --- a/leaf-server/paper-patches/features/0011-Print-stack-trace-for-plugins-not-shutting-down-task.patch +++ b/leaf-server/paper-patches/features/0011-Print-stack-trace-for-plugins-not-shutting-down-task.patch @@ -31,10 +31,10 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 09054336441cbcce99d1fd82276c5f8c90bee28c..80b79766972d539f89597a1df86d8f72779b4960 100644 +index 4c471f5febee75d052cd2f1bc1ef9219f92d446b..e37f40e0588f00575d41d35dfc8278c2cfd8d0fd 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -1159,6 +1159,13 @@ public final class CraftServer implements Server { +@@ -1103,6 +1103,13 @@ public final class CraftServer implements Server { plugin.getPluginMeta().getDisplayName(), "This plugin is not properly shutting down its async tasks when it is being shut down. This task may throw errors during the final shutdown logs and might not complete before process dies." )); diff --git a/leaf-server/paper-patches/features/0017-CraftBukkit-UUID-to-world-map.patch b/leaf-server/paper-patches/features/0017-CraftBukkit-UUID-to-world-map.patch index 3a0a9edd..72b93890 100644 --- a/leaf-server/paper-patches/features/0017-CraftBukkit-UUID-to-world-map.patch +++ b/leaf-server/paper-patches/features/0017-CraftBukkit-UUID-to-world-map.patch @@ -13,10 +13,10 @@ As part of: MultiPaper (https://github.com/MultiPaper/MultiPaper) 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 80b79766972d539f89597a1df86d8f72779b4960..f287641acb77cb384ff1f6d672e7622c7267ffe2 100644 +index e37f40e0588f00575d41d35dfc8278c2cfd8d0fd..093ab2ab59a9994acb2793f35b26f54601879028 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -288,6 +288,7 @@ public final class CraftServer implements Server { +@@ -277,6 +277,7 @@ public final class CraftServer implements Server { final DedicatedServer console; private final DedicatedPlayerList playerList; private final Map worlds = new LinkedHashMap<>(); @@ -24,7 +24,7 @@ index 80b79766972d539f89597a1df86d8f72779b4960..f287641acb77cb384ff1f6d672e7622c private YamlConfiguration configuration; private YamlConfiguration commandsConfiguration; private final Yaml yaml = new Yaml(new SafeConstructor(new LoaderOptions())); -@@ -1487,6 +1488,7 @@ public final class CraftServer implements Server { +@@ -1384,6 +1385,7 @@ public final class CraftServer implements Server { this.getLogger().log(Level.SEVERE, null, ex); } @@ -32,7 +32,7 @@ index 80b79766972d539f89597a1df86d8f72779b4960..f287641acb77cb384ff1f6d672e7622c this.worlds.remove(world.getName().toLowerCase(Locale.ROOT)); this.console.removeLevel(handle); return true; -@@ -1505,12 +1507,7 @@ public final class CraftServer implements Server { +@@ -1415,12 +1417,7 @@ public final class CraftServer implements Server { @Override public World getWorld(UUID uid) { @@ -46,7 +46,7 @@ index 80b79766972d539f89597a1df86d8f72779b4960..f287641acb77cb384ff1f6d672e7622c } @Override -@@ -1526,6 +1523,7 @@ public final class CraftServer implements Server { +@@ -1436,6 +1433,7 @@ public final class CraftServer implements Server { System.out.println("World " + world.getName() + " is a duplicate of another world and has been prevented from loading. Please delete the uid.dat file from " + world.getName() + "'s world directory if you want to be able to load the duplicate world."); return; } diff --git a/leaf-server/paper-patches/features/0018-Specific-interval-TPS-API.patch b/leaf-server/paper-patches/features/0018-Specific-interval-TPS-API.patch index 15f363b1..136fb8de 100644 --- a/leaf-server/paper-patches/features/0018-Specific-interval-TPS-API.patch +++ b/leaf-server/paper-patches/features/0018-Specific-interval-TPS-API.patch @@ -7,10 +7,10 @@ License: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html) Gale - https://galemc.org diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index f287641acb77cb384ff1f6d672e7622c7267ffe2..82e94ec6bc46e6968456debae643649e79f4614c 100644 +index 093ab2ab59a9994acb2793f35b26f54601879028..5808630e72500d5bebd1fd1748a3fd05d679b710 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -3082,6 +3082,23 @@ public final class CraftServer implements Server { +@@ -2860,6 +2860,23 @@ public final class CraftServer implements Server { }; } diff --git a/leaf-server/paper-patches/features/0019-5-second-TPS-average.patch b/leaf-server/paper-patches/features/0019-5-second-TPS-average.patch index 005a83ec..d07e6827 100644 --- a/leaf-server/paper-patches/features/0019-5-second-TPS-average.patch +++ b/leaf-server/paper-patches/features/0019-5-second-TPS-average.patch @@ -58,10 +58,10 @@ index 12b327eea95e0de9e9c39b7d039badee8ec46508..6178f0212214a2a075cea60c758dca79 } diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 82e94ec6bc46e6968456debae643649e79f4614c..560b8bf901f7c8c4f00b9a5fe96acacabb383a3b 100644 +index 5808630e72500d5bebd1fd1748a3fd05d679b710..81318ab2299208c446453b5aac892daacafdad64 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -3082,7 +3082,26 @@ public final class CraftServer implements Server { +@@ -2860,7 +2860,26 @@ public final class CraftServer implements Server { }; } diff --git a/leaf-server/paper-patches/features/0020-Last-tick-time-API.patch b/leaf-server/paper-patches/features/0020-Last-tick-time-API.patch index df4bd4e1..c648625b 100644 --- a/leaf-server/paper-patches/features/0020-Last-tick-time-API.patch +++ b/leaf-server/paper-patches/features/0020-Last-tick-time-API.patch @@ -23,10 +23,10 @@ The above copyright notice and this permission notice shall be included in all c THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 560b8bf901f7c8c4f00b9a5fe96acacabb383a3b..f81c0fef5428ec6ec98c10e0b520496dc68f8961 100644 +index 81318ab2299208c446453b5aac892daacafdad64..432df0b003a914f24521d4908cf0d97cf33d6b25 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -3333,4 +3333,21 @@ public final class CraftServer implements Server { +@@ -3111,4 +3111,21 @@ public final class CraftServer implements Server { return getServer().lagging; } // Purpur end - Lagging threshold diff --git a/leaf-server/paper-patches/features/0026-KeYi-Player-Skull-API.patch b/leaf-server/paper-patches/features/0026-KeYi-Player-Skull-API.patch index 94230a37..76771a1f 100644 --- a/leaf-server/paper-patches/features/0026-KeYi-Player-Skull-API.patch +++ b/leaf-server/paper-patches/features/0026-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 a40380fbafe1868c9fbb6623987c4f226e3f2150..32537a9a892b12258ae17c63c32e98e1b3902cb9 100644 +index 4eb7d90f38e744b51c11d334a44dacb0a9ac6956..ef9cb690b93fdd6b637a731658cfacfe9723c8c2 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -3623,4 +3623,31 @@ public class CraftPlayer extends CraftHumanEntity implements Player, PluginMessa - this.getHandle().connection.send(new net.minecraft.network.protocol.game.ClientboundPlayerCombatKillPacket(getEntityId(), io.papermc.paper.adventure.PaperAdventure.asVanilla(message))); +@@ -3550,4 +3550,31 @@ public class CraftPlayer extends CraftHumanEntity implements Player, PluginMessa + entity.remove(); + } } - // Purpur end - Death screen API + + // Leaf start - KeYi - Player Skull API + @Override diff --git a/leaf-server/paper-patches/features/0027-Slice-Smooth-Teleports.patch b/leaf-server/paper-patches/features/0027-Slice-Smooth-Teleports.patch index 3ca3286a..772a35e1 100644 --- a/leaf-server/paper-patches/features/0027-Slice-Smooth-Teleports.patch +++ b/leaf-server/paper-patches/features/0027-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 32537a9a892b12258ae17c63c32e98e1b3902cb9..2d9725d2e61bb2baa0313542925e620e9bcb4942 100644 +index ef9cb690b93fdd6b637a731658cfacfe9723c8c2..38152271fdf64a4b5a13344c746825a39e3f0354 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -1333,6 +1333,25 @@ public class CraftPlayer extends CraftHumanEntity implements Player, PluginMessa +@@ -1371,6 +1371,25 @@ public class CraftPlayer extends CraftHumanEntity implements Player, PluginMessa // Paper end - Teleportation API } diff --git a/leaf-server/paper-patches/features/0030-Skip-event-if-no-listeners.patch b/leaf-server/paper-patches/features/0028-Skip-event-if-no-listeners.patch similarity index 85% rename from leaf-server/paper-patches/features/0030-Skip-event-if-no-listeners.patch rename to leaf-server/paper-patches/features/0028-Skip-event-if-no-listeners.patch index d63fb4f2..7521ceb0 100644 --- a/leaf-server/paper-patches/features/0030-Skip-event-if-no-listeners.patch +++ b/leaf-server/paper-patches/features/0028-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 99662395fef09017ff0843da6c482815dd4456d3..bb76cbc2a4e93f33486025b3a86c4ddeb7a5a7a4 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 99662395fef09017ff0843da6c482815dd4456d3..bb76cbc2a4e93f33486025b3a86c4dde 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-server/paper-patches/features/0031-SparklyPaper-Optimize-canSee-checks.patch b/leaf-server/paper-patches/features/0029-SparklyPaper-Optimize-canSee-checks.patch similarity index 93% rename from leaf-server/paper-patches/features/0031-SparklyPaper-Optimize-canSee-checks.patch rename to leaf-server/paper-patches/features/0029-SparklyPaper-Optimize-canSee-checks.patch index bfacc741..fbd3c681 100644 --- a/leaf-server/paper-patches/features/0031-SparklyPaper-Optimize-canSee-checks.patch +++ b/leaf-server/paper-patches/features/0029-SparklyPaper-Optimize-canSee-checks.patch @@ -16,10 +16,10 @@ This seems stupid, but it does seem that it improves the performance a bit, and We also create a "canSee" method tailored for "ChunkMap#updatePlayer()", a method without the equals check (the "updatePlayer()" already checks if the entity is the same entity) because the CraftPlayer's `equals()` check is a *bit* expensive compared to only checking the object's identity, and because the identity has already been check, we don't need to check it twice. diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 3d3d9c795a6e5be65fe0329e82dd018ce21807e0..0668b392c46cf0aeadaab2fba1e7f001664e5155 100644 +index 38152271fdf64a4b5a13344c746825a39e3f0354..3149a45297b5cffd247238bb04d3035568de5c07 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -220,7 +220,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player, PluginMessa +@@ -227,7 +227,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player, PluginMessa private long lastPlayed = 0; private boolean hasPlayedBefore = false; private final ConversationTracker conversationTracker = new ConversationTracker(); @@ -28,7 +28,7 @@ index 3d3d9c795a6e5be65fe0329e82dd018ce21807e0..0668b392c46cf0aeadaab2fba1e7f001 private final Set unlistedEntities = new HashSet<>(); // Paper - Add Listing API for Player private static final WeakHashMap> pluginWeakReferences = new WeakHashMap<>(); private int hash = 0; -@@ -2240,9 +2240,16 @@ public class CraftPlayer extends CraftHumanEntity implements Player, PluginMessa +@@ -2258,9 +2258,16 @@ public class CraftPlayer extends CraftHumanEntity implements Player, PluginMessa @Override public boolean canSee(org.bukkit.entity.Entity entity) { diff --git a/leaf-server/paper-patches/features/0032-Including-5s-in-getTPS.patch b/leaf-server/paper-patches/features/0030-Including-5s-in-getTPS.patch similarity index 84% rename from leaf-server/paper-patches/features/0032-Including-5s-in-getTPS.patch rename to leaf-server/paper-patches/features/0030-Including-5s-in-getTPS.patch index e9ff23dd..396f5c40 100644 --- a/leaf-server/paper-patches/features/0032-Including-5s-in-getTPS.patch +++ b/leaf-server/paper-patches/features/0030-Including-5s-in-getTPS.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Including 5s in getTPS() diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index e1d81f91f166beec06aaa8739ea6b61703dc04dd..5a0253f402d31fa3312d0248edb6c7cd6cec6698 100644 +index 432df0b003a914f24521d4908cf0d97cf33d6b25..2eed074743a802fa66f4be8f38de0f2471e352d4 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -3078,6 +3078,8 @@ public final class CraftServer implements Server { +@@ -2853,6 +2853,8 @@ public final class CraftServer implements Server { @Override public double[] getTPS() { diff --git a/leaf-server/paper-patches/features/0033-Don-t-throw-exception-on-missing-ResourceKey-value.patch b/leaf-server/paper-patches/features/0031-Don-t-throw-exception-on-missing-ResourceKey-value.patch similarity index 100% rename from leaf-server/paper-patches/features/0033-Don-t-throw-exception-on-missing-ResourceKey-value.patch rename to leaf-server/paper-patches/features/0031-Don-t-throw-exception-on-missing-ResourceKey-value.patch diff --git a/leaf-server/paper-patches/features/0034-Virtual-Thread-for-async-scheduler.patch b/leaf-server/paper-patches/features/0032-Virtual-Thread-for-async-scheduler.patch similarity index 100% rename from leaf-server/paper-patches/features/0034-Virtual-Thread-for-async-scheduler.patch rename to leaf-server/paper-patches/features/0032-Virtual-Thread-for-async-scheduler.patch diff --git a/leaf-server/paper-patches/features/0035-Mirai-Configurable-chat-message-signatures.patch b/leaf-server/paper-patches/features/0033-Mirai-Configurable-chat-message-signatures.patch similarity index 100% rename from leaf-server/paper-patches/features/0035-Mirai-Configurable-chat-message-signatures.patch rename to leaf-server/paper-patches/features/0033-Mirai-Configurable-chat-message-signatures.patch diff --git a/leaf-server/paper-patches/features/0036-Matter-Secure-Seed.patch b/leaf-server/paper-patches/features/0034-Matter-Secure-Seed.patch similarity index 90% rename from leaf-server/paper-patches/features/0036-Matter-Secure-Seed.patch rename to leaf-server/paper-patches/features/0034-Matter-Secure-Seed.patch index a373250a..09dbbc62 100644 --- a/leaf-server/paper-patches/features/0036-Matter-Secure-Seed.patch +++ b/leaf-server/paper-patches/features/0034-Matter-Secure-Seed.patch @@ -14,10 +14,10 @@ Co-authored-by: Dreeam <61569423+Dreeam-qwq@users.noreply.github.com> Co-authored-by: HaHaWTH <102713261+HaHaWTH@users.noreply.github.com> diff --git a/src/main/java/org/bukkit/craftbukkit/CraftChunk.java b/src/main/java/org/bukkit/craftbukkit/CraftChunk.java -index 400e632208d133a3f49fc7f14bceb48a1026769b..8c4e5b0c81d90a0eeee4ab9e5882b1372a628954 100644 +index 2b3a763b4fd71452ad8aecd14a1a281529e39127..2ee8fe2f7992ced15ef8e7ed045383420d5f4e47 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftChunk.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftChunk.java -@@ -196,7 +196,14 @@ public class CraftChunk implements Chunk { +@@ -193,7 +193,14 @@ public class CraftChunk implements Chunk { @Override public boolean isSlimeChunk() { // 987234911L is taken from Slime when seeing if a slime can spawn in a chunk @@ -34,10 +34,10 @@ index 400e632208d133a3f49fc7f14bceb48a1026769b..8c4e5b0c81d90a0eeee4ab9e5882b137 @Override diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 5a0253f402d31fa3312d0248edb6c7cd6cec6698..110e76827f5b3b44694cd5ac578f4dbf169e96e2 100644 +index 2eed074743a802fa66f4be8f38de0f2471e352d4..99dc13c82d1daa88315244c89930964206891e92 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -1358,7 +1358,11 @@ public final class CraftServer implements Server { +@@ -1260,7 +1260,11 @@ public final class CraftServer implements Server { registryAccess = levelDataAndDimensions.dimensions().dimensionsRegistryAccess(); } else { LevelSettings levelSettings; diff --git a/leaf-server/paper-patches/features/0037-Faster-random-generator.patch b/leaf-server/paper-patches/features/0035-Faster-random-generator.patch similarity index 100% rename from leaf-server/paper-patches/features/0037-Faster-random-generator.patch rename to leaf-server/paper-patches/features/0035-Faster-random-generator.patch diff --git a/leaf-server/paper-patches/features/0038-Configurable-unknown-command-message.patch b/leaf-server/paper-patches/features/0036-Configurable-unknown-command-message.patch similarity index 100% rename from leaf-server/paper-patches/features/0038-Configurable-unknown-command-message.patch rename to leaf-server/paper-patches/features/0036-Configurable-unknown-command-message.patch diff --git a/leaf-server/paper-patches/features/0039-Replace-world-map-with-optimized-collection.patch b/leaf-server/paper-patches/features/0037-Replace-world-map-with-optimized-collection.patch similarity index 87% rename from leaf-server/paper-patches/features/0039-Replace-world-map-with-optimized-collection.patch rename to leaf-server/paper-patches/features/0037-Replace-world-map-with-optimized-collection.patch index 985409f0..a2f9487f 100644 --- a/leaf-server/paper-patches/features/0039-Replace-world-map-with-optimized-collection.patch +++ b/leaf-server/paper-patches/features/0037-Replace-world-map-with-optimized-collection.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Replace world map with optimized collection diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 110e76827f5b3b44694cd5ac578f4dbf169e96e2..4cb422feb0ef0344a5b56c5425da6c84878d424f 100644 +index 99dc13c82d1daa88315244c89930964206891e92..7a0fa6802e5e7df2d5e79c33dee340798f335dee 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -287,7 +287,7 @@ public final class CraftServer implements Server { +@@ -276,7 +276,7 @@ public final class CraftServer implements Server { private final StructureManager structureManager; final DedicatedServer console; private final DedicatedPlayerList playerList; diff --git a/leaf-server/paper-patches/features/0040-Cache-CraftEntityType-minecraftToBukkit-convert.patch b/leaf-server/paper-patches/features/0038-Cache-CraftEntityType-minecraftToBukkit-convert.patch similarity index 100% rename from leaf-server/paper-patches/features/0040-Cache-CraftEntityType-minecraftToBukkit-convert.patch rename to leaf-server/paper-patches/features/0038-Cache-CraftEntityType-minecraftToBukkit-convert.patch diff --git a/leaf-server/paper-patches/features/0041-Multithreaded-Tracker.patch b/leaf-server/paper-patches/features/0039-Multithreaded-Tracker.patch similarity index 89% rename from leaf-server/paper-patches/features/0041-Multithreaded-Tracker.patch rename to leaf-server/paper-patches/features/0039-Multithreaded-Tracker.patch index 95bdd725..53c1bce6 100644 --- a/leaf-server/paper-patches/features/0041-Multithreaded-Tracker.patch +++ b/leaf-server/paper-patches/features/0039-Multithreaded-Tracker.patch @@ -28,10 +28,10 @@ However we still recommend to use those packet based NPC plugins, e.g. ZNPC Plus, Adyeshach, Fancy NPC, etc. diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index cf1a1eb731083ba56cdb9ad857255b1a55e31717..93b53a2ef33701eb25e78a11235eb7598d88e97d 100644 +index 5e46428e5dd24c581c816125b52cb32de087d5f4..c11449da3a89221e5525c229e990577c91238dc2 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -764,7 +764,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -762,7 +762,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { ChunkMap.TrackedEntity entityTracker = world.getChunkSource().chunkMap.entityMap.get(this.getEntityId()); if (entityTracker != null) { @@ -40,7 +40,7 @@ index cf1a1eb731083ba56cdb9ad857255b1a55e31717..93b53a2ef33701eb25e78a11235eb759 players.add(connection.getPlayer().getBukkitEntity()); } } -@@ -1095,7 +1095,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -1093,7 +1093,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { return; } @@ -49,7 +49,7 @@ index cf1a1eb731083ba56cdb9ad857255b1a55e31717..93b53a2ef33701eb25e78a11235eb759 this.getHandle().resendPossiblyDesyncedEntityData(connection.getPlayer()); } } -@@ -1242,7 +1242,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -1240,7 +1240,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { } Set set = new java.util.HashSet<>(tracker.seenBy.size()); @@ -59,10 +59,10 @@ index cf1a1eb731083ba56cdb9ad857255b1a55e31717..93b53a2ef33701eb25e78a11235eb759 } return set; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 0668b392c46cf0aeadaab2fba1e7f001664e5155..a5c0b4bed976c314cee3947caf1c6db78dcf53ae 100644 +index 3149a45297b5cffd247238bb04d3035568de5c07..4880ed8eaa3966c9669addfc72d7eb4abf537260 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -220,7 +220,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player, PluginMessa +@@ -227,7 +227,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player, PluginMessa private long lastPlayed = 0; private boolean hasPlayedBefore = false; private final ConversationTracker conversationTracker = new ConversationTracker(); @@ -71,7 +71,7 @@ index 0668b392c46cf0aeadaab2fba1e7f001664e5155..a5c0b4bed976c314cee3947caf1c6db7 private final Set unlistedEntities = new HashSet<>(); // Paper - Add Listing API for Player private static final WeakHashMap> pluginWeakReferences = new WeakHashMap<>(); private int hash = 0; -@@ -2841,7 +2841,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player, PluginMessa +@@ -2834,7 +2834,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player, PluginMessa Iterator iterator = collection.iterator(); while (iterator.hasNext()) { AttributeInstance genericInstance = iterator.next(); diff --git a/leaf-server/paper-patches/features/0042-EMC-Don-t-use-snapshots-for-acquiring-blockstate.patch b/leaf-server/paper-patches/features/0040-EMC-Don-t-use-snapshots-for-acquiring-blockstate.patch similarity index 91% rename from leaf-server/paper-patches/features/0042-EMC-Don-t-use-snapshots-for-acquiring-blockstate.patch rename to leaf-server/paper-patches/features/0040-EMC-Don-t-use-snapshots-for-acquiring-blockstate.patch index 4ccd5226..fae5df94 100644 --- a/leaf-server/paper-patches/features/0042-EMC-Don-t-use-snapshots-for-acquiring-blockstate.patch +++ b/leaf-server/paper-patches/features/0040-EMC-Don-t-use-snapshots-for-acquiring-blockstate.patch @@ -20,10 +20,10 @@ index 6809f9dcf8510c714145d99d250eb69f98d9bf27..dd122bbbe2c33183017dbde6997d3f1c // Paper start diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlockStates.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlockStates.java -index 3c9131ac3cfb4f758e76830ca48813feb321e4c6..18f09de5c6549df3562e710ede825f75d69c046e 100644 +index bcd73c788768f9a278181926fb56df510d271a76..53346c7364bbf507693cb769b2a49f77bb991f84 100644 --- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlockStates.java +++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlockStates.java -@@ -185,7 +185,7 @@ public final class CraftBlockStates { +@@ -186,7 +186,7 @@ public final class CraftBlockStates { } public static BlockState getBlockState(Block block) { diff --git a/leaf-server/paper-patches/features/0043-Faster-CraftServer-getworlds-list-creation.patch b/leaf-server/paper-patches/features/0041-Faster-CraftServer-getworlds-list-creation.patch similarity index 85% rename from leaf-server/paper-patches/features/0043-Faster-CraftServer-getworlds-list-creation.patch rename to leaf-server/paper-patches/features/0041-Faster-CraftServer-getworlds-list-creation.patch index fb5daf76..f4b6bb5e 100644 --- a/leaf-server/paper-patches/features/0043-Faster-CraftServer-getworlds-list-creation.patch +++ b/leaf-server/paper-patches/features/0041-Faster-CraftServer-getworlds-list-creation.patch @@ -8,10 +8,10 @@ replacing ArrayList with Fastutil ObjectArrayList brings about 40% performance improvement in benchmark. diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 4cb422feb0ef0344a5b56c5425da6c84878d424f..42645ea0f97df8e733001e7c3f4c4096ed6a5049 100644 +index 7a0fa6802e5e7df2d5e79c33dee340798f335dee..2a62cbd05fd41658b19a46ea2b5df483cdd33497 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -978,7 +978,7 @@ public final class CraftServer implements Server { +@@ -922,7 +922,7 @@ public final class CraftServer implements Server { @Override public List getWorlds() { diff --git a/leaf-server/paper-patches/features/0044-Cache-chunk-key.patch b/leaf-server/paper-patches/features/0042-Cache-chunk-key.patch similarity index 100% rename from leaf-server/paper-patches/features/0044-Cache-chunk-key.patch rename to leaf-server/paper-patches/features/0042-Cache-chunk-key.patch diff --git a/leaf-server/paper-patches/features/0045-PlayerInventoryOverflowEvent.patch b/leaf-server/paper-patches/features/0043-PlayerInventoryOverflowEvent.patch similarity index 100% rename from leaf-server/paper-patches/features/0045-PlayerInventoryOverflowEvent.patch rename to leaf-server/paper-patches/features/0043-PlayerInventoryOverflowEvent.patch diff --git a/leaf-server/paper-patches/features/0046-Paper-PR-Fix-MC-117075-Block-Entities-Unload-Lag-Spi.patch b/leaf-server/paper-patches/features/0044-Paper-PR-Fix-MC-117075-Block-Entities-Unload-Lag-Spi.patch similarity index 100% rename from leaf-server/paper-patches/features/0046-Paper-PR-Fix-MC-117075-Block-Entities-Unload-Lag-Spi.patch rename to leaf-server/paper-patches/features/0044-Paper-PR-Fix-MC-117075-Block-Entities-Unload-Lag-Spi.patch diff --git a/leaf-server/paper-patches/features/0047-SparklyPaper-Parallel-world-ticking.patch b/leaf-server/paper-patches/features/0045-SparklyPaper-Parallel-world-ticking.patch similarity index 98% rename from leaf-server/paper-patches/features/0047-SparklyPaper-Parallel-world-ticking.patch rename to leaf-server/paper-patches/features/0045-SparklyPaper-Parallel-world-ticking.patch index b15cd38b..6c5995af 100644 --- a/leaf-server/paper-patches/features/0047-SparklyPaper-Parallel-world-ticking.patch +++ b/leaf-server/paper-patches/features/0045-SparklyPaper-Parallel-world-ticking.patch @@ -251,10 +251,10 @@ index 69cdd304d255d52c9b7dc9b6a33ffdb630b79abe..09dfab1ace05ee62df5cf6e292f8be01 + // SparklyPaper end - parallel world ticking } diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 61121d2efd0df2fcafdc4c272e1cd1b986f42e24..ee5f342995a335593932a497c2bafd36d34cecb2 100644 +index c1d099a3f8feccf71cad7f617c3f739120b13992..01b8cf8474f4d80eca65bdb9f44f204110b10a1b 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -480,7 +480,12 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -471,7 +471,12 @@ public class CraftWorld extends CraftRegionAccessor implements World { } private boolean unloadChunk0(int x, int z, boolean save) { @@ -268,7 +268,7 @@ index 61121d2efd0df2fcafdc4c272e1cd1b986f42e24..ee5f342995a335593932a497c2bafd36 if (!this.isChunkLoaded(x, z)) { return true; } -@@ -497,6 +502,8 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -488,6 +493,8 @@ public class CraftWorld extends CraftRegionAccessor implements World { @Override public boolean refreshChunk(int x, int z) { @@ -277,7 +277,7 @@ index 61121d2efd0df2fcafdc4c272e1cd1b986f42e24..ee5f342995a335593932a497c2bafd36 ChunkHolder playerChunk = this.world.getChunkSource().chunkMap.getVisibleChunkIfPresent(ChunkPos.asLong(x, z)); if (playerChunk == null) return false; -@@ -547,7 +554,12 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -538,7 +545,12 @@ public class CraftWorld extends CraftRegionAccessor implements World { @Override public boolean loadChunk(int x, int z, boolean generate) { @@ -291,7 +291,7 @@ index 61121d2efd0df2fcafdc4c272e1cd1b986f42e24..ee5f342995a335593932a497c2bafd36 warnUnsafeChunk("loading a faraway chunk", x, z); // Paper ChunkAccess chunk = this.world.getChunkSource().getChunk(x, z, generate || isChunkGenerated(x, z) ? ChunkStatus.FULL : ChunkStatus.EMPTY, true); // Paper -@@ -775,6 +787,8 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -751,6 +763,8 @@ public class CraftWorld extends CraftRegionAccessor implements World { @Override public boolean generateTree(Location loc, TreeType type, BlockChangeDelegate delegate) { @@ -300,16 +300,16 @@ index 61121d2efd0df2fcafdc4c272e1cd1b986f42e24..ee5f342995a335593932a497c2bafd36 this.world.captureTreeGeneration = true; this.world.captureBlockStates = true; boolean grownTree = this.generateTree(loc, type); -@@ -890,6 +904,8 @@ public class CraftWorld extends CraftRegionAccessor implements World { - } - public boolean createExplosion(double x, double y, double z, float power, boolean setFire, boolean breakBlocks, Entity source, Consumer configurator) { - // Paper end - expand explosion API +@@ -852,6 +866,8 @@ public class CraftWorld extends CraftRegionAccessor implements World { + + private boolean createExplosion(double x, double y, double z, float power, boolean setFire, boolean breakBlocks, Entity source, Consumer configurator) { + // Paper end - expand explosion API + if (org.dreeam.leaf.config.modules.async.SparklyPaperParallelWorldTicking.enabled) // Leaf - SparklyPaper - parallel world ticking mod (make configurable) + ca.spottedleaf.moonrise.common.util.TickThread.ensureTickThread(this.world, x, z, "Cannot create explosion asynchronously"); // SparklyPaper - parallel world ticking (additional concurrency issues logs) net.minecraft.world.level.Level.ExplosionInteraction explosionType; if (!breakBlocks) { explosionType = net.minecraft.world.level.Level.ExplosionInteraction.NONE; // Don't break blocks -@@ -981,6 +997,8 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -908,6 +924,8 @@ public class CraftWorld extends CraftRegionAccessor implements World { @Override public int getHighestBlockYAt(int x, int z, org.bukkit.HeightMap heightMap) { @@ -318,7 +318,7 @@ index 61121d2efd0df2fcafdc4c272e1cd1b986f42e24..ee5f342995a335593932a497c2bafd36 warnUnsafeChunk("getting a faraway chunk", x >> 4, z >> 4); // Paper // Transient load for this tick return this.world.getChunk(x >> 4, z >> 4).getHeight(CraftHeightMap.toNMS(heightMap), x, z); -@@ -1011,6 +1029,8 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -923,6 +941,8 @@ public class CraftWorld extends CraftRegionAccessor implements World { @Override public void setBiome(int x, int y, int z, Holder bb) { BlockPos pos = new BlockPos(x, 0, z); @@ -327,7 +327,7 @@ index 61121d2efd0df2fcafdc4c272e1cd1b986f42e24..ee5f342995a335593932a497c2bafd36 if (this.world.hasChunkAt(pos)) { net.minecraft.world.level.chunk.LevelChunk chunk = this.world.getChunkAt(pos); -@@ -2319,6 +2339,8 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -1902,6 +1922,8 @@ public class CraftWorld extends CraftRegionAccessor implements World { @Override public void sendGameEvent(Entity sourceEntity, org.bukkit.GameEvent gameEvent, Vector position) { @@ -1517,10 +1517,10 @@ index 196835bdf95ba0e149b2977e9ef41698971f501f..eb7e63d4549e672ff1206055d2d75439 net.minecraft.world.item.ItemStack nms = org.bukkit.craftbukkit.inventory.CraftItemStack.asNMSCopy(item); diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlockStates.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlockStates.java -index 18f09de5c6549df3562e710ede825f75d69c046e..1b06f97caeda6f33938ff5391ecaad5a1fc26f36 100644 +index 53346c7364bbf507693cb769b2a49f77bb991f84..ef526d25c52edd11f0aebe1416dc986a28429156 100644 --- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlockStates.java +++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlockStates.java -@@ -195,14 +195,14 @@ public final class CraftBlockStates { +@@ -196,14 +196,14 @@ public final class CraftBlockStates { BlockPos pos = craftBlock.getPosition(); net.minecraft.world.level.block.state.BlockState state = craftBlock.getNMS(); BlockEntity blockEntity = craftBlock.getHandle().getBlockEntity(pos); @@ -1539,10 +1539,10 @@ index 18f09de5c6549df3562e710ede825f75d69c046e..1b06f97caeda6f33938ff5391ecaad5a } diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index b4ee0f809c1524c74eca74ee6bc471a3051d92a6..96177467807e75bacb8c7c11ba7263f89bc0933a 100644 +index 07723b1c68580c6e47a39235bd75ade560aeca5d..202a6a1217ca9b423d6ef84776f6e68cd75d15a2 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -829,6 +829,28 @@ public class CraftEventFactory { +@@ -820,6 +820,28 @@ public class CraftEventFactory { } public static BlockPos sourceBlockOverride = null; // SPIGOT-7068: Add source block override, not the most elegant way but better than passing down a BlockPos up to five methods deep. @@ -1571,7 +1571,7 @@ index b4ee0f809c1524c74eca74ee6bc471a3051d92a6..96177467807e75bacb8c7c11ba7263f8 public static boolean handleBlockSpreadEvent(LevelAccessor world, BlockPos source, BlockPos target, net.minecraft.world.level.block.state.BlockState state, int flags) { return handleBlockSpreadEvent(world, source, target, state, flags, false); -@@ -844,7 +866,10 @@ public class CraftEventFactory { +@@ -835,7 +857,10 @@ public class CraftEventFactory { CraftBlockState snapshot = CraftBlockStates.getBlockState(world, target); snapshot.setData(state); diff --git a/leaf-server/paper-patches/features/0048-Fish-Parallel-World-Ticking-API.patch b/leaf-server/paper-patches/features/0046-Fish-Parallel-World-Ticking-API.patch similarity index 83% rename from leaf-server/paper-patches/features/0048-Fish-Parallel-World-Ticking-API.patch rename to leaf-server/paper-patches/features/0046-Fish-Parallel-World-Ticking-API.patch index 5073aa6d..71777838 100644 --- a/leaf-server/paper-patches/features/0048-Fish-Parallel-World-Ticking-API.patch +++ b/leaf-server/paper-patches/features/0046-Fish-Parallel-World-Ticking-API.patch @@ -16,13 +16,13 @@ With this approach only new methods are added into already existing Bukkit API, get standarized. diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index dfafd3125438b6a74f15a749599acfd00918c50a..bcda5dd6fe3741518fea263b4790ea33bb9729cb 100644 +index 2a62cbd05fd41658b19a46ea2b5df483cdd33497..b78f6e56a993240fd2b329b64265c728631ca907 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -3366,4 +3366,11 @@ public final class CraftServer implements Server { - return photographerManager; +@@ -3134,4 +3134,11 @@ public final class CraftServer implements Server { + return MinecraftServer.lastTickOversleepTime; } - // Leaves end - replay mod api + // Gale end - YAPFA - last tick time - API + + // Fish start - Parallel World Ticking API + @Override @@ -32,10 +32,10 @@ index dfafd3125438b6a74f15a749599acfd00918c50a..bcda5dd6fe3741518fea263b4790ea33 + // Fish end - Parallel World Ticking API } diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index ee5f342995a335593932a497c2bafd36d34cecb2..a16390fc13e1baf3cffbcfec5cc410a72ed47367 100644 +index 01b8cf8474f4d80eca65bdb9f44f204110b10a1b..9df1110696fdd235b5664f8ddbf4a0ca74bd78e9 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -2556,4 +2556,15 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -2134,4 +2134,15 @@ public class CraftWorld extends CraftRegionAccessor implements World { return POINTERS_SUPPLIER.view(this); } // Paper end diff --git a/leaf-server/paper-patches/features/0049-Paper-PR-Throttle-failed-spawn-attempts.patch b/leaf-server/paper-patches/features/0047-Paper-PR-Throttle-failed-spawn-attempts.patch similarity index 100% rename from leaf-server/paper-patches/features/0049-Paper-PR-Throttle-failed-spawn-attempts.patch rename to leaf-server/paper-patches/features/0047-Paper-PR-Throttle-failed-spawn-attempts.patch diff --git a/leaf-server/paper-patches/features/0050-Async-playerdata-saving.patch b/leaf-server/paper-patches/features/0048-Async-playerdata-saving.patch similarity index 66% rename from leaf-server/paper-patches/features/0050-Async-playerdata-saving.patch rename to leaf-server/paper-patches/features/0048-Async-playerdata-saving.patch index 55473125..ce067ec4 100644 --- a/leaf-server/paper-patches/features/0050-Async-playerdata-saving.patch +++ b/leaf-server/paper-patches/features/0048-Async-playerdata-saving.patch @@ -5,19 +5,10 @@ Subject: [PATCH] Async playerdata saving diff --git a/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java b/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java -index f967560da343867fdc1c380a42874b0796633777..3b516f57854f6482b3748d0c3a037fdeacfe78ab 100644 +index cee3954179fd4a4d1ca3090a843c96676f9cc47b..15e27339f2c955c07878f13eeed51a6998f5a5bb 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftOfflinePlayer.java -@@ -200,7 +200,7 @@ public class CraftOfflinePlayer implements OfflinePlayer, ConfigurationSerializa - - private CompoundTag getData() { - // This method does not use the problem reporter -- return this.storage.load(this.profile.getName(), this.profile.getId().toString(), ProblemReporter.DISCARDING).orElse(null); -+ return this.storage.load(this.profile.getName(), this.profile.getId().toString(), this.profile.getId(), ProblemReporter.DISCARDING).orElse(null); // Leaf - Async playerdata saving - } - - private CompoundTag getBukkitData() { -@@ -750,16 +750,7 @@ public class CraftOfflinePlayer implements OfflinePlayer, ConfigurationSerializa +@@ -747,16 +747,7 @@ public class CraftOfflinePlayer implements OfflinePlayer, ConfigurationSerializa * @param compoundTag */ private void save(CompoundTag compoundTag) { diff --git a/leaf-server/paper-patches/features/0051-Async-chunk-sending.patch b/leaf-server/paper-patches/features/0049-Async-chunk-sending.patch similarity index 85% rename from leaf-server/paper-patches/features/0051-Async-chunk-sending.patch rename to leaf-server/paper-patches/features/0049-Async-chunk-sending.patch index 81ffdd8c..8d5c3bea 100644 --- a/leaf-server/paper-patches/features/0051-Async-chunk-sending.patch +++ b/leaf-server/paper-patches/features/0049-Async-chunk-sending.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Async chunk sending diff --git a/src/main/java/io/papermc/paper/antixray/ChunkPacketBlockControllerAntiXray.java b/src/main/java/io/papermc/paper/antixray/ChunkPacketBlockControllerAntiXray.java -index ca24f4cd7a50f0156d84e263c60f841cca95c669..e98a7edc4001d020d238a44a96fda00f389234eb 100644 +index 3f21d3f490985b7a905159b593c1ef4072f87e17..0d9e17b609929aa5ded4747b30601000cc63fd94 100644 --- a/src/main/java/io/papermc/paper/antixray/ChunkPacketBlockControllerAntiXray.java +++ b/src/main/java/io/papermc/paper/antixray/ChunkPacketBlockControllerAntiXray.java -@@ -185,7 +185,7 @@ public final class ChunkPacketBlockControllerAntiXray extends ChunkPacketBlockCo +@@ -186,7 +186,7 @@ public final class ChunkPacketBlockControllerAntiXray extends ChunkPacketBlockCo return; } diff --git a/leaf-server/paper-patches/features/0052-Optimise-player-movement-checks.patch b/leaf-server/paper-patches/features/0050-Optimise-player-movement-checks.patch similarity index 100% rename from leaf-server/paper-patches/features/0052-Optimise-player-movement-checks.patch rename to leaf-server/paper-patches/features/0050-Optimise-player-movement-checks.patch diff --git a/leaf-server/paper-patches/features/0053-optimise-ReferenceList.patch b/leaf-server/paper-patches/features/0051-optimise-ReferenceList.patch similarity index 100% rename from leaf-server/paper-patches/features/0053-optimise-ReferenceList.patch rename to leaf-server/paper-patches/features/0051-optimise-ReferenceList.patch diff --git a/leaf-server/paper-patches/features/0054-cache-getBiome.patch b/leaf-server/paper-patches/features/0052-cache-getBiome.patch similarity index 100% rename from leaf-server/paper-patches/features/0054-cache-getBiome.patch rename to leaf-server/paper-patches/features/0052-cache-getBiome.patch diff --git a/leaf-server/paper-patches/features/0055-dump-pwt-thread.patch b/leaf-server/paper-patches/features/0053-dump-pwt-thread.patch similarity index 95% rename from leaf-server/paper-patches/features/0055-dump-pwt-thread.patch rename to leaf-server/paper-patches/features/0053-dump-pwt-thread.patch index 2df07cf1..8db7de4d 100644 --- a/leaf-server/paper-patches/features/0055-dump-pwt-thread.patch +++ b/leaf-server/paper-patches/features/0053-dump-pwt-thread.patch @@ -5,7 +5,7 @@ Subject: [PATCH] dump pwt thread diff --git a/src/main/java/org/spigotmc/WatchdogThread.java b/src/main/java/org/spigotmc/WatchdogThread.java -index 79eae898539f71a73525ed29d8a752f65f5f67fa..e98279e78c9f5ddbd6dd0cdf48973453304b8e1c 100644 +index 3e8b43794dd3a57eafb4b9f2fc206ae60d3a0b82..c5ce5b1267c6605df8b5ded6c6893e33808b6755 100644 --- a/src/main/java/org/spigotmc/WatchdogThread.java +++ b/src/main/java/org/spigotmc/WatchdogThread.java @@ -124,6 +124,21 @@ public class WatchdogThread extends ca.spottedleaf.moonrise.common.util.TickThre diff --git a/leaf-server/paper-patches/features/0056-Paw-optimization.patch b/leaf-server/paper-patches/features/0054-Paw-optimization.patch similarity index 95% rename from leaf-server/paper-patches/features/0056-Paw-optimization.patch rename to leaf-server/paper-patches/features/0054-Paw-optimization.patch index 25d957c1..bc4265fb 100644 --- a/leaf-server/paper-patches/features/0056-Paw-optimization.patch +++ b/leaf-server/paper-patches/features/0054-Paw-optimization.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Paw optimization Some random optimizations diff --git a/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java b/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java -index 5aeda80229b14053bfb8a71a937efb6793fa229d..471ae6dfd6acada34ce732a7154c403f3e739c62 100644 +index c87e026f015e9b28df4325468bc7454cdf2bcbf1..368ee7ea426bec781000f30eb754208b7d104d8c 100644 --- a/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java +++ b/src/main/java/org/bukkit/craftbukkit/block/data/CraftBlockData.java @@ -244,13 +244,37 @@ public class CraftBlockData implements BlockData { diff --git a/leaf-server/paper-patches/features/0057-optimize-despawn.patch b/leaf-server/paper-patches/features/0055-optimize-despawn.patch similarity index 100% rename from leaf-server/paper-patches/features/0057-optimize-despawn.patch rename to leaf-server/paper-patches/features/0055-optimize-despawn.patch diff --git a/leaf-server/paper-patches/features/0058-optimize-mob-spawning.patch b/leaf-server/paper-patches/features/0056-optimize-mob-spawning.patch similarity index 88% rename from leaf-server/paper-patches/features/0058-optimize-mob-spawning.patch rename to leaf-server/paper-patches/features/0056-optimize-mob-spawning.patch index e18822f1..0a52dc26 100644 --- a/leaf-server/paper-patches/features/0058-optimize-mob-spawning.patch +++ b/leaf-server/paper-patches/features/0056-optimize-mob-spawning.patch @@ -5,10 +5,10 @@ Subject: [PATCH] optimize mob spawning diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index dfafd3125438b6a74f15a749599acfd00918c50a..034d136bcaa894d8999fc51a53d66b40bb884ccd 100644 +index b78f6e56a993240fd2b329b64265c728631ca907..8c27cf7144ca27e6a4a5df0076cecb08a233afcf 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -296,7 +296,8 @@ public final class CraftServer implements Server { +@@ -285,7 +285,8 @@ public final class CraftServer implements Server { private final EntityMetadataStore entityMetadata = new EntityMetadataStore(); private final PlayerMetadataStore playerMetadata = new PlayerMetadataStore(); private final WorldMetadataStore worldMetadata = new WorldMetadataStore(); @@ -18,7 +18,7 @@ index dfafd3125438b6a74f15a749599acfd00918c50a..034d136bcaa894d8999fc51a53d66b40 private File container; private WarningState warningState = WarningState.DEFAULT; public ApiVersion minimumAPI; -@@ -497,6 +498,7 @@ public final class CraftServer implements Server { +@@ -483,6 +484,7 @@ public final class CraftServer implements Server { this.saveCommandsConfig(); this.overrideAllCommandBlockCommands = this.commandsConfiguration.getStringList("command-block-overrides").contains("*"); this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions"); @@ -26,7 +26,7 @@ index dfafd3125438b6a74f15a749599acfd00918c50a..034d136bcaa894d8999fc51a53d66b40 this.overrideSpawnLimits(); console.autosavePeriod = this.configuration.getInt("ticks-per.autosave"); this.warningState = WarningState.value(this.configuration.getString("settings.deprecated-verbose")); -@@ -529,9 +531,9 @@ public final class CraftServer implements Server { +@@ -514,9 +516,9 @@ public final class CraftServer implements Server { } private void overrideSpawnLimits() { @@ -38,7 +38,7 @@ index dfafd3125438b6a74f15a749599acfd00918c50a..034d136bcaa894d8999fc51a53d66b40 } } } -@@ -2544,7 +2546,7 @@ public final class CraftServer implements Server { +@@ -2384,7 +2386,7 @@ public final class CraftServer implements Server { } public int getSpawnLimitUnsafe(final SpawnCategory spawnCategory) { @@ -48,12 +48,12 @@ index dfafd3125438b6a74f15a749599acfd00918c50a..034d136bcaa894d8999fc51a53d66b40 @Override diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index ee5f342995a335593932a497c2bafd36d34cecb2..2523cd17ad4a3add3a9a420777dc49fe0658fe01 100644 +index 9df1110696fdd235b5664f8ddbf4a0ca74bd78e9..b32d80d07fc8542ea7b3a2c0db68618fce08e7d9 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -173,7 +173,8 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -174,7 +174,8 @@ public class CraftWorld extends CraftRegionAccessor implements World { private final @Nullable BiomeProvider biomeProvider; - private final List populators = new ArrayList(); + private final List populators = new ArrayList<>(); private final BlockMetadataStore blockMetadata = new BlockMetadataStore(this); - private final Object2IntOpenHashMap spawnCategoryLimit = new Object2IntOpenHashMap<>(); + private static final SpawnCategory[] SPAWN_CATEGORIES = SpawnCategory.values(); // Leaf - optimize mob spawning @@ -61,7 +61,7 @@ index ee5f342995a335593932a497c2bafd36d34cecb2..2523cd17ad4a3add3a9a420777dc49fe private final CraftPersistentDataContainer persistentDataContainer = new CraftPersistentDataContainer(CraftWorld.DATA_TYPE_REGISTRY); // Paper start - void damage configuration private boolean voidDamageEnabled; -@@ -303,8 +304,9 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -304,8 +305,9 @@ public class CraftWorld extends CraftRegionAccessor implements World { this.biomeProvider = biomeProvider; this.environment = environment; @@ -72,16 +72,16 @@ index ee5f342995a335593932a497c2bafd36d34cecb2..2523cd17ad4a3add3a9a420777dc49fe if (CraftSpawnCategory.isValidForLimits(spawnCategory)) { setSpawnLimit(spawnCategory, this.world.paperConfig().entities.spawning.spawnLimits.getInt(CraftSpawnCategory.toNMS(spawnCategory))); } -@@ -1868,7 +1870,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { - return this.getSpawnLimitUnsafe(spawnCategory); +@@ -1543,7 +1545,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { } + public final int getSpawnLimitUnsafe(final SpawnCategory spawnCategory) { - int limit = this.spawnCategoryLimit.getOrDefault(spawnCategory, -1); + int limit = this.spawnCategoryLimit[spawnCategory.ordinal()]; // Leaf - optimize mob spawning if (limit < 0) { limit = this.server.getSpawnLimitUnsafe(spawnCategory); - // Paper end - Add mobcaps commands -@@ -1881,7 +1883,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { + } +@@ -1555,7 +1557,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { Preconditions.checkArgument(spawnCategory != null, "SpawnCategory cannot be null"); Preconditions.checkArgument(CraftSpawnCategory.isValidForLimits(spawnCategory), "SpawnCategory.%s are not supported", spawnCategory); diff --git a/leaf-server/paper-patches/features/0059-Toggleable-async-catcher.patch b/leaf-server/paper-patches/features/0057-Toggleable-async-catcher.patch similarity index 91% rename from leaf-server/paper-patches/features/0059-Toggleable-async-catcher.patch rename to leaf-server/paper-patches/features/0057-Toggleable-async-catcher.patch index 9ea9e1a9..69e74b28 100644 --- a/leaf-server/paper-patches/features/0059-Toggleable-async-catcher.patch +++ b/leaf-server/paper-patches/features/0057-Toggleable-async-catcher.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Toggleable async catcher diff --git a/src/main/java/org/spigotmc/AsyncCatcher.java b/src/main/java/org/spigotmc/AsyncCatcher.java -index 7e7a0ed944961af5ab7a49bc659da2862d2e2c82..e584205c3e1412bf2f2c4e4eb114a29cebc73fad 100644 +index 7e7a0ed944961af5ab7a49bc659da2862d2e2c82..2522890b326c21434e10b90c774efbc8590117b3 100644 --- a/src/main/java/org/spigotmc/AsyncCatcher.java +++ b/src/main/java/org/spigotmc/AsyncCatcher.java @@ -5,6 +5,7 @@ import net.minecraft.server.MinecraftServer; diff --git a/leaf-server/paper-patches/features/0061-Bump-netty-to-4.2.x.patch b/leaf-server/paper-patches/features/0058-Bump-netty-to-4.2.x.patch similarity index 91% rename from leaf-server/paper-patches/features/0061-Bump-netty-to-4.2.x.patch rename to leaf-server/paper-patches/features/0058-Bump-netty-to-4.2.x.patch index 76d99453..855ea5d3 100644 --- a/leaf-server/paper-patches/features/0061-Bump-netty-to-4.2.x.patch +++ b/leaf-server/paper-patches/features/0058-Bump-netty-to-4.2.x.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Bump netty to 4.2.x diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java -index 748bd9650da4a209743b7a5dde584b2e19c5a578..3e972dc2160f953daaa727c2305ec71eed7981a5 100644 +index 7e99752be20868606ab31b9db831c9940f970c9b..56aeb7cd25832616d58c93eeec586f88f4937014 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java @@ -21,6 +21,14 @@ public class Main { diff --git a/leaf-server/src/main/java/org/galemc/gale/configuration/GaleGlobalConfiguration.java b/leaf-server/src/main/java/org/galemc/gale/configuration/GaleGlobalConfiguration.java index 6588ab85..21c99ba0 100644 --- a/leaf-server/src/main/java/org/galemc/gale/configuration/GaleGlobalConfiguration.java +++ b/leaf-server/src/main/java/org/galemc/gale/configuration/GaleGlobalConfiguration.java @@ -41,7 +41,7 @@ public class GaleGlobalConfiguration extends ConfigurationPart { @PostProcess public void postProcess() { - net.minecraft.world.entity.player.Player.increaseTimeStatisticsInterval = Math.max(1, increaseTimeStatistics); // Gale - Hydrinity - increase time statistics in intervals - store as static field for fast access + net.minecraft.server.level.ServerPlayer.increaseTimeStatisticsInterval = Math.max(1, increaseTimeStatistics); // Gale - Hydrinity - increase time statistics in intervals - store as static field for fast access } }