From de2e7a796716a50fbfda37ae2739e31df1a285b1 Mon Sep 17 00:00:00 2001 From: granny Date: Thu, 4 Jul 2024 21:48:11 -0700 Subject: [PATCH] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@b89e6a0 Readd more patches PaperMC/Paper@be8ac7a Fix respawn error due to null location PaperMC/Paper@8d91b85 Prioritize vanilla commands in function parsing (#11011) --- gradle.properties | 2 +- .../0005-Component-related-conveniences.patch | 8 +- patches/server/0006-Ridables.patch | 22 ++--- ...-Configurable-entity-base-attributes.patch | 8 +- .../0008-Barrels-and-enderchests-6-rows.patch | 6 +- .../0023-Zombie-horse-naturally-spawn.patch | 4 +- ...option-to-set-armorstand-step-height.patch | 6 +- ...able-loot-drops-on-death-by-cramming.patch | 8 +- ...-Skip-events-if-there-s-no-listeners.patch | 6 +- .../0042-Add-permission-for-F3-N-debug.patch | 4 +- .../0047-Allow-leashing-villagers.patch | 4 +- ...urable-void-damage-height-and-damage.patch | 10 +- .../0052-Add-canSaveToDisk-to-Entity.patch | 4 +- ...ispenser-curse-of-binding-protection.patch | 6 +- .../0057-Implement-elytra-settings.patch | 6 +- ...-Add-allow-water-in-end-world-option.patch | 4 +- .../0075-Totems-work-in-inventory.patch | 6 +- ...Stop-squids-floating-on-top-of-water.patch | 4 +- ...e-entity-breeding-times-configurable.patch | 4 +- ...iefing-bypass-to-everything-affected.patch | 4 +- ...19-Movement-options-for-armor-stands.patch | 6 +- .../server/0120-Fix-stuck-in-portals.patch | 4 +- ...oggle-for-water-sensitive-mob-damage.patch | 4 +- patches/server/0139-Drowning-Settings.patch | 6 +- ...165-API-for-any-mob-to-burn-daylight.patch | 8 +- ...ake-lightning-rod-range-configurable.patch | 4 +- ...omizable-sleeping-actionbar-messages.patch | 4 +- .../0187-Toggle-for-kinetic-damage.patch | 4 +- ...ain-and-thunder-should-stop-on-sleep.patch | 6 +- .../0215-Mobs-always-drop-experience.patch | 4 +- patches/server/0226-Allow-void-trading.patch | 4 +- ...0249-Add-toggle-for-RNG-manipulation.patch | 4 +- patches/server/0250-Remove-Timings.patch | 32 +++---- .../server/0251-Remove-Mojang-Profiler.patch | 95 ++++++++----------- patches/server/0267-Fire-Immunity-API.patch | 10 +- ...leport-to-spawn-on-nether-ceiling-da.patch | 4 +- ...-Configurable-villager-search-radius.patch | 38 ++++---- 37 files changed, 173 insertions(+), 190 deletions(-) diff --git a/gradle.properties b/gradle.properties index 8711b9fff..64527b3ad 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21-R0.1-SNAPSHOT mcVersion = 1.21 -paperCommit = 8c8b227547fa78b8f3295e4ac8ee066777e04e98 +paperCommit = 8d91b859cbeb64ecbc3916249fce26a085b320aa org.gradle.caching = true org.gradle.parallel = true diff --git a/patches/server/0005-Component-related-conveniences.patch b/patches/server/0005-Component-related-conveniences.patch index 7e08c94c3..83abecbbc 100644 --- a/patches/server/0005-Component-related-conveniences.patch +++ b/patches/server/0005-Component-related-conveniences.patch @@ -36,10 +36,10 @@ index 92e9a5e38cc60e3ef6d7e2216bf4a85cb2464cdd..47afcbc699a992358871fe90929f71b4 public void displayClientMessage(Component message, boolean overlay) { this.sendSystemMessage(message, overlay); diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index ef177f21d654d69c128f3f39ea58f2d8ee598628..2642b0519e05da47694d68c19fc37e30cc2bb6ba 100644 +index 5f20606cc2c79ad9a4c4d4d6c9e6a2a31a88b282..5263a5eb7860f3b0ae18dbb65f562593630e01ee 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -1015,6 +1015,20 @@ public abstract class PlayerList { +@@ -1016,6 +1016,20 @@ public abstract class PlayerList { } // CraftBukkit end @@ -81,10 +81,10 @@ index bb1a60180e58c1333e7bb33e8acf1b0225eda8a8..c83e80ebdbbfb2d0e08561a44486a308 return this.type().msgId(); } diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 2519c08a45ce3febcf51ac308ad98ac0e2657cf3..aafae1a6711a248627abe1bad148a2404c0974e3 100644 +index 83f3ffdd8fa901b3de580d2359cdb5ead0d762cb..d88b56c7ceb4c46c00126beebf78a00ea173e2ba 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -4015,6 +4015,20 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -4016,6 +4016,20 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return SlotAccess.NULL; } diff --git a/patches/server/0006-Ridables.patch b/patches/server/0006-Ridables.patch index 7c29c0473..c51a90f30 100644 --- a/patches/server/0006-Ridables.patch +++ b/patches/server/0006-Ridables.patch @@ -34,7 +34,7 @@ index 646d1947351eb9dea1e301698ed4a03a96e03f8a..c6aea5dde7fe84800996be05bc44167e this.profiler.push(() -> { String s = String.valueOf(worldserver); diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 2d97ca1f3c625c0206d35b785c57d9587924ed0a..3610c7a9e8415f310653d2769a2cb8d6724a69ba 100644 +index e079f4db4e4738f60a6fdbdbf5e4d1baf593a62f..0d07bc9b57336191ba788fb1eed24010af33ff3d 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -229,6 +229,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. @@ -79,10 +79,10 @@ index 7796e191747be545e744564a2b0b65790f69114d..82f60de72bc0f9b01eb97dbc0e296e80 if ((entity instanceof Bucketable && entity instanceof LivingEntity && origItem != null && origItem.asItem() == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelected() == null || ServerGamePacketListenerImpl.this.player.getInventory().getSelected().getItem() != origItem)) { entity.resendPossiblyDesyncedEntityData(ServerGamePacketListenerImpl.this.player); // Paper - The entire mob gets deleted, so resend it diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index aafae1a6711a248627abe1bad148a2404c0974e3..050b54b4b527831316964fb5b2d8b7d86932b2b9 100644 +index d88b56c7ceb4c46c00126beebf78a00ea173e2ba..2312c0c55c9e6a3555934e3bf9bb08142f30ba20 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -383,7 +383,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -384,7 +384,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess private final Set tags; private final double[] pistonDeltas; private long pistonDeltasGameTime; @@ -91,7 +91,7 @@ index aafae1a6711a248627abe1bad148a2404c0974e3..050b54b4b527831316964fb5b2d8b7d8 private float eyeHeight; public boolean isInPowderSnow; public boolean wasInPowderSnow; -@@ -2963,6 +2963,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -2964,6 +2964,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess this.passengers = ImmutableList.copyOf(list); } @@ -105,7 +105,7 @@ index aafae1a6711a248627abe1bad148a2404c0974e3..050b54b4b527831316964fb5b2d8b7d8 this.gameEvent(GameEvent.ENTITY_MOUNT, passenger); } } -@@ -3002,6 +3009,14 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3003,6 +3010,14 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return false; } // CraftBukkit end @@ -120,7 +120,7 @@ index aafae1a6711a248627abe1bad148a2404c0974e3..050b54b4b527831316964fb5b2d8b7d8 if (this.passengers.size() == 1 && this.passengers.get(0) == entity) { this.passengers = ImmutableList.of(); } else { -@@ -4834,4 +4849,44 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -4835,4 +4850,44 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return ((net.minecraft.server.level.ServerChunkCache) level.getChunkSource()).isPositionTicking(this); } // Paper end - Expose entity id counter @@ -190,7 +190,7 @@ index 09fdea983772612ef3fff6b2da3cf469a34e4ec0..aa76a24421cdb3908a3544d92eb3d1e3 protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index e980c8c356b30d25e2fc5a73b91ad2c6edd4fe05..661db9eb343b32f97d6e7ccb93e56e24213b6367 100644 +index b9cef93fe382b666bec04ca95eeaf2d8acbb3c40..1da16005b98be1fc01f277407579516df591e50e 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -237,9 +237,9 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -223,7 +223,7 @@ index e980c8c356b30d25e2fc5a73b91ad2c6edd4fe05..661db9eb343b32f97d6e7ccb93e56e24 @Override protected void checkFallDamage(double heightDifference, boolean onGround, BlockState state, BlockPos landedPosition) { -@@ -3498,8 +3499,10 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3503,8 +3504,10 @@ public abstract class LivingEntity extends Entity implements Attackable { this.pushEntities(); this.level().getProfiler().pop(); // Paper start - Add EntityMoveEvent @@ -236,7 +236,7 @@ index e980c8c356b30d25e2fc5a73b91ad2c6edd4fe05..661db9eb343b32f97d6e7ccb93e56e24 Location from = new Location(this.level().getWorld(), this.xo, this.yo, this.zo, this.yRotO, this.xRotO); Location to = new Location(this.level().getWorld(), this.getX(), this.getY(), this.getZ(), this.getYRot(), this.getXRot()); io.papermc.paper.event.entity.EntityMoveEvent event = new io.papermc.paper.event.entity.EntityMoveEvent(this.getBukkitLivingEntity(), from, to.clone()); -@@ -3509,6 +3512,21 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3514,6 +3517,21 @@ public abstract class LivingEntity extends Entity implements Attackable { this.absMoveTo(event.getTo().getX(), event.getTo().getY(), event.getTo().getZ(), event.getTo().getYaw(), event.getTo().getPitch()); } } @@ -1895,7 +1895,7 @@ index 3d03ffe2e12eca82dfa2f414471d12bb362d4552..18dcb67d246b63637d8c948b6c3f48c5 return "entity.minecraft.tropical_fish.predefined." + variant; } diff --git a/src/main/java/net/minecraft/world/entity/animal/Turtle.java b/src/main/java/net/minecraft/world/entity/animal/Turtle.java -index 4bfa947531c4a67989e18032754dabf4c69e989c..960eaebcb12d32bc51026c48e4b5e09effb66dda 100644 +index caf4120721be8f2f7e2d737abbf73296cbe170b5..7357680b4fdf9250e086ba01531ade2bad7eb07b 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Turtle.java +++ b/src/main/java/net/minecraft/world/entity/animal/Turtle.java @@ -87,6 +87,23 @@ public class Turtle extends Animal { @@ -1920,7 +1920,7 @@ index 4bfa947531c4a67989e18032754dabf4c69e989c..960eaebcb12d32bc51026c48e4b5e09e + // Purpur end + public void setHomePos(BlockPos pos) { - this.entityData.set(Turtle.HOME_POS, pos); + this.entityData.set(Turtle.HOME_POS, pos.immutable()); // Paper - called with mutablepos... } @@ -189,6 +206,7 @@ public class Turtle extends Animal { diff --git a/patches/server/0007-Configurable-entity-base-attributes.patch b/patches/server/0007-Configurable-entity-base-attributes.patch index b2ec8de60..8c54c90c6 100644 --- a/patches/server/0007-Configurable-entity-base-attributes.patch +++ b/patches/server/0007-Configurable-entity-base-attributes.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Configurable entity base attributes diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index f332458dbc26bb0e77ca9b7446f4ae800c359d13..6ff9e8bb038e7e1b89796a2e9d271371052ccf22 100644 +index 2312c0c55c9e6a3555934e3bf9bb08142f30ba20..d2831ea1480607af84beb7ff7796975d876712a5 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -168,7 +168,7 @@ import org.bukkit.plugin.PluginManager; @@ -34,7 +34,7 @@ index aa76a24421cdb3908a3544d92eb3d1e3c2ebedc4..8211c152e6f4232e82e452b08047e457 protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 661db9eb343b32f97d6e7ccb93e56e24213b6367..305fb567e5407bbdc9fbc30bf8ce2839e8fb15c9 100644 +index 1da16005b98be1fc01f277407579516df591e50e..930b3d5e75fd1c1ec717904070b58e66b737c246 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -314,6 +314,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -446,7 +446,7 @@ index 18dcb67d246b63637d8c948b6c3f48c58d71c339..327b1805d9d4069212a8772ff189c9ab return "entity.minecraft.tropical_fish.predefined." + variant; } diff --git a/src/main/java/net/minecraft/world/entity/animal/Turtle.java b/src/main/java/net/minecraft/world/entity/animal/Turtle.java -index 960eaebcb12d32bc51026c48e4b5e09effb66dda..41d47141bfd77b17cbf163bffdfeb002135035ca 100644 +index 7357680b4fdf9250e086ba01531ade2bad7eb07b..60736df3b726c6a408c8b6aae6f0bd3e3efd32b0 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Turtle.java +++ b/src/main/java/net/minecraft/world/entity/animal/Turtle.java @@ -104,6 +104,12 @@ public class Turtle extends Animal { @@ -460,7 +460,7 @@ index 960eaebcb12d32bc51026c48e4b5e09effb66dda..41d47141bfd77b17cbf163bffdfeb002 + } + public void setHomePos(BlockPos pos) { - this.entityData.set(Turtle.HOME_POS, pos); + this.entityData.set(Turtle.HOME_POS, pos.immutable()); // Paper - called with mutablepos... } diff --git a/src/main/java/net/minecraft/world/entity/animal/Wolf.java b/src/main/java/net/minecraft/world/entity/animal/Wolf.java index 1ae38914582cfb17da882304c8bcba84a7793f79..3268f07668eaa0322aeb77a158dfb2996d16dfcb 100644 diff --git a/patches/server/0008-Barrels-and-enderchests-6-rows.patch b/patches/server/0008-Barrels-and-enderchests-6-rows.patch index e69f9dd67..4f33d1a0e 100644 --- a/patches/server/0008-Barrels-and-enderchests-6-rows.patch +++ b/patches/server/0008-Barrels-and-enderchests-6-rows.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Barrels and enderchests 6 rows diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 2642b0519e05da47694d68c19fc37e30cc2bb6ba..8bf5db384a283086334e739942f12e97108d8c2f 100644 +index 5263a5eb7860f3b0ae18dbb65f562593630e01ee..ce62bea3341dc7b653180da74b156a591b3088d1 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -1140,6 +1140,27 @@ public abstract class PlayerList { +@@ -1141,6 +1141,27 @@ public abstract class PlayerList { player.getBukkitEntity().recalculatePermissions(); // CraftBukkit this.server.getCommands().sendCommands(player); } // Paper - Add sendOpLevel API @@ -37,7 +37,7 @@ index 2642b0519e05da47694d68c19fc37e30cc2bb6ba..8bf5db384a283086334e739942f12e97 public boolean isWhiteListed(GameProfile profile) { diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index 0f7c4e39d5569c8f6387bc003d29d4b7d59d77e0..ce184181529a9743cc6a7685dcb7cf572be65350 100644 +index 92200ab909a9ecabd75e98d4e15e8759dd2b9c86..9cfaab798a08b749f0920de0e2a9497d55d8d9f2 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java @@ -196,6 +196,7 @@ public abstract class Player extends LivingEntity { diff --git a/patches/server/0023-Zombie-horse-naturally-spawn.patch b/patches/server/0023-Zombie-horse-naturally-spawn.patch index e9c8a94bd..3ef96ec23 100644 --- a/patches/server/0023-Zombie-horse-naturally-spawn.patch +++ b/patches/server/0023-Zombie-horse-naturally-spawn.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Zombie horse naturally spawn diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 3610c7a9e8415f310653d2769a2cb8d6724a69ba..149165bfe4bdab02233416677d72e5afd5f64225 100644 +index 0d07bc9b57336191ba788fb1eed24010af33ff3d..c0690dd005e51b8cd41ffefeac6811c4bdb8c07f 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -831,10 +831,18 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -837,10 +837,18 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. boolean flag1 = this.getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING) && this.random.nextDouble() < (double) difficultydamagescaler.getEffectiveDifficulty() * this.paperConfig().entities.spawning.skeletonHorseThunderSpawnChance.or(0.01D) && !this.getBlockState(blockposition.below()).is(Blocks.LIGHTNING_ROD); // Paper - Configurable spawn chances for skeleton horses if (flag1) { diff --git a/patches/server/0030-Add-option-to-set-armorstand-step-height.patch b/patches/server/0030-Add-option-to-set-armorstand-step-height.patch index 59640cf30..a4f86656c 100644 --- a/patches/server/0030-Add-option-to-set-armorstand-step-height.patch +++ b/patches/server/0030-Add-option-to-set-armorstand-step-height.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add option to set armorstand step height diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 9803b348fdcb8a6250277afc8de260777993ac8e..746390a7ccf87476b07f125469ff80f1dd8777c6 100644 +index d2831ea1480607af84beb7ff7796975d876712a5..4014acb8f83a68c7d3938fdc7a3f002b606ddc1f 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -343,6 +343,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -344,6 +344,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess public double xOld; public double yOld; public double zOld; @@ -16,7 +16,7 @@ index 9803b348fdcb8a6250277afc8de260777993ac8e..746390a7ccf87476b07f125469ff80f1 public boolean noPhysics; public final RandomSource random; public int tickCount; -@@ -4657,7 +4658,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -4658,7 +4659,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } public float maxUpStep() { diff --git a/patches/server/0039-Disable-loot-drops-on-death-by-cramming.patch b/patches/server/0039-Disable-loot-drops-on-death-by-cramming.patch index 944dbfab4..e3d7164a2 100644 --- a/patches/server/0039-Disable-loot-drops-on-death-by-cramming.patch +++ b/patches/server/0039-Disable-loot-drops-on-death-by-cramming.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Disable loot drops on death by cramming diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 305fb567e5407bbdc9fbc30bf8ce2839e8fb15c9..d6c550b11c99dcc5beced14f03317e5973de6550 100644 +index 930b3d5e75fd1c1ec717904070b58e66b737c246..476fedac37b1cb3b6b75417996685ad0b38b26f4 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1831,7 +1831,8 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1836,7 +1836,8 @@ public abstract class LivingEntity extends Entity implements Attackable { boolean flag = this.lastHurtByPlayerTime > 0; this.dropEquipment(); // CraftBukkit - from below @@ -18,7 +18,7 @@ index 305fb567e5407bbdc9fbc30bf8ce2839e8fb15c9..d6c550b11c99dcc5beced14f03317e59 this.dropFromLootTable(damageSource, flag); // Paper start final boolean prev = this.clearEquipmentSlots; -@@ -1840,6 +1841,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1845,6 +1846,7 @@ public abstract class LivingEntity extends Entity implements Attackable { // Paper end this.dropCustomDeathLoot(world, damageSource, flag); this.clearEquipmentSlots = prev; // Paper @@ -27,7 +27,7 @@ index 305fb567e5407bbdc9fbc30bf8ce2839e8fb15c9..d6c550b11c99dcc5beced14f03317e59 // CraftBukkit start - Call death event // Paper start - call advancement triggers with correct entity equipment org.bukkit.event.entity.EntityDeathEvent deathEvent = CraftEventFactory.callEntityDeathEvent(this, damageSource, this.drops, () -> { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 437aebf391819fac0d17b1f21d179282a5ff3a4d..8e31ffae5263a2394f9ae04d8ae7f168274da6ff 100644 +index 2591b4f0d0e4e4d9e77efb821c9ae775182713b6..830ba18f1695bbf4099a9579166e29618206ba83 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -96,6 +96,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0041-Skip-events-if-there-s-no-listeners.patch b/patches/server/0041-Skip-events-if-there-s-no-listeners.patch index 36ed82975..d6b3dcd09 100644 --- a/patches/server/0041-Skip-events-if-there-s-no-listeners.patch +++ b/patches/server/0041-Skip-events-if-there-s-no-listeners.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Skip events if there's no listeners diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java -index 3e454515360c22a26c9329e4032d525579110d7e..4b8dbdc43e85c08846a4e2ae50e59a6ca59758f3 100644 +index 1d1e76de60e40224f5cb81893f9ee50fe987badb..7e291ffff86bdcdb8a0a15c211c3f84d6ae18e38 100644 --- a/src/main/java/net/minecraft/commands/Commands.java +++ b/src/main/java/net/minecraft/commands/Commands.java -@@ -518,6 +518,7 @@ public class Commands { +@@ -515,6 +515,7 @@ public class Commands { private void runSync(ServerPlayer player, Collection bukkit, RootCommandNode rootcommandnode) { // Paper end - Perf: Async command map building new com.destroystokyo.paper.event.brigadier.AsyncPlayerSendCommandsEvent(player.getBukkitEntity(), (RootCommandNode) rootcommandnode, true).callEvent(); // Paper - Brigadier API @@ -16,7 +16,7 @@ index 3e454515360c22a26c9329e4032d525579110d7e..4b8dbdc43e85c08846a4e2ae50e59a6c PlayerCommandSendEvent event = new PlayerCommandSendEvent(player.getBukkitEntity(), new LinkedHashSet<>(bukkit)); event.getPlayer().getServer().getPluginManager().callEvent(event); -@@ -528,6 +529,7 @@ public class Commands { +@@ -525,6 +526,7 @@ public class Commands { } } // CraftBukkit end diff --git a/patches/server/0042-Add-permission-for-F3-N-debug.patch b/patches/server/0042-Add-permission-for-F3-N-debug.patch index cb654b28f..5f10ec398 100644 --- a/patches/server/0042-Add-permission-for-F3-N-debug.patch +++ b/patches/server/0042-Add-permission-for-F3-N-debug.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add permission for F3+N debug diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 8bf5db384a283086334e739942f12e97108d8c2f..7aec825af7d07b1701519e413432739612527747 100644 +index ce62bea3341dc7b653180da74b156a591b3088d1..e60111517e9b04a39dcdb36a5f46d8fa868a5adc 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -1132,6 +1132,7 @@ public abstract class PlayerList { +@@ -1133,6 +1133,7 @@ public abstract class PlayerList { } else { b0 = (byte) (24 + permissionLevel); } diff --git a/patches/server/0047-Allow-leashing-villagers.patch b/patches/server/0047-Allow-leashing-villagers.patch index dc128e6b8..80e8cb6a1 100644 --- a/patches/server/0047-Allow-leashing-villagers.patch +++ b/patches/server/0047-Allow-leashing-villagers.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Allow leashing villagers diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index fee22c6de2faf2dbfb7472fe734a148679f5d026..495f6774d64ee885424e6d069f405bcb92e46742 100644 +index 4014acb8f83a68c7d3938fdc7a3f002b606ddc1f..bb16b73b6a99ca8fa1b25cc1f8a0aa77c5009d27 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -2761,6 +2761,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -2762,6 +2762,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess if (this.isAlive() && this instanceof Leashable leashable) { if (leashable.getLeashHolder() == player) { if (!this.level().isClientSide()) { diff --git a/patches/server/0051-Configurable-void-damage-height-and-damage.patch b/patches/server/0051-Configurable-void-damage-height-and-damage.patch index f9d0f72e1..27496d367 100644 --- a/patches/server/0051-Configurable-void-damage-height-and-damage.patch +++ b/patches/server/0051-Configurable-void-damage-height-and-damage.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Configurable void damage height and damage diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 5d910738b610041487fc63f1657b827c4ca03107..44149646438b03b85c300e9fbb5982c998fa32de 100644 +index bb16b73b6a99ca8fa1b25cc1f8a0aa77c5009d27..04c6736d792f9341e21ff76f0ee8efaf375f6af3 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -912,7 +912,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -913,7 +913,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess public void checkBelowWorld() { // Paper start - Configurable nether ceiling damage @@ -18,10 +18,10 @@ index 5d910738b610041487fc63f1657b827c4ca03107..44149646438b03b85c300e9fbb5982c9 && (!(this instanceof Player player) || !player.getAbilities().invulnerable))) { // Paper end - Configurable nether ceiling damage diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index d6c550b11c99dcc5beced14f03317e5973de6550..f51d4d93ce91eff11889f814256fdef36115cc04 100644 +index 476fedac37b1cb3b6b75417996685ad0b38b26f4..c8e31fd851026123e2938052cad3c5d227aa12cf 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -2576,7 +2576,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -2581,7 +2581,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @Override protected void onBelowWorld() { @@ -31,7 +31,7 @@ index d6c550b11c99dcc5beced14f03317e5973de6550..f51d4d93ce91eff11889f814256fdef3 protected void updateSwingTime() { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 13da48e261251fec8ef180acceb08b230905bc84..aa42e20e1e960bc0ab28b1215f314c5cc7a31bd0 100644 +index ed8f3c606984f83b77ca96cbfc8bcd454ad63ff8..022cebe27d305073a05475cb045e863135de5446 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -99,10 +99,14 @@ public class PurpurWorldConfig { diff --git a/patches/server/0052-Add-canSaveToDisk-to-Entity.patch b/patches/server/0052-Add-canSaveToDisk-to-Entity.patch index a819f9516..d18564159 100644 --- a/patches/server/0052-Add-canSaveToDisk-to-Entity.patch +++ b/patches/server/0052-Add-canSaveToDisk-to-Entity.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add canSaveToDisk to Entity diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 44149646438b03b85c300e9fbb5982c998fa32de..a90bee7735b4b12371a28e57c6cc4ab88e0c9f9c 100644 +index 04c6736d792f9341e21ff76f0ee8efaf375f6af3..4293e514579b1f4e392e46955d0d535781e9c2b2 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -530,6 +530,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -531,6 +531,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return this.getIndirectPassengersStream().anyMatch((entity) -> entity instanceof Player); } // Paper end - rewrite chunk system diff --git a/patches/server/0053-Dispenser-curse-of-binding-protection.patch b/patches/server/0053-Dispenser-curse-of-binding-protection.patch index f67248eb0..1885b3a75 100644 --- a/patches/server/0053-Dispenser-curse-of-binding-protection.patch +++ b/patches/server/0053-Dispenser-curse-of-binding-protection.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Dispenser curse of binding protection diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index f51d4d93ce91eff11889f814256fdef36115cc04..e7853a16674ee748ebbf378044cb484cfdf6b73e 100644 +index c8e31fd851026123e2938052cad3c5d227aa12cf..cfd22afaf82b1f88d3d67e11b69ae82af41231cf 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -4497,6 +4497,12 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -4502,6 +4502,12 @@ public abstract class LivingEntity extends Entity implements Attackable { return EquipmentSlot.MAINHAND; } @@ -35,7 +35,7 @@ index 647a4601deace52f8d855f512a73671f82b4762a..d05b1e129eee07434d162e1b949fd563 // CraftBukkit start Level world = pointer.level(); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index aa42e20e1e960bc0ab28b1215f314c5cc7a31bd0..d5872f83a4345023c75af3cded5c54e0aa0bc550 100644 +index 022cebe27d305073a05475cb045e863135de5446..68ab094b44d693612dd0858d5a2caa2aae63c75a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -225,6 +225,11 @@ public class PurpurWorldConfig { diff --git a/patches/server/0057-Implement-elytra-settings.patch b/patches/server/0057-Implement-elytra-settings.patch index 39b30a619..f3647691d 100644 --- a/patches/server/0057-Implement-elytra-settings.patch +++ b/patches/server/0057-Implement-elytra-settings.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Implement elytra settings diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index e7853a16674ee748ebbf378044cb484cfdf6b73e..0c607578b493496e79ea08cdf752828252a66c47 100644 +index cfd22afaf82b1f88d3d67e11b69ae82af41231cf..7f69f6bd5d4b3e67dc222deec851372e1d40ba98 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -3558,7 +3558,16 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3563,7 +3563,16 @@ public abstract class LivingEntity extends Entity implements Attackable { int j = i / 10; if (j % 2 == 0) { @@ -65,7 +65,7 @@ index f1b2d388a1a40a1d909a2e726f32d6c15e1eb0eb..4934bae61114b49a9f8d0ed044fbb881 entityhuman.startAutoSpinAttack(20, 8.0F, stack); if (entityhuman.onGround()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 230aede0b10e0999a6043e2bd0e2fe381a232f9d..79dd69c0e17c07e92b1bf8caf7e8d25ba351cb09 100644 +index c3f652ff39d9736e1ff2faac1ce8999d99d38524..238cec1e37fcc9ca676a680ee616b43f1312dbd0 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -113,6 +113,17 @@ public class PurpurWorldConfig { diff --git a/patches/server/0067-Add-allow-water-in-end-world-option.patch b/patches/server/0067-Add-allow-water-in-end-world-option.patch index 103a58d0c..5130720b9 100644 --- a/patches/server/0067-Add-allow-water-in-end-world-option.patch +++ b/patches/server/0067-Add-allow-water-in-end-world-option.patch @@ -27,10 +27,10 @@ index 321188173918d0d60858a258400dfd682ccdb21c..af47074f3a61a8518697d7851e43d543 return true; diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 9b81f4c7d504065837bee4533bac978807c35663..edd0f51826ebf77a790bcb8c465a116ab9830922 100644 +index 9e3a8875bec30db2ec2de9bb0995b2dbb862aa3b..b06d7ac5bb109bf88cf526d3bf5ac1416927a03b 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -1592,4 +1592,13 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl +@@ -1602,4 +1602,13 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl return null; } // Paper end - optimize redstone (Alternate Current) diff --git a/patches/server/0075-Totems-work-in-inventory.patch b/patches/server/0075-Totems-work-in-inventory.patch index b983c0a3f..f4b9740d4 100644 --- a/patches/server/0075-Totems-work-in-inventory.patch +++ b/patches/server/0075-Totems-work-in-inventory.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Totems work in inventory diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index d207f9107b2d78bbe5f4eb400f825829ea4f4688..62bf75a8adbe267663b88c2709d042c4b473907c 100644 +index 131f6aa7678d026c3ea64006693439a45019be95..c0e0725408bf0a3937e19e28b2c05c2b23c9cdf7 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1630,6 +1630,18 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1635,6 +1635,18 @@ public abstract class LivingEntity extends Entity implements Attackable { } } @@ -28,7 +28,7 @@ index d207f9107b2d78bbe5f4eb400f825829ea4f4688..62bf75a8adbe267663b88c2709d042c4 EntityResurrectEvent event = new EntityResurrectEvent((org.bukkit.entity.LivingEntity) this.getBukkitEntity(), handSlot); event.setCancelled(itemstack == null); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 5053c57bfc39bcc5b383795fe6e85dc9e5d1e421..b16b141e0f44211579adae187e48b8c2224537f5 100644 +index 41e07eec0ba1cc2e31b967fdc616e59f7cd76b28..d320a16646d0e15278c7d459f49627293b96a0f9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -242,6 +242,7 @@ public class PurpurWorldConfig { diff --git a/patches/server/0081-Stop-squids-floating-on-top-of-water.patch b/patches/server/0081-Stop-squids-floating-on-top-of-water.patch index 755cc7eb7..4331dbcca 100644 --- a/patches/server/0081-Stop-squids-floating-on-top-of-water.patch +++ b/patches/server/0081-Stop-squids-floating-on-top-of-water.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Stop squids floating on top of water diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index ae9c6d929a9aae184e6bc06aab8ae1767cabee3b..8ab7afec7dea74dbc5c28e91ac8911a5263fd50e 100644 +index 4293e514579b1f4e392e46955d0d535781e9c2b2..963482bc8eeaa421453950cb831b2365a57b8b58 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -4319,6 +4319,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -4320,6 +4320,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return Mth.lerp(delta, this.yRotO, this.yRot); } diff --git a/patches/server/0096-Make-entity-breeding-times-configurable.patch b/patches/server/0096-Make-entity-breeding-times-configurable.patch index 87d672139..ed621aaa6 100644 --- a/patches/server/0096-Make-entity-breeding-times-configurable.patch +++ b/patches/server/0096-Make-entity-breeding-times-configurable.patch @@ -268,7 +268,7 @@ index a14db0ec9ebcde24d5b7340a08002eddc8ebd421..fb429dce94bfad6aba3c63a4694e7c8d protected void registerGoals() { this.eatBlockGoal = new EatBlockGoal(this); diff --git a/src/main/java/net/minecraft/world/entity/animal/Turtle.java b/src/main/java/net/minecraft/world/entity/animal/Turtle.java -index 41d47141bfd77b17cbf163bffdfeb002135035ca..8f02a1b39db0581efb8ccd2c889f048bfd7b3e04 100644 +index 60736df3b726c6a408c8b6aae6f0bd3e3efd32b0..751fe2afdea34a6776d428675c3924112668d530 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Turtle.java +++ b/src/main/java/net/minecraft/world/entity/animal/Turtle.java @@ -110,6 +110,11 @@ public class Turtle extends Animal { @@ -281,7 +281,7 @@ index 41d47141bfd77b17cbf163bffdfeb002135035ca..8f02a1b39db0581efb8ccd2c889f048b + } + public void setHomePos(BlockPos pos) { - this.entityData.set(Turtle.HOME_POS, pos); + this.entityData.set(Turtle.HOME_POS, pos.immutable()); // Paper - called with mutablepos... } diff --git a/src/main/java/net/minecraft/world/entity/animal/Wolf.java b/src/main/java/net/minecraft/world/entity/animal/Wolf.java index 3268f07668eaa0322aeb77a158dfb2996d16dfcb..da375fb6907e0c46ed176bc76a84f2666227547c 100644 diff --git a/patches/server/0115-Add-mobGriefing-bypass-to-everything-affected.patch b/patches/server/0115-Add-mobGriefing-bypass-to-everything-affected.patch index b084ec713..5412fe13d 100644 --- a/patches/server/0115-Add-mobGriefing-bypass-to-everything-affected.patch +++ b/patches/server/0115-Add-mobGriefing-bypass-to-everything-affected.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add mobGriefing bypass to everything affected diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 62bf75a8adbe267663b88c2709d042c4b473907c..fc560ddef3542f9bf566917c3af9072857f1bd04 100644 +index c0e0725408bf0a3937e19e28b2c05c2b23c9cdf7..2c2af2b2fcebb17c2aeb7431e79d3d82dfe898fc 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1808,7 +1808,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1813,7 +1813,7 @@ public abstract class LivingEntity extends Entity implements Attackable { boolean flag = false; if (this.dead && adversary instanceof WitherBoss) { // Paper diff --git a/patches/server/0119-Movement-options-for-armor-stands.patch b/patches/server/0119-Movement-options-for-armor-stands.patch index 408528306..4367503a1 100644 --- a/patches/server/0119-Movement-options-for-armor-stands.patch +++ b/patches/server/0119-Movement-options-for-armor-stands.patch @@ -17,10 +17,10 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index f23e932e86a92a796e56d1e994d3d631ad39c8ff..295acb77be8a2219e1f6cfe6e215695d763cfbd9 100644 +index 963482bc8eeaa421453950cb831b2365a57b8b58..401ecc34f385e1be22440e8988bb7cfaff10f6e2 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -1822,7 +1822,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1823,7 +1823,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return this.isInWater() || flag; } @@ -66,7 +66,7 @@ index a37054d39ee142e5f3ca3c5e1e3a15c150a3ba32..ea3cad6c9cc561b225cd41f04bd204c9 + // Purpur end } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 001547cc8fca4d6f5b88c9f7b4f759fd1776018b..43ed2d8376784a7b674d6ec3716399a7c04fd1bb 100644 +index 6958742eb8bafab17f79bb29137dde3f9d9ba5e2..fe262538b7c4f3f69cb481303d4b16b55e8b1082 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -100,10 +100,16 @@ public class PurpurWorldConfig { diff --git a/patches/server/0120-Fix-stuck-in-portals.patch b/patches/server/0120-Fix-stuck-in-portals.patch index 2e74b6a19..b93fcbbae 100644 --- a/patches/server/0120-Fix-stuck-in-portals.patch +++ b/patches/server/0120-Fix-stuck-in-portals.patch @@ -17,10 +17,10 @@ index a1ef38422631b3856160e054daa14eacb8f13c57..794f5ccc2147ad101e06576a704bb153 this.connection.teleport(exit); // CraftBukkit - use internal teleport without event this.connection.resetPosition(); diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index f63430ca14b746419103994e03707610fcc059bf..d729c66ef03339b2a7cd982082c2e646601e2441 100644 +index 401ecc34f385e1be22440e8988bb7cfaff10f6e2..a96985384f7b44470f5d3961371ba7764a8078ab 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3102,13 +3102,16 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3103,13 +3103,16 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return Vec3.directionFromRotation(this.getRotationVector()); } diff --git a/patches/server/0121-Toggle-for-water-sensitive-mob-damage.patch b/patches/server/0121-Toggle-for-water-sensitive-mob-damage.patch index 77836dbfd..a37f3b70e 100644 --- a/patches/server/0121-Toggle-for-water-sensitive-mob-damage.patch +++ b/patches/server/0121-Toggle-for-water-sensitive-mob-damage.patch @@ -379,7 +379,7 @@ index 327b1805d9d4069212a8772ff189c9ab24ae1183..4ac998e9d96aed3b0ea0ec3f9dcd5fdd return "entity.minecraft.tropical_fish.predefined." + variant; } diff --git a/src/main/java/net/minecraft/world/entity/animal/Turtle.java b/src/main/java/net/minecraft/world/entity/animal/Turtle.java -index 8f02a1b39db0581efb8ccd2c889f048bfd7b3e04..49e6479d7aece02c4fedc86aa83e5e0a982381cc 100644 +index 751fe2afdea34a6776d428675c3924112668d530..099fd99cf3d455329487fbbf572bb0b27b662e72 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Turtle.java +++ b/src/main/java/net/minecraft/world/entity/animal/Turtle.java @@ -115,6 +115,11 @@ public class Turtle extends Animal { @@ -392,7 +392,7 @@ index 8f02a1b39db0581efb8ccd2c889f048bfd7b3e04..49e6479d7aece02c4fedc86aa83e5e0a + } + public void setHomePos(BlockPos pos) { - this.entityData.set(Turtle.HOME_POS, pos); + this.entityData.set(Turtle.HOME_POS, pos.immutable()); // Paper - called with mutablepos... } diff --git a/src/main/java/net/minecraft/world/entity/animal/Wolf.java b/src/main/java/net/minecraft/world/entity/animal/Wolf.java index edf12c4f81f8a113a87b70bf4ab91888fc648cd5..43fcaa66b1c3a53a625aca63c50793e91b97d30f 100644 diff --git a/patches/server/0139-Drowning-Settings.patch b/patches/server/0139-Drowning-Settings.patch index fb16c9bbe..431ae101f 100644 --- a/patches/server/0139-Drowning-Settings.patch +++ b/patches/server/0139-Drowning-Settings.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Drowning Settings diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index d729c66ef03339b2a7cd982082c2e646601e2441..99562b8eb24c39a1771edf4b9084c26179c4f382 100644 +index a96985384f7b44470f5d3961371ba7764a8078ab..13afec25f9d08401d9c5adee211e422159f2ba02 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3321,7 +3321,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3322,7 +3322,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } public int getMaxAirSupply() { @@ -18,7 +18,7 @@ index d729c66ef03339b2a7cd982082c2e646601e2441..99562b8eb24c39a1771edf4b9084c261 public int getAirSupply() { diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index d76e8cf2a2d48548b0ad33c78dbf435b61bf91c4..da28941d9a374be39cf7c1620f48ddaaa89a9010 100644 +index 6e00e7a1cd6916a482dca9d55ca70c8baf6df6a9..b1e50b7617e06a58ae0b381ce2b32bee0afc139e 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -474,7 +474,7 @@ public abstract class LivingEntity extends Entity implements Attackable { diff --git a/patches/server/0165-API-for-any-mob-to-burn-daylight.patch b/patches/server/0165-API-for-any-mob-to-burn-daylight.patch index 8a983bcbf..a177a6952 100644 --- a/patches/server/0165-API-for-any-mob-to-burn-daylight.patch +++ b/patches/server/0165-API-for-any-mob-to-burn-daylight.patch @@ -6,10 +6,10 @@ Subject: [PATCH] API for any mob to burn daylight Co-authored by: Encode42 diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 99562b8eb24c39a1771edf4b9084c26179c4f382..586410044c969569f8b55b0b71b08faa8a2bb578 100644 +index 13afec25f9d08401d9c5adee211e422159f2ba02..0d4eb7fb3a62db8691d49d6963aec7ca5a5240c9 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -536,6 +536,22 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -537,6 +537,22 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } // Purpur end @@ -33,7 +33,7 @@ index 99562b8eb24c39a1771edf4b9084c26179c4f382..586410044c969569f8b55b0b71b08faa this.id = Entity.ENTITY_COUNTER.incrementAndGet(); this.passengers = ImmutableList.of(); diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index ee48e98e6981225b486ea933d51fb4b9cc73fa18..9367e0f148d3aa9a60dfd8881a3c337630a53129 100644 +index 6da2be7115f50f1839f3610bfdd4262f70d11b07..8b6f8c6dd4c7acbceb0925bd6fd3d23e5186a578 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -286,6 +286,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -64,7 +64,7 @@ index ee48e98e6981225b486ea933d51fb4b9cc73fa18..9367e0f148d3aa9a60dfd8881a3c3376 } // CraftBukkit start -@@ -3580,6 +3587,34 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3585,6 +3592,34 @@ public abstract class LivingEntity extends Entity implements Attackable { this.hurt(this.damageSources().drown(), 1.0F); } diff --git a/patches/server/0168-Make-lightning-rod-range-configurable.patch b/patches/server/0168-Make-lightning-rod-range-configurable.patch index 94bc76aad..de520d68e 100644 --- a/patches/server/0168-Make-lightning-rod-range-configurable.patch +++ b/patches/server/0168-Make-lightning-rod-range-configurable.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Make lightning rod range configurable diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index f2362ebe16440fd611ed80f056294c28611cf944..0db8ecab2a27410059c7c131a4a903ee543e1801 100644 +index a1dcda6339f29bf361c62440669a7443e0a5959d..ddb2e8d5a692cd76d67f867fc8bcca3c9b24bab3 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -994,7 +994,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -1013,7 +1013,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. return holder.is(PoiTypes.LIGHTNING_ROD); }, (blockposition1) -> { return blockposition1.getY() == this.getHeight(Heightmap.Types.WORLD_SURFACE, blockposition1.getX(), blockposition1.getZ()) - 1; diff --git a/patches/server/0181-Customizable-sleeping-actionbar-messages.patch b/patches/server/0181-Customizable-sleeping-actionbar-messages.patch index 76b2e42f3..da7a43804 100644 --- a/patches/server/0181-Customizable-sleeping-actionbar-messages.patch +++ b/patches/server/0181-Customizable-sleeping-actionbar-messages.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Customizable sleeping actionbar messages diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 0db8ecab2a27410059c7c131a4a903ee543e1801..0faac1e8358b7095190f170e981874d52eb31914 100644 +index ddb2e8d5a692cd76d67f867fc8bcca3c9b24bab3..be87e350b0d808305a389baf447c0ed00b1cbfc0 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -1043,11 +1043,27 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -1062,11 +1062,27 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. if (this.canSleepThroughNights()) { if (!this.getServer().isSingleplayer() || this.getServer().isPublished()) { int i = this.getGameRules().getInt(GameRules.RULE_PLAYERS_SLEEPING_PERCENTAGE); diff --git a/patches/server/0187-Toggle-for-kinetic-damage.patch b/patches/server/0187-Toggle-for-kinetic-damage.patch index a52a9f1e8..2178245f9 100644 --- a/patches/server/0187-Toggle-for-kinetic-damage.patch +++ b/patches/server/0187-Toggle-for-kinetic-damage.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Toggle for kinetic damage diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 9367e0f148d3aa9a60dfd8881a3c337630a53129..6b76ca326d08853a8a508ec22d7bc6cf370223dd 100644 +index 8b6f8c6dd4c7acbceb0925bd6fd3d23e5186a578..d8be57f2ff13c9492acb1d07c1aa6198793832d8 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -2983,6 +2983,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -2988,6 +2988,7 @@ public abstract class LivingEntity extends Entity implements Attackable { if (f3 > 0.0F) { this.playSound(this.getFallDamageSound((int) f3), 1.0F, 1.0F); diff --git a/patches/server/0200-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch b/patches/server/0200-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch index 8ad7aa882..cb766b1f9 100644 --- a/patches/server/0200-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch +++ b/patches/server/0200-Option-for-if-rain-and-thunder-should-stop-on-sleep.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Option for if rain and thunder should stop on sleep diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 0faac1e8358b7095190f170e981874d52eb31914..3f5460eef103b0c664f52838fb4f7e000c216879 100644 +index be87e350b0d808305a389baf447c0ed00b1cbfc0..ebcf9afd13940922f288d651afff32fdbcf36317 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -1203,6 +1203,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -1222,6 +1222,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. @VisibleForTesting public void resetWeatherCycle() { // CraftBukkit start @@ -16,7 +16,7 @@ index 0faac1e8358b7095190f170e981874d52eb31914..3f5460eef103b0c664f52838fb4f7e00 this.serverLevelData.setRaining(false, org.bukkit.event.weather.WeatherChangeEvent.Cause.SLEEP); // Paper - Add cause to Weather/ThunderChangeEvents // If we stop due to everyone sleeping we should reset the weather duration to some other random value. // Not that everyone ever manages to get the whole server to sleep at the same time.... -@@ -1210,6 +1211,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -1229,6 +1230,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. this.serverLevelData.setRainTime(0); } // CraftBukkit end diff --git a/patches/server/0215-Mobs-always-drop-experience.patch b/patches/server/0215-Mobs-always-drop-experience.patch index 140bcf50c..2f2cc6a9c 100644 --- a/patches/server/0215-Mobs-always-drop-experience.patch +++ b/patches/server/0215-Mobs-always-drop-experience.patch @@ -373,7 +373,7 @@ index 4ac998e9d96aed3b0ea0ec3f9dcd5fdd74c45d24..2d04addd17d2c358fff598012b323cd7 return "entity.minecraft.tropical_fish.predefined." + variant; } diff --git a/src/main/java/net/minecraft/world/entity/animal/Turtle.java b/src/main/java/net/minecraft/world/entity/animal/Turtle.java -index 49e6479d7aece02c4fedc86aa83e5e0a982381cc..55d83c57d76e73d73dca1400f4c0c18661d49a94 100644 +index 099fd99cf3d455329487fbbf572bb0b27b662e72..15a8c4e2772e1529204e3892914e49f9a17852aa 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Turtle.java +++ b/src/main/java/net/minecraft/world/entity/animal/Turtle.java @@ -120,6 +120,11 @@ public class Turtle extends Animal { @@ -386,7 +386,7 @@ index 49e6479d7aece02c4fedc86aa83e5e0a982381cc..55d83c57d76e73d73dca1400f4c0c186 + } + public void setHomePos(BlockPos pos) { - this.entityData.set(Turtle.HOME_POS, pos); + this.entityData.set(Turtle.HOME_POS, pos.immutable()); // Paper - called with mutablepos... } diff --git a/src/main/java/net/minecraft/world/entity/animal/Wolf.java b/src/main/java/net/minecraft/world/entity/animal/Wolf.java index b79707bafd7c18eda8ea64bc33d2262515d80642..a2df7cf565157db2f8e0f0d33778c8d8dea1cd95 100644 diff --git a/patches/server/0226-Allow-void-trading.patch b/patches/server/0226-Allow-void-trading.patch index 550b0b7ac..596b0b85d 100644 --- a/patches/server/0226-Allow-void-trading.patch +++ b/patches/server/0226-Allow-void-trading.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Allow void trading diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 3f5460eef103b0c664f52838fb4f7e000c216879..dfb25c24237d98159e3c58b3d800c6ab5dc5e81b 100644 +index ebcf9afd13940922f288d651afff32fdbcf36317..744702d92ba01f2fe889d4bd989e8687b558a7a9 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -2598,7 +2598,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -2617,7 +2617,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. // Spigot Start if (entity.getBukkitEntity() instanceof org.bukkit.inventory.InventoryHolder && (!(entity instanceof ServerPlayer) || entity.getRemovalReason() != Entity.RemovalReason.KILLED)) { // SPIGOT-6876: closeInventory clears death message // Paper start - Fix merchant inventory not closing on entity removal diff --git a/patches/server/0249-Add-toggle-for-RNG-manipulation.patch b/patches/server/0249-Add-toggle-for-RNG-manipulation.patch index 4393d647a..396dd9201 100644 --- a/patches/server/0249-Add-toggle-for-RNG-manipulation.patch +++ b/patches/server/0249-Add-toggle-for-RNG-manipulation.patch @@ -7,10 +7,10 @@ Paper patches RNG maniplulation by using a shared (and locked) random source. This comes with a performance gain, but technical players may prefer the ability to manipulate RNG. diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 586410044c969569f8b55b0b71b08faa8a2bb578..ef24ef826ab825ce0a22ff3c5ad84d9494d63aef 100644 +index 0d4eb7fb3a62db8691d49d6963aec7ca5a5240c9..126f0ddc96193d482ebe00ff157fe08b0a641a9d 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -559,7 +559,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -560,7 +560,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess this.bb = Entity.INITIAL_AABB; this.stuckSpeedMultiplier = Vec3.ZERO; this.nextStep = 1.0F; diff --git a/patches/server/0250-Remove-Timings.patch b/patches/server/0250-Remove-Timings.patch index 6547a096d..efe4a84e4 100644 --- a/patches/server/0250-Remove-Timings.patch +++ b/patches/server/0250-Remove-Timings.patch @@ -336,7 +336,7 @@ index 64ed296cfbe7e5d27286b8cee70454fd1d99ebb0..be22cbe607876fdf39120d6957db5411 gameprofilerfiller.pop(); gameprofilerfiller.pop(); diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index dfb25c24237d98159e3c58b3d800c6ab5dc5e81b..c2aaca3cdc77f14e1d19eb4ac8cbf10a3ae0b6d3 100644 +index 744702d92ba01f2fe889d4bd989e8687b558a7a9..c4dfa08163f563218eac34941abaff0159517dbe 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -703,7 +703,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. @@ -409,25 +409,25 @@ index dfb25c24237d98159e3c58b3d800c6ab5dc5e81b..c2aaca3cdc77f14e1d19eb4ac8cbf10a gameprofilerfiller.pop(); this.tickBlockEntities(); } -@@ -911,7 +911,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -920,7 +920,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. } // Paper - Option to disable ice and snow gameprofilerfiller.popPush("tickBlocks"); - timings.chunkTicksBlocks.startTiming(); // Paper + //timings.chunkTicksBlocks.startTiming(); // Paper // Purpur if (randomTickSpeed > 0) { - LevelChunkSection[] achunksection = chunk.getSections(); - -@@ -944,7 +944,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. - } + // Paper start - optimize random block ticking + LevelChunkSection[] sections = chunk.getSections(); +@@ -954,7 +954,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. } + // Paper end - optimise random block ticking - timings.chunkTicksBlocks.stopTiming(); // Paper + //timings.chunkTicksBlocks.stopTiming(); // Paper // Purpur gameprofilerfiller.pop(); } -@@ -1268,8 +1268,8 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -1287,8 +1287,8 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. // Spigot end // Paper start- timings final boolean isActive = org.spigotmc.ActivationRange.checkIfActive(entity); @@ -438,7 +438,7 @@ index dfb25c24237d98159e3c58b3d800c6ab5dc5e81b..c2aaca3cdc77f14e1d19eb4ac8cbf10a // Paper end - timings entity.setOldPosAndRot(); ProfilerFiller gameprofilerfiller = this.getProfiler(); -@@ -1285,7 +1285,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -1304,7 +1304,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. entity.postTick(); // CraftBukkit } else { entity.inactiveTick(); } // Paper - EAR 2 this.getProfiler().pop(); @@ -447,7 +447,7 @@ index dfb25c24237d98159e3c58b3d800c6ab5dc5e81b..c2aaca3cdc77f14e1d19eb4ac8cbf10a Iterator iterator = entity.getPassengers().iterator(); while (iterator.hasNext()) { -@@ -1302,8 +1302,8 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -1321,8 +1321,8 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. if (passenger instanceof Player || this.entityTickList.contains(passenger)) { // Paper - EAR 2 final boolean isActive = org.spigotmc.ActivationRange.checkIfActive(passenger); @@ -458,7 +458,7 @@ index dfb25c24237d98159e3c58b3d800c6ab5dc5e81b..c2aaca3cdc77f14e1d19eb4ac8cbf10a // Paper end passenger.setOldPosAndRot(); ++passenger.tickCount; -@@ -1333,7 +1333,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -1352,7 +1352,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. this.tickPassenger(passenger, entity2); } @@ -467,7 +467,7 @@ index dfb25c24237d98159e3c58b3d800c6ab5dc5e81b..c2aaca3cdc77f14e1d19eb4ac8cbf10a } } else { passenger.stopRiding(); -@@ -1355,7 +1355,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -1374,7 +1374,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. if (!savingDisabled) { org.bukkit.Bukkit.getPluginManager().callEvent(new org.bukkit.event.world.WorldSaveEvent(this.getWorld())); // CraftBukkit @@ -476,7 +476,7 @@ index dfb25c24237d98159e3c58b3d800c6ab5dc5e81b..c2aaca3cdc77f14e1d19eb4ac8cbf10a if (progressListener != null) { progressListener.progressStartNoAbort(Component.translatable("menu.savingLevel")); } -@@ -1365,10 +1365,10 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -1384,10 +1384,10 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. progressListener.progressStage(Component.translatable("menu.savingChunks")); } @@ -491,10 +491,10 @@ index dfb25c24237d98159e3c58b3d800c6ab5dc5e81b..c2aaca3cdc77f14e1d19eb4ac8cbf10a } diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 7b215f334c75d0e8714c3a9b3efef46272fa1ceb..10c59d30da3c4713fb7cdcf2e600508c0dd3acf0 100644 +index 3b3403e07023a70f9d53c22a288cb68925ed6f21..74c6f43a26ca1b36e7121dddd9f065b2a9254493 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -1220,11 +1220,11 @@ public abstract class PlayerList { +@@ -1221,11 +1221,11 @@ public abstract class PlayerList { public void saveAll() { io.papermc.paper.util.MCUtil.ensureMain("Save Players" , () -> { // Paper - Ensure main @@ -558,7 +558,7 @@ index 85b4b24361e785acf75571ff98f924c00ae80748..09a7b418ddf564c0be13297f7c216db2 } diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 9810b1cb4c771a01df93fd45e2f94019edabf6a5..1b85d31a81404ea817c892ac0bd055058fe8f079 100644 +index cf9525f94058e9c3e84d71b08b49c21c960f6e99..ff97d43ca93dfd204d42be45233885312b9a6b93 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -990,15 +990,15 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl @@ -580,7 +580,7 @@ index 9810b1cb4c771a01df93fd45e2f94019edabf6a5..1b85d31a81404ea817c892ac0bd05505 // Spigot start // Iterator iterator = this.blockEntityTickers.iterator(); boolean flag = this.tickRateManager().runsNormally(); -@@ -1027,7 +1027,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl +@@ -1029,7 +1029,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl } this.blockEntityTickers.removeAll(toRemove); // Paper - Fix MC-117075 diff --git a/patches/server/0251-Remove-Mojang-Profiler.patch b/patches/server/0251-Remove-Mojang-Profiler.patch index a34f0ef35..77d03e9d4 100644 --- a/patches/server/0251-Remove-Mojang-Profiler.patch +++ b/patches/server/0251-Remove-Mojang-Profiler.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Remove Mojang Profiler diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java -index c32d172c161e6e537ee8e60b36bcb402e1ddb876..03c6ed862cc391b104b6c0ff0b8adf62824d293d 100644 +index a66e2d78722847dec4e9d4aba8e6968ef009fcf4..24cb04cd33cfe578286c85a892b20bbf3fc843e6 100644 --- a/src/main/java/net/minecraft/commands/Commands.java +++ b/src/main/java/net/minecraft/commands/Commands.java @@ -165,7 +165,7 @@ public class Commands { @@ -17,7 +17,7 @@ index c32d172c161e6e537ee8e60b36bcb402e1ddb876..03c6ed862cc391b104b6c0ff0b8adf62 DefaultGameModeCommands.register(this.dispatcher); DifficultyCommand.register(this.dispatcher); EffectCommands.register(this.dispatcher, commandRegistryAccess); -@@ -349,9 +349,9 @@ public class Commands { +@@ -346,9 +346,9 @@ public class Commands { // Paper end CommandSourceStack commandlistenerwrapper = (CommandSourceStack) parseresults.getContext().getSource(); @@ -29,7 +29,7 @@ index c32d172c161e6e537ee8e60b36bcb402e1ddb876..03c6ed862cc391b104b6c0ff0b8adf62 ContextChain contextchain = this.finishParsing(parseresults, s, commandlistenerwrapper, label); // CraftBukkit // Paper - Add UnknownCommandEvent try { -@@ -381,7 +381,7 @@ public class Commands { +@@ -378,7 +378,7 @@ public class Commands { Commands.LOGGER.error("'/{}' threw an exception", s, exception); } } finally { @@ -585,7 +585,7 @@ index be22cbe607876fdf39120d6957db541146e6e589..63b03939a15150eeafc0498a6c810153 } diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index c2aaca3cdc77f14e1d19eb4ac8cbf10a3ae0b6d3..72f529cbe455377c2a2b4938693fa7858fc2ce9c 100644 +index c4dfa08163f563218eac34941abaff0159517dbe..099be5d1b510866fb7294b304ce294e0dc591c80 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -661,16 +661,16 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. @@ -711,7 +711,7 @@ index c2aaca3cdc77f14e1d19eb4ac8cbf10a3ae0b6d3..72f529cbe455377c2a2b4938693fa785 } @Override -@@ -861,9 +861,9 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -865,9 +865,9 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. boolean flag = this.isRaining(); int j = chunkcoordintpair.getMinBlockX(); int k = chunkcoordintpair.getMinBlockZ(); @@ -720,10 +720,10 @@ index c2aaca3cdc77f14e1d19eb4ac8cbf10a3ae0b6d3..72f529cbe455377c2a2b4938693fa785 - gameprofilerfiller.push("thunder"); + //gameprofilerfiller.push("thunder"); // Purpur - if (!this.paperConfig().environment.disableThunder && flag && this.isThundering() && this.spigotConfig.thunderChance > 0 && this.random.nextInt(this.spigotConfig.thunderChance) == 0) { // Spigot // Paper - Option to disable thunder - BlockPos blockposition = this.findLightningTargetAround(this.getBlockRandomPos(j, 0, k, 15)); + final BlockPos.MutableBlockPos blockposition = this.chunkTickMutablePosition; // Paper - use mutable to reduce allocation rate, final to force compile fail on change -@@ -900,7 +900,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. + if (!this.paperConfig().environment.disableThunder && flag && this.isThundering() && this.spigotConfig.thunderChance > 0 && this.random.nextInt(this.spigotConfig.thunderChance) == 0) { // Spigot // Paper - Option to disable thunder +@@ -906,7 +906,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. } } @@ -732,7 +732,7 @@ index c2aaca3cdc77f14e1d19eb4ac8cbf10a3ae0b6d3..72f529cbe455377c2a2b4938693fa785 if (!this.paperConfig().environment.disableIceAndSnow) { // Paper - Option to disable ice and snow for (int l = 0; l < randomTickSpeed; ++l) { -@@ -910,7 +910,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -919,7 +919,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. } } // Paper - Option to disable ice and snow @@ -740,26 +740,9 @@ index c2aaca3cdc77f14e1d19eb4ac8cbf10a3ae0b6d3..72f529cbe455377c2a2b4938693fa785 + //gameprofilerfiller.popPush("tickBlocks"); // Purpur //timings.chunkTicksBlocks.startTiming(); // Paper // Purpur if (randomTickSpeed > 0) { - LevelChunkSection[] achunksection = chunk.getSections(); -@@ -925,7 +925,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. - for (int l1 = 0; l1 < randomTickSpeed; ++l1) { - BlockPos blockposition1 = this.getBlockRandomPos(j, k1, k, 15); - -- gameprofilerfiller.push("randomTick"); -+ //gameprofilerfiller.push("randomTick"); // Purpur - BlockState iblockdata = chunksection.getBlockState(blockposition1.getX() - j, blockposition1.getY() - k1, blockposition1.getZ() - k); - - if (iblockdata.isRandomlyTicking()) { -@@ -938,14 +938,14 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. - fluid.randomTick(this, blockposition1, this.random); - } - -- gameprofilerfiller.pop(); -+ //gameprofilerfiller.pop(); // Purpur - } - } - } - } + // Paper start - optimize random block ticking +@@ -955,7 +955,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. + // Paper end - optimise random block ticking //timings.chunkTicksBlocks.stopTiming(); // Paper // Purpur - gameprofilerfiller.pop(); @@ -767,7 +750,7 @@ index c2aaca3cdc77f14e1d19eb4ac8cbf10a3ae0b6d3..72f529cbe455377c2a2b4938693fa785 } @VisibleForTesting -@@ -1272,19 +1272,19 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -1291,19 +1291,19 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. //try { // Purpur // Paper end - timings entity.setOldPosAndRot(); @@ -792,7 +775,7 @@ index c2aaca3cdc77f14e1d19eb4ac8cbf10a3ae0b6d3..72f529cbe455377c2a2b4938693fa785 //} finally { timer.stopTiming(); } // Paper - timings // Purpur Iterator iterator = entity.getPassengers().iterator(); -@@ -1307,12 +1307,12 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -1326,12 +1326,12 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. // Paper end passenger.setOldPosAndRot(); ++passenger.tickCount; @@ -809,7 +792,7 @@ index c2aaca3cdc77f14e1d19eb4ac8cbf10a3ae0b6d3..72f529cbe455377c2a2b4938693fa785 // Paper start - EAR 2 if (isActive) { passenger.rideTick(); -@@ -1324,7 +1324,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -1343,7 +1343,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. vehicle.positionRider(passenger); } // Paper end - EAR 2 @@ -1078,10 +1061,10 @@ index a715ecf4a8ac91d3e5e5c6269d89e54b2c1cd279..223c3665126c576eddb1a8f7c9f5bc60 }; } diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index ef24ef826ab825ce0a22ff3c5ad84d9494d63aef..8b234996acfcb9f22e32ce94984ae4afd7ad8142 100644 +index 126f0ddc96193d482ebe00ff157fe08b0a641a9d..badf612b7ef717996037b7eacecd74a7ada6c371 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -859,7 +859,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -860,7 +860,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess // CraftBukkit end public void baseTick() { @@ -1090,7 +1073,7 @@ index ef24ef826ab825ce0a22ff3c5ad84d9494d63aef..8b234996acfcb9f22e32ce94984ae4af if (firstTick && this instanceof net.minecraft.world.entity.NeutralMob neutralMob) neutralMob.tickInitialPersistentAnger(level); // Paper - Prevent entity loading causing async lookups this.inBlockState = null; if (this.isPassenger() && this.getVehicle().isRemoved()) { -@@ -924,7 +924,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -925,7 +925,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess Leashable.tickLeash((Entity & Leashable) this); // CraftBukkit - decompile error } @@ -1099,7 +1082,7 @@ index ef24ef826ab825ce0a22ff3c5ad84d9494d63aef..8b234996acfcb9f22e32ce94984ae4af } public void setSharedFlagOnFire(boolean onFire) { -@@ -1102,7 +1102,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1103,7 +1103,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } } @@ -1108,7 +1091,7 @@ index ef24ef826ab825ce0a22ff3c5ad84d9494d63aef..8b234996acfcb9f22e32ce94984ae4af if (this.stuckSpeedMultiplier.lengthSqr() > 1.0E-7D) { movement = movement.multiply(this.stuckSpeedMultiplier); this.stuckSpeedMultiplier = Vec3.ZERO; -@@ -1111,7 +1111,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1112,7 +1112,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess // Paper start - ignore movement changes while inactive. if (isTemporarilyActive && !(this instanceof ItemEntity) && movement == getDeltaMovement() && movementType == MoverType.SELF) { setDeltaMovement(Vec3.ZERO); @@ -1117,7 +1100,7 @@ index ef24ef826ab825ce0a22ff3c5ad84d9494d63aef..8b234996acfcb9f22e32ce94984ae4af return; } // Paper end -@@ -1132,8 +1132,8 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1133,8 +1133,8 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess this.setPos(this.getX() + vec3d1.x, this.getY() + vec3d1.y, this.getZ() + vec3d1.z); } @@ -1128,7 +1111,7 @@ index ef24ef826ab825ce0a22ff3c5ad84d9494d63aef..8b234996acfcb9f22e32ce94984ae4af boolean flag = !Mth.equal(movement.x, vec3d1.x); boolean flag1 = !Mth.equal(movement.z, vec3d1.z); -@@ -1152,7 +1152,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1153,7 +1153,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess this.checkFallDamage(vec3d1.y, this.onGround(), iblockdata, blockposition); if (this.isRemoved()) { @@ -1137,7 +1120,7 @@ index ef24ef826ab825ce0a22ff3c5ad84d9494d63aef..8b234996acfcb9f22e32ce94984ae4af } else { if (this.horizontalCollision) { Vec3 vec3d2 = this.getDeltaMovement(); -@@ -1255,7 +1255,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1256,7 +1256,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess this.setRemainingFireTicks(-this.getFireImmuneTicks()); } @@ -1146,7 +1129,7 @@ index ef24ef826ab825ce0a22ff3c5ad84d9494d63aef..8b234996acfcb9f22e32ce94984ae4af } } } -@@ -3142,7 +3142,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3143,7 +3143,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess this.processPortalCooldown(); if (this.portalProcess != null) { if (this.portalProcess.processPortalTeleportation(worldserver, this, this.canUsePortal(false))) { @@ -1155,7 +1138,7 @@ index ef24ef826ab825ce0a22ff3c5ad84d9494d63aef..8b234996acfcb9f22e32ce94984ae4af this.setPortalCooldown(); DimensionTransition dimensiontransition = this.portalProcess.getPortalDestination(worldserver, this); -@@ -3154,7 +3154,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3155,7 +3155,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } } @@ -1164,7 +1147,7 @@ index ef24ef826ab825ce0a22ff3c5ad84d9494d63aef..8b234996acfcb9f22e32ce94984ae4af } else if (this.portalProcess.hasExpired()) { this.portalProcess = null; } -@@ -3655,7 +3655,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3656,7 +3656,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } } @@ -1173,7 +1156,7 @@ index ef24ef826ab825ce0a22ff3c5ad84d9494d63aef..8b234996acfcb9f22e32ce94984ae4af Entity entity2 = worldserver1.dimension() == worldserver.dimension() ? this : this.getType().create(worldserver1); if (entity2 != null) { -@@ -3691,7 +3691,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3692,7 +3692,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess teleportTarget.postDimensionTransition().onTransition(entity2); } @@ -1183,7 +1166,7 @@ index ef24ef826ab825ce0a22ff3c5ad84d9494d63aef..8b234996acfcb9f22e32ce94984ae4af } } diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index a9833d805aa51755a15fd98ca546c119e7e4bdf9..c8c931135133ef3d1d491034d578d9af47d9a9bd 100644 +index d739cebb744be5936487721dd282bc179dc1c1ee..40b32d8af233a880ed4d9d05160c5efb873243a0 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -445,7 +445,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -1204,7 +1187,7 @@ index a9833d805aa51755a15fd98ca546c119e7e4bdf9..c8c931135133ef3d1d491034d578d9af } @Override -@@ -3217,10 +3217,10 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3222,10 +3222,10 @@ public abstract class LivingEntity extends Entity implements Attackable { } this.run += (f3 - this.run) * 0.3F; @@ -1218,7 +1201,7 @@ index a9833d805aa51755a15fd98ca546c119e7e4bdf9..c8c931135133ef3d1d491034d578d9af // Paper start - stop large pitch and yaw changes from crashing the server this.yRotO += Math.round((this.getYRot() - this.yRotO) / 360.0F) * 360.0F; -@@ -3232,7 +3232,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3237,7 +3237,7 @@ public abstract class LivingEntity extends Entity implements Attackable { this.yHeadRotO += Math.round((this.yHeadRot - this.yHeadRotO) / 360.0F) * 360.0F; // Paper end @@ -1227,7 +1210,7 @@ index a9833d805aa51755a15fd98ca546c119e7e4bdf9..c8c931135133ef3d1d491034d578d9af this.animStep += f2; if (this.isFallFlying()) { ++this.fallFlyTicks; -@@ -3472,19 +3472,19 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3477,19 +3477,19 @@ public abstract class LivingEntity extends Entity implements Attackable { } this.setDeltaMovement(d0, d1, d2); @@ -1252,7 +1235,7 @@ index a9833d805aa51755a15fd98ca546c119e7e4bdf9..c8c931135133ef3d1d491034d578d9af if (this.jumping && this.isAffectedByFluids()) { double d3; -@@ -3511,8 +3511,8 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3516,8 +3516,8 @@ public abstract class LivingEntity extends Entity implements Attackable { this.noJumpDelay = 0; } @@ -1263,7 +1246,7 @@ index a9833d805aa51755a15fd98ca546c119e7e4bdf9..c8c931135133ef3d1d491034d578d9af this.xxa *= 0.98F; this.zza *= 0.98F; this.updateFallFlying(); -@@ -3537,8 +3537,8 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3542,8 +3542,8 @@ public abstract class LivingEntity extends Entity implements Attackable { this.travel(vec3d1); } @@ -1274,7 +1257,7 @@ index a9833d805aa51755a15fd98ca546c119e7e4bdf9..c8c931135133ef3d1d491034d578d9af if (!this.level().isClientSide && !this.isDeadOrDying() && !this.freezeLocked) { // Paper - Freeze Tick Lock API int i = this.getTicksFrozen(); -@@ -3555,15 +3555,15 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3560,15 +3560,15 @@ public abstract class LivingEntity extends Entity implements Attackable { this.hurt(this.damageSources().freeze(), 1.0F); } @@ -1806,7 +1789,7 @@ index bff83fe413c7baef4ba56a3270ea4463a58c792f..3ee7bf7e10f8120258baaae8f77cdcbb if (this.fire) { diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 1b85d31a81404ea817c892ac0bd055058fe8f079..9b7831f326e6cf8f84e5c420749b43cd7edcfd87 100644 +index ff97d43ca93dfd204d42be45233885312b9a6b93..743a3203b035846aecec1c329b66fe3a1cbf21f5 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -268,7 +268,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl @@ -1839,7 +1822,7 @@ index 1b85d31a81404ea817c892ac0bd055058fe8f079..9b7831f326e6cf8f84e5c420749b43cd //this.timings.tileEntityPending.startTiming(); // Spigot // Purpur this.tickingBlockEntities = true; if (!this.pendingBlockEntityTickers.isEmpty()) { -@@ -1030,7 +1030,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl +@@ -1032,7 +1032,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl //this.timings.tileEntityTick.stopTiming(); // Spigot // Purpur this.tickingBlockEntities = false; co.aikar.timings.TimingHistory.tileEntityTicks += this.blockEntityTickers.size(); // Paper @@ -1848,7 +1831,7 @@ index 1b85d31a81404ea817c892ac0bd055058fe8f079..9b7831f326e6cf8f84e5c420749b43cd this.spigotConfig.currentPrimedTnt = 0; // Spigot } -@@ -1235,7 +1235,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl +@@ -1237,7 +1237,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl @Override public List getEntities(@Nullable Entity except, AABB box, Predicate predicate) { @@ -1857,7 +1840,7 @@ index 1b85d31a81404ea817c892ac0bd055058fe8f079..9b7831f326e6cf8f84e5c420749b43cd // Paper start - rewrite chunk system final List ret = new java.util.ArrayList<>(); -@@ -1261,7 +1261,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl +@@ -1263,7 +1263,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl public void getEntities(final EntityTypeTest entityTypeTest, final AABB boundingBox, final Predicate predicate, final List into, final int maxCount) { @@ -1866,7 +1849,7 @@ index 1b85d31a81404ea817c892ac0bd055058fe8f079..9b7831f326e6cf8f84e5c420749b43cd if (entityTypeTest instanceof net.minecraft.world.entity.EntityType byType) { if (maxCount != Integer.MAX_VALUE) { -@@ -1556,6 +1556,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl +@@ -1566,6 +1566,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl } public ProfilerFiller getProfiler() { diff --git a/patches/server/0267-Fire-Immunity-API.patch b/patches/server/0267-Fire-Immunity-API.patch index af06b10da..7630989ec 100644 --- a/patches/server/0267-Fire-Immunity-API.patch +++ b/patches/server/0267-Fire-Immunity-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Fire Immunity API diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 541fbd5b90cc6a2dd98733bc90602256d2ef59ed..58afe42685536bed08b24ddcf11404b5a4d6c7cd 100644 +index badf612b7ef717996037b7eacecd74a7ada6c371..53bc3cde4075dc01f2449de413563c7f5f3ab8c9 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 +@@ -431,6 +431,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess private UUID originWorld; public boolean freezeLocked = false; // Paper - Freeze Tick Lock API public boolean fixedPose = false; // Paper - Expand Pose API @@ -16,7 +16,7 @@ index 541fbd5b90cc6a2dd98733bc90602256d2ef59ed..58afe42685536bed08b24ddcf11404b5 public void setOrigin(@javax.annotation.Nonnull Location location) { this.origin = location.toVector(); -@@ -1765,7 +1766,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1766,7 +1767,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } public boolean fireImmune() { @@ -25,7 +25,7 @@ index 541fbd5b90cc6a2dd98733bc90602256d2ef59ed..58afe42685536bed08b24ddcf11404b5 } public boolean causeFallDamage(float fallDistance, float damageMultiplier, DamageSource damageSource) { -@@ -2474,6 +2475,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -2475,6 +2476,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess nbttagcompound.putBoolean("Paper.FreezeLock", true); } // Paper end @@ -37,7 +37,7 @@ index 541fbd5b90cc6a2dd98733bc90602256d2ef59ed..58afe42685536bed08b24ddcf11404b5 return nbttagcompound; } catch (Throwable throwable) { CrashReport crashreport = CrashReport.forThrowable(throwable, "Saving entity NBT"); -@@ -2621,6 +2627,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -2622,6 +2628,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess freezeLocked = nbt.getBoolean("Paper.FreezeLock"); } // Paper end diff --git a/patches/server/0268-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch b/patches/server/0268-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch index e64222295..f2059edfa 100644 --- a/patches/server/0268-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch +++ b/patches/server/0268-Add-option-to-teleport-to-spawn-on-nether-ceiling-da.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add option to teleport to spawn on nether ceiling damage diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 11fd2c306979c9e8d85ff563b098426b94859146..4a3a05324d1c732abc344c17242368a3cbaf81f3 100644 +index 53bc3cde4075dc01f2449de413563c7f5f3ab8c9..2b93f9b006ec01a77354d6571563fe3bf3d774c8 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -938,6 +938,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -939,6 +939,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess && this.level.paperConfig().environment.netherCeilingVoidDamageHeight.test(v -> this.getY() >= v) && (!(this instanceof Player player) || !player.getAbilities().invulnerable))) { // Paper end - Configurable nether ceiling damage diff --git a/patches/server/0288-Configurable-villager-search-radius.patch b/patches/server/0288-Configurable-villager-search-radius.patch index 5867a72b1..57233e705 100644 --- a/patches/server/0288-Configurable-villager-search-radius.patch +++ b/patches/server/0288-Configurable-villager-search-radius.patch @@ -5,31 +5,31 @@ Subject: [PATCH] Configurable-villager-search-radius 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 e8aa27547e3fa1a42720889c7038d4fb0273e7b5..2638c5502016da62c54ec02a1d62834cba8e69d3 100644 +index e1b6fe9ecda25f86431baf414f1bfd3a26a8b2bd..ecd1bbd17cb0134cf1f4e99a3fea9e205d38f46b 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 -@@ -72,7 +72,7 @@ public class AcquirePoi { - } +@@ -73,7 +73,7 @@ public class AcquirePoi { }; - Set, BlockPos>> set = poiManager.findAllClosestFirstWithType( -- poiPredicate, predicate2, entity.blockPosition(), 48, PoiManager.Occupancy.HAS_SPACE -+ poiPredicate, predicate2, entity.blockPosition(), world.purpurConfig.villagerAcquirePoiSearchRadius, PoiManager.Occupancy.HAS_SPACE // Purpur - ) - .limit(5L) - .collect(Collectors.toSet()); + // Paper start - optimise POI access + java.util.List, BlockPos>> poiposes = new java.util.ArrayList<>(); +- io.papermc.paper.util.PoiAccess.findNearestPoiPositions(poiManager, poiPredicate, predicate2, entity.blockPosition(), 48, 48*48, PoiManager.Occupancy.HAS_SPACE, false, 5, poiposes); ++ 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 + Path path = findPathToPois(entity, set); 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 d5a549f08b98c80a5cf0eef02cb8a389c32dfecb..222c87e80cb089867ce9a7d2dceebe21b4bfe0de 100644 +index 92731b6b593289e9f583c9b705b219e81fcd8e73..9104d7010bda6f9f73b478c11490ef9c53f76da2 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 -@@ -54,7 +54,7 @@ public class NearestBedSensor extends Sensor { - } - }; - Set, BlockPos>> set = poiManager.findAllWithType( -- holder -> holder.is(PoiTypes.HOME), predicate, entity.blockPosition(), 48, PoiManager.Occupancy.ANY -+ holder -> holder.is(PoiTypes.HOME), predicate, entity.blockPosition(), world.purpurConfig.villagerNearestBedSensorSearchRadius, PoiManager.Occupancy.ANY - ) - .collect(Collectors.toSet()); - Path path = AcquirePoi.findPathToPois(entity, set); +@@ -56,7 +56,7 @@ public class NearestBedSensor extends Sensor { + // Paper start - optimise POI access + 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(), 48, PoiManager.Occupancy.ANY, false, Integer.MAX_VALUE, poiposes); ++ 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 + Path path = AcquirePoi.findPathToPois(entity, new java.util.HashSet<>(poiposes)); + // Paper end - optimise POI access + if (path != null && path.canReach()) { diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java index 5f807e0abb572ace1b05ef315ef23b0bc7f2d6f3..8321de8fa989c47f0f777cc399264898f646ff8b 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java