From 36bb62600459a5561dfcf3159c1544797bc16a94 Mon Sep 17 00:00:00 2001 From: Dreeam <61569423+Dreeam-qwq@users.noreply.github.com> Date: Fri, 21 Jun 2024 22:15:52 +0800 Subject: [PATCH] Some server patches work --- ...s.patch => 0029-Leaves-Server-Utils.patch} | 10 ++-- ....patch => 0030-Leaves-Protocol-Core.patch} | 31 +++++++------ ....patch => 0031-Leaves-Jade-Protocol.patch} | 24 +++++----- ...h => 0032-Leaves-Appleskin-Protocol.patch} | 4 +- ...h => 0033-Leaves-Xaero-Map-Protocol.patch} | 10 ++-- ...l.patch => 0034-Chat-Image-protocol.patch} | 4 +- ...l.patch => 0035-Asteor-Bar-protocol.patch} | 4 +- ...ves-Disable-moved-wrongly-threshold.patch} | 10 ++-- ...dom-for-xaeroMapServerID-generation.patch} | 0 ...tch => 0038-Petal-Async-Pathfinding.patch} | 44 +++++++++--------- ...duce-work-done-by-game-event-system.patch} | 18 ++++---- ...> 0040-Optimize-Minecart-collisions.patch} | 25 +++++----- ...rk.patch => 0041-Reduce-canSee-work.patch} | 8 ++-- ...tch => 0042-Faster-Natural-Spawning.patch} | 24 +++++----- ...tch.patch => 0043-Fix-sprint-glitch.patch} | 4 +- ...ble-movement-speed-of-more-entities.patch} | 40 ++++++++-------- ...-of-futures-for-chunk-structure-gen.patch} | 10 ++-- ...e-items-finding-hopper-nearby-check.patch} | 6 +-- ...e-missing-Pufferfish-configurations.patch} | 8 ++-- ...issing-purpur-configuration-options.patch} | 46 +++++++++---------- ... => 0049-Skip-event-if-no-listeners.patch} | 4 +- ...-Rewrite-framed-map-tracker-ticking.patch} | 30 ++++++------ ...-distanceToSqr-call-in-ServerEntity.patch} | 13 +++--- ...-MapItem-update-if-the-map-does-not.patch} | 0 ...-EntityScheduler-s-executeTick-chec.patch} | 23 +++++----- ...SparklyPaper-Optimize-canSee-checks.patch} | 10 ++-- ...g-and-snowball-can-knockback-player.patch} | 4 +- ...getProfiler-in-PathNavigationRegion.patch} | 0 ...-Fix-vehicle-teleport-by-end-gateway.patch | 0 .../0041-Petal-Multithreaded-Tracker.patch | 0 ...he-coordinate-key-used-for-nearby-pl.patch | 0 ...-s-method-to-fix-plugin-incompatibil.patch | 0 32 files changed, 209 insertions(+), 205 deletions(-) rename patches/server/{0030-Leaves-Server-Utils.patch => 0029-Leaves-Server-Utils.patch} (86%) rename patches/server/{0031-Leaves-Protocol-Core.patch => 0030-Leaves-Protocol-Core.patch} (96%) rename patches/server/{0032-Leaves-Jade-Protocol.patch => 0031-Leaves-Jade-Protocol.patch} (99%) rename patches/server/{0033-Leaves-Appleskin-Protocol.patch => 0032-Leaves-Appleskin-Protocol.patch} (97%) rename patches/server/{0034-Leaves-Xaero-Map-Protocol.patch => 0033-Leaves-Xaero-Map-Protocol.patch} (91%) rename patches/server/{0035-Chat-Image-protocol.patch => 0034-Chat-Image-protocol.patch} (98%) rename patches/server/{0036-Asteor-Bar-protocol.patch => 0035-Asteor-Bar-protocol.patch} (97%) rename patches/server/{0037-Leaves-Disable-moved-wrongly-threshold.patch => 0036-Leaves-Disable-moved-wrongly-threshold.patch} (93%) rename patches/server/{0039-Faster-Random-for-xaeroMapServerID-generation.patch => 0037-Faster-Random-for-xaeroMapServerID-generation.patch} (100%) rename patches/server/{0040-Petal-Async-Pathfinding.patch => 0038-Petal-Async-Pathfinding.patch} (96%) rename patches/server/{0042-Petal-reduce-work-done-by-game-event-system.patch => 0039-Petal-reduce-work-done-by-game-event-system.patch} (93%) rename patches/server/{0043-Optimize-Minecart-collisions.patch => 0040-Optimize-Minecart-collisions.patch} (87%) rename patches/server/{0044-Reduce-canSee-work.patch => 0041-Reduce-canSee-work.patch} (87%) rename patches/server/{0045-Faster-Natural-Spawning.patch => 0042-Faster-Natural-Spawning.patch} (74%) rename patches/server/{0046-Fix-sprint-glitch.patch => 0043-Fix-sprint-glitch.patch} (84%) rename patches/server/{0047-Configurable-movement-speed-of-more-entities.patch => 0044-Configurable-movement-speed-of-more-entities.patch} (89%) rename patches/server/{0048-Faster-sequencing-of-futures-for-chunk-structure-gen.patch => 0045-Faster-sequencing-of-futures-for-chunk-structure-gen.patch} (93%) rename patches/server/{0049-Reduce-items-finding-hopper-nearby-check.patch => 0046-Reduce-items-finding-hopper-nearby-check.patch} (91%) rename patches/server/{0050-Plazma-Add-some-missing-Pufferfish-configurations.patch => 0047-Plazma-Add-some-missing-Pufferfish-configurations.patch} (90%) rename patches/server/{0051-Plazma-Add-missing-purpur-configuration-options.patch => 0048-Plazma-Add-missing-purpur-configuration-options.patch} (91%) rename patches/server/{0052-Skip-event-if-no-listeners.patch => 0049-Skip-event-if-no-listeners.patch} (91%) rename patches/server/{0053-PaperPR-Rewrite-framed-map-tracker-ticking.patch => 0050-PaperPR-Rewrite-framed-map-tracker-ticking.patch} (93%) rename patches/server/{0054-SparklyPaper-Skip-distanceToSqr-call-in-ServerEntity.patch => 0051-SparklyPaper-Skip-distanceToSqr-call-in-ServerEntity.patch} (69%) rename patches/server/{0055-SparklyPaper-Skip-MapItem-update-if-the-map-does-not.patch => 0052-SparklyPaper-Skip-MapItem-update-if-the-map-does-not.patch} (100%) rename patches/server/{0056-SparklyPaper-Skip-EntityScheduler-s-executeTick-chec.patch => 0053-SparklyPaper-Skip-EntityScheduler-s-executeTick-chec.patch} (89%) rename patches/server/{0058-SparklyPaper-Optimize-canSee-checks.patch => 0054-SparklyPaper-Optimize-canSee-checks.patch} (91%) rename patches/server/{0059-Polpot-Make-egg-and-snowball-can-knockback-player.patch => 0055-Polpot-Make-egg-and-snowball-can-knockback-player.patch} (96%) rename patches/server/{0060-Redirect-vanilla-getProfiler-in-PathNavigationRegion.patch => 0056-Redirect-vanilla-getProfiler-in-PathNavigationRegion.patch} (100%) rename patches/{ => work}/server/0038-Leaves-Fix-vehicle-teleport-by-end-gateway.patch (100%) rename patches/{ => work}/server/0041-Petal-Multithreaded-Tracker.patch (100%) rename patches/{ => work}/server/0057-SparklyPaper-Cache-coordinate-key-used-for-nearby-pl.patch (100%) rename patches/{unapplied => work}/server/0063-Redirect-to-Gale-s-method-to-fix-plugin-incompatibil.patch (100%) diff --git a/patches/server/0030-Leaves-Server-Utils.patch b/patches/server/0029-Leaves-Server-Utils.patch similarity index 86% rename from patches/server/0030-Leaves-Server-Utils.patch rename to patches/server/0029-Leaves-Server-Utils.patch index 006cda3d..4e51624a 100644 --- a/patches/server/0030-Leaves-Server-Utils.patch +++ b/patches/server/0029-Leaves-Server-Utils.patch @@ -9,10 +9,10 @@ Original project: https://github.com/LeavesMC/Leaves Commit: e234432bd99e1c4b07c24d1dd247977226a7516a diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 0fafe65e9f0ee85469d80a1033078b20a7abbfcf..fd937544baae6835e1826a686676dcbfa58aca33 100644 +index 43b13836406ac6a7f26317f029225e6b2c9f2ea8..a8c7a433043ae670a34764ab3947b11b2fbf1671 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -430,6 +430,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -434,6 +434,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess public boolean activatedPriorityReset = false; // Pufferfish - DAB public int activatedPriority = org.dreeam.leaf.config.modules.opt.DynamicActivationofBrain.maximumActivationPrio; // Pufferfish - DAB (golf score) public @Nullable Boolean immuneToFire = null; // Purpur - Fire immune API @@ -20,7 +20,7 @@ index 0fafe65e9f0ee85469d80a1033078b20a7abbfcf..fd937544baae6835e1826a686676dcbf public void setOrigin(@javax.annotation.Nonnull Location location) { this.origin = location.toVector(); -@@ -2626,6 +2627,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -2528,6 +2529,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess nbttagcompound.putBoolean("Purpur.FireImmune", immuneToFire); } // Purpur end @@ -28,7 +28,7 @@ index 0fafe65e9f0ee85469d80a1033078b20a7abbfcf..fd937544baae6835e1826a686676dcbf return nbttagcompound; } catch (Throwable throwable) { CrashReport crashreport = CrashReport.forThrowable(throwable, "Saving entity NBT"); -@@ -2778,6 +2780,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -2680,6 +2682,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess immuneToFire = nbt.getBoolean("Purpur.FireImmune"); } // Purpur end @@ -40,7 +40,7 @@ index 0fafe65e9f0ee85469d80a1033078b20a7abbfcf..fd937544baae6835e1826a686676dcbf } catch (Throwable throwable) { CrashReport crashreport = CrashReport.forThrowable(throwable, "Loading entity NBT"); -@@ -5222,4 +5229,10 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -5050,4 +5057,10 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return false; } // Purpur end diff --git a/patches/server/0031-Leaves-Protocol-Core.patch b/patches/server/0030-Leaves-Protocol-Core.patch similarity index 96% rename from patches/server/0031-Leaves-Protocol-Core.patch rename to patches/server/0030-Leaves-Protocol-Core.patch index 559a58a5..4dc994fd 100644 --- a/patches/server/0031-Leaves-Protocol-Core.patch +++ b/patches/server/0030-Leaves-Protocol-Core.patch @@ -11,7 +11,7 @@ Original project: https://github.com/LeavesMC/Leaves Commit: e234432bd99e1c4b07c24d1dd247977226a7516a diff --git a/src/main/java/net/minecraft/network/protocol/common/custom/CustomPacketPayload.java b/src/main/java/net/minecraft/network/protocol/common/custom/CustomPacketPayload.java -index 663b3b12d9a7cdc04b7f86ccfe6bc6fcfd5028bc..a58ad6f41fc0eacf020e9ab6c8e5f7dfc4977f8d 100644 +index a4f9de18d40d5d85a809af3777b00eb75b1af027..b2048639f652cb16358901052af0c6c68ebf7716 100644 --- a/src/main/java/net/minecraft/network/protocol/common/custom/CustomPacketPayload.java +++ b/src/main/java/net/minecraft/network/protocol/common/custom/CustomPacketPayload.java @@ -40,13 +40,23 @@ public interface CustomPacketPayload { @@ -40,10 +40,10 @@ index 663b3b12d9a7cdc04b7f86ccfe6bc6fcfd5028bc..a58ad6f41fc0eacf020e9ab6c8e5f7df }; } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 03a787c9bafee3a6b300703cf05a6a65bd4e9c03..3e150865ba40413a9caf5e92cd6c4d60debb59da 100644 +index 0eac388d53d65d6dbd6900040be4d661cc799765..3d6be33c3310da2bfacba887e8ba12840d2f811c 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1785,6 +1785,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop payload) { + if (payload instanceof ErrorPayload errorPayload) { -+ player.connection.disconnect("Payload " + Arrays.toString(errorPayload.packetID) + " from " + Arrays.toString(errorPayload.protocolID) + " error", PlayerKickEvent.Cause.INVALID_PAYLOAD); ++ player.connection.disconnect(Component.text("Payload " + Arrays.toString(errorPayload.packetID) + " from " + Arrays.toString(errorPayload.protocolID) + " error"), PlayerKickEvent.Cause.INVALID_PAYLOAD); + return; + } + diff --git a/patches/server/0032-Leaves-Jade-Protocol.patch b/patches/server/0031-Leaves-Jade-Protocol.patch similarity index 99% rename from patches/server/0032-Leaves-Jade-Protocol.patch rename to patches/server/0031-Leaves-Jade-Protocol.patch index 45eb4d5b..9680c6e6 100644 --- a/patches/server/0032-Leaves-Jade-Protocol.patch +++ b/patches/server/0031-Leaves-Jade-Protocol.patch @@ -11,10 +11,10 @@ Commit: e234432bd99e1c4b07c24d1dd247977226a7516a This patch is Powered by Jade (https://github.com/Snownee/Jade) diff --git a/src/main/java/net/minecraft/world/entity/animal/armadillo/Armadillo.java b/src/main/java/net/minecraft/world/entity/animal/armadillo/Armadillo.java -index 063dde771ade593a29481f14b8f44a0f72f15953..877fe6312051f2669360b85c0caded7b47f04866 100644 +index 7c7b063b0b563716757294792653a705fe7436f9..0d85300632c6476152e6c1072f84cb75d38dea77 100644 --- a/src/main/java/net/minecraft/world/entity/animal/armadillo/Armadillo.java +++ b/src/main/java/net/minecraft/world/entity/animal/armadillo/Armadillo.java -@@ -58,7 +58,7 @@ public class Armadillo extends Animal { +@@ -59,7 +59,7 @@ public class Armadillo extends Animal { public final AnimationState rollOutAnimationState = new AnimationState(); public final AnimationState rollUpAnimationState = new AnimationState(); public final AnimationState peekAnimationState = new AnimationState(); @@ -24,10 +24,10 @@ index 063dde771ade593a29481f14b8f44a0f72f15953..877fe6312051f2669360b85c0caded7b public Armadillo(EntityType type, Level world) { diff --git a/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java b/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java -index e6861fd5f9817ec54294976f0e93952baa387773..45f92d8fd06027f1487e24987c3fb9a389f619a9 100644 +index c51637514bf671c08dbe4e5ac55566b92b5876f9..5addd3243dd63041442f2a6bcf92a2128e4242c1 100644 --- a/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java +++ b/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java -@@ -290,7 +290,7 @@ public class Tadpole extends AbstractFish { +@@ -291,7 +291,7 @@ public class Tadpole extends AbstractFish { } @@ -37,10 +37,10 @@ index e6861fd5f9817ec54294976f0e93952baa387773..45f92d8fd06027f1487e24987c3fb9a3 } diff --git a/src/main/java/net/minecraft/world/level/block/entity/trialspawner/TrialSpawnerData.java b/src/main/java/net/minecraft/world/level/block/entity/trialspawner/TrialSpawnerData.java -index fca0131b9a90ac026a24cf579b17928c19173f3f..f8d0a8ea39cd90a9b45ff97e32e0e7224ddd8808 100644 +index 055f4b87c01ee7ecf7d2a111b72cc5aa85d9fbe8..5d9030f4787a43c56ae9455180badd5658dea35b 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/trialspawner/TrialSpawnerData.java +++ b/src/main/java/net/minecraft/world/level/block/entity/trialspawner/TrialSpawnerData.java -@@ -68,7 +68,7 @@ public class TrialSpawnerData { +@@ -72,7 +72,7 @@ public class TrialSpawnerData { }); public final Set detectedPlayers; public final Set currentMobs; @@ -62,10 +62,10 @@ index c852b3a8d31bc73d32aef215e4d3a82aa1fd8f19..b63d87d0593d116b0c5ee835dc4372f1 + public static boolean jadeProtocol = false; } diff --git a/src/main/java/org/leavesmc/leaves/protocol/core/LeavesProtocolManager.java b/src/main/java/org/leavesmc/leaves/protocol/core/LeavesProtocolManager.java -index 2356bb3bc68d2a33329b7c4a41b48f1a52576ccb..25dc0a249d47d20d52fa279cb03acfa0181885e2 100644 +index 09b27b164e0ffb37ae75f94c9d5dd5ff2a83e372..12345854c2cc338909cc52f28c18c2c926f318d4 100644 --- a/src/main/java/org/leavesmc/leaves/protocol/core/LeavesProtocolManager.java +++ b/src/main/java/org/leavesmc/leaves/protocol/core/LeavesProtocolManager.java -@@ -34,7 +34,7 @@ import java.util.jar.JarFile; +@@ -35,7 +35,7 @@ import java.util.jar.JarFile; public class LeavesProtocolManager { @@ -76,7 +76,7 @@ index 2356bb3bc68d2a33329b7c4a41b48f1a52576ccb..25dc0a249d47d20d52fa279cb03acfa0 private static final Map> KNOW_RECEIVERS = new HashMap<>(); diff --git a/src/main/java/org/leavesmc/leaves/protocol/jade/JadeProtocol.java b/src/main/java/org/leavesmc/leaves/protocol/jade/JadeProtocol.java new file mode 100644 -index 0000000000000000000000000000000000000000..f3347bea49b80621b6f69b0e0aac63cf55db6b3e +index 0000000000000000000000000000000000000000..ff9dbddfab5f2879bfeba2b425ee6b831a720461 --- /dev/null +++ b/src/main/java/org/leavesmc/leaves/protocol/jade/JadeProtocol.java @@ -0,0 +1,343 @@ @@ -185,12 +185,12 @@ index 0000000000000000000000000000000000000000..f3347bea49b80621b6f69b0e0aac63cf + + @Contract("_ -> new") + public static @NotNull ResourceLocation id(String path) { -+ return new ResourceLocation(PROTOCOL_ID, path); ++ return ResourceLocation.fromNamespaceAndPath(PROTOCOL_ID, path); + } + + @Contract("_ -> new") + public static @NotNull ResourceLocation mc_id(String path) { -+ return new ResourceLocation(path); ++ return ResourceLocation.withDefaultNamespace(path); + } + + private static boolean isPrimaryKey(ResourceLocation key) { @@ -198,7 +198,7 @@ index 0000000000000000000000000000000000000000..f3347bea49b80621b6f69b0e0aac63cf + } + + private static ResourceLocation getPrimaryKey(ResourceLocation key) { -+ return new ResourceLocation(key.getNamespace(), key.getPath().substring(0, key.getPath().indexOf('.'))); ++ return ResourceLocation.fromNamespaceAndPath(key.getNamespace(), key.getPath().substring(0, key.getPath().indexOf('.'))); + } + + @ProtocolHandler.Init diff --git a/patches/server/0033-Leaves-Appleskin-Protocol.patch b/patches/server/0032-Leaves-Appleskin-Protocol.patch similarity index 97% rename from patches/server/0033-Leaves-Appleskin-Protocol.patch rename to patches/server/0032-Leaves-Appleskin-Protocol.patch index 698fcdc1..60cf310e 100644 --- a/patches/server/0033-Leaves-Appleskin-Protocol.patch +++ b/patches/server/0032-Leaves-Appleskin-Protocol.patch @@ -24,7 +24,7 @@ index b63d87d0593d116b0c5ee835dc4372f1b5542453..ef23577faaf7948d7a9b1def4d56506e } diff --git a/src/main/java/org/leavesmc/leaves/protocol/AppleSkinProtocol.java b/src/main/java/org/leavesmc/leaves/protocol/AppleSkinProtocol.java new file mode 100644 -index 0000000000000000000000000000000000000000..c496c97c99cd352c2566731d3017cf1b14ee74ec +index 0000000000000000000000000000000000000000..2580d188b6b5213bb906b487052b9e5fd8153696 --- /dev/null +++ b/src/main/java/org/leavesmc/leaves/protocol/AppleSkinProtocol.java @@ -0,0 +1,105 @@ @@ -63,7 +63,7 @@ index 0000000000000000000000000000000000000000..c496c97c99cd352c2566731d3017cf1b + + @Contract("_ -> new") + public static @NotNull ResourceLocation id(String path) { -+ return new ResourceLocation(PROTOCOL_ID, path); ++ return ResourceLocation.fromNamespaceAndPath(PROTOCOL_ID, path); + } + + @ProtocolHandler.PlayerJoin diff --git a/patches/server/0034-Leaves-Xaero-Map-Protocol.patch b/patches/server/0033-Leaves-Xaero-Map-Protocol.patch similarity index 91% rename from patches/server/0034-Leaves-Xaero-Map-Protocol.patch rename to patches/server/0033-Leaves-Xaero-Map-Protocol.patch index b4bdf563..78dcd81d 100644 --- a/patches/server/0034-Leaves-Xaero-Map-Protocol.patch +++ b/patches/server/0033-Leaves-Xaero-Map-Protocol.patch @@ -11,10 +11,10 @@ Commit: e234432bd99e1c4b07c24d1dd247977226a7516a This patch is Powered by Xaero Map diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 0d65a53b23c82cbc4539afd28c52b5fd2d2ff5b4..c410f781371a87ecc2849144c747a6ac3182a65a 100644 +index 44abb103462dc5a2718b3112e94342c39dead554..5075e22ae84191b3d94ce7a8bcbf0ef7735e7f28 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -1376,6 +1376,7 @@ public abstract class PlayerList { +@@ -1314,6 +1314,7 @@ public abstract class PlayerList { player.connection.send(new ClientboundInitializeBorderPacket(worldborder)); player.connection.send(new ClientboundSetTimePacket(world.getGameTime(), world.getDayTime(), world.getGameRules().getBoolean(GameRules.RULE_DAYLIGHT))); player.connection.send(new ClientboundSetDefaultSpawnPositionPacket(world.getSharedSpawnPos(), world.getSharedSpawnAngle())); @@ -47,7 +47,7 @@ index ef23577faaf7948d7a9b1def4d56506eab19cc80..c9736e79387d785a67d6ebe71df6553e } diff --git a/src/main/java/org/leavesmc/leaves/protocol/XaeroMapProtocol.java b/src/main/java/org/leavesmc/leaves/protocol/XaeroMapProtocol.java new file mode 100644 -index 0000000000000000000000000000000000000000..9e35dfaf8bb5511b4cd0a71175d7ecb6d835042f +index 0000000000000000000000000000000000000000..22f6e492232d31bbe861d5747af8aa5bdbb96112 --- /dev/null +++ b/src/main/java/org/leavesmc/leaves/protocol/XaeroMapProtocol.java @@ -0,0 +1,41 @@ @@ -71,12 +71,12 @@ index 0000000000000000000000000000000000000000..9e35dfaf8bb5511b4cd0a71175d7ecb6 + + @Contract("_ -> new") + public static @NotNull ResourceLocation idMini(String path) { -+ return new ResourceLocation(PROTOCOL_ID_MINI, path); ++ return ResourceLocation.fromNamespaceAndPath(PROTOCOL_ID_MINI, path); + } + + @Contract("_ -> new") + public static @NotNull ResourceLocation idWorld(String path) { -+ return new ResourceLocation(PROTOCOL_ID_WORLD, path); ++ return ResourceLocation.fromNamespaceAndPath(PROTOCOL_ID_WORLD, path); + } + + public static void onSendWorldInfo(@NotNull ServerPlayer player) { diff --git a/patches/server/0035-Chat-Image-protocol.patch b/patches/server/0034-Chat-Image-protocol.patch similarity index 98% rename from patches/server/0035-Chat-Image-protocol.patch rename to patches/server/0034-Chat-Image-protocol.patch index 5446557e..47836582 100644 --- a/patches/server/0035-Chat-Image-protocol.patch +++ b/patches/server/0034-Chat-Image-protocol.patch @@ -21,7 +21,7 @@ index c9736e79387d785a67d6ebe71df6553eeaf2b41d..53ae1ecb7acf8e9d8b9b1c50d5a48300 @ConfigInfo(baseName = "xaero-map-server-id") diff --git a/src/main/java/org/leavesmc/leaves/protocol/ChatImageProtocol.java b/src/main/java/org/leavesmc/leaves/protocol/ChatImageProtocol.java new file mode 100644 -index 0000000000000000000000000000000000000000..1b829e73e2e000219fb4b44f78ec3f6a1c2824c7 +index 0000000000000000000000000000000000000000..87ffe8a81a8bab7d20ff9551b105487d47616ee1 --- /dev/null +++ b/src/main/java/org/leavesmc/leaves/protocol/ChatImageProtocol.java @@ -0,0 +1,160 @@ @@ -177,7 +177,7 @@ index 0000000000000000000000000000000000000000..1b829e73e2e000219fb4b44f78ec3f6a + + @Contract("_ -> new") + public static @NotNull ResourceLocation id(String path) { -+ return new ResourceLocation(PROTOCOL_ID, path); ++ return ResourceLocation.fromNamespaceAndPath(PROTOCOL_ID, path); + } + + public static void sendToPlayer(CustomPacketPayload payload, ServerPlayer player) { diff --git a/patches/server/0036-Asteor-Bar-protocol.patch b/patches/server/0035-Asteor-Bar-protocol.patch similarity index 97% rename from patches/server/0036-Asteor-Bar-protocol.patch rename to patches/server/0035-Asteor-Bar-protocol.patch index 31a5b667..3f85fb3c 100644 --- a/patches/server/0036-Asteor-Bar-protocol.patch +++ b/patches/server/0035-Asteor-Bar-protocol.patch @@ -21,7 +21,7 @@ index 53ae1ecb7acf8e9d8b9b1c50d5a483008b303a66..b91f0ae28f044ceed0b9db46669a4cca diff --git a/src/main/java/org/leavesmc/leaves/protocol/AsteorBarProtocol.java b/src/main/java/org/leavesmc/leaves/protocol/AsteorBarProtocol.java new file mode 100644 -index 0000000000000000000000000000000000000000..f2a9cc78796587862dd4ec57e377e1788497071d +index 0000000000000000000000000000000000000000..ed8d9888a24d3ae6cf8fe2f8b269554102e451df --- /dev/null +++ b/src/main/java/org/leavesmc/leaves/protocol/AsteorBarProtocol.java @@ -0,0 +1,106 @@ @@ -59,7 +59,7 @@ index 0000000000000000000000000000000000000000..f2a9cc78796587862dd4ec57e377e178 + + @Contract("_ -> new") + public static @NotNull ResourceLocation id(String path) { -+ return new ResourceLocation(PROTOCOL_ID, path); ++ return ResourceLocation.fromNamespaceAndPath(PROTOCOL_ID, path); + } + + @ProtocolHandler.PlayerJoin diff --git a/patches/server/0037-Leaves-Disable-moved-wrongly-threshold.patch b/patches/server/0036-Leaves-Disable-moved-wrongly-threshold.patch similarity index 93% rename from patches/server/0037-Leaves-Disable-moved-wrongly-threshold.patch rename to patches/server/0036-Leaves-Disable-moved-wrongly-threshold.patch index 822c9b2c..322fad09 100644 --- a/patches/server/0037-Leaves-Disable-moved-wrongly-threshold.patch +++ b/patches/server/0036-Leaves-Disable-moved-wrongly-threshold.patch @@ -9,10 +9,10 @@ Original project: https://github.com/LeavesMC/Leaves Commit: e234432bd99e1c4b07c24d1dd247977226a7516a diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 2461fdfe02dc2252178e442f54ef4f584ba75cf8..a0abb0182aa6166b1d2702aa9964132889dc9d86 100644 +index c5fa77c350ddab425577659e434df2e0c9878af5..96db8bf0d5c3524a0e010dcdf098dba19f160f95 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -589,7 +589,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -590,7 +590,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl } // Paper end - Prevent moving into unloaded chunks @@ -27,10 +27,10 @@ index 2461fdfe02dc2252178e442f54ef4f584ba75cf8..a0abb0182aa6166b1d2702aa99641328 - if (d10 > org.spigotmc.SpigotConfig.movedWronglyThreshold) { // Spigot + if (!org.dreeam.leaf.config.modules.gameplay.DisableMovedWronglyThreshold.enabled && d10 > org.spigotmc.SpigotConfig.movedWronglyThreshold) { // Spigot // Leaves - disable can - flag2 = true; // Paper - diff on change, this should be moved wrongly + flag2 = true; ServerGamePacketListenerImpl.LOGGER.warn("{} (vehicle of {}) moved wrongly! {}", new Object[]{entity.getName().getString(), this.player.getName().getString(), Math.sqrt(d10)}); } -@@ -1486,7 +1486,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1448,7 +1448,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl io.papermc.paper.event.player.PlayerFailMoveEvent event = fireFailMove(io.papermc.paper.event.player.PlayerFailMoveEvent.FailReason.MOVED_TOO_QUICKLY, toX, toY, toZ, toYaw, toPitch, true); if (!event.isAllowed()) { @@ -39,7 +39,7 @@ index 2461fdfe02dc2252178e442f54ef4f584ba75cf8..a0abb0182aa6166b1d2702aa99641328 ServerGamePacketListenerImpl.LOGGER.warn("{} moved too quickly! {},{},{}", new Object[]{this.player.getName().getString(), d6, d7, d8}); this.teleport(this.player.getX(), this.player.getY(), this.player.getZ(), this.player.getYRot(), this.player.getXRot()); return; -@@ -1556,7 +1556,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1517,7 +1517,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl d10 = d6 * d6 + d7 * d7 + d8 * d8; boolean movedWrongly = false; // Paper - Add fail move event; rename diff --git a/patches/server/0039-Faster-Random-for-xaeroMapServerID-generation.patch b/patches/server/0037-Faster-Random-for-xaeroMapServerID-generation.patch similarity index 100% rename from patches/server/0039-Faster-Random-for-xaeroMapServerID-generation.patch rename to patches/server/0037-Faster-Random-for-xaeroMapServerID-generation.patch diff --git a/patches/server/0040-Petal-Async-Pathfinding.patch b/patches/server/0038-Petal-Async-Pathfinding.patch similarity index 96% rename from patches/server/0040-Petal-Async-Pathfinding.patch rename to patches/server/0038-Petal-Async-Pathfinding.patch index 5b619cc3..9dd1079d 100644 --- a/patches/server/0040-Petal-Async-Pathfinding.patch +++ b/patches/server/0038-Petal-Async-Pathfinding.patch @@ -15,10 +15,10 @@ This patch was ported downstream from the Petal fork. Makes most pathfinding-related work happen asynchronously diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index 2e030baabb57de26dcc7340430f0ae0a3a5c1f9f..e14ba4cf64b7bfff6b6e3630e56d84a5b6fb42b4 100644 +index 4e5dbee1f43b4114a07adab3c3ddc2b9be53ca9c..89ad2a439d774d18a94f66b601d3d17e0f02faaf 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java -@@ -302,6 +302,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Targeti +@@ -297,6 +297,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab @Nullable @Override public LivingEntity getTarget() { @@ -27,13 +27,13 @@ index 2e030baabb57de26dcc7340430f0ae0a3a5c1f9f..e14ba4cf64b7bfff6b6e3630e56d84a5 } diff --git a/src/main/java/net/minecraft/world/entity/ai/behavior/AcquirePoi.java b/src/main/java/net/minecraft/world/entity/ai/behavior/AcquirePoi.java -index c72ce539f3e339c6e87138e744f033d2143abc7a..4e1ac973102dc2ba8329fb6657f328228b241661 100644 +index 848452ba2068c9b0ec6e253da0d0ef10fdec48b0..f702131a5ac60936257816c3d6549853e6079f0b 100644 --- a/src/main/java/net/minecraft/world/entity/ai/behavior/AcquirePoi.java +++ b/src/main/java/net/minecraft/world/entity/ai/behavior/AcquirePoi.java @@ -85,6 +85,38 @@ public class AcquirePoi { - io.papermc.paper.util.PoiAccess.findNearestPoiPositions(poiManager, poiPredicate, predicate2, entity.blockPosition(), world.purpurConfig.villagerAcquirePoiSearchRadius, world.purpurConfig.villagerAcquirePoiSearchRadius*world.purpurConfig.villagerAcquirePoiSearchRadius, PoiManager.Occupancy.HAS_SPACE, false, 5, poiposes); // Purpur - Set, BlockPos>> set = new java.util.HashSet<>(poiposes); - // Paper end - optimise POI access + ) + .limit(5L) + .collect(Collectors.toSet()); + // Kaiiju start - petal - Async path processing + if (org.dreeam.leaf.config.modules.async.AsyncPathfinding.enabled) { + // await on path async @@ -468,16 +468,16 @@ index ce7398a617abe6e800c1e014b3ac5c970eb15c8a..dbf43209417d8453ff39839392eba45b } diff --git a/src/main/java/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java b/src/main/java/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java -index 9104d7010bda6f9f73b478c11490ef9c53f76da2..7c56e627cba4e6be6bb72f34cb283621febf6695 100644 +index 222c87e80cb089867ce9a7d2dceebe21b4bfe0de..e57b60f1656d80d1307f0c9b000358a2598b7c75 100644 --- a/src/main/java/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java +++ b/src/main/java/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java @@ -57,6 +57,25 @@ public class NearestBedSensor extends Sensor { - java.util.List, BlockPos>> poiposes = new java.util.ArrayList<>(); - // don't ask me why it's unbounded. ask mojang. - io.papermc.paper.util.PoiAccess.findAnyPoiPositions(poiManager, type -> type.is(PoiTypes.HOME), predicate, entity.blockPosition(), world.purpurConfig.villagerNearestBedSensorSearchRadius, PoiManager.Occupancy.ANY, false, Integer.MAX_VALUE, poiposes); // Purpur + holder -> holder.is(PoiTypes.HOME), predicate, entity.blockPosition(), world.purpurConfig.villagerNearestBedSensorSearchRadius, PoiManager.Occupancy.ANY + ) + .collect(Collectors.toSet()); + // Kaiiju start - await on async path processing + if (org.dreeam.leaf.config.modules.async.AsyncPathfinding.enabled) { -+ Path possiblePath = AcquirePoi.findPathToPois(entity, new java.util.HashSet<>(poiposes)); ++ Path possiblePath = AcquirePoi.findPathToPois(entity, set); + org.dreeam.leaf.async.path.AsyncPathProcessor.awaitProcessing(entity, possiblePath, path -> { + // read canReach check + if ((path == null || !path.canReach()) && this.triedCount < 5) { @@ -493,11 +493,11 @@ index 9104d7010bda6f9f73b478c11490ef9c53f76da2..7c56e627cba4e6be6bb72f34cb283621 + } + }); + } else { -+ // Kaiiju end - Path path = AcquirePoi.findPathToPois(entity, new java.util.HashSet<>(poiposes)); - // Paper end - optimise POI access ++ // Kaiiju end + Path path = AcquirePoi.findPathToPois(entity, set); if (path != null && path.canReach()) { -@@ -68,6 +87,7 @@ public class NearestBedSensor extends Sensor { + BlockPos blockPos = path.getTarget(); +@@ -67,6 +86,7 @@ public class NearestBedSensor extends Sensor { } else if (this.triedCount < 5) { this.batchCache.long2LongEntrySet().removeIf(entry -> entry.getLongValue() < this.lastUpdate); } @@ -506,10 +506,10 @@ index 9104d7010bda6f9f73b478c11490ef9c53f76da2..7c56e627cba4e6be6bb72f34cb283621 } } diff --git a/src/main/java/net/minecraft/world/entity/animal/Bee.java b/src/main/java/net/minecraft/world/entity/animal/Bee.java -index 539170813921de2dfcd7ef84dd7512d73cd27e68..d47576293144efcbfb3906a77d757ce810641990 100644 +index 0422c4184c4823b8572afd398ef96fc6054e8485..4308e6c43a57dd536834e636af82225cd012d274 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Bee.java +++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java -@@ -1135,7 +1135,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -1146,7 +1146,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { } else { Bee.this.pathfindRandomlyTowards(Bee.this.hivePos); } @@ -518,7 +518,7 @@ index 539170813921de2dfcd7ef84dd7512d73cd27e68..d47576293144efcbfb3906a77d757ce8 boolean flag = this.pathfindDirectlyTowards(Bee.this.hivePos); if (!flag) { -@@ -1197,7 +1197,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -1208,7 +1208,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { } else { Path pathentity = Bee.this.navigation.getPath(); @@ -575,7 +575,7 @@ index d1197b313f16f43f60ed242081a6164026e3c6a7..53c205f6ba3d63140a7d9c1f6cea1729 if (blockposition != null) { diff --git a/src/main/java/net/minecraft/world/entity/monster/Strider.java b/src/main/java/net/minecraft/world/entity/monster/Strider.java -index 5ea5bf9c0e11b0e1f9fe50093899c6e35ee6cf4f..df439eb41f04ef5e2018cf5bb1222f64b4414171 100644 +index 346237b266f3044101d45c69b857f57c701411b3..e56456d6a9e08024a71f0ef80749fb73403e8a55 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Strider.java +++ b/src/main/java/net/minecraft/world/entity/monster/Strider.java @@ -609,10 +609,26 @@ public class Strider extends Animal implements ItemSteerable, Saddleable { @@ -606,10 +606,10 @@ index 5ea5bf9c0e11b0e1f9fe50093899c6e35ee6cf4f..df439eb41f04ef5e2018cf5bb1222f64 } diff --git a/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java b/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java -index 664774be9fa4422cc76b0f7e362737426e8e1105..3102be6066b0a8065cc0c80b5c4a5d369dc35b72 100644 +index f929b9e623eaea0e949a7af1828b9eb198fc66b8..1e31f20da2450e92228d511f060ff9f5a3207005 100644 --- a/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java +++ b/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java -@@ -617,6 +617,16 @@ public class Warden extends Monster implements VibrationSystem { +@@ -614,6 +614,16 @@ public class Warden extends Monster implements VibrationSystem { protected PathFinder createPathFinder(int range) { this.nodeEvaluator = new WalkNodeEvaluator(); this.nodeEvaluator.setCanPassDoors(true); @@ -627,7 +627,7 @@ index 664774be9fa4422cc76b0f7e362737426e8e1105..3102be6066b0a8065cc0c80b5c4a5d36 @Override protected float distance(Node a, Node b) { diff --git a/src/main/java/net/minecraft/world/level/block/ShulkerBoxBlock.java b/src/main/java/net/minecraft/world/level/block/ShulkerBoxBlock.java -index 68431244432a4342041e63218cf7d1eb4eb7ebc0..b828e2dc11770acfcdc419798f7bd82faaafe5d4 100644 +index 40518b1a58494525223e47845b4cb57c92a22d5e..49b6fb883c3eba80bca73bbd716814b2b71668fd 100644 --- a/src/main/java/net/minecraft/world/level/block/ShulkerBoxBlock.java +++ b/src/main/java/net/minecraft/world/level/block/ShulkerBoxBlock.java @@ -215,8 +215,15 @@ public class ShulkerBoxBlock extends BaseEntityBlock { diff --git a/patches/server/0042-Petal-reduce-work-done-by-game-event-system.patch b/patches/server/0039-Petal-reduce-work-done-by-game-event-system.patch similarity index 93% rename from patches/server/0042-Petal-reduce-work-done-by-game-event-system.patch rename to patches/server/0039-Petal-reduce-work-done-by-game-event-system.patch index c5e2c152..b1fe611e 100644 --- a/patches/server/0042-Petal-reduce-work-done-by-game-event-system.patch +++ b/patches/server/0039-Petal-reduce-work-done-by-game-event-system.patch @@ -11,10 +11,10 @@ Original project: https://github.com/Bloom-host/Petal 2. EuclideanGameEventListenerRegistry is not used concurrently so we ban that usage for improved performance with allays diff --git a/src/main/java/net/minecraft/world/level/block/entity/SculkCatalystBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/SculkCatalystBlockEntity.java -index 81dd0aa6a90fd9dda9e7752f85b9cf4568e3b575..7d04ff88e6352147e0c00266bd5d251f8efe3a54 100644 +index a74732902c0494c67e6acf2fc04581ff9c46b832..8b60c922750e71f526976782a1f156e94bc0aa35 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/SculkCatalystBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/SculkCatalystBlockEntity.java -@@ -67,7 +67,7 @@ public class SculkCatalystBlockEntity extends BlockEntity implements GameEventLi +@@ -68,7 +68,7 @@ public class SculkCatalystBlockEntity extends BlockEntity implements GameEventLi return this.catalystListener; } @@ -23,7 +23,7 @@ index 81dd0aa6a90fd9dda9e7752f85b9cf4568e3b575..7d04ff88e6352147e0c00266bd5d251f public static final int PULSE_TICKS = 8; final SculkSpreader sculkSpreader; -@@ -137,6 +137,13 @@ public class SculkCatalystBlockEntity extends BlockEntity implements GameEventLi +@@ -139,6 +139,13 @@ public class SculkCatalystBlockEntity extends BlockEntity implements GameEventLi world.playSound((Player) null, pos, SoundEvents.SCULK_CATALYST_BLOOM, SoundSource.BLOCKS, 2.0F, 0.6F + random.nextFloat() * 0.4F); } @@ -38,10 +38,10 @@ index 81dd0aa6a90fd9dda9e7752f85b9cf4568e3b575..7d04ff88e6352147e0c00266bd5d251f LivingEntity entityliving1 = deadEntity.getLastHurtByMob(); diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -index 184b69dc39749734f8176d3f3c2bf9f690a099f0..852cd20583d2c783c58ae19d0fa84ec834fe40e9 100644 +index 95f306d6d896e6aa4ada7ee20880ed862e0e48d8..b30badb7c7806ef2f1672a0a89b0e3f4287ff382 100644 --- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java +++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java -@@ -82,7 +82,18 @@ public class LevelChunk extends ChunkAccess { +@@ -81,7 +81,18 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p private Supplier fullStatus; @Nullable private LevelChunk.PostLoadProcessor postLoad; @@ -60,8 +60,8 @@ index 184b69dc39749734f8176d3f3c2bf9f690a099f0..852cd20583d2c783c58ae19d0fa84ec8 + // Leaf end - petal private final LevelChunkTicks blockTicks; private final LevelChunkTicks fluidTicks; - public volatile FullChunkStatus chunkStatus = FullChunkStatus.INACCESSIBLE; // Paper - rewrite chunk system -@@ -107,7 +118,7 @@ public class LevelChunk extends ChunkAccess { + +@@ -93,7 +104,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p super(pos, upgradeData, world, net.minecraft.server.MinecraftServer.getServer().registryAccess().registryOrThrow(Registries.BIOME), inhabitedTime, sectionArrayInitializer, blendingData); // Paper - Anti-Xray - The world isn't ready yet, use server singleton for registry this.tickersInLevel = Maps.newHashMap(); this.level = (ServerLevel) world; // CraftBukkit - type @@ -70,7 +70,7 @@ index 184b69dc39749734f8176d3f3c2bf9f690a099f0..852cd20583d2c783c58ae19d0fa84ec8 Heightmap.Types[] aheightmap_type = Heightmap.Types.values(); int j = aheightmap_type.length; -@@ -303,9 +314,23 @@ public class LevelChunk extends ChunkAccess { +@@ -197,9 +208,23 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p Level world = this.level; if (world instanceof ServerLevel worldserver) { @@ -97,7 +97,7 @@ index 184b69dc39749734f8176d3f3c2bf9f690a099f0..852cd20583d2c783c58ae19d0fa84ec8 } else { return super.getListenerRegistry(ySectionCoord); } -@@ -678,7 +703,7 @@ public class LevelChunk extends ChunkAccess { +@@ -583,7 +608,7 @@ public class LevelChunk extends ChunkAccess implements ca.spottedleaf.moonrise.p } private void removeGameEventListenerRegistry(int ySectionCoord) { diff --git a/patches/server/0043-Optimize-Minecart-collisions.patch b/patches/server/0040-Optimize-Minecart-collisions.patch similarity index 87% rename from patches/server/0043-Optimize-Minecart-collisions.patch rename to patches/server/0040-Optimize-Minecart-collisions.patch index b19b502f..57a47179 100644 --- a/patches/server/0043-Optimize-Minecart-collisions.patch +++ b/patches/server/0040-Optimize-Minecart-collisions.patch @@ -27,7 +27,7 @@ index f1b9e83206cc67e6ef29ebe088351b0aaa5eb349..e0a51e269aa076def275710174d3654d Team.CollisionRule scoreboardteambase_enumteampush = scoreboardteam == null ? Team.CollisionRule.ALWAYS : scoreboardteam.getCollisionRule(); diff --git a/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java b/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java -index e7a1ce585c9e552e6f9ce9acd26fdfe5c43e0b5d..f9ae853fa762f103cfc6d7ad6f975ce099e348a3 100644 +index 337bd2011c471361653c317004f8380c9fddfc47..52c105f5634ec8495e2e4c05adcc8217eb352e63 100644 --- a/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java +++ b/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java @@ -386,15 +386,15 @@ public abstract class AbstractMinecart extends VehicleEntity { @@ -75,24 +75,27 @@ index e7a1ce585c9e552e6f9ce9acd26fdfe5c43e0b5d..f9ae853fa762f103cfc6d7ad6f975ce0 this.updateInWaterStateAndDoFluidPushing(); if (this.isInLava()) { diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index e77db67592e13a06133cafb364f227686fcc336b..968186bef3ff92cfdc23241d67233407b629263e 100644 +index 395ccbe442e9c57d11f3f7dc4381b8f6458ad392..69f0d63c5997af88d0c0026722efc1dcdafcb0f8 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -1563,12 +1563,14 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1228,16 +1228,18 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl return this.getChunk(chunkX, chunkZ, ChunkStatus.FULL, false); } + // Leaf start - Optimize predicate call @Override -- public List getEntities(@Nullable Entity except, AABB box, Predicate predicate) { -+ public List getEntities(@Nullable Entity except, AABB box, @Nullable Predicate predicate) { - List list = Lists.newArrayList(); -- ((ServerLevel)this).getEntityLookup().getEntities(except, box, list, predicate); // Paper - optimise this call -- return list; -+ ((ServerLevel) this).getEntityLookup().getEntities(except, box, list, null); // Paper - optimise this call -+ return predicate != null ? list.stream().filter(predicate).toList() : list; + public List getEntities(@Nullable Entity except, AABB box, Predicate predicate) { + // Paper start - rewrite chunk system + final List ret = new java.util.ArrayList<>(); + +- ((ca.spottedleaf.moonrise.patches.chunk_system.level.ChunkSystemLevel)this).moonrise$getEntityLookup().getEntities(except, box, ret, predicate); ++ ((ca.spottedleaf.moonrise.patches.chunk_system.level.ChunkSystemLevel)this).moonrise$getEntityLookup().getEntities(except, box, ret, null); + +- return ret; ++ return predicate != null ? ret.stream().filter(predicate).toList() : ret; + // Paper end - rewrite chunk system } -+ // Leaf end ++ // Leaf end - Optimize predicate call @Override public List getEntities(EntityTypeTest filter, AABB box, Predicate predicate) { diff --git a/patches/server/0044-Reduce-canSee-work.patch b/patches/server/0041-Reduce-canSee-work.patch similarity index 87% rename from patches/server/0044-Reduce-canSee-work.patch rename to patches/server/0041-Reduce-canSee-work.patch index 9c144db3..421c2988 100644 --- a/patches/server/0044-Reduce-canSee-work.patch +++ b/patches/server/0041-Reduce-canSee-work.patch @@ -7,10 +7,10 @@ Co-authored by: Martijn Muijsers Co-authored by: MachineBreaker diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 968186bef3ff92cfdc23241d67233407b629263e..25e93a0a58b0ecf02f2669fc8f01ef2f2f938dc7 100644 +index 69f0d63c5997af88d0c0026722efc1dcdafcb0f8..cb37ffc4c34630e9360c1d74ae4c19d2d543ac9f 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -380,17 +380,19 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -424,17 +424,19 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl for (int i = 0, len = entities.size(); i < len; ++i) { Entity entity = entities.get(i); @@ -36,10 +36,10 @@ index 968186bef3ff92cfdc23241d67233407b629263e..25e93a0a58b0ecf02f2669fc8f01ef2f if (net.minecraft.world.phys.shapes.Shapes.joinIsNotEmpty(voxelshape, net.minecraft.world.phys.shapes.Shapes.create(entity.getBoundingBox()), net.minecraft.world.phys.shapes.BooleanOp.AND)) { return false; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 70b5cf477a4cfdfd998fc846fbee24dabf308af7..ff547f908b0390fac7e165c5765f0f9f4d9ce5b8 100644 +index cf85b3af38258fa34e8f67d1f002a521cc59c81b..14b3069756c6e317ad10e75116973e4059c3ac21 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -636,6 +636,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -638,6 +638,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { return false; } OfflinePlayer other = (OfflinePlayer) obj; diff --git a/patches/server/0045-Faster-Natural-Spawning.patch b/patches/server/0042-Faster-Natural-Spawning.patch similarity index 74% rename from patches/server/0045-Faster-Natural-Spawning.patch rename to patches/server/0042-Faster-Natural-Spawning.patch index 38826e82..e8910380 100644 --- a/patches/server/0045-Faster-Natural-Spawning.patch +++ b/patches/server/0042-Faster-Natural-Spawning.patch @@ -22,10 +22,10 @@ index 9c6f5b55b1f1376fa75e216cd366ee47c79fafc4..7762c8186035fdf60e11d9f1844516b6 static RandomSource createThreadSafe() { return new ThreadSafeLegacyRandomSource(RandomSupport.generateUniqueSeed()); diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 25e93a0a58b0ecf02f2669fc8f01ef2f2f938dc7..a50c6d59cfd6286b4ab2f70b2918ba845f04bf94 100644 +index cb37ffc4c34630e9360c1d74ae4c19d2d543ac9f..1e355ce1ad99d61c465e28c77b2cc60f14debb99 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -128,6 +128,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -127,6 +127,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl protected float oThunderLevel; public float thunderLevel; public final RandomSource random = RandomSource.create(); @@ -34,23 +34,23 @@ index 25e93a0a58b0ecf02f2669fc8f01ef2f2f938dc7..a50c6d59cfd6286b4ab2f70b2918ba84 @Deprecated private final RandomSource threadSafeRandom = RandomSource.createThreadSafe(); diff --git a/src/main/java/net/minecraft/world/level/NaturalSpawner.java b/src/main/java/net/minecraft/world/level/NaturalSpawner.java -index 885d7c9ef96dd3c7576c28606e5ab83d2a75de71..31588bbfa4b80ed3ef19942bbe04baebd51e67fb 100644 +index d556089907bb695a9d87df1961ef0b0ae4382cad..bac9e491f18edaec4d441e415938db2a1f0ba503 100644 --- a/src/main/java/net/minecraft/world/level/NaturalSpawner.java +++ b/src/main/java/net/minecraft/world/level/NaturalSpawner.java -@@ -405,12 +405,12 @@ public final class NaturalSpawner { +@@ -405,11 +405,12 @@ public final class NaturalSpawner { - private static BlockPos getRandomPosWithin(ServerLevel world, LevelChunk chunk) { // Gale - Airplane - Use ThreadUnsafeRandom for mob spawning - accept ServerLevel + private static BlockPos getRandomPosWithin(Level world, LevelChunk chunk) { ChunkPos chunkcoordintpair = chunk.getPos(); -- // Gale start - Airplane - Use ThreadUnsafeRandom for mob spawning - use ThreadUnsafeRandom -- int i = chunkcoordintpair.getMinBlockX() + world.randomTickRandom.nextInt(16); -- int j = chunkcoordintpair.getMinBlockZ() + world.randomTickRandom.nextInt(16); -+ // Gale start - Airplane - Use ThreadUnsafeRandom for mob spawning - use ThreadUnsafeRandom // Leaf start - Generate random seed faster +- int i = chunkcoordintpair.getMinBlockX() + world.random.nextInt(16); +- int j = chunkcoordintpair.getMinBlockZ() + world.random.nextInt(16); ++ // Leaf start - Generate random seed faster + int i = chunkcoordintpair.getMinBlockX() + world.randomFaster.nextInt(16); + int j = chunkcoordintpair.getMinBlockZ() + world.randomFaster.nextInt(16); - // Gale end - Airplane - Use ThreadUnsafeRandom for mob spawning - use ThreadUnsafeRandom int k = chunk.getHeight(Heightmap.Types.WORLD_SURFACE, i, j) + 1; -- int l = Mth.randomBetweenInclusive(world.randomTickRandom, world.getMinBuildHeight(), k); // Gale - Airplane - Use ThreadUnsafeRandom for mob spawning - use ThreadUnsafeRandom -+ int l = Mth.randomBetweenInclusive(world.randomFaster, world.getMinBuildHeight(), k); // Gale - Airplane - Use ThreadUnsafeRandom for mob spawning - use ThreadUnsafeRandom // Leaf end +- int l = Mth.randomBetweenInclusive(world.random, world.getMinBuildHeight(), k); +- ++ int l = Mth.randomBetweenInclusive(world.randomFaster, world.getMinBuildHeight(), k); ++ // Leaf end - Generate random seed faster return new BlockPos(i, l, j); } diff --git a/patches/server/0046-Fix-sprint-glitch.patch b/patches/server/0043-Fix-sprint-glitch.patch similarity index 84% rename from patches/server/0046-Fix-sprint-glitch.patch rename to patches/server/0043-Fix-sprint-glitch.patch index 5980834d..8ea80050 100644 --- a/patches/server/0046-Fix-sprint-glitch.patch +++ b/patches/server/0043-Fix-sprint-glitch.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Fix sprint glitch diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index fa773a29ec77f277546e418aab9b06ccd9567a8f..99e8d0221685da1182258ebf3367b26ea3f70d0d 100644 +index a9c2e9d9b3bb63e8cbbe66994c960aca7303066b..16f6afd828575a6a31a56ddc340c80a2024b2158 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1451,7 +1451,8 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1428,7 +1428,8 @@ public abstract class LivingEntity extends Entity implements Attackable { player.setRealHealth(health); } diff --git a/patches/server/0047-Configurable-movement-speed-of-more-entities.patch b/patches/server/0044-Configurable-movement-speed-of-more-entities.patch similarity index 89% rename from patches/server/0047-Configurable-movement-speed-of-more-entities.patch rename to patches/server/0044-Configurable-movement-speed-of-more-entities.patch index c5da9bba..ed9c6acc 100644 --- a/patches/server/0047-Configurable-movement-speed-of-more-entities.patch +++ b/patches/server/0044-Configurable-movement-speed-of-more-entities.patch @@ -17,7 +17,7 @@ index 53c205f6ba3d63140a7d9c1f6cea1729326b2558..c0840449288338c0baebae59c691188f @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Husk.java b/src/main/java/net/minecraft/world/entity/monster/Husk.java -index 95d3edc6c88d6ed0556c21c2623cdd5cfda35911..cc3bfada6ede81fa7f15d65a2982b926ef049c18 100644 +index a9285aac811067313c5609d2d5708783736e6cb5..53114ceb212ea341b227f59ebd302d7c4fd84f2a 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Husk.java +++ b/src/main/java/net/minecraft/world/entity/monster/Husk.java @@ -43,6 +43,7 @@ public class Husk extends Zombie { @@ -29,10 +29,10 @@ index 95d3edc6c88d6ed0556c21c2623cdd5cfda35911..cc3bfada6ede81fa7f15d65a2982b926 @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -index 70263881941efe3b406bbc571932fc8d2c1a78cb..888cf98d1ee16d00592520a8cd9e0241d540eb8e 100644 +index e8fb47996c804c1d273d5bada11c70ce924cab51..e01c8cf029e61358261c6ab5dae4d12b5b24d978 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -@@ -125,6 +125,7 @@ public class Zombie extends Monster { +@@ -129,6 +129,7 @@ public class Zombie extends Monster { @Override public void initAttributes() { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.zombieMaxHealth); @@ -40,7 +40,7 @@ index 70263881941efe3b406bbc571932fc8d2c1a78cb..888cf98d1ee16d00592520a8cd9e0241 } public boolean jockeyOnlyBaby() { -@@ -182,9 +183,15 @@ public class Zombie extends Monster { +@@ -186,9 +187,15 @@ public class Zombie extends Monster { this.targetSelector.addGoal(5, new NearestAttackableTargetGoal<>(this, Turtle.class, 10, true, false, Turtle.BABY_ON_LAND_SELECTOR)); } @@ -58,10 +58,10 @@ index 70263881941efe3b406bbc571932fc8d2c1a78cb..888cf98d1ee16d00592520a8cd9e0241 @Override protected void defineSynchedData(SynchedEntityData.Builder builder) { diff --git a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java -index 8ea44416ea728e740af82912017e888a10d78983..5d59af7a09f8d607ad797dd8315b56f74ce32db9 100644 +index 5ead916772c21d8db98e389984d531aae7f59700..7ac5f6fc44fd5f901c30fe93856ed6b04b86a265 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java -@@ -100,6 +100,7 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { +@@ -103,6 +103,7 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { @Override public void initAttributes() { this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.zombieVillagerMaxHealth); @@ -70,10 +70,10 @@ index 8ea44416ea728e740af82912017e888a10d78983..5d59af7a09f8d607ad797dd8315b56f7 @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java b/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java -index 5bae3215ee0bf222c3bd77b3131f3d01ac6c9c41..8a643108954698425413d14eb9a2c86c4b5c5074 100644 +index 727ee00adf344e17118d8d61161202664afa4dc2..a1f9087614127fe9d9ad253dc830cd02da95d4dc 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java -@@ -82,6 +82,7 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { +@@ -83,6 +83,7 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { @Override public void initAttributes() { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.zombifiedPiglinMaxHealth); @@ -81,7 +81,7 @@ index 5bae3215ee0bf222c3bd77b3131f3d01ac6c9c41..8a643108954698425413d14eb9a2c86c } @Override -@@ -123,9 +124,13 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { +@@ -124,9 +125,13 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { this.targetSelector.addGoal(3, new ResetUniversalAngerTargetGoal<>(this, true)); } @@ -97,10 +97,10 @@ index 5bae3215ee0bf222c3bd77b3131f3d01ac6c9c41..8a643108954698425413d14eb9a2c86c @Override public EntityDimensions getDefaultDimensions(Pose pose) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c7f19ef62554bf1ccbec0444305ccb233916602c..fba45a940ad74bb9a68bcb08d061aa450f274724 100644 +index 015bab487cf8a1905285a7bf7fcc2b3512549a87..d070fef32287e3926dd3b483de29774fba9febe3 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1554,6 +1554,7 @@ public class PurpurWorldConfig { +@@ -1541,6 +1541,7 @@ public class PurpurWorldConfig { public boolean drownedTakeDamageFromWater = false; public boolean drownedBreakDoors = false; public boolean drownedAlwaysDropExp = false; @@ -108,7 +108,7 @@ index c7f19ef62554bf1ccbec0444305ccb233916602c..fba45a940ad74bb9a68bcb08d061aa45 private void drownedSettings() { drownedRidable = getBoolean("mobs.drowned.ridable", drownedRidable); drownedRidableInWater = getBoolean("mobs.drowned.ridable-in-water", drownedRidableInWater); -@@ -1571,6 +1572,7 @@ public class PurpurWorldConfig { +@@ -1558,6 +1559,7 @@ public class PurpurWorldConfig { drownedTakeDamageFromWater = getBoolean("mobs.drowned.takes-damage-from-water", drownedTakeDamageFromWater); drownedBreakDoors = getBoolean("mobs.drowned.can-break-doors", drownedBreakDoors); drownedAlwaysDropExp = getBoolean("mobs.drowned.always-drop-exp", drownedAlwaysDropExp); @@ -116,7 +116,7 @@ index c7f19ef62554bf1ccbec0444305ccb233916602c..fba45a940ad74bb9a68bcb08d061aa45 } public boolean elderGuardianRidable = false; -@@ -1917,6 +1919,7 @@ public class PurpurWorldConfig { +@@ -1904,6 +1906,7 @@ public class PurpurWorldConfig { public boolean huskJockeyTryExistingChickens = true; public boolean huskTakeDamageFromWater = false; public boolean huskAlwaysDropExp = false; @@ -124,7 +124,7 @@ index c7f19ef62554bf1ccbec0444305ccb233916602c..fba45a940ad74bb9a68bcb08d061aa45 private void huskSettings() { huskRidable = getBoolean("mobs.husk.ridable", huskRidable); huskRidableInWater = getBoolean("mobs.husk.ridable-in-water", huskRidableInWater); -@@ -1933,6 +1936,7 @@ public class PurpurWorldConfig { +@@ -1920,6 +1923,7 @@ public class PurpurWorldConfig { huskJockeyTryExistingChickens = getBoolean("mobs.husk.jockey.try-existing-chickens", huskJockeyTryExistingChickens); huskTakeDamageFromWater = getBoolean("mobs.husk.takes-damage-from-water", huskTakeDamageFromWater); huskAlwaysDropExp = getBoolean("mobs.husk.always-drop-exp", huskAlwaysDropExp); @@ -132,7 +132,7 @@ index c7f19ef62554bf1ccbec0444305ccb233916602c..fba45a940ad74bb9a68bcb08d061aa45 } public boolean illusionerRidable = false; -@@ -3149,6 +3153,7 @@ public class PurpurWorldConfig { +@@ -3136,6 +3140,7 @@ public class PurpurWorldConfig { public boolean zombieTakeDamageFromWater = false; public boolean zombieAlwaysDropExp = false; public double zombieHeadVisibilityPercent = 0.5D; @@ -140,7 +140,7 @@ index c7f19ef62554bf1ccbec0444305ccb233916602c..fba45a940ad74bb9a68bcb08d061aa45 private void zombieSettings() { zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable); zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater); -@@ -3168,6 +3173,7 @@ public class PurpurWorldConfig { +@@ -3155,6 +3160,7 @@ public class PurpurWorldConfig { zombieTakeDamageFromWater = getBoolean("mobs.zombie.takes-damage-from-water", zombieTakeDamageFromWater); zombieAlwaysDropExp = getBoolean("mobs.zombie.always-drop-exp", zombieAlwaysDropExp); zombieHeadVisibilityPercent = getDouble("mobs.zombie.head-visibility-percent", zombieHeadVisibilityPercent); @@ -148,7 +148,7 @@ index c7f19ef62554bf1ccbec0444305ccb233916602c..fba45a940ad74bb9a68bcb08d061aa45 } public boolean zombieHorseRidable = false; -@@ -3216,6 +3222,7 @@ public class PurpurWorldConfig { +@@ -3203,6 +3209,7 @@ public class PurpurWorldConfig { public int zombieVillagerCuringTimeMax = 6000; public boolean zombieVillagerCureEnabled = true; public boolean zombieVillagerAlwaysDropExp = false; @@ -156,7 +156,7 @@ index c7f19ef62554bf1ccbec0444305ccb233916602c..fba45a940ad74bb9a68bcb08d061aa45 private void zombieVillagerSettings() { zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable); zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater); -@@ -3235,6 +3242,7 @@ public class PurpurWorldConfig { +@@ -3222,6 +3229,7 @@ public class PurpurWorldConfig { zombieVillagerCuringTimeMax = getInt("mobs.zombie_villager.curing_time.max", zombieVillagerCuringTimeMax); zombieVillagerCureEnabled = getBoolean("mobs.zombie_villager.cure.enabled", zombieVillagerCureEnabled); zombieVillagerAlwaysDropExp = getBoolean("mobs.zombie_villager.always-drop-exp", zombieVillagerAlwaysDropExp); @@ -164,7 +164,7 @@ index c7f19ef62554bf1ccbec0444305ccb233916602c..fba45a940ad74bb9a68bcb08d061aa45 } public boolean zombifiedPiglinRidable = false; -@@ -3248,6 +3256,7 @@ public class PurpurWorldConfig { +@@ -3235,6 +3243,7 @@ public class PurpurWorldConfig { public boolean zombifiedPiglinCountAsPlayerKillWhenAngry = true; public boolean zombifiedPiglinTakeDamageFromWater = false; public boolean zombifiedPiglinAlwaysDropExp = false; @@ -172,7 +172,7 @@ index c7f19ef62554bf1ccbec0444305ccb233916602c..fba45a940ad74bb9a68bcb08d061aa45 private void zombifiedPiglinSettings() { zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable); zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater); -@@ -3265,6 +3274,7 @@ public class PurpurWorldConfig { +@@ -3252,6 +3261,7 @@ public class PurpurWorldConfig { zombifiedPiglinCountAsPlayerKillWhenAngry = getBoolean("mobs.zombified_piglin.count-as-player-kill-when-angry", zombifiedPiglinCountAsPlayerKillWhenAngry); zombifiedPiglinTakeDamageFromWater = getBoolean("mobs.zombified_piglin.takes-damage-from-water", zombifiedPiglinTakeDamageFromWater); zombifiedPiglinAlwaysDropExp = getBoolean("mobs.zombified_piglin.always-drop-exp", zombifiedPiglinAlwaysDropExp); diff --git a/patches/server/0048-Faster-sequencing-of-futures-for-chunk-structure-gen.patch b/patches/server/0045-Faster-sequencing-of-futures-for-chunk-structure-gen.patch similarity index 93% rename from patches/server/0048-Faster-sequencing-of-futures-for-chunk-structure-gen.patch rename to patches/server/0045-Faster-sequencing-of-futures-for-chunk-structure-gen.patch index 69d83308..7f60a16b 100644 --- a/patches/server/0048-Faster-sequencing-of-futures-for-chunk-structure-gen.patch +++ b/patches/server/0045-Faster-sequencing-of-futures-for-chunk-structure-gen.patch @@ -7,10 +7,10 @@ Replace `thenApply` with `thenCompose`. Once one task is completed then the next to prevent blocking threads while waiting to complete all tasks. But may cause the sequence of future compose disorder. diff --git a/src/main/java/net/minecraft/Util.java b/src/main/java/net/minecraft/Util.java -index 0bd367235f80c1f0d319a6aa5130d82ad82d895c..688fae80e8dd9bb917a568f25fd8be6d30684185 100644 +index 42d7ecfab6f72517904451d9df3f0404b176fdb2..37888505f6f4af5e6ecf76396531439bce63644e 100644 --- a/src/main/java/net/minecraft/Util.java +++ b/src/main/java/net/minecraft/Util.java -@@ -452,13 +452,27 @@ public class Util { +@@ -489,13 +489,27 @@ public class Util { return object; } @@ -39,12 +39,12 @@ index 0bd367235f80c1f0d319a6aa5130d82ad82d895c..688fae80e8dd9bb917a568f25fd8be6d } } diff --git a/src/main/java/net/minecraft/server/ReloadableServerRegistries.java b/src/main/java/net/minecraft/server/ReloadableServerRegistries.java -index 69682d7be64a2163d574de939f5146f5a7a642ef..4aeddef3aac9b20cfa88419ceb4bd1135908d1f0 100644 +index 908431652a0fea79b5a0cee1efd0c7a7d524b614..f4386490897549c898c0755e82bac3b387479e93 100644 --- a/src/main/java/net/minecraft/server/ReloadableServerRegistries.java +++ b/src/main/java/net/minecraft/server/ReloadableServerRegistries.java -@@ -50,7 +50,7 @@ public class ReloadableServerRegistries { +@@ -51,7 +51,7 @@ public class ReloadableServerRegistries { List>> list = LootDataType.values() - .map(type -> scheduleElementParse((LootDataType)type, registryOps, resourceManager, prepareExecutor)) + .map(type -> scheduleElementParse((LootDataType)type, registryOps, resourceManager, prepareExecutor, conversions)) // Paper .toList(); - CompletableFuture>> completableFuture = Util.sequence(list); + CompletableFuture>> completableFuture = Util.sequence(list, false); // Leaf - Faster sequencing of futures for chunk structure gen diff --git a/patches/server/0049-Reduce-items-finding-hopper-nearby-check.patch b/patches/server/0046-Reduce-items-finding-hopper-nearby-check.patch similarity index 91% rename from patches/server/0049-Reduce-items-finding-hopper-nearby-check.patch rename to patches/server/0046-Reduce-items-finding-hopper-nearby-check.patch index 98a78732..ad988e6f 100644 --- a/patches/server/0049-Reduce-items-finding-hopper-nearby-check.patch +++ b/patches/server/0046-Reduce-items-finding-hopper-nearby-check.patch @@ -9,10 +9,10 @@ But still recommend to turn-off `checkForMinecartNearItemWhileActive` Since `Reduce-hopper-item-checks.patch` will cause lag under massive dropped items diff --git a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java b/src/main/java/net/minecraft/world/entity/item/ItemEntity.java -index 18d1be51ca12c3ccac5a5130667c47c1f1235935..eebc8d5bc5f2c9dcd2fc38ca056485bf78874284 100644 +index 7db0a4b53f27622ad2fd85a451613fc83ea87052..3a27ef6da3d189f4f2211c9929dc1334790ab281 100644 --- a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java +++ b/src/main/java/net/minecraft/world/entity/item/ItemEntity.java -@@ -244,7 +244,9 @@ public class ItemEntity extends Entity implements TraceableEntity { +@@ -245,7 +245,9 @@ public class ItemEntity extends Entity implements TraceableEntity { this.discard(EntityRemoveEvent.Cause.DESPAWN); // CraftBukkit - add Bukkit remove cause return; // Gale - EMC - reduce hopper item checks } @@ -24,7 +24,7 @@ index 18d1be51ca12c3ccac5a5130667c47c1f1235935..eebc8d5bc5f2c9dcd2fc38ca056485bf } } diff --git a/src/main/java/org/galemc/gale/configuration/GaleWorldConfiguration.java b/src/main/java/org/galemc/gale/configuration/GaleWorldConfiguration.java -index c3c9fc0d126e3f258fa8f06901fb3cac0d0ab289..6571926d9f63a16b5d00ee63874dd0496f0a0290 100644 +index 46254b2f500ad9bec248cd057c87bc729c592ee0..6e5e9526255f5ee38921cb33a3aad15654f0e756 100644 --- a/src/main/java/org/galemc/gale/configuration/GaleWorldConfiguration.java +++ b/src/main/java/org/galemc/gale/configuration/GaleWorldConfiguration.java @@ -75,10 +75,11 @@ public class GaleWorldConfiguration extends ConfigurationPart { diff --git a/patches/server/0050-Plazma-Add-some-missing-Pufferfish-configurations.patch b/patches/server/0047-Plazma-Add-some-missing-Pufferfish-configurations.patch similarity index 90% rename from patches/server/0050-Plazma-Add-some-missing-Pufferfish-configurations.patch rename to patches/server/0047-Plazma-Add-some-missing-Pufferfish-configurations.patch index 728cf1e4..8325d723 100644 --- a/patches/server/0050-Plazma-Add-some-missing-Pufferfish-configurations.patch +++ b/patches/server/0047-Plazma-Add-some-missing-Pufferfish-configurations.patch @@ -10,10 +10,10 @@ Add Pufferfish DAB support for Camel, Sniffer https://github.com/pufferfish-gg/Pufferfish/issues/83 diff --git a/src/main/java/net/minecraft/world/entity/animal/armadillo/Armadillo.java b/src/main/java/net/minecraft/world/entity/animal/armadillo/Armadillo.java -index 29f98f1b19b60df7d8de8f71319e9b71ac3b15fe..3a13742b125fb44664b81adb92f8a18f8209fa86 100644 +index 0d85300632c6476152e6c1072f84cb75d38dea77..54b9cf002e0b71027449cc2af09a52b11a3bb96d 100644 --- a/src/main/java/net/minecraft/world/entity/animal/armadillo/Armadillo.java +++ b/src/main/java/net/minecraft/world/entity/animal/armadillo/Armadillo.java -@@ -155,8 +155,10 @@ public class Armadillo extends Animal { +@@ -156,8 +156,10 @@ public class Armadillo extends Animal { return ArmadilloAi.makeBrain(this.brainProvider().makeBrain(dynamic)); } @@ -25,7 +25,7 @@ index 29f98f1b19b60df7d8de8f71319e9b71ac3b15fe..3a13742b125fb44664b81adb92f8a18f ArmadilloAi.updateActivity(this); if (this.isAlive() && !this.isBaby() && --this.scuteTime <= 0) { diff --git a/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java b/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java -index 041def64118a5b8ed96e9982b2ed645dd9a8822a..c6eee4df07f9c5122504e5c9d5ad0465728ad48c 100644 +index 73d64006d8d655e1d4db179488f6ac0dce56cd05..0d79a57eaf2813fffd21c400e63e9b1f9ee8b2fd 100644 --- a/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java +++ b/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java @@ -149,10 +149,12 @@ public class Camel extends AbstractHorse implements PlayerRideableJumping, Saddl @@ -42,7 +42,7 @@ index 041def64118a5b8ed96e9982b2ed645dd9a8822a..c6eee4df07f9c5122504e5c9d5ad0465 CamelAi.updateActivity(this); super.customServerAiStep(); diff --git a/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java b/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java -index 9325dcc7e5af135ad6e44983e0e1dda5504a26d0..8d01aeec5daa9da49338dd77173c7757d36a68a8 100644 +index 678f1b437a2b04a7f2be90cc496ed960aa5e018e..5c126c8f8bf222a82ca8661c129929db52543c01 100644 --- a/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java +++ b/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java @@ -502,8 +502,10 @@ public class Sniffer extends Animal { diff --git a/patches/server/0051-Plazma-Add-missing-purpur-configuration-options.patch b/patches/server/0048-Plazma-Add-missing-purpur-configuration-options.patch similarity index 91% rename from patches/server/0051-Plazma-Add-missing-purpur-configuration-options.patch rename to patches/server/0048-Plazma-Add-missing-purpur-configuration-options.patch index 6a087e5f..cb43f463 100644 --- a/patches/server/0051-Plazma-Add-missing-purpur-configuration-options.patch +++ b/patches/server/0048-Plazma-Add-missing-purpur-configuration-options.patch @@ -9,10 +9,10 @@ Original project: https://github.com/PlazmaMC/PlazmaBukkit Add more Purpur configurable options for entities diff --git a/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java b/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java -index 3755ed3c550f9553f147fd442a01958ec19c87b3..cc0385ec99dda911f2a6b96c491a63f381fc9a47 100644 +index b80531c3ecb11adc54001373fcde511c4d01ef20..a1dd361a6bfbdeea5ea4f06da90320e928e7fada 100644 --- a/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java +++ b/src/main/java/net/minecraft/world/entity/animal/allay/Allay.java -@@ -152,6 +152,23 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS +@@ -154,6 +154,23 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS } // Purpur end @@ -37,7 +37,7 @@ index 3755ed3c550f9553f147fd442a01958ec19c87b3..cc0385ec99dda911f2a6b96c491a63f3 protected Brain.Provider brainProvider() { return Brain.provider(Allay.MEMORY_TYPES, Allay.SENSOR_TYPES); diff --git a/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java b/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java -index c6eee4df07f9c5122504e5c9d5ad0465728ad48c..2cea089cc394642f1467f0b3a4773e06c89d6a54 100644 +index 0d79a57eaf2813fffd21c400e63e9b1f9ee8b2fd..15b1387c83a615f36b4e3dc09a718956ff3d04ef 100644 --- a/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java +++ b/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java @@ -95,6 +95,18 @@ public class Camel extends AbstractHorse implements PlayerRideableJumping, Saddl @@ -97,7 +97,7 @@ index da026533b15a1981000e73bba6c5209c13de28dc..96d2077abd0112f2b2b8c4678447afbf return this.level().purpurConfig.frogBreedingTicks; } diff --git a/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java b/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java -index 45f92d8fd06027f1487e24987c3fb9a389f619a9..f484f399f2b93e86b24de7393d86eae900b5a98b 100644 +index 5addd3243dd63041442f2a6bcf92a2128e4242c1..2ebce53c728a67a619255a7e8796dcb1a6f82045 100644 --- a/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java +++ b/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java @@ -95,6 +95,23 @@ public class Tadpole extends AbstractFish { @@ -125,7 +125,7 @@ index 45f92d8fd06027f1487e24987c3fb9a389f619a9..f484f399f2b93e86b24de7393d86eae9 protected PathNavigation createNavigation(Level world) { return new WaterBoundPathNavigation(this, world); diff --git a/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java b/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java -index 8d01aeec5daa9da49338dd77173c7757d36a68a8..07c932fb02190cf031b8e9dbca33ef9c49caa8e9 100644 +index 5c126c8f8bf222a82ca8661c129929db52543c01..71efadbc8e11fe52c6469b6b227a1c29b5eb8626 100644 --- a/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java +++ b/src/main/java/net/minecraft/world/entity/animal/sniffer/Sniffer.java @@ -121,6 +121,18 @@ public class Sniffer extends Animal { @@ -157,10 +157,10 @@ index 8d01aeec5daa9da49338dd77173c7757d36a68a8..07c932fb02190cf031b8e9dbca33ef9c SnifferAi.updateActivity(this); super.customServerAiStep(); diff --git a/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java b/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java -index 3102be6066b0a8065cc0c80b5c4a5d369dc35b72..7feb830447da1f487de66d1dba1c1d1f4d28c62f 100644 +index 1e31f20da2450e92228d511f060ff9f5a3207005..de11e6b0d997b3bb2403441ab430a894ae8c6e7d 100644 --- a/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java +++ b/src/main/java/net/minecraft/world/entity/monster/warden/Warden.java -@@ -149,6 +149,23 @@ public class Warden extends Monster implements VibrationSystem { +@@ -150,6 +150,23 @@ public class Warden extends Monster implements VibrationSystem { } // Purpur end @@ -182,9 +182,9 @@ index 3102be6066b0a8065cc0c80b5c4a5d369dc35b72..7feb830447da1f487de66d1dba1c1d1f + // Leaf end - Plazma + @Override - public Packet getAddEntityPacket() { - return new ClientboundAddEntityPacket(this, this.hasPose(Pose.EMERGING) ? 1 : 0); -@@ -300,7 +317,7 @@ public class Warden extends Monster implements VibrationSystem { + public Packet getAddEntityPacket(ServerEntity entityTrackerEntry) { + return new ClientboundAddEntityPacket(this, entityTrackerEntry, this.hasPose(Pose.EMERGING) ? 1 : 0); +@@ -301,7 +318,7 @@ public class Warden extends Monster implements VibrationSystem { protected void customServerAiStep() { ServerLevel worldserver = (ServerLevel) this.level(); @@ -194,7 +194,7 @@ index 3102be6066b0a8065cc0c80b5c4a5d369dc35b72..7feb830447da1f487de66d1dba1c1d1f super.customServerAiStep(); if ((this.tickCount + this.getId()) % 120 == 0) { diff --git a/src/main/java/net/minecraft/world/entity/vehicle/ChestBoat.java b/src/main/java/net/minecraft/world/entity/vehicle/ChestBoat.java -index e0aec3b3e04d603dc208029554f981c6b9e6b43e..8d45048622be6b85bf9f31badd71cd9364c41f0b 100644 +index 4cdf3b54187ebcb1f5ddfa6114386127a2846f01..75c1d986216bbd0f02b5ff96a4d856ecd485a113 100644 --- a/src/main/java/net/minecraft/world/entity/vehicle/ChestBoat.java +++ b/src/main/java/net/minecraft/world/entity/vehicle/ChestBoat.java @@ -45,7 +45,7 @@ public class ChestBoat extends Boat implements HasCustomInventoryScreen, Contain @@ -206,7 +206,7 @@ index e0aec3b3e04d603dc208029554f981c6b9e6b43e..8d45048622be6b85bf9f31badd71cd93 } public ChestBoat(Level world, double d0, double d1, double d2) { -@@ -170,7 +170,7 @@ public class ChestBoat extends Boat implements HasCustomInventoryScreen, Contain +@@ -178,7 +178,7 @@ public class ChestBoat extends Boat implements HasCustomInventoryScreen, Contain @Override public int getContainerSize() { @@ -216,10 +216,10 @@ index e0aec3b3e04d603dc208029554f981c6b9e6b43e..8d45048622be6b85bf9f31badd71cd93 @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -index d3a8f712b48b66f8452332668819967cb268f984..ecd3f2c3dde43082809851f2e71d18c5d7926ed8 100644 +index 71787e9efaa8a711f4c41849793f01f3087add1a..d0c62588d80414d83326192d3050025732902647 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java -@@ -323,6 +323,7 @@ public class PurpurConfig { +@@ -320,6 +320,7 @@ public class PurpurConfig { } public static int barrelRows = 3; @@ -227,7 +227,7 @@ index d3a8f712b48b66f8452332668819967cb268f984..ecd3f2c3dde43082809851f2e71d18c5 public static boolean enderChestSixRows = false; public static boolean enderChestPermissionRows = false; public static boolean cryingObsidianValidForPortalFrame = false; -@@ -365,6 +366,7 @@ public class PurpurConfig { +@@ -362,6 +363,7 @@ public class PurpurConfig { case 1 -> 9; default -> 27; }); @@ -236,10 +236,10 @@ index d3a8f712b48b66f8452332668819967cb268f984..ecd3f2c3dde43082809851f2e71d18c5 org.bukkit.event.inventory.InventoryType.ENDER_CHEST.setDefaultSize(enderChestSixRows ? 54 : 27); enderChestPermissionRows = getBoolean("settings.blocks.ender_chest.use-permissions-for-rows", enderChestPermissionRows); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index fba45a940ad74bb9a68bcb08d061aa450f274724..b7a5fa6976ac1f3187b5eb947656c53b591dc884 100644 +index d070fef32287e3926dd3b483de29774fba9febe3..7d6433aa42b3f089f536f0e23723c0dca5abe409 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -1170,10 +1170,20 @@ public class PurpurWorldConfig { +@@ -1157,10 +1157,20 @@ public class PurpurWorldConfig { public boolean allayRidable = false; public boolean allayRidableInWater = true; public boolean allayControllable = true; @@ -260,7 +260,7 @@ index fba45a940ad74bb9a68bcb08d061aa450f274724..b7a5fa6976ac1f3187b5eb947656c53b } public boolean armadilloRidable = false; -@@ -1311,6 +1321,10 @@ public class PurpurWorldConfig { +@@ -1298,6 +1308,10 @@ public class PurpurWorldConfig { public double camelMovementSpeedMin = 0.09D; public double camelMovementSpeedMax = 0.09D; public int camelBreedingTicks = 6000; @@ -271,7 +271,7 @@ index fba45a940ad74bb9a68bcb08d061aa450f274724..b7a5fa6976ac1f3187b5eb947656c53b private void camelSettings() { camelRidableInWater = getBoolean("mobs.camel.ridable-in-water", camelRidableInWater); camelMaxHealthMin = getDouble("mobs.camel.attributes.max_health.min", camelMaxHealthMin); -@@ -1320,6 +1334,10 @@ public class PurpurWorldConfig { +@@ -1307,6 +1321,10 @@ public class PurpurWorldConfig { camelMovementSpeedMin = getDouble("mobs.camel.attributes.movement_speed.min", camelMovementSpeedMin); camelMovementSpeedMax = getDouble("mobs.camel.attributes.movement_speed.max", camelMovementSpeedMax); camelBreedingTicks = getInt("mobs.camel.breeding-delay-ticks", camelBreedingTicks); @@ -282,7 +282,7 @@ index fba45a940ad74bb9a68bcb08d061aa450f274724..b7a5fa6976ac1f3187b5eb947656c53b } public boolean catRidable = false; -@@ -1741,12 +1759,22 @@ public class PurpurWorldConfig { +@@ -1728,12 +1746,22 @@ public class PurpurWorldConfig { public boolean frogControllable = true; public float frogRidableJumpHeight = 0.65F; public int frogBreedingTicks = 6000; @@ -305,7 +305,7 @@ index fba45a940ad74bb9a68bcb08d061aa450f274724..b7a5fa6976ac1f3187b5eb947656c53b } public boolean ghastRidable = false; -@@ -2689,12 +2717,20 @@ public class PurpurWorldConfig { +@@ -2676,12 +2704,20 @@ public class PurpurWorldConfig { public boolean snifferControllable = true; public double snifferMaxHealth = 14.0D; public int snifferBreedingTicks = 6000; @@ -326,7 +326,7 @@ index fba45a940ad74bb9a68bcb08d061aa450f274724..b7a5fa6976ac1f3187b5eb947656c53b } public boolean squidRidable = false; -@@ -2788,10 +2824,20 @@ public class PurpurWorldConfig { +@@ -2775,10 +2811,20 @@ public class PurpurWorldConfig { public boolean tadpoleRidable = false; public boolean tadpoleRidableInWater = true; public boolean tadpoleControllable = true; @@ -347,7 +347,7 @@ index fba45a940ad74bb9a68bcb08d061aa450f274724..b7a5fa6976ac1f3187b5eb947656c53b } public boolean traderLlamaRidable = false; -@@ -3004,10 +3050,20 @@ public class PurpurWorldConfig { +@@ -2991,10 +3037,20 @@ public class PurpurWorldConfig { public boolean wardenRidable = false; public boolean wardenRidableInWater = true; public boolean wardenControllable = true; diff --git a/patches/server/0052-Skip-event-if-no-listeners.patch b/patches/server/0049-Skip-event-if-no-listeners.patch similarity index 91% rename from patches/server/0052-Skip-event-if-no-listeners.patch rename to patches/server/0049-Skip-event-if-no-listeners.patch index 80a25f36..0de65e64 100644 --- a/patches/server/0052-Skip-event-if-no-listeners.patch +++ b/patches/server/0049-Skip-event-if-no-listeners.patch @@ -5,7 +5,7 @@ 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 9be6ddce778f47ce2c8371757ab8d30978b96888..dadc5ee6a79a47cbebcc8e8c943c2147cc16d732 100644 +index 06dfd0b27ac0006a2be07f54a0702519a691c6ec..6994db535d8d39a73ce54da5b7a03b579323f4a8 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 { @@ -19,7 +19,7 @@ index 9be6ddce778f47ce2c8371757ab8d30978b96888..dadc5ee6a79a47cbebcc8e8c943c2147 // KTP start - Optimise spigot event bus if (event.asynchronous() != net.kyori.adventure.util.TriState.NOT_SET) { final boolean onPrimaryThread = this.server.isPrimaryThread(); -@@ -53,9 +57,6 @@ class PaperEventManager { +@@ -47,9 +51,6 @@ class PaperEventManager { // KTP stop - Optimise spigot event bus } diff --git a/patches/server/0053-PaperPR-Rewrite-framed-map-tracker-ticking.patch b/patches/server/0050-PaperPR-Rewrite-framed-map-tracker-ticking.patch similarity index 93% rename from patches/server/0053-PaperPR-Rewrite-framed-map-tracker-ticking.patch rename to patches/server/0050-PaperPR-Rewrite-framed-map-tracker-ticking.patch index 5034b60c..503213d4 100644 --- a/patches/server/0053-PaperPR-Rewrite-framed-map-tracker-ticking.patch +++ b/patches/server/0050-PaperPR-Rewrite-framed-map-tracker-ticking.patch @@ -16,10 +16,10 @@ now is just updating dirty map/decoration data. When no bukkit renderers are added to the map, we also re-use the same packet for all players who are tracking it which avoids a lot of work. diff --git a/src/main/java/net/minecraft/server/level/ServerEntity.java b/src/main/java/net/minecraft/server/level/ServerEntity.java -index 55d339ef8782e6b7ab08aebd2b96a4147ac6bcc6..fb93f3400ac693f28fb25e5d370d0f6dae8e120a 100644 +index 0711b984b607b783c4b437ed14b9fd1d07117868..403dd6de85d6af662d584d357fa5090aa78f1018 100644 --- a/src/main/java/net/minecraft/server/level/ServerEntity.java +++ b/src/main/java/net/minecraft/server/level/ServerEntity.java -@@ -120,27 +120,40 @@ public class ServerEntity { +@@ -112,27 +112,40 @@ public class ServerEntity { Entity entity = this.entity; @@ -65,7 +65,7 @@ index 55d339ef8782e6b7ab08aebd2b96a4147ac6bcc6..fb93f3400ac693f28fb25e5d370d0f6d } } -@@ -388,6 +401,19 @@ public class ServerEntity { +@@ -372,6 +385,19 @@ public class ServerEntity { } } @@ -84,12 +84,12 @@ index 55d339ef8782e6b7ab08aebd2b96a4147ac6bcc6..fb93f3400ac693f28fb25e5d370d0f6d + // Paper end } - private void sendDirtyEntityData() { + public Vec3 getPositionBase() { diff --git a/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java b/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java -index 9af8fcf6abb9b768829592bc1b091ebe4599ed2e..68646c1b29f325cacf58fe372cecb8f4b4407adb 100644 +index cf78531b193ba56991ccb0c4f62844208e4a5706..d6cecc788be59676f0d011323bb5bdab9e5ab417 100644 --- a/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java +++ b/src/main/java/net/minecraft/world/entity/decoration/ItemFrame.java -@@ -467,6 +467,16 @@ public class ItemFrame extends HangingEntity { +@@ -425,6 +425,16 @@ public class ItemFrame extends HangingEntity { } this.setItem(ItemStack.fromBukkitCopy(event.getItemStack())); // Paper end - Add PlayerItemFrameChangeEvent @@ -107,10 +107,10 @@ index 9af8fcf6abb9b768829592bc1b091ebe4599ed2e..68646c1b29f325cacf58fe372cecb8f4 itemstack.consume(1, player); } diff --git a/src/main/java/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java b/src/main/java/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java -index ac3341ea02985fdbafa405a4a3bc232439ff2e62..bdcf01af3792e8bca1af7aea887d3d7bb3250162 100644 +index d6c704d8e933d689c3a946d7ef0e8396ac024841..1c0b24699e5a076cefd6f7e153d7a51e7a3b8a6e 100644 --- a/src/main/java/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java +++ b/src/main/java/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java -@@ -79,6 +79,16 @@ public class MapItemSavedData extends SavedData { +@@ -80,6 +80,16 @@ public class MapItemSavedData extends SavedData { private final Map frameMarkers = Maps.newHashMap(); private int trackedDecorationCount; private org.bukkit.craftbukkit.map.RenderData vanillaRender = new org.bukkit.craftbukkit.map.RenderData(); // Paper @@ -127,7 +127,7 @@ index ac3341ea02985fdbafa405a4a3bc232439ff2e62..bdcf01af3792e8bca1af7aea887d3d7b public boolean isExplorerMap; // Purpur // CraftBukkit start -@@ -352,6 +362,7 @@ public class MapItemSavedData extends SavedData { +@@ -353,6 +363,7 @@ public class MapItemSavedData extends SavedData { } this.setDecorationsDirty(); @@ -135,7 +135,7 @@ index ac3341ea02985fdbafa405a4a3bc232439ff2e62..bdcf01af3792e8bca1af7aea887d3d7b } public static void addTargetDecoration(ItemStack stack, BlockPos pos, String id, Holder decorationType) { -@@ -433,6 +444,7 @@ public class MapItemSavedData extends SavedData { +@@ -434,6 +445,7 @@ public class MapItemSavedData extends SavedData { } this.setDecorationsDirty(); @@ -143,7 +143,7 @@ index ac3341ea02985fdbafa405a4a3bc232439ff2e62..bdcf01af3792e8bca1af7aea887d3d7b } } -@@ -446,6 +458,20 @@ public class MapItemSavedData extends SavedData { +@@ -447,6 +459,20 @@ public class MapItemSavedData extends SavedData { public void setColorsDirty(int x, int z) { this.setDirty(); @@ -164,16 +164,16 @@ index ac3341ea02985fdbafa405a4a3bc232439ff2e62..bdcf01af3792e8bca1af7aea887d3d7b Iterator iterator = this.carriedBy.iterator(); while (iterator.hasNext()) { -@@ -528,6 +554,7 @@ public class MapItemSavedData extends SavedData { +@@ -529,6 +555,7 @@ public class MapItemSavedData extends SavedData { public void removedFromFrame(BlockPos pos, int id) { - this.removeDecoration("frame-" + id); + this.removeDecoration(MapItemSavedData.getFrameKey(id)); this.frameMarkers.remove(MapFrame.frameId(pos)); + this.dirtyFrameDecorations = true; // Paper } public boolean updateColor(int x, int z, byte color) { -@@ -585,6 +612,93 @@ public class MapItemSavedData extends SavedData { - return this.trackedDecorationCount >= decorationCount; +@@ -590,6 +617,93 @@ public class MapItemSavedData extends SavedData { + return "frame-" + id; } + // Paper start diff --git a/patches/server/0054-SparklyPaper-Skip-distanceToSqr-call-in-ServerEntity.patch b/patches/server/0051-SparklyPaper-Skip-distanceToSqr-call-in-ServerEntity.patch similarity index 69% rename from patches/server/0054-SparklyPaper-Skip-distanceToSqr-call-in-ServerEntity.patch rename to patches/server/0051-SparklyPaper-Skip-distanceToSqr-call-in-ServerEntity.patch index 71da86da..563717ca 100644 --- a/patches/server/0054-SparklyPaper-Skip-distanceToSqr-call-in-ServerEntity.patch +++ b/patches/server/0051-SparklyPaper-Skip-distanceToSqr-call-in-ServerEntity.patch @@ -11,19 +11,20 @@ The "distanceToSqr" call is a bit expensive, so avoiding it is pretty nice, arou We could also check if the x,y,z coordinates are equal, but for now, let's just keep the identity check, which also helps us since Minecraft's code does reuse the original delta movement Vec3 object diff --git a/src/main/java/net/minecraft/server/level/ServerEntity.java b/src/main/java/net/minecraft/server/level/ServerEntity.java -index fb93f3400ac693f28fb25e5d370d0f6dae8e120a..5a17ccd4a620f17c6434f457244ae2b790e2f34e 100644 +index 403dd6de85d6af662d584d357fa5090aa78f1018..703b19ff3dac81d0ef522cd042fa55a598d615ad 100644 --- a/src/main/java/net/minecraft/server/level/ServerEntity.java +++ b/src/main/java/net/minecraft/server/level/ServerEntity.java -@@ -230,12 +230,14 @@ public class ServerEntity { +@@ -219,6 +219,7 @@ public class ServerEntity { if ((this.trackDelta || this.entity.hasImpulse || this.entity instanceof LivingEntity && ((LivingEntity) this.entity).isFallFlying()) && this.tickCount > 0) { Vec3 vec3d1 = this.entity.getDeltaMovement(); -+ if (vec3d1 != this.ap) { // SparklyPaper start - skip distanceToSqr call in ServerEntity#sendChanges if the delta movement hasn't changed - double d0 = vec3d1.distanceToSqr(this.ap); ++ if (vec3d1 != this.lastSentMovement) { // SparklyPaper start - skip distanceToSqr call in ServerEntity#sendChanges if the delta movement hasn't changed + double d0 = vec3d1.distanceToSqr(this.lastSentMovement); if (d0 > 1.0E-7D || d0 > 0.0D && vec3d1.lengthSqr() == 0.0D) { - this.ap = vec3d1; - this.broadcast.accept(new ClientboundSetEntityMotionPacket(this.entity.getId(), this.ap)); +@@ -233,6 +234,7 @@ public class ServerEntity { + this.broadcast.accept(new ClientboundSetEntityMotionPacket(this.entity.getId(), this.lastSentMovement)); + } } + } // SparklyPaper end } diff --git a/patches/server/0055-SparklyPaper-Skip-MapItem-update-if-the-map-does-not.patch b/patches/server/0052-SparklyPaper-Skip-MapItem-update-if-the-map-does-not.patch similarity index 100% rename from patches/server/0055-SparklyPaper-Skip-MapItem-update-if-the-map-does-not.patch rename to patches/server/0052-SparklyPaper-Skip-MapItem-update-if-the-map-does-not.patch diff --git a/patches/server/0056-SparklyPaper-Skip-EntityScheduler-s-executeTick-chec.patch b/patches/server/0053-SparklyPaper-Skip-EntityScheduler-s-executeTick-chec.patch similarity index 89% rename from patches/server/0056-SparklyPaper-Skip-EntityScheduler-s-executeTick-chec.patch rename to patches/server/0053-SparklyPaper-Skip-EntityScheduler-s-executeTick-chec.patch index e07b3866..62f39e88 100644 --- a/patches/server/0056-SparklyPaper-Skip-EntityScheduler-s-executeTick-chec.patch +++ b/patches/server/0053-SparklyPaper-Skip-EntityScheduler-s-executeTick-chec.patch @@ -75,19 +75,18 @@ index 62484ebf4550b05182f693a3180bbac5d5fd906d..67800e426445060a8343e27a7452b8d7 throw new IllegalStateException("Ticking retired scheduler"); } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 3e150865ba40413a9caf5e92cd6c4d60debb59da..b6ad776a0a1bc9f7bd25fa665633a75ac500544c 100644 +index 3d6be33c3310da2bfacba887e8ba12840d2f811c..ef14203da6f9d0f5cad4335c98095522209023cd 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -304,6 +304,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop entitiesWithScheduledTasks = java.util.concurrent.ConcurrentHashMap.newKeySet(); // SparklyPaper - skip EntityScheduler's executeTick checks if there isn't any tasks to be run (concurrent because plugins may schedule tasks async) -+ - public gg.pufferfish.pufferfish.util.AsyncExecutor mobSpawnExecutor = new gg.pufferfish.pufferfish.util.AsyncExecutor("pufferfish-async-mob-spawning"); // Pufferfish - optimize mob spawning // Leaf - Unify thread name public static S spin(Function serverFactory) { -@@ -1703,6 +1705,18 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop atomicreference = new AtomicReference(); +@@ -1663,6 +1664,18 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { - for (final Entity entity : level.getEntityLookup().getAllCopy()) { // Paper - rewrite chunk system + for (final Entity entity : level.moonrise$getEntityLookup().getAllCopy()) { // Paper - rewrite chunk system if (entity.isRemoved()) { -@@ -1714,6 +1728,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop channels = new HashSet(); @@ -41,7 +41,7 @@ index 20307e1566a5f7d2af3887abed8d8e8435b06e97..0d2803a094b48fe864d59c342cc65f48 private final Set unlistedEntities = new HashSet<>(); // Paper - Add Listing API for Player private static final WeakHashMap> pluginWeakReferences = new WeakHashMap<>(); private int hash = 0; -@@ -2248,9 +2248,16 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -2263,9 +2263,16 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @Override public boolean canSee(org.bukkit.entity.Entity entity) { diff --git a/patches/server/0059-Polpot-Make-egg-and-snowball-can-knockback-player.patch b/patches/server/0055-Polpot-Make-egg-and-snowball-can-knockback-player.patch similarity index 96% rename from patches/server/0059-Polpot-Make-egg-and-snowball-can-knockback-player.patch rename to patches/server/0055-Polpot-Make-egg-and-snowball-can-knockback-player.patch index ee6d13cf..b077f38b 100644 --- a/patches/server/0059-Polpot-Make-egg-and-snowball-can-knockback-player.patch +++ b/patches/server/0055-Polpot-Make-egg-and-snowball-can-knockback-player.patch @@ -23,10 +23,10 @@ index 1b9d0e28e518c501b4b93ae385ddd64aeade97d5..650e0e88e2a608fe6326806a830e437c // Purpur start - borrowed and modified code from ThrownPotion#onHitBlock and ThrownPotion#dowseFire diff --git a/src/main/java/net/minecraft/world/entity/projectile/ThrownEgg.java b/src/main/java/net/minecraft/world/entity/projectile/ThrownEgg.java -index 82bb8004635865f5202578d5a6f520048e7269d5..bbfaf70522bddba18c16b5007b03c73b8073245f 100644 +index dbd60cc8c39f5d2d4c77e2de4f2567e7fa456cd2..94baa609e49db229b03592c3fddb388b7499d75b 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/ThrownEgg.java +++ b/src/main/java/net/minecraft/world/entity/projectile/ThrownEgg.java -@@ -46,7 +46,14 @@ public class ThrownEgg extends ThrowableItemProjectile { +@@ -49,7 +49,14 @@ public class ThrownEgg extends ThrowableItemProjectile { @Override protected void onHitEntity(EntityHitResult entityHitResult) { super.onHitEntity(entityHitResult); diff --git a/patches/server/0060-Redirect-vanilla-getProfiler-in-PathNavigationRegion.patch b/patches/server/0056-Redirect-vanilla-getProfiler-in-PathNavigationRegion.patch similarity index 100% rename from patches/server/0060-Redirect-vanilla-getProfiler-in-PathNavigationRegion.patch rename to patches/server/0056-Redirect-vanilla-getProfiler-in-PathNavigationRegion.patch diff --git a/patches/server/0038-Leaves-Fix-vehicle-teleport-by-end-gateway.patch b/patches/work/server/0038-Leaves-Fix-vehicle-teleport-by-end-gateway.patch similarity index 100% rename from patches/server/0038-Leaves-Fix-vehicle-teleport-by-end-gateway.patch rename to patches/work/server/0038-Leaves-Fix-vehicle-teleport-by-end-gateway.patch diff --git a/patches/server/0041-Petal-Multithreaded-Tracker.patch b/patches/work/server/0041-Petal-Multithreaded-Tracker.patch similarity index 100% rename from patches/server/0041-Petal-Multithreaded-Tracker.patch rename to patches/work/server/0041-Petal-Multithreaded-Tracker.patch diff --git a/patches/server/0057-SparklyPaper-Cache-coordinate-key-used-for-nearby-pl.patch b/patches/work/server/0057-SparklyPaper-Cache-coordinate-key-used-for-nearby-pl.patch similarity index 100% rename from patches/server/0057-SparklyPaper-Cache-coordinate-key-used-for-nearby-pl.patch rename to patches/work/server/0057-SparklyPaper-Cache-coordinate-key-used-for-nearby-pl.patch diff --git a/patches/unapplied/server/0063-Redirect-to-Gale-s-method-to-fix-plugin-incompatibil.patch b/patches/work/server/0063-Redirect-to-Gale-s-method-to-fix-plugin-incompatibil.patch similarity index 100% rename from patches/unapplied/server/0063-Redirect-to-Gale-s-method-to-fix-plugin-incompatibil.patch rename to patches/work/server/0063-Redirect-to-Gale-s-method-to-fix-plugin-incompatibil.patch