From a1d4b979793867c0ee60dbd9aa368498c70709db Mon Sep 17 00:00:00 2001 From: granny Date: Sun, 21 Sep 2025 21:49:30 -0700 Subject: [PATCH] apply all minecraft feature patches \o/ --- .../0001-Ridables.patch | 328 +++++++++--------- ...-Configurable-entity-base-attributes.patch | 166 ++++----- .../0003-Barrels-and-enderchests-6-rows.patch | 25 +- .../0004-Giants-AI-settings.patch | 0 .../0005-Chickens-can-retaliate.patch | 0 ...-Minecart-settings-and-WASD-controls.patch | 8 +- ...0007-Villagers-follow-emerald-blocks.patch | 10 +- .../0008-Implement-elytra-settings.patch | 8 +- .../0009-Configurable-jockey-options.patch | 18 +- ...ed-to-crystals-and-crystals-shoot-ph.patch | 4 +- .../0011-Phantoms-burn-in-light.patch | 8 +- ...e-entity-breeding-times-configurable.patch | 74 ++-- ...mes-from-item-forms-of-entities-to-e.patch | 16 +- ...Villager-Clerics-to-farm-Nether-Wart.patch | 2 +- ...fing-override-to-everything-affected.patch | 48 +-- ...0016-Add-EntityTeleportHinderedEvent.patch | 8 +- ...oggle-for-water-sensitive-mob-damage.patch | 134 +++---- ...018-API-for-any-mob-to-burn-daylight.patch | 40 +-- ...turally-aggressive-to-players-chance.patch | 6 +- .../0020-Mobs-always-drop-experience.patch | 126 +++---- .../world/entity/animal/Bee.java.patch | 52 +++ .../world/entity/animal/Parrot.java.patch | 52 +++ 22 files changed, 618 insertions(+), 515 deletions(-) rename purpur-server/minecraft-patches/{unapplied-features => features}/0001-Ridables.patch (94%) rename purpur-server/minecraft-patches/{unapplied-features => features}/0002-Configurable-entity-base-attributes.patch (92%) rename purpur-server/minecraft-patches/{unapplied-features => features}/0003-Barrels-and-enderchests-6-rows.patch (92%) rename purpur-server/minecraft-patches/{unapplied-features => features}/0004-Giants-AI-settings.patch (100%) rename purpur-server/minecraft-patches/{unapplied-features => features}/0005-Chickens-can-retaliate.patch (100%) rename purpur-server/minecraft-patches/{unapplied-features => features}/0006-Minecart-settings-and-WASD-controls.patch (96%) rename purpur-server/minecraft-patches/{unapplied-features => features}/0007-Villagers-follow-emerald-blocks.patch (93%) rename purpur-server/minecraft-patches/{unapplied-features => features}/0008-Implement-elytra-settings.patch (94%) rename purpur-server/minecraft-patches/{unapplied-features => features}/0009-Configurable-jockey-options.patch (90%) rename purpur-server/minecraft-patches/{unapplied-features => features}/0010-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch (98%) rename purpur-server/minecraft-patches/{unapplied-features => features}/0011-Phantoms-burn-in-light.patch (92%) rename purpur-server/minecraft-patches/{unapplied-features => features}/0012-Make-entity-breeding-times-configurable.patch (89%) rename purpur-server/minecraft-patches/{unapplied-features => features}/0013-Apply-display-names-from-item-forms-of-entities-to-e.patch (91%) rename purpur-server/minecraft-patches/{unapplied-features => features}/0014-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch (99%) rename purpur-server/minecraft-patches/{unapplied-features => features}/0015-Add-mobGriefing-override-to-everything-affected.patch (93%) rename purpur-server/minecraft-patches/{unapplied-features => features}/0016-Add-EntityTeleportHinderedEvent.patch (94%) rename purpur-server/minecraft-patches/{unapplied-features => features}/0017-Toggle-for-water-sensitive-mob-damage.patch (90%) rename purpur-server/minecraft-patches/{unapplied-features => features}/0018-API-for-any-mob-to-burn-daylight.patch (92%) rename purpur-server/minecraft-patches/{unapplied-features => features}/0019-Cows-naturally-aggressive-to-players-chance.patch (95%) rename purpur-server/minecraft-patches/{unapplied-features => features}/0020-Mobs-always-drop-experience.patch (90%) create mode 100644 purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Bee.java.patch create mode 100644 purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Parrot.java.patch diff --git a/purpur-server/minecraft-patches/unapplied-features/0001-Ridables.patch b/purpur-server/minecraft-patches/features/0001-Ridables.patch similarity index 94% rename from purpur-server/minecraft-patches/unapplied-features/0001-Ridables.patch rename to purpur-server/minecraft-patches/features/0001-Ridables.patch index 8fce810b9..f516f5b2b 100644 --- a/purpur-server/minecraft-patches/unapplied-features/0001-Ridables.patch +++ b/purpur-server/minecraft-patches/features/0001-Ridables.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Ridables diff --git a/net/minecraft/gametest/framework/GameTestHelper.java b/net/minecraft/gametest/framework/GameTestHelper.java -index 61ab8b508d2b614d0f05ae4cc23dc214f8e95a1d..d6e8bd3b302f821b286b15db3d66c8b2a9493ef5 100644 +index aa87e93ade4c25a575e7861fef45b70c3e4e3aeb..c92ffd8b2fe4945ccd552eb54154b7be0e1b492e 100644 --- a/net/minecraft/gametest/framework/GameTestHelper.java +++ b/net/minecraft/gametest/framework/GameTestHelper.java -@@ -294,6 +294,8 @@ public class GameTestHelper { +@@ -314,6 +314,8 @@ public class GameTestHelper { public void setAfk(final boolean afk) {} // Purpur - AFK API @@ -18,10 +18,10 @@ index 61ab8b508d2b614d0f05ae4cc23dc214f8e95a1d..d6e8bd3b302f821b286b15db3d66c8b2 public boolean isClientAuthoritative() { return false; diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java -index 0595271ec939a72d38b97241270c109ece0be0e0..9dbf05636429821b17c4269e3981a0bedbc6e6a3 100644 +index 82264fe70854c26150b9afc9109f14c49d78fe2f..c5aa594105b196731ab822d9c1e600fa62db3417 100644 --- a/net/minecraft/server/MinecraftServer.java +++ b/net/minecraft/server/MinecraftServer.java -@@ -1746,6 +1746,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0; // Paper - Add EntityMoveEvent serverLevel.updateLagCompensationTick(); // Paper - lag compensation net.minecraft.world.level.block.entity.HopperBlockEntity.skipHopperEvents = serverLevel.paperConfig().hopper.disableMoveEvent || org.bukkit.event.inventory.InventoryMoveItemEvent.getHandlerList().getRegisteredListeners().length == 0; // Paper - Perf: Optimize Hoppers @@ -30,10 +30,10 @@ index 0595271ec939a72d38b97241270c109ece0be0e0..9dbf05636429821b17c4269e3981a0be /* Drop global time updates if (this.tickCount % 20 == 0) { diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java -index 83eff33884bffddfafc85eeb4a2900104a396e2e..3c7159d0981c948e71a5612ba4083accb5849ed4 100644 +index 99675de85425149da8603d0f0de1c3d529e082b0..3886b032e84fe549df7969443dba7a28574af320 100644 --- a/net/minecraft/server/level/ServerLevel.java +++ b/net/minecraft/server/level/ServerLevel.java -@@ -216,6 +216,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -224,6 +224,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe public boolean hasPhysicsEvent = true; // Paper - BlockPhysicsEvent public boolean hasEntityMoveEvent; // Paper - Add EntityMoveEvent private final alternate.current.wire.WireHandler wireHandler = new alternate.current.wire.WireHandler(this); // Paper - optimize redstone (Alternate Current) @@ -42,10 +42,10 @@ index 83eff33884bffddfafc85eeb4a2900104a396e2e..3c7159d0981c948e71a5612ba4083acc @Override public @Nullable LevelChunk getChunkIfLoaded(int x, int z) { diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java -index 90e4965d7c266d7349112bfdc27bbcba0f12523a..83e69de9e59cc18cc7aff71fbee1e40ad0781f90 100644 +index cc362e5a6afa88dcac5eb156af8235e4304a0104..b329ac34ff7fb9fa15daca26e0d2593e2db59a6f 100644 --- a/net/minecraft/server/level/ServerPlayer.java +++ b/net/minecraft/server/level/ServerPlayer.java -@@ -798,6 +798,15 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc +@@ -774,6 +774,15 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc this.trackEnteredOrExitedLavaOnVehicle(); this.updatePlayerAttributes(); this.advancements.flushDirty(this, true); @@ -62,10 +62,10 @@ index 90e4965d7c266d7349112bfdc27bbcba0f12523a..83e69de9e59cc18cc7aff71fbee1e40a private void updatePlayerAttributes() { diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 19d964230bf56dc8c4823b98a47fb4258f787390..d6e96a191469c8b263031da18a2e519032dd79d7 100644 +index e8028cec76d88822be6c80b38ebde0f35bd781dd..99671cd67df748feb3c2d8b0219619ede8b3dbe4 100644 --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -2855,6 +2855,8 @@ public class ServerGamePacketListenerImpl +@@ -2862,6 +2862,8 @@ public class ServerGamePacketListenerImpl ServerGamePacketListenerImpl.this.cserver.getPluginManager().callEvent(event); final boolean resendData = event.isCancelled() || !ServerGamePacketListenerImpl.this.player.getItemInHand(hand).is(itemType); @@ -75,24 +75,24 @@ index 19d964230bf56dc8c4823b98a47fb4258f787390..d6e96a191469c8b263031da18a2e5190 if (itemType == Items.WATER_BUCKET && target instanceof net.minecraft.world.entity.animal.Bucketable && target instanceof LivingEntity && resendData) { target.resendPossiblyDesyncedEntityData(ServerGamePacketListenerImpl.this.player); // Paper - The entire mob gets deleted, so resend it diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index f532809a855562b43545e45957bd28c207bd4547..dc59c61cf44ce01a17e02761507cea1b3c3e7b0d 100644 +index 18c9409c152468f3914939cad9145a094947eb6b..0dc4962cae6fa15b4cfbfa2938e271f5303cf2bb 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java -@@ -3302,6 +3302,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3357,6 +3357,13 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name + this.passengers = ImmutableList.copyOf(list); } - ++ + // Purpur start - Ridables + if (isRidable() && this.passengers.get(0) == passenger && passenger instanceof Player player) { + onMount(player); + this.rider = player; + } + // Purpur end - Ridables -+ - this.gameEvent(GameEvent.ENTITY_MOUNT, passenger); } } -@@ -3343,6 +3350,14 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess + +@@ -3397,6 +3404,14 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name return false; } // CraftBukkit end @@ -107,7 +107,7 @@ index f532809a855562b43545e45957bd28c207bd4547..dc59c61cf44ce01a17e02761507cea1b if (this.passengers.size() == 1 && this.passengers.get(0) == passenger) { this.passengers = ImmutableList.of(); } else { -@@ -5397,4 +5412,44 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -5474,4 +5489,44 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name return ((ServerLevel) this.level()).isPositionEntityTicking(this.blockPosition()); } // Paper end - Expose entity id counter @@ -177,10 +177,10 @@ index f0c452ddc4b299a930de261722cc41a89aa78eeb..8e8ddab59de508c84c4182e105a11554 protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java -index 92ef84721a75b85331b936a808c3beb3585aefab..b167f2d6308fc02521abd4251fd11ba06f8375ae 100644 +index 4a91c94d817c3fb9a8fda98eb448f2a6d44030d8..8ae8c9e2f0447634b2a4b0dc1662cd0feb00518f 100644 --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java -@@ -238,9 +238,9 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin +@@ -239,9 +239,9 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin protected int noActionTime; public float lastHurt; public boolean jumping; @@ -193,7 +193,7 @@ index 92ef84721a75b85331b936a808c3beb3585aefab..b167f2d6308fc02521abd4251fd11ba0 protected InterpolationHandler interpolation = new InterpolationHandler(this); protected double lerpYHeadRot; protected int lerpHeadSteps; -@@ -290,7 +290,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin +@@ -291,7 +291,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin protected LivingEntity(EntityType entityType, Level level) { super(entityType, level); @@ -202,7 +202,7 @@ index 92ef84721a75b85331b936a808c3beb3585aefab..b167f2d6308fc02521abd4251fd11ba0 this.craftAttributes = new org.bukkit.craftbukkit.attribute.CraftAttributeMap(this.attributes); // CraftBukkit // CraftBukkit - this.setHealth(this.getMaxHealth()) inlined and simplified to skip the instanceof check for Player, as getBukkitEntity() is not initialized in constructor this.entityData.set(LivingEntity.DATA_HEALTH_ID, this.getMaxHealth()); -@@ -364,6 +364,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin +@@ -371,6 +371,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin .add(Attributes.CAMERA_DISTANCE) .add(Attributes.WAYPOINT_TRANSMIT_RANGE); } @@ -210,7 +210,7 @@ index 92ef84721a75b85331b936a808c3beb3585aefab..b167f2d6308fc02521abd4251fd11ba0 @Override protected void checkFallDamage(double y, boolean onGround, BlockState state, BlockPos pos) { -@@ -3026,6 +3027,20 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin +@@ -3058,6 +3059,20 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin this.move(MoverType.SELF, this.getDeltaMovement()); this.setDeltaMovement(this.getDeltaMovement().scale(0.5)); } else { @@ -231,7 +231,7 @@ index 92ef84721a75b85331b936a808c3beb3585aefab..b167f2d6308fc02521abd4251fd11ba0 this.moveRelative(amount, relative); this.move(MoverType.SELF, this.getDeltaMovement()); this.setDeltaMovement(this.getDeltaMovement().scale(0.91F)); -@@ -3629,8 +3644,10 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin +@@ -3661,8 +3676,10 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin this.pushEntities(); profilerFiller.pop(); // Paper start - Add EntityMoveEvent @@ -244,7 +244,7 @@ index 92ef84721a75b85331b936a808c3beb3585aefab..b167f2d6308fc02521abd4251fd11ba0 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()); -@@ -3640,6 +3657,21 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin +@@ -3672,6 +3689,21 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin this.absSnapTo(event.getTo().getX(), event.getTo().getY(), event.getTo().getZ(), event.getTo().getYaw(), event.getTo().getPitch()); } } @@ -267,10 +267,10 @@ index 92ef84721a75b85331b936a808c3beb3585aefab..b167f2d6308fc02521abd4251fd11ba0 // Paper end - Add EntityMoveEvent if (this.level() instanceof ServerLevel serverLevel && this.isSensitiveToWater() && this.isInWaterOrRain()) { diff --git a/net/minecraft/world/entity/Mob.java b/net/minecraft/world/entity/Mob.java -index 150d12e27c2de0740af5c554286358f81e290fae..f9a8cfd96f0bd8d080e8635d754db82fb7a5400f 100644 +index 8b84ca3de8f73cb3066c3b1df138ea85be2889cd..0ec11f0415bdb44d465c0e57c676eb73c8183be0 100644 --- a/net/minecraft/world/entity/Mob.java +++ b/net/minecraft/world/entity/Mob.java -@@ -146,8 +146,8 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab +@@ -156,8 +156,8 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab super(entityType, level); this.goalSelector = new GoalSelector(); this.targetSelector = new GoalSelector(); @@ -281,7 +281,7 @@ index 150d12e27c2de0740af5c554286358f81e290fae..f9a8cfd96f0bd8d080e8635d754db82f this.jumpControl = new JumpControl(this); this.bodyRotationControl = this.createBodyControl(); this.navigation = this.createNavigation(level); -@@ -1313,7 +1313,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab +@@ -1322,7 +1322,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab } protected InteractionResult mobInteract(Player player, InteractionHand hand) { @@ -289,9 +289,9 @@ index 150d12e27c2de0740af5c554286358f81e290fae..f9a8cfd96f0bd8d080e8635d754db82f + return tryRide(player, hand); // Purpur - Ridables } - public boolean isWithinHome() { -@@ -1630,4 +1630,58 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab - this.getNavigation().updatePathfinderMaxVisitedNodes(); + protected void usePlayerItem(Player player, InteractionHand hand, ItemStack stack) { +@@ -1673,4 +1673,58 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab + registration.register(DebugSubscriptions.BRAINS, () -> DebugBrainDump.takeBrainDump(serverLevel, this)); } } + @@ -387,10 +387,10 @@ index fdb02fc40579866167e8cc9bcefbd961588b53a6..7dd8c1c8e27410854ce1ee90defc607c @Nullable diff --git a/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java b/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java -index 26ffe98c94b2aaf61bf1693e86e8e7962e892a09..4bb7a8955182d786a09fd2667b37a93373ff47be 100644 +index f14358b09785fe78459964c0e25ef8f4c12c8e60..c23d6edeaca324bcfd60c6e96ec4038f6ef595a9 100644 --- a/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java +++ b/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java -@@ -133,7 +133,7 @@ public class DefaultAttributes { +@@ -136,7 +136,7 @@ public class DefaultAttributes { .put(EntityType.OCELOT, Ocelot.createAttributes().build()) .put(EntityType.PANDA, Panda.createAttributes().build()) .put(EntityType.PARROT, Parrot.createAttributes().build()) @@ -447,7 +447,7 @@ index d7f9b3b2b1077ea10e8f64b87c8f4c4354e90858..713f62b34a91fa76f40e49a5e390145f this.lookAtCooldown--; this.getYRotD().ifPresent(rotationWanted -> this.mob.yHeadRot = this.rotateTowards(this.mob.yHeadRot, rotationWanted + 20.0F, this.yMaxRotSpeed)); diff --git a/net/minecraft/world/entity/ambient/Bat.java b/net/minecraft/world/entity/ambient/Bat.java -index c1c9d056f5c78d26c777728c09b2481f9ccd1c3b..ed4016af3532f33023a3267cd0daa10757765fa3 100644 +index 4fcb06b7236854509732aff9526c4519041f914c..8fc9fd70abbaeab2c6aefd4aaf3d199fbe879dee 100644 --- a/net/minecraft/world/entity/ambient/Bat.java +++ b/net/minecraft/world/entity/ambient/Bat.java @@ -44,11 +44,58 @@ public class Bat extends AmbientCreature { @@ -455,7 +455,7 @@ index c1c9d056f5c78d26c777728c09b2481f9ccd1c3b..ed4016af3532f33023a3267cd0daa107 public Bat(EntityType entityType, Level level) { super(entityType, level); + this.moveControl = new org.purpurmc.purpur.controller.FlyingWithSpacebarMoveControllerWASD(this, 0.075F); // Purpur - Ridables - if (!level.isClientSide) { + if (!level.isClientSide()) { this.setResting(true); } } @@ -617,10 +617,10 @@ index b18765bb91b4015bef326663dbc8966945929996..0002e39e2670ad92849ccc0aada163b1 double d = this.wantedX - this.fish.getX(); double d1 = this.wantedY - this.fish.getY(); diff --git a/net/minecraft/world/entity/animal/Bee.java b/net/minecraft/world/entity/animal/Bee.java -index a74def8accfbed14257b4090889a6c8d1a3ccd87..38f7ad124ead01670cfe82855a25bed738f859cc 100644 +index 8cd9159ea562d7a8d89d6b85a0e08b54676167f5..aa90ba822ad00283d0347977f42078120aec7913 100644 --- a/net/minecraft/world/entity/animal/Bee.java +++ b/net/minecraft/world/entity/animal/Bee.java -@@ -150,6 +150,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -152,6 +152,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { public Bee(EntityType entityType, Level level) { super(entityType, level); @@ -628,7 +628,7 @@ index a74def8accfbed14257b4090889a6c8d1a3ccd87..38f7ad124ead01670cfe82855a25bed7 // Paper start - Fix MC-167279 class BeeFlyingMoveControl extends FlyingMoveControl { public BeeFlyingMoveControl(final Mob entity, final int maxPitchChange, final boolean noGravity) { -@@ -158,11 +159,24 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -160,11 +161,24 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { @Override public void tick() { @@ -653,7 +653,7 @@ index a74def8accfbed14257b4090889a6c8d1a3ccd87..38f7ad124ead01670cfe82855a25bed7 } this.moveControl = new BeeFlyingMoveControl(this, 20, true); // Paper end - Fix MC-167279 -@@ -174,6 +188,40 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -176,6 +190,40 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { this.setPathfindingMalus(PathType.FENCE, -1.0F); } @@ -694,7 +694,7 @@ index a74def8accfbed14257b4090889a6c8d1a3ccd87..38f7ad124ead01670cfe82855a25bed7 @Override protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); -@@ -188,6 +236,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -190,6 +238,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { @Override protected void registerGoals() { @@ -702,7 +702,7 @@ index a74def8accfbed14257b4090889a6c8d1a3ccd87..38f7ad124ead01670cfe82855a25bed7 this.goalSelector.addGoal(0, new Bee.BeeAttackGoal(this, 1.4F, true)); this.goalSelector.addGoal(1, new Bee.BeeEnterHiveGoal()); this.goalSelector.addGoal(2, new BreedGoal(this, 1.0)); -@@ -205,6 +254,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -207,6 +256,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { this.goalSelector.addGoal(7, new Bee.BeeGrowCropGoal()); this.goalSelector.addGoal(8, new Bee.BeeWanderGoal()); this.goalSelector.addGoal(9, new FloatGoal(this)); @@ -710,7 +710,7 @@ index a74def8accfbed14257b4090889a6c8d1a3ccd87..38f7ad124ead01670cfe82855a25bed7 this.targetSelector.addGoal(1, new Bee.BeeHurtByOtherGoal(this).setAlertOthers(new Class[0])); this.targetSelector.addGoal(2, new Bee.BeeBecomeAngryTargetGoal(this)); this.targetSelector.addGoal(3, new ResetUniversalAngerTargetGoal<>(this, true)); -@@ -1081,15 +1131,15 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -1088,15 +1138,15 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { } } @@ -870,7 +870,7 @@ index 176425cbacea381990386d440059b768a583af98..802c536659d45d0974fe788535ca326b protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/animal/Dolphin.java b/net/minecraft/world/entity/animal/Dolphin.java -index f4a6f17bb158146e7287ab46930cd57c0ffb9454..213421070ce6a356aecc31ef7b13701b4403952a 100644 +index 1386ba68ae768af5593c066b4a0acc7f62239290..ecd4dbcfc7f568722488c0894a98db68bb07ead9 100644 --- a/net/minecraft/world/entity/animal/Dolphin.java +++ b/net/minecraft/world/entity/animal/Dolphin.java @@ -75,14 +75,82 @@ public class Dolphin extends AgeableWaterCreature { @@ -995,7 +995,7 @@ index f4a6f17bb158146e7287ab46930cd57c0ffb9454..213421070ce6a356aecc31ef7b13701b this.setAirSupply(this.getMaxAirSupply()); } else { diff --git a/net/minecraft/world/entity/animal/Fox.java b/net/minecraft/world/entity/animal/Fox.java -index 354c7a41407fc6518965d09bfe3089676b6da794..a81ada76bfd6c4b49d1552f48e2009bc7d8c71d2 100644 +index defdacce68e59b038b919b597df17d1aae366b51..4d2b6a34c0c276ef304916b2b84c92a516fe4979 100644 --- a/net/minecraft/world/entity/animal/Fox.java +++ b/net/minecraft/world/entity/animal/Fox.java @@ -142,6 +142,44 @@ public class Fox extends Animal { @@ -1098,10 +1098,10 @@ index 354c7a41407fc6518965d09bfe3089676b6da794..a81ada76bfd6c4b49d1552f48e2009bc } } diff --git a/net/minecraft/world/entity/animal/HappyGhast.java b/net/minecraft/world/entity/animal/HappyGhast.java -index 272f57aca640e045efca64dd018b221335c667ee..b425f43eb15abdfd6e10b5443acc3d5a68d63a70 100644 +index 4d13d33fc40e42fe924f8aeca737e15b9a4ee136..390b929a2d71df840febb081e68f675972db0fa4 100644 --- a/net/minecraft/world/entity/animal/HappyGhast.java +++ b/net/minecraft/world/entity/animal/HappyGhast.java -@@ -126,6 +126,13 @@ public class HappyGhast extends Animal { +@@ -125,6 +125,13 @@ public class HappyGhast extends Animal { this.removeAllGoals(goal -> true); } @@ -1116,7 +1116,7 @@ index 272f57aca640e045efca64dd018b221335c667ee..b425f43eb15abdfd6e10b5443acc3d5a protected void ageBoundaryReached() { if (this.isBaby()) { diff --git a/net/minecraft/world/entity/animal/IronGolem.java b/net/minecraft/world/entity/animal/IronGolem.java -index 25e0438e1a98dc5f6aaabba8af2295cec871d6f1..d7c330e77c384bba800829bdbe07f6b66695896e 100644 +index b449c1cf9966fadb58a93c8895cddc16920fbb17..febe8b7b6a29f34fda685d1ab467dbf168d998c3 100644 --- a/net/minecraft/world/entity/animal/IronGolem.java +++ b/net/minecraft/world/entity/animal/IronGolem.java @@ -75,9 +75,28 @@ public class IronGolem extends AbstractGolem implements NeutralMob { @@ -1172,10 +1172,10 @@ index 25e0438e1a98dc5f6aaabba8af2295cec871d6f1..d7c330e77c384bba800829bdbe07f6b6 float f = 1.0F + (this.random.nextFloat() - this.random.nextFloat()) * 0.2F; this.playSound(SoundEvents.IRON_GOLEM_REPAIR, 1.0F, f); diff --git a/net/minecraft/world/entity/animal/MushroomCow.java b/net/minecraft/world/entity/animal/MushroomCow.java -index 32f3d5f66fb61074a2f9db751c0b3e16af9cf3ce..80c25b591e0b9f3f8132cdad27d1896d70293cd2 100644 +index a3e2aea5de34809220979cb14b70261acae49bfa..cd13cff73e4a882a7d9aa246bfdf0c7ade99d987 100644 --- a/net/minecraft/world/entity/animal/MushroomCow.java +++ b/net/minecraft/world/entity/animal/MushroomCow.java -@@ -62,6 +62,23 @@ public class MushroomCow extends AbstractCow implements Shearable { +@@ -63,6 +63,23 @@ public class MushroomCow extends AbstractCow implements Shearable { super(entityType, level); } @@ -1199,7 +1199,7 @@ index 32f3d5f66fb61074a2f9db751c0b3e16af9cf3ce..80c25b591e0b9f3f8132cdad27d1896d @Override public float getWalkTargetValue(BlockPos pos, LevelReader level) { return level.getBlockState(pos.below()).is(Blocks.MYCELIUM) ? 10.0F : level.getPathfindingCostFromLightLevels(pos); -@@ -122,7 +139,7 @@ public class MushroomCow extends AbstractCow implements Shearable { +@@ -123,7 +140,7 @@ public class MushroomCow extends AbstractCow implements Shearable { java.util.List drops = this.generateDefaultDrops(serverLevel, itemInHand); org.bukkit.event.player.PlayerShearEntityEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.handlePlayerShearEntityEvent(player, this, itemInHand, hand, drops); if (event != null) { @@ -1209,7 +1209,7 @@ index 32f3d5f66fb61074a2f9db751c0b3e16af9cf3ce..80c25b591e0b9f3f8132cdad27d1896d // Paper end - custom shear drops } diff --git a/net/minecraft/world/entity/animal/Ocelot.java b/net/minecraft/world/entity/animal/Ocelot.java -index a304a09eb20b84033ea9b84cf577749fe842fc57..2aad5800fa4e2fc68fb63ab440dc9d5fccb2d86b 100644 +index 3b29ad366586b12a61bf7bd4c2f8417773cf2f27..0340813f71980d2c48853a68b37d353cd50a28cb 100644 --- a/net/minecraft/world/entity/animal/Ocelot.java +++ b/net/minecraft/world/entity/animal/Ocelot.java @@ -64,6 +64,23 @@ public class Ocelot extends Animal { @@ -1252,7 +1252,7 @@ index a304a09eb20b84033ea9b84cf577749fe842fc57..2aad5800fa4e2fc68fb63ab440dc9d5f this.targetSelector.addGoal(1, new NearestAttackableTargetGoal<>(this, Turtle.class, 10, false, false, Turtle.BABY_ON_LAND_SELECTOR)); } diff --git a/net/minecraft/world/entity/animal/Panda.java b/net/minecraft/world/entity/animal/Panda.java -index 44c12820b9b39acc5220db8b8d29a31c0e57526e..cbe493c19cd377c3b284dd9b3ea7bf24fee5cd7c 100644 +index 3da6752ba714988a6558332e4eb205db9cf31f5b..65874fa6b80f5d0953317629ff997fafec68f66d 100644 --- a/net/minecraft/world/entity/animal/Panda.java +++ b/net/minecraft/world/entity/animal/Panda.java @@ -107,6 +107,32 @@ public class Panda extends Animal { @@ -1344,7 +1344,7 @@ index 44c12820b9b39acc5220db8b8d29a31c0e57526e..cbe493c19cd377c3b284dd9b3ea7bf24 } } diff --git a/net/minecraft/world/entity/animal/Parrot.java b/net/minecraft/world/entity/animal/Parrot.java -index 50d836960e6b2d7dae760ac648b5999d8c58b785..03e68a5bd1c51da13dafefe002f95884ee5787d0 100644 +index 9029eed9a5e578a7fa216cbfa084b3cf7622eebc..60e1810f91c086debb4ada192720398834c8ca84 100644 --- a/net/minecraft/world/entity/animal/Parrot.java +++ b/net/minecraft/world/entity/animal/Parrot.java @@ -131,12 +131,68 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { @@ -1431,7 +1431,7 @@ index 50d836960e6b2d7dae760ac648b5999d8c58b785..03e68a5bd1c51da13dafefe002f95884 this.goalSelector.addGoal(2, new SitWhenOrderedToGoal(this)); this.goalSelector.addGoal(2, new FollowOwnerGoal(this, 1.0, 5.0F, 1.0F)); diff --git a/net/minecraft/world/entity/animal/Pig.java b/net/minecraft/world/entity/animal/Pig.java -index 858913db98c6f46867e5f5d3d1231e7f94b669ab..c2ac954b9cdea04450c7d72845568236fff1b686 100644 +index 9366bb9b0c297f6c914be6001cfaa070e0cb2d7b..70c9629e6f1f82f44e14487ed3c81e391d480029 100644 --- a/net/minecraft/world/entity/animal/Pig.java +++ b/net/minecraft/world/entity/animal/Pig.java @@ -66,9 +66,27 @@ public class Pig extends Animal implements ItemSteerable { @@ -1463,7 +1463,7 @@ index 858913db98c6f46867e5f5d3d1231e7f94b669ab..c2ac954b9cdea04450c7d72845568236 this.goalSelector.addGoal(3, new BreedGoal(this, 1.0)); this.goalSelector.addGoal(4, new TemptGoal(this, 1.2, itemStack -> itemStack.is(Items.CARROT_ON_A_STICK), false)); diff --git a/net/minecraft/world/entity/animal/PolarBear.java b/net/minecraft/world/entity/animal/PolarBear.java -index 0cbe162c952fe3cba5c33284d766aea514d6a40b..16dcc17778f3bde4c034a12259188d8297685dd9 100644 +index 8e6168ddfc3c1b335bee035dec5ae55ab358c778..b0f1c80465b3e4dd8ff220209df8a00f60ede84a 100644 --- a/net/minecraft/world/entity/animal/PolarBear.java +++ b/net/minecraft/world/entity/animal/PolarBear.java @@ -60,6 +60,7 @@ public class PolarBear extends Animal implements NeutralMob { @@ -1526,7 +1526,7 @@ index 0cbe162c952fe3cba5c33284d766aea514d6a40b..16dcc17778f3bde4c034a12259188d82 this.targetSelector.addGoal(2, new PolarBear.PolarBearAttackPlayersGoal()); this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, Player.class, 10, true, false, this::isAngryAt)); @@ -233,6 +264,12 @@ public class PolarBear extends Animal implements NeutralMob { - if (!this.level().isClientSide) { + if (!this.level().isClientSide()) { this.updatePersistentAnger((ServerLevel)this.level(), true); } + @@ -1547,7 +1547,7 @@ index 0cbe162c952fe3cba5c33284d766aea514d6a40b..16dcc17778f3bde4c034a12259188d82 public float getStandingAnimationScale(float partialTick) { diff --git a/net/minecraft/world/entity/animal/Pufferfish.java b/net/minecraft/world/entity/animal/Pufferfish.java -index e67f9b26444e3af42feeb0223c1b7c1e536646ba..754cd3c887c22b9b2afb0d70a2c57bfe6b251206 100644 +index de7d1fd5a55c7b2b9cd9fc87959931232a1037d6..7c2d200165111e0a6fb804157074a28322304d95 100644 --- a/net/minecraft/world/entity/animal/Pufferfish.java +++ b/net/minecraft/world/entity/animal/Pufferfish.java @@ -47,6 +47,18 @@ public class Pufferfish extends AbstractFish { @@ -1570,7 +1570,7 @@ index e67f9b26444e3af42feeb0223c1b7c1e536646ba..754cd3c887c22b9b2afb0d70a2c57bfe protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/animal/Rabbit.java b/net/minecraft/world/entity/animal/Rabbit.java -index 880cb3bdbd389a798c202c4dd572bf2b74bc0847..4f33044bf7c8fdf867983691b74a7f47b4689267 100644 +index c500caf43b458ea7cb0c7b6ac942e1f01648724e..daab94acd64b75ee19d582014eacfe4944aeda55 100644 --- a/net/minecraft/world/entity/animal/Rabbit.java +++ b/net/minecraft/world/entity/animal/Rabbit.java @@ -91,6 +91,7 @@ public class Rabbit extends Animal { @@ -1715,7 +1715,7 @@ index 8a3e1d420263ac53b87ffed026380dcdc4a48285..265b2a6db778cabc1a97726c22c99105 public int getMaxSchoolSize() { return 5; diff --git a/net/minecraft/world/entity/animal/SnowGolem.java b/net/minecraft/world/entity/animal/SnowGolem.java -index 1a7c14f9307629386af0a62b3e19545728fa3a8d..6c7b218c01f466ccd1d427206c6662e23bea1c0e 100644 +index 55e751c12cd3c9a87834fdd1367a75c46ccaf05d..6d0d1bb14b64d2a176db6a74f3a5ff0fa78a5434 100644 --- a/net/minecraft/world/entity/animal/SnowGolem.java +++ b/net/minecraft/world/entity/animal/SnowGolem.java @@ -63,12 +63,31 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM @@ -1777,7 +1777,7 @@ index 1a7c14f9307629386af0a62b3e19545728fa3a8d..6c7b218c01f466ccd1d427206c6662e2 } diff --git a/net/minecraft/world/entity/animal/Squid.java b/net/minecraft/world/entity/animal/Squid.java -index 2e51e64991d326fc055520b6fefc76e80f7c2d97..21ff0b49a1df9b8a95cb2fdf7b43d9a676a497a6 100644 +index f8b4a97cf0558dcf1fc4916a38867f97f0dca868..438765bc5799dff8b9cfd6fa77808712e6ada9b2 100644 --- a/net/minecraft/world/entity/animal/Squid.java +++ b/net/minecraft/world/entity/animal/Squid.java @@ -69,9 +69,32 @@ public class Squid extends AgeableWaterCreature { @@ -1875,7 +1875,7 @@ index 806fb2561d1eb0fba56dc40ba5c1f306c3105880..cc26b929abd249536659df03a1cafbe8 return "entity.minecraft.tropical_fish.predefined." + variantId; } diff --git a/net/minecraft/world/entity/animal/Turtle.java b/net/minecraft/world/entity/animal/Turtle.java -index 8738424b92726f45de2c166a063d46e1071e8b29..4302c302d974bae294d7ffa6f30439f44fe5d0b1 100644 +index 9262bd842b4f012a68a2a99531695e51cdfaf611..542adc537723f9878a217aa3b71d67d1e4c1a8d2 100644 --- a/net/minecraft/world/entity/animal/Turtle.java +++ b/net/minecraft/world/entity/animal/Turtle.java @@ -86,6 +86,23 @@ public class Turtle extends Animal { @@ -1945,10 +1945,10 @@ index 8738424b92726f45de2c166a063d46e1071e8b29..4302c302d974bae294d7ffa6f30439f4 this.turtle.setDeltaMovement(this.turtle.getDeltaMovement().add(0.0, this.turtle.getSpeed() * d1 * 0.1, 0.0)); } diff --git a/net/minecraft/world/entity/animal/allay/Allay.java b/net/minecraft/world/entity/animal/allay/Allay.java -index b7b964bd4e2d611a3e48ece072d5787193077a92..e05f92d31cae8ac143274c662b2eca18ebc378d7 100644 +index 2cd30038c9b82d074408be33447d1401de876fb8..25c03cec16711101b192d2e70b06bd0cd788980f 100644 --- a/net/minecraft/world/entity/animal/allay/Allay.java +++ b/net/minecraft/world/entity/animal/allay/Allay.java -@@ -114,10 +114,23 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS +@@ -113,10 +113,23 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS private float spinningAnimationTicks; private float spinningAnimationTicks0; public boolean forceDancing = false; // CraftBukkit @@ -1973,7 +1973,7 @@ index b7b964bd4e2d611a3e48ece072d5787193077a92..e05f92d31cae8ac143274c662b2eca18 this.setCanPickUpLoot(this.canPickUpLoot()); this.vibrationUser = new Allay.VibrationUser(); this.vibrationData = new VibrationSystem.Data(); -@@ -133,6 +146,28 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS +@@ -132,6 +145,28 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS } // CraftBukkit end @@ -2002,7 +2002,7 @@ index b7b964bd4e2d611a3e48ece072d5787193077a92..e05f92d31cae8ac143274c662b2eca18 @Override protected Brain.Provider brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); -@@ -228,6 +263,7 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS +@@ -227,6 +262,7 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS protected void customServerAiStep(ServerLevel level) { ProfilerFiller profilerFiller = Profiler.get(); profilerFiller.push("allayBrain"); @@ -2011,7 +2011,7 @@ index b7b964bd4e2d611a3e48ece072d5787193077a92..e05f92d31cae8ac143274c662b2eca18 profilerFiller.pop(); profilerFiller.push("allayActivityUpdate"); diff --git a/net/minecraft/world/entity/animal/armadillo/Armadillo.java b/net/minecraft/world/entity/animal/armadillo/Armadillo.java -index c1798db2972c8f2a343cf6e16fd9354ff212d906..c13745fc848c56bfce6161099c27388dc4164cb3 100644 +index 4792e7e6b720a315d64f18d9c3b12f703da8fb21..a394bc9e4de64a862acc2d33a01c1dd298bce464 100644 --- a/net/minecraft/world/entity/animal/armadillo/Armadillo.java +++ b/net/minecraft/world/entity/animal/armadillo/Armadillo.java @@ -82,6 +82,23 @@ public class Armadillo extends Animal { @@ -2039,10 +2039,10 @@ index c1798db2972c8f2a343cf6e16fd9354ff212d906..c13745fc848c56bfce6161099c27388d protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/net/minecraft/world/entity/animal/axolotl/Axolotl.java -index b0467750dab4c6f411fd2f318009d25f83d94bc0..8a21191672e524457f7f45782c57dd3638df1cec 100644 +index 3cf26691c453aff306194b28c0610168cf75c950..2adfa7fa8ab3dbfd2dd227a7a7c45c0084d3af2b 100644 --- a/net/minecraft/world/entity/animal/axolotl/Axolotl.java +++ b/net/minecraft/world/entity/animal/axolotl/Axolotl.java -@@ -122,6 +122,23 @@ public class Axolotl extends Animal implements Bucketable { +@@ -121,6 +121,23 @@ public class Axolotl extends Animal implements Bucketable { this.lookControl = new Axolotl.AxolotlLookControl(this, 20); } @@ -2066,7 +2066,7 @@ index b0467750dab4c6f411fd2f318009d25f83d94bc0..8a21191672e524457f7f45782c57dd36 @Override public float getWalkTargetValue(BlockPos pos, LevelReader level) { return 0.0F; -@@ -331,6 +348,7 @@ public class Axolotl extends Animal implements Bucketable { +@@ -330,6 +347,7 @@ public class Axolotl extends Animal implements Bucketable { protected void customServerAiStep(ServerLevel level) { ProfilerFiller profilerFiller = Profiler.get(); profilerFiller.push("axolotlBrain"); @@ -2074,7 +2074,7 @@ index b0467750dab4c6f411fd2f318009d25f83d94bc0..8a21191672e524457f7f45782c57dd36 this.getBrain().tick(level, this); profilerFiller.pop(); profilerFiller.push("axolotlActivityUpdate"); -@@ -580,23 +598,31 @@ public class Axolotl extends Animal implements Bucketable { +@@ -573,23 +591,31 @@ public class Axolotl extends Animal implements Bucketable { } @Override @@ -2109,10 +2109,10 @@ index b0467750dab4c6f411fd2f318009d25f83d94bc0..8a21191672e524457f7f45782c57dd36 super.tick(); } diff --git a/net/minecraft/world/entity/animal/camel/Camel.java b/net/minecraft/world/entity/animal/camel/Camel.java -index 757b63ee059c95e673a098706b4ee7ab4fc21f70..78073cf5c93389224ccf7d7036d6b11af05280b6 100644 +index 9ad94aca22a100dddaded5833763f9acd2a0ce56..96c98f032b1b3aec32aba38244ee8b45aca9078c 100644 --- a/net/minecraft/world/entity/animal/camel/Camel.java +++ b/net/minecraft/world/entity/animal/camel/Camel.java -@@ -91,6 +91,13 @@ public class Camel extends AbstractHorse { +@@ -90,6 +90,13 @@ public class Camel extends AbstractHorse { groundPathNavigation.setCanWalkOverFences(true); } @@ -2127,10 +2127,10 @@ index 757b63ee059c95e673a098706b4ee7ab4fc21f70..78073cf5c93389224ccf7d7036d6b11a protected void addAdditionalSaveData(ValueOutput output) { super.addAdditionalSaveData(output); diff --git a/net/minecraft/world/entity/animal/frog/Frog.java b/net/minecraft/world/entity/animal/frog/Frog.java -index 66f503e045ccb0985ec718b39be07eea538fad8d..0bb0c875b12c94e9fb42b81210c5935cb5efecf8 100644 +index 7d63881ec187f11544947a487fd0445561228247..054fb0c62a827e708e2195c4d4991e24df2eca78 100644 --- a/net/minecraft/world/entity/animal/frog/Frog.java +++ b/net/minecraft/world/entity/animal/frog/Frog.java -@@ -106,6 +106,8 @@ public class Frog extends Animal { +@@ -105,6 +105,8 @@ public class Frog extends Animal { public final AnimationState croakAnimationState = new AnimationState(); public final AnimationState tongueAnimationState = new AnimationState(); public final AnimationState swimIdleAnimationState = new AnimationState(); @@ -2139,7 +2139,7 @@ index 66f503e045ccb0985ec718b39be07eea538fad8d..0bb0c875b12c94e9fb42b81210c5935c public Frog(EntityType entityType, Level level) { super(entityType, level); -@@ -113,7 +115,55 @@ public class Frog extends Animal { +@@ -112,7 +114,55 @@ public class Frog extends Animal { this.setPathfindingMalus(PathType.WATER, 4.0F); this.setPathfindingMalus(PathType.TRAPDOOR, -1.0F); this.moveControl = new SmoothSwimmingMoveControl(this, 85, 10, 0.02F, 0.1F, true); @@ -2195,7 +2195,7 @@ index 66f503e045ccb0985ec718b39be07eea538fad8d..0bb0c875b12c94e9fb42b81210c5935c @Override protected Brain.Provider brainProvider() { -@@ -206,6 +256,7 @@ public class Frog extends Animal { +@@ -205,6 +255,7 @@ public class Frog extends Animal { protected void customServerAiStep(ServerLevel level) { ProfilerFiller profilerFiller = Profiler.get(); profilerFiller.push("frogBrain"); @@ -2203,7 +2203,7 @@ index 66f503e045ccb0985ec718b39be07eea538fad8d..0bb0c875b12c94e9fb42b81210c5935c this.getBrain().tick(level, this); profilerFiller.pop(); profilerFiller.push("frogActivityUpdate"); -@@ -390,7 +441,7 @@ public class Frog extends Animal { +@@ -383,7 +434,7 @@ public class Frog extends Animal { return level.getBlockState(pos.below()).is(BlockTags.FROGS_SPAWNABLE_ON) && isBrightEnoughToSpawn(level, pos); } @@ -2213,10 +2213,10 @@ index 66f503e045ccb0985ec718b39be07eea538fad8d..0bb0c875b12c94e9fb42b81210c5935c super(mob); } diff --git a/net/minecraft/world/entity/animal/frog/Tadpole.java b/net/minecraft/world/entity/animal/frog/Tadpole.java -index 17f58246849ed407821a987b200cc765eb7943f9..6932e85b3db0205f9a69d9ef965a934f100e6bcf 100644 +index d216c2fbf2fe846c0d9b7164d24eb3815b7235ff..5567fa68755cf718e51b0b127874f79ba0fe6ac8 100644 --- a/net/minecraft/world/entity/animal/frog/Tadpole.java +++ b/net/minecraft/world/entity/animal/frog/Tadpole.java -@@ -66,13 +66,50 @@ public class Tadpole extends AbstractFish { +@@ -65,13 +65,50 @@ public class Tadpole extends AbstractFish { MemoryModuleType.IS_PANICKING ); public boolean ageLocked; // Paper @@ -2268,7 +2268,7 @@ index 17f58246849ed407821a987b200cc765eb7943f9..6932e85b3db0205f9a69d9ef965a934f @Override protected PathNavigation createNavigation(Level level) { return new WaterBoundPathNavigation(this, level); -@@ -102,6 +139,7 @@ public class Tadpole extends AbstractFish { +@@ -101,6 +138,7 @@ public class Tadpole extends AbstractFish { protected void customServerAiStep(ServerLevel level) { ProfilerFiller profilerFiller = Profiler.get(); profilerFiller.push("tadpoleBrain"); @@ -2277,10 +2277,10 @@ index 17f58246849ed407821a987b200cc765eb7943f9..6932e85b3db0205f9a69d9ef965a934f profilerFiller.pop(); profilerFiller.push("tadpoleActivityUpdate"); diff --git a/net/minecraft/world/entity/animal/goat/Goat.java b/net/minecraft/world/entity/animal/goat/Goat.java -index d5e5ea2a20739b81742b1a5323d19f2d01baec25..f106d5bbbe9227b2c7cc4cc24ade57d8df9b4e10 100644 +index 76e85c905e12a56f14b1e4cf14986e0a62847b1f..330fe06b0b1d4c25c69acde22c2e9c00e0756a52 100644 --- a/net/minecraft/world/entity/animal/goat/Goat.java +++ b/net/minecraft/world/entity/animal/goat/Goat.java -@@ -115,6 +115,23 @@ public class Goat extends Animal { +@@ -114,6 +114,23 @@ public class Goat extends Animal { .orElseGet(() -> new ItemStack(Items.GOAT_HORN)); } @@ -2304,7 +2304,7 @@ index d5e5ea2a20739b81742b1a5323d19f2d01baec25..f106d5bbbe9227b2c7cc4cc24ade57d8 @Override protected Brain.Provider brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); -@@ -192,6 +209,7 @@ public class Goat extends Animal { +@@ -191,6 +208,7 @@ public class Goat extends Animal { protected void customServerAiStep(ServerLevel level) { ProfilerFiller profilerFiller = Profiler.get(); profilerFiller.push("goatBrain"); @@ -2313,7 +2313,7 @@ index d5e5ea2a20739b81742b1a5323d19f2d01baec25..f106d5bbbe9227b2c7cc4cc24ade57d8 profilerFiller.pop(); profilerFiller.push("goatActivityUpdate"); diff --git a/net/minecraft/world/entity/animal/horse/AbstractHorse.java b/net/minecraft/world/entity/animal/horse/AbstractHorse.java -index e7e4558d0f018a0c975d12d77287cda4df5a500a..d3140f2c1fcc49431422e2eb9d1f8af066707141 100644 +index fde1f235332127f727da8491e03b54680e42ea4a..b528bd7cc2001a3c0ec1cf615a4c306a9cd7e9f1 100644 --- a/net/minecraft/world/entity/animal/horse/AbstractHorse.java +++ b/net/minecraft/world/entity/animal/horse/AbstractHorse.java @@ -127,11 +127,21 @@ public abstract class AbstractHorse extends Animal implements HasCustomInventory @@ -2383,7 +2383,7 @@ index 2a1d720557c0bd4895a32723e34512c0a557e4f2..f1cb2e315e1d86f9fcd87db11d3ee7a8 protected void randomizeAttributes(RandomSource random) { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(generateMaxHealth(random::nextInt)); diff --git a/net/minecraft/world/entity/animal/horse/Llama.java b/net/minecraft/world/entity/animal/horse/Llama.java -index 5e3382351b1b5728750534f64babc85c4da3ac54..f7c6b2188ed3801417c7497dbc36749def3e5057 100644 +index 7afb96b89a7f2b3d4155031016e51e03dd9b31ce..c3efc59c5e396c664022dd91bca143c60164fe0c 100644 --- a/net/minecraft/world/entity/animal/horse/Llama.java +++ b/net/minecraft/world/entity/animal/horse/Llama.java @@ -84,7 +84,58 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { @@ -2506,7 +2506,7 @@ index 580134c5a075c7efdc7c2f86a179df2fa336eba9..ba0e483df57cc56f356282519105a2e3 @Override diff --git a/net/minecraft/world/entity/animal/horse/TraderLlama.java b/net/minecraft/world/entity/animal/horse/TraderLlama.java -index 2cd1b988f44caf271a7d2dfccf118be53b77caba..7214a8d3597cd46cdc8e0837365cdb4a0a5b4cba 100644 +index 37cb92e6fe2318495fc69928b01e7d63dfb313a8..626b129b54aa622267dfc2ee5ec13bb9f10d6390 100644 --- a/net/minecraft/world/entity/animal/horse/TraderLlama.java +++ b/net/minecraft/world/entity/animal/horse/TraderLlama.java @@ -31,6 +31,28 @@ public class TraderLlama extends Llama { @@ -2570,7 +2570,7 @@ index ee327bdec37df5197c35aef60cf456bb81f8d048..45d09ebcc9ce4321285a4ec49e8ee369 @Override diff --git a/net/minecraft/world/entity/animal/sheep/Sheep.java b/net/minecraft/world/entity/animal/sheep/Sheep.java -index 4e4887cd2c6d6d22966395d68ed59da090f609a3..f9e86a4f632e96d5cf531c90f2813afe2fb45fbb 100644 +index aa97a98cc7e87c5e23684e97bef3fdb2abc6a509..1975976c92e3acb361dcc1ec49c6ce5818173806 100644 --- a/net/minecraft/world/entity/animal/sheep/Sheep.java +++ b/net/minecraft/world/entity/animal/sheep/Sheep.java @@ -62,10 +62,28 @@ public class Sheep extends Animal implements Shearable { @@ -2603,10 +2603,10 @@ index 4e4887cd2c6d6d22966395d68ed59da090f609a3..f9e86a4f632e96d5cf531c90f2813afe this.goalSelector.addGoal(2, new BreedGoal(this, 1.0)); this.goalSelector.addGoal(3, new TemptGoal(this, 1.1, stack -> stack.is(ItemTags.SHEEP_FOOD), false)); diff --git a/net/minecraft/world/entity/animal/sniffer/Sniffer.java b/net/minecraft/world/entity/animal/sniffer/Sniffer.java -index 6a9f31c1f39cc14ad7b5ae3af85908bc7a4caae4..430c2ba035468a81402d6ed0a442006d94d33f09 100644 +index 9736ecdeefa2c8ed9f618672f2b63492cac2a6be..6dcf05e445ad99faf0edfb756be7f245a10b415f 100644 --- a/net/minecraft/world/entity/animal/sniffer/Sniffer.java +++ b/net/minecraft/world/entity/animal/sniffer/Sniffer.java -@@ -89,6 +89,23 @@ public class Sniffer extends Animal { +@@ -88,6 +88,23 @@ public class Sniffer extends Animal { this.setPathfindingMalus(PathType.DAMAGE_CAUTIOUS, -1.0F); } @@ -2631,7 +2631,7 @@ index 6a9f31c1f39cc14ad7b5ae3af85908bc7a4caae4..430c2ba035468a81402d6ed0a442006d protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/animal/wolf/Wolf.java b/net/minecraft/world/entity/animal/wolf/Wolf.java -index 6fc2d5d558832dd55479deb9ad5984fbe81c9bee..d4fa7d17d3fb63e0bdc09db9e454ca4376817265 100644 +index 5bbcd6fdf7e01e1a4e94668e6a5d39e171ba4bb7..ba0f003546d70651eddb1907f33ceb549584c0ca 100644 --- a/net/minecraft/world/entity/animal/wolf/Wolf.java +++ b/net/minecraft/world/entity/animal/wolf/Wolf.java @@ -186,9 +186,32 @@ public class Wolf extends TamableAnimal implements NeutralMob { @@ -2694,7 +2694,7 @@ index c9443cbde85109b19e6c84274c562d83a229c763..ec82bd00f7be253beac1dfbe00a36d25 protected void defineSynchedData(SynchedEntityData.Builder builder) { } diff --git a/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -index 3389c79e18601d582f95fe3765c291d46706d015..f669dd446fc07d15c66a2a96006891bc6171baa4 100644 +index 8a2f8cefe23f7599dab9a4a8cc948772475cc0f7..c3eefe0a4a3b13e20853193450e8634c61257a0a 100644 --- a/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java @@ -92,6 +92,7 @@ public class EnderDragon extends Mob implements Enemy { @@ -2797,7 +2797,7 @@ index 3389c79e18601d582f95fe3765c291d46706d015..f669dd446fc07d15c66a2a96006891bc + // Purpur end - Ridables + this.processFlappingMovement(); - if (this.level().isClientSide) { + if (this.level().isClientSide()) { this.setHealth(this.getHealth()); @@ -199,6 +273,8 @@ public class EnderDragon extends Mob implements Enemy { @@ -2851,7 +2851,7 @@ index 3389c79e18601d582f95fe3765c291d46706d015..f669dd446fc07d15c66a2a96006891bc this.dragonFight.updateDragon(this); } diff --git a/net/minecraft/world/entity/boss/wither/WitherBoss.java b/net/minecraft/world/entity/boss/wither/WitherBoss.java -index f8aeb8364723cf09bbe7f4fad00ddede784338b6..8c915d1455add668b24721c2dbd215a733bf14e7 100644 +index 142731cc843a596ec1f156d7f25d97a0ca11f880..110ef9d81fdfa099316abf7b9c7ef4e1fdc976f7 100644 --- a/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/net/minecraft/world/entity/boss/wither/WitherBoss.java @@ -71,6 +71,7 @@ public class WitherBoss extends Monster implements RangedAttackMob { @@ -3037,7 +3037,7 @@ index f8aeb8364723cf09bbe7f4fad00ddede784338b6..8c915d1455add668b24721c2dbd215a7 public boolean isPowered() { diff --git a/net/minecraft/world/entity/monster/AbstractSkeleton.java b/net/minecraft/world/entity/monster/AbstractSkeleton.java -index 4e14f1a9ee22d08065a3e971c2aecc9363ebff13..352d0655374e05da787225c3fce8803fa547c99d 100644 +index ac5afa9e0605524f5a4e8541ba1e91775901eb11..2ef478b287e1240dd172235f7cabf31f60456a8a 100644 --- a/net/minecraft/world/entity/monster/AbstractSkeleton.java +++ b/net/minecraft/world/entity/monster/AbstractSkeleton.java @@ -73,12 +73,14 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo @@ -3056,7 +3056,7 @@ index 4e14f1a9ee22d08065a3e971c2aecc9363ebff13..352d0655374e05da787225c3fce8803f this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true)); this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, IronGolem.class, true)); diff --git a/net/minecraft/world/entity/monster/Blaze.java b/net/minecraft/world/entity/monster/Blaze.java -index 4ab7072b4290db7fbe72f81b89d3c428b05f737c..971b974c6717a544f7f96c441cd76e9dc8d0cc2c 100644 +index 463ec6bec0b4b606cfc5276aa7803176e476d450..e0a38808c3757aaaabb6d3d8a0f9c1c0133c792f 100644 --- a/net/minecraft/world/entity/monster/Blaze.java +++ b/net/minecraft/world/entity/monster/Blaze.java @@ -33,6 +33,7 @@ public class Blaze extends Monster { @@ -3139,7 +3139,7 @@ index 4ab7072b4290db7fbe72f81b89d3c428b05f737c..971b974c6717a544f7f96c441cd76e9d if (this.nextHeightOffsetChangeTick <= 0) { this.nextHeightOffsetChangeTick = 100; diff --git a/net/minecraft/world/entity/monster/Bogged.java b/net/minecraft/world/entity/monster/Bogged.java -index afb4cee70d0feecab93d943baf7ddfd83ad7f3b5..b1f06656bf60eda01e06cd4cfd908edc7b51c628 100644 +index 7b6c9d2e223d501e8a754e935d95e5aa7b530fd2..9ab5b3f88eeec22110b8aba71714e05209e4b855 100644 --- a/net/minecraft/world/entity/monster/Bogged.java +++ b/net/minecraft/world/entity/monster/Bogged.java @@ -43,6 +43,23 @@ public class Bogged extends AbstractSkeleton implements Shearable { @@ -3195,11 +3195,11 @@ index 2e32567fca7a2a4cd87bc078a6eeb30e3ffabfce..4873a3d8dd9c160ecdbda594ee546c35 public boolean doHurtTarget(ServerLevel level, Entity source) { if (super.doHurtTarget(level, source)) { diff --git a/net/minecraft/world/entity/monster/Creeper.java b/net/minecraft/world/entity/monster/Creeper.java -index d82fe9db4d074a0484d8c5e2998ff9faf87dfd6e..5684ab59acb554f097d713d7c1a9860452bd3564 100644 +index 98c8942993e8cb5073a794552082f63ed1f4d542..d250d8a2d0cbe41b2336a0a697c1c179b24dc823 100644 --- a/net/minecraft/world/entity/monster/Creeper.java +++ b/net/minecraft/world/entity/monster/Creeper.java -@@ -56,21 +56,98 @@ public class Creeper extends Monster { - private int droppedSkulls; +@@ -57,21 +57,98 @@ public class Creeper extends Monster { + private boolean droppedSkulls; public @Nullable Entity entityIgniter; // CraftBukkit private boolean exploding = false; // Purpur - Config to make Creepers explode on death + // Purpur start - Ridables @@ -3297,7 +3297,7 @@ index d82fe9db4d074a0484d8c5e2998ff9faf87dfd6e..5684ab59acb554f097d713d7c1a98604 this.targetSelector.addGoal(1, new NearestAttackableTargetGoal<>(this, Player.class, true)); this.targetSelector.addGoal(2, new HurtByTargetGoal(this)); } -@@ -311,6 +388,7 @@ public class Creeper extends Monster { +@@ -314,6 +391,7 @@ public class Creeper extends Monster { com.destroystokyo.paper.event.entity.CreeperIgniteEvent event = new com.destroystokyo.paper.event.entity.CreeperIgniteEvent((org.bukkit.entity.Creeper) getBukkitEntity(), ignited); if (event.callEvent()) { this.entityData.set(DATA_IS_IGNITED, event.isIgnited()); @@ -3306,7 +3306,7 @@ index d82fe9db4d074a0484d8c5e2998ff9faf87dfd6e..5684ab59acb554f097d713d7c1a98604 } } diff --git a/net/minecraft/world/entity/monster/Drowned.java b/net/minecraft/world/entity/monster/Drowned.java -index 84c6b5552f2b408b7b9f24a85b8c4fd54310c349..fb7a06d64a2f3ac2355bcf9eb515d4504786c585 100644 +index 1dc745180a2671415f526f8afeedf61d90c21bd9..eb70d05d2540295f79d24fbd0c07a9a349783f88 100644 --- a/net/minecraft/world/entity/monster/Drowned.java +++ b/net/minecraft/world/entity/monster/Drowned.java @@ -71,6 +71,23 @@ public class Drowned extends Zombie implements RangedAttackMob { @@ -3333,7 +3333,7 @@ index 84c6b5552f2b408b7b9f24a85b8c4fd54310c349..fb7a06d64a2f3ac2355bcf9eb515d450 @Override protected PathNavigation createNavigation(Level level) { return new AmphibiousPathNavigation(this, level); -@@ -405,7 +422,7 @@ public class Drowned extends Zombie implements RangedAttackMob { +@@ -400,7 +417,7 @@ public class Drowned extends Zombie implements RangedAttackMob { } } @@ -3342,7 +3342,7 @@ index 84c6b5552f2b408b7b9f24a85b8c4fd54310c349..fb7a06d64a2f3ac2355bcf9eb515d450 private final Drowned drowned; public DrownedMoveControl(Drowned mob) { -@@ -414,7 +431,7 @@ public class Drowned extends Zombie implements RangedAttackMob { +@@ -409,7 +426,7 @@ public class Drowned extends Zombie implements RangedAttackMob { } @Override @@ -3351,7 +3351,7 @@ index 84c6b5552f2b408b7b9f24a85b8c4fd54310c349..fb7a06d64a2f3ac2355bcf9eb515d450 LivingEntity target = this.drowned.getTarget(); if (this.drowned.wantsToSwim() && this.drowned.isInWater()) { if (target != null && target.getY() > this.drowned.getY() || this.drowned.searchingForLand) { -@@ -434,7 +451,7 @@ public class Drowned extends Zombie implements RangedAttackMob { +@@ -429,7 +446,7 @@ public class Drowned extends Zombie implements RangedAttackMob { float f = (float)(Mth.atan2(d2, d) * 180.0F / (float)Math.PI) - 90.0F; this.drowned.setYRot(this.rotlerp(this.drowned.getYRot(), f, 90.0F)); this.drowned.yBodyRot = this.drowned.getYRot(); @@ -3360,7 +3360,7 @@ index 84c6b5552f2b408b7b9f24a85b8c4fd54310c349..fb7a06d64a2f3ac2355bcf9eb515d450 float f2 = Mth.lerp(0.125F, this.drowned.getSpeed(), f1); this.drowned.setSpeed(f2); this.drowned.setDeltaMovement(this.drowned.getDeltaMovement().add(f2 * d * 0.005, f2 * d1 * 0.1, f2 * d2 * 0.005)); -@@ -443,7 +460,7 @@ public class Drowned extends Zombie implements RangedAttackMob { +@@ -438,7 +455,7 @@ public class Drowned extends Zombie implements RangedAttackMob { this.drowned.setDeltaMovement(this.drowned.getDeltaMovement().add(0.0, -0.008, 0.0)); } @@ -3393,10 +3393,10 @@ index 7eef05b988d52391ab061382fd8898705c705e03..07355eb21c7b06d282be32f6956d4de9 return Guardian.createAttributes().add(Attributes.MOVEMENT_SPEED, 0.3F).add(Attributes.ATTACK_DAMAGE, 8.0).add(Attributes.MAX_HEALTH, 80.0); } diff --git a/net/minecraft/world/entity/monster/EnderMan.java b/net/minecraft/world/entity/monster/EnderMan.java -index ddb916856cff7179eca474738dfbba910408434c..6836b44d88d8c7b74c05f56b66887c0319805ee7 100644 +index 956e6e2f0c7cff67a39e5a8487c0607f38971bd0..612b0caa28d214886edab3b2de34838659bd39f2 100644 --- a/net/minecraft/world/entity/monster/EnderMan.java +++ b/net/minecraft/world/entity/monster/EnderMan.java -@@ -89,9 +89,27 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -90,9 +90,27 @@ public class EnderMan extends Monster implements NeutralMob { this.setPathfindingMalus(PathType.WATER, -1.0F); } @@ -3424,7 +3424,7 @@ index ddb916856cff7179eca474738dfbba910408434c..6836b44d88d8c7b74c05f56b66887c03 this.goalSelector.addGoal(1, new EnderMan.EndermanFreezeWhenLookedAt(this)); this.goalSelector.addGoal(2, new MeleeAttackGoal(this, 1.0, false)); this.goalSelector.addGoal(7, new WaterAvoidingRandomStrollGoal(this, 1.0, 0.0F)); -@@ -99,6 +117,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -100,6 +118,7 @@ public class EnderMan extends Monster implements NeutralMob { this.goalSelector.addGoal(8, new RandomLookAroundGoal(this)); this.goalSelector.addGoal(10, new EnderMan.EndermanLeaveBlockGoal(this)); this.goalSelector.addGoal(11, new EnderMan.EndermanTakeBlockGoal(this)); @@ -3432,7 +3432,7 @@ index ddb916856cff7179eca474738dfbba910408434c..6836b44d88d8c7b74c05f56b66887c03 this.targetSelector.addGoal(1, new EnderMan.EndermanLookForPlayerGoal(this, this::isAngryAt)); this.targetSelector.addGoal(2, new HurtByTargetGoal(this)); this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, Endermite.class, 10, true, false, (entityliving, ignored) -> entityliving.level().purpurConfig.endermanAggroEndermites && entityliving instanceof Endermite endermite && (!entityliving.level().purpurConfig.endermanAggroEndermitesOnlyIfPlayerSpawned || endermite.isPlayerSpawned()))); // Purpur -@@ -259,7 +278,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -265,7 +284,7 @@ public class EnderMan extends Monster implements NeutralMob { @Override protected void customServerAiStep(ServerLevel level) { @@ -3441,7 +3441,7 @@ index ddb916856cff7179eca474738dfbba910408434c..6836b44d88d8c7b74c05f56b66887c03 float lightLevelDependentMagicValue = this.getLightLevelDependentMagicValue(); if (lightLevelDependentMagicValue > 0.5F && level.canSeeSky(this.blockPosition()) -@@ -372,6 +391,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -378,6 +397,7 @@ public class EnderMan extends Monster implements NeutralMob { public boolean hurtServer(ServerLevel level, DamageSource damageSource, float amount) { if (this.isInvulnerableTo(level, damageSource)) { return false; @@ -3450,7 +3450,7 @@ index ddb916856cff7179eca474738dfbba910408434c..6836b44d88d8c7b74c05f56b66887c03 } else { AbstractThrownPotion abstractThrownPotion1 = damageSource.getDirectEntity() instanceof AbstractThrownPotion abstractThrownPotion diff --git a/net/minecraft/world/entity/monster/Endermite.java b/net/minecraft/world/entity/monster/Endermite.java -index 50eefb77a6c346b2643324f526c5c01d5e667ce4..0d03bebf2cda34072db561f6e27b06a7d26095d1 100644 +index 74ce5bc242838c8979b07e1f6936f93d758b8396..c7e3a80a678df50cbb03349826f7e03c23a2c622 100644 --- a/net/minecraft/world/entity/monster/Endermite.java +++ b/net/minecraft/world/entity/monster/Endermite.java @@ -47,14 +47,33 @@ public class Endermite extends Monster { @@ -3529,7 +3529,7 @@ index 7efa39ab1fb34da41a04cd6816f2571c6eba98f5..10142de6bdf9474958ca939c956a4282 this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true).setUnseenMemoryTicks(300)); this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractVillager.class, false).setUnseenMemoryTicks(300)); diff --git a/net/minecraft/world/entity/monster/Ghast.java b/net/minecraft/world/entity/monster/Ghast.java -index bbdff8b4043f27045684a2aa5687e2b7ca7afbb5..e09004313c7c8333eba38bbfab09b20bdb646034 100644 +index 9d5abdd8f25a84f1e5f27ab7a49a34ddce93f764..49925c8db7166359fdcc0008d5be2130d01686b6 100644 --- a/net/minecraft/world/entity/monster/Ghast.java +++ b/net/minecraft/world/entity/monster/Ghast.java @@ -52,11 +52,35 @@ public class Ghast extends Mob implements Enemy { @@ -3568,7 +3568,7 @@ index bbdff8b4043f27045684a2aa5687e2b7ca7afbb5..e09004313c7c8333eba38bbfab09b20b this.targetSelector .addGoal(1, new NearestAttackableTargetGoal<>(this, Player.class, 10, true, false, (entity, level) -> Math.abs(entity.getY() - this.getY()) <= 4.0)); } -@@ -106,6 +130,15 @@ public class Ghast extends Mob implements Enemy { +@@ -101,6 +125,15 @@ public class Ghast extends Mob implements Enemy { @Override public void travel(Vec3 travelVector) { this.travelFlying(travelVector, 0.02F); @@ -3584,7 +3584,7 @@ index bbdff8b4043f27045684a2aa5687e2b7ca7afbb5..e09004313c7c8333eba38bbfab09b20b } @Override -@@ -236,7 +269,7 @@ public class Ghast extends Mob implements Enemy { +@@ -231,7 +264,7 @@ public class Ghast extends Mob implements Enemy { } } @@ -3593,7 +3593,7 @@ index bbdff8b4043f27045684a2aa5687e2b7ca7afbb5..e09004313c7c8333eba38bbfab09b20b private final Mob ghast; private int floatDuration; private final boolean careful; -@@ -250,7 +283,7 @@ public class Ghast extends Mob implements Enemy { +@@ -245,7 +278,7 @@ public class Ghast extends Mob implements Enemy { } @Override @@ -3637,7 +3637,7 @@ index ab0b44fd3e20fcab4e2fea985e7471575b619069..c098fc14eb4f2ebd7dc1f6be95072792 return Monster.createMonsterAttributes() .add(Attributes.MAX_HEALTH, 100.0) diff --git a/net/minecraft/world/entity/monster/Guardian.java b/net/minecraft/world/entity/monster/Guardian.java -index a36f0181e1aa24538d6c868a8675da89427bdeae..26fb38b9741304f4fe461c929ead0f392255a3de 100644 +index 911b98264f29d08cc57143258ec53e6af8aa271c..7202edbad08975fc62f9aa876d9e53a238182b20 100644 --- a/net/minecraft/world/entity/monster/Guardian.java +++ b/net/minecraft/world/entity/monster/Guardian.java @@ -66,14 +66,35 @@ public class Guardian extends Monster { @@ -3731,10 +3731,10 @@ index a36f0181e1aa24538d6c868a8675da89427bdeae..26fb38b9741304f4fe461c929ead0f39 this.guardian.setSpeed(f2); double d3 = Math.sin((this.guardian.tickCount + this.guardian.getId()) * 0.5) * 0.05; diff --git a/net/minecraft/world/entity/monster/Husk.java b/net/minecraft/world/entity/monster/Husk.java -index 8d6def85583a111841b28f20f58ddb8b8cbd7bc1..0335e85f196363c06597812149e9a93cba57fa9e 100644 +index 4de3e70d78e861f15d2aedb54280158988823caa..b8b7700df42feb2309d9e845e37aa0e9ca026f9b 100644 --- a/net/minecraft/world/entity/monster/Husk.java +++ b/net/minecraft/world/entity/monster/Husk.java -@@ -21,6 +21,23 @@ public class Husk extends Zombie { +@@ -20,6 +20,23 @@ public class Husk extends Zombie { super(entityType, level); } @@ -3759,7 +3759,7 @@ index 8d6def85583a111841b28f20f58ddb8b8cbd7bc1..0335e85f196363c06597812149e9a93c EntityType entityType, ServerLevelAccessor level, EntitySpawnReason spawnReason, BlockPos pos, RandomSource random ) { diff --git a/net/minecraft/world/entity/monster/Illusioner.java b/net/minecraft/world/entity/monster/Illusioner.java -index 7441b019f669653e3e738f27c866270c30acffd4..bb2649001f0b31676a51378745818d5c5b15c443 100644 +index c56665b7d0173542dcddeb1a3aa9eb8e7847e2a1..c41d43d20db8a573efcbbe8593f5b1f56a18aa0e 100644 --- a/net/minecraft/world/entity/monster/Illusioner.java +++ b/net/minecraft/world/entity/monster/Illusioner.java @@ -57,10 +57,28 @@ public class Illusioner extends SpellcasterIllager implements RangedAttackMob { @@ -3841,7 +3841,7 @@ index 889c31cc9257fbbd5df8325ccee9ce39b026ec4b..4a1299d6cee2807522de0c2d0d4745c5 @Override diff --git a/net/minecraft/world/entity/monster/Phantom.java b/net/minecraft/world/entity/monster/Phantom.java -index dd808ce350aa8755df69a84ba5e779f82a76a960..1a2c31932dadddcdf882d3c727c55785b015239d 100644 +index 59e100360ce960c98d3df69052795e4100bc415b..f5cc26632345bdae6fbda72e1084bacf79a75752 100644 --- a/net/minecraft/world/entity/monster/Phantom.java +++ b/net/minecraft/world/entity/monster/Phantom.java @@ -62,6 +62,52 @@ public class Phantom extends Mob implements Enemy { @@ -3917,7 +3917,7 @@ index dd808ce350aa8755df69a84ba5e779f82a76a960..1a2c31932dadddcdf882d3c727c55785 this.getAttribute(Attributes.ATTACK_DAMAGE).setBaseValue(6 + this.getPhantomSize()); } -@@ -149,6 +198,7 @@ public class Phantom extends Mob implements Enemy { +@@ -144,6 +193,7 @@ public class Phantom extends Mob implements Enemy { @Override public void aiStep() { if (this.isAlive() && this.shouldBurnInDay && this.isSunBurnTick()) { // Paper - shouldBurnInDay API @@ -3925,7 +3925,7 @@ index dd808ce350aa8755df69a84ba5e779f82a76a960..1a2c31932dadddcdf882d3c727c55785 this.igniteForSeconds(8.0F); } -@@ -167,6 +217,15 @@ public class Phantom extends Mob implements Enemy { +@@ -162,6 +212,15 @@ public class Phantom extends Mob implements Enemy { @Override public void travel(Vec3 travelVector) { this.travelFlying(travelVector, 0.2F); @@ -3941,7 +3941,7 @@ index dd808ce350aa8755df69a84ba5e779f82a76a960..1a2c31932dadddcdf882d3c727c55785 } @Override -@@ -420,25 +479,42 @@ public class Phantom extends Mob implements Enemy { +@@ -415,25 +474,42 @@ public class Phantom extends Mob implements Enemy { } } @@ -4083,7 +4083,7 @@ index 2b9a72b8742bf13c69df5ce0c905d47a92b9d8bc..b67ac487ce4a7fd8b2f62452ab0b87f4 this.getAttribute(Attributes.MOVEMENT_SPEED).setBaseValue(0.0); } else { diff --git a/net/minecraft/world/entity/monster/Shulker.java b/net/minecraft/world/entity/monster/Shulker.java -index ff16e0dd78687f4c9a0bce5ede4eda30e2a06263..f37ba04ae0277152d93e3e585973d46c25e52395 100644 +index ed89eae7f941b4a771691006b7150537ffb97d19..d3b14cfb5310423e52899edd5873e9ba7f6a30fc 100644 --- a/net/minecraft/world/entity/monster/Shulker.java +++ b/net/minecraft/world/entity/monster/Shulker.java @@ -109,12 +109,31 @@ public class Shulker extends AbstractGolem implements Enemy { @@ -4118,7 +4118,7 @@ index ff16e0dd78687f4c9a0bce5ede4eda30e2a06263..f37ba04ae0277152d93e3e585973d46c this.targetSelector.addGoal(1, new HurtByTargetGoal(this, this.getClass()).setAlertOthers()); this.targetSelector.addGoal(2, new Shulker.ShulkerNearestAttackGoal(this)); this.targetSelector.addGoal(3, new Shulker.ShulkerDefenseAttackGoal(this)); -@@ -718,7 +737,7 @@ public class Shulker extends AbstractGolem implements Enemy { +@@ -714,7 +733,7 @@ public class Shulker extends AbstractGolem implements Enemy { } } @@ -4166,10 +4166,10 @@ index 4e34833ea5c71b817c9f42a58320fe100981ec93..19dcc657fd2a995638d5e23c2b043d01 this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true)); } diff --git a/net/minecraft/world/entity/monster/Skeleton.java b/net/minecraft/world/entity/monster/Skeleton.java -index d53364e33bd9e15ad419f306d7cc2e09c9de242c..ed4f0d48120384d847291724ac995cdee00d10aa 100644 +index 4eb35a7a2dfcb4803c00e1e9179fea8186b15d41..028ec7c90e710182717ccd04ea7fb25042331dfd 100644 --- a/net/minecraft/world/entity/monster/Skeleton.java +++ b/net/minecraft/world/entity/monster/Skeleton.java -@@ -27,6 +27,23 @@ public class Skeleton extends AbstractSkeleton { +@@ -25,6 +25,23 @@ public class Skeleton extends AbstractSkeleton { super(entityType, level); } @@ -4194,7 +4194,7 @@ index d53364e33bd9e15ad419f306d7cc2e09c9de242c..ed4f0d48120384d847291724ac995cde protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/monster/Slime.java b/net/minecraft/world/entity/monster/Slime.java -index 7b9105cc38380d60892647e52608787dbde28f0d..7ac6449dc3ede6bda51579282b1155371f0800d3 100644 +index 678b065a8119d23c3c6b3b3657ae6e728bd7a046..ce6e19b9cf943a8a9d1e85c8764d57b7f282cd69 100644 --- a/net/minecraft/world/entity/monster/Slime.java +++ b/net/minecraft/world/entity/monster/Slime.java @@ -59,6 +59,7 @@ public class Slime extends Mob implements Enemy { @@ -4254,7 +4254,7 @@ index 7b9105cc38380d60892647e52608787dbde28f0d..7ac6449dc3ede6bda51579282b115537 this.targetSelector .addGoal(1, new NearestAttackableTargetGoal<>(this, Player.class, 10, true, false, (entity, level) -> Math.abs(entity.getY() - this.getY()) <= 4.0)); this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, IronGolem.class, true)); -@@ -360,6 +397,7 @@ public class Slime extends Mob implements Enemy { +@@ -355,6 +392,7 @@ public class Slime extends Mob implements Enemy { Vec3 deltaMovement = this.getDeltaMovement(); this.setDeltaMovement(deltaMovement.x, this.getJumpPower(), deltaMovement.z); this.hasImpulse = true; @@ -4262,7 +4262,7 @@ index 7b9105cc38380d60892647e52608787dbde28f0d..7ac6449dc3ede6bda51579282b115537 } @Nullable -@@ -524,7 +562,7 @@ public class Slime extends Mob implements Enemy { +@@ -519,7 +557,7 @@ public class Slime extends Mob implements Enemy { } } @@ -4271,7 +4271,7 @@ index 7b9105cc38380d60892647e52608787dbde28f0d..7ac6449dc3ede6bda51579282b115537 private float yRot; private int jumpDelay; private final Slime slime; -@@ -542,21 +580,33 @@ public class Slime extends Mob implements Enemy { +@@ -537,21 +575,33 @@ public class Slime extends Mob implements Enemy { } public void setWantedMovement(double speed) { @@ -4308,7 +4308,7 @@ index 7b9105cc38380d60892647e52608787dbde28f0d..7ac6449dc3ede6bda51579282b115537 if (this.jumpDelay-- <= 0) { this.jumpDelay = this.slime.getJumpDelay(); if (this.isAggressive) { -@@ -573,7 +623,7 @@ public class Slime extends Mob implements Enemy { +@@ -568,7 +618,7 @@ public class Slime extends Mob implements Enemy { this.mob.setSpeed(0.0F); } } else { @@ -4318,7 +4318,7 @@ index 7b9105cc38380d60892647e52608787dbde28f0d..7ac6449dc3ede6bda51579282b115537 } } diff --git a/net/minecraft/world/entity/monster/Spider.java b/net/minecraft/world/entity/monster/Spider.java -index 60c4ac37bb491af13f9f9bf730b85bbe544cf81d..5721a690859a1232234c9f6a4385f7185d9800ec 100644 +index 13f49a2e43adbbbb4ec9cd5b479814fefcca1cce..771592182fe56efc6fc0dae7fa852483b3b99c57 100644 --- a/net/minecraft/world/entity/monster/Spider.java +++ b/net/minecraft/world/entity/monster/Spider.java @@ -50,15 +50,34 @@ public class Spider extends Monster { @@ -4385,7 +4385,7 @@ index f3de370ee4bafc2cca033293d0d8e5c9c2a6737b..4a7dbd1e4d927240433882a95822e9ed EntityType entityType, ServerLevelAccessor level, EntitySpawnReason spawnReason, BlockPos pos, RandomSource random ) { diff --git a/net/minecraft/world/entity/monster/Strider.java b/net/minecraft/world/entity/monster/Strider.java -index 4b9e60d930bc3a4bfe9aad2e81391e57cfc45d40..ddd3a0d629f720b7acacf01bf2a7db53ee28724e 100644 +index 824e5d81d392566fb14647ab3672f1fdb1111e7e..f1e559f552b932d1d66b67ff35ca519ee273fc50 100644 --- a/net/minecraft/world/entity/monster/Strider.java +++ b/net/minecraft/world/entity/monster/Strider.java @@ -92,6 +92,23 @@ public class Strider extends Animal implements ItemSteerable { @@ -4430,7 +4430,7 @@ index 4b9e60d930bc3a4bfe9aad2e81391e57cfc45d40..ddd3a0d629f720b7acacf01bf2a7db53 if (isFood && !this.isSilent()) { this.level() diff --git a/net/minecraft/world/entity/monster/Vex.java b/net/minecraft/world/entity/monster/Vex.java -index a621e08fe4f88fcfa8da83bc44b23fc2ffaa5918..543913b7e9e92ac43c2e557213a487140326a69e 100644 +index 71ccccf12289972cb35686c1bda11510da7663dd..f8fb8de570468151e1b82e8f15e66e2ea6fd8e22 100644 --- a/net/minecraft/world/entity/monster/Vex.java +++ b/net/minecraft/world/entity/monster/Vex.java @@ -60,6 +60,50 @@ public class Vex extends Monster implements TraceableEntity { @@ -4579,7 +4579,7 @@ index 71d84306788be023bc949400d30966548d968c86..8e5bf153a457026808e2ea670e874e66 this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true)); this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractVillager.class, true)); diff --git a/net/minecraft/world/entity/monster/Witch.java b/net/minecraft/world/entity/monster/Witch.java -index cc156f6d98f193bc98eae75bd5aaf8abe69ace4c..4c5372be4bfc68184a88825214d36477f83edf73 100644 +index 1e573104a1f6d296d15315da3465a046bce157e1..e420d7dc0fc09d712ee63238f2107a2fa0f799b7 100644 --- a/net/minecraft/world/entity/monster/Witch.java +++ b/net/minecraft/world/entity/monster/Witch.java @@ -56,6 +56,23 @@ public class Witch extends Raider implements RangedAttackMob { @@ -4620,7 +4620,7 @@ index cc156f6d98f193bc98eae75bd5aaf8abe69ace4c..4c5372be4bfc68184a88825214d36477 this.targetSelector.addGoal(2, this.healRaidersGoal); this.targetSelector.addGoal(3, this.attackPlayersGoal); diff --git a/net/minecraft/world/entity/monster/WitherSkeleton.java b/net/minecraft/world/entity/monster/WitherSkeleton.java -index 3ff71ba1bd29faa4d8380dad9397ab34ef930234..d8c10f5f93e3ca92a49e1df3216256450c62f219 100644 +index 32b730338eb510d374a6ec5e279b0112f7bee286..48f9d87d26bad99b81af001a81d2c3d274cad007 100644 --- a/net/minecraft/world/entity/monster/WitherSkeleton.java +++ b/net/minecraft/world/entity/monster/WitherSkeleton.java @@ -34,6 +34,23 @@ public class WitherSkeleton extends AbstractSkeleton { @@ -4648,10 +4648,10 @@ index 3ff71ba1bd29faa4d8380dad9397ab34ef930234..d8c10f5f93e3ca92a49e1df321625645 protected void registerGoals() { this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractPiglin.class, true)); diff --git a/net/minecraft/world/entity/monster/Zoglin.java b/net/minecraft/world/entity/monster/Zoglin.java -index 0dbc528bcad2b2f79585e2462a265d43fcbebe76..4379832f464824260a25055ed7338c2879a9a194 100644 +index 4feaa6167d82278a104a37c3b10257e24b299e6c..44ad3bbcfdf8615d6e5a896fb923685c481ae5b5 100644 --- a/net/minecraft/world/entity/monster/Zoglin.java +++ b/net/minecraft/world/entity/monster/Zoglin.java -@@ -87,6 +87,23 @@ public class Zoglin extends Monster implements HoglinBase { +@@ -86,6 +86,23 @@ public class Zoglin extends Monster implements HoglinBase { this.xpReward = 5; } @@ -4675,7 +4675,7 @@ index 0dbc528bcad2b2f79585e2462a265d43fcbebe76..4379832f464824260a25055ed7338c28 @Override protected Brain.Provider brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); -@@ -252,6 +269,7 @@ public class Zoglin extends Monster implements HoglinBase { +@@ -251,6 +268,7 @@ public class Zoglin extends Monster implements HoglinBase { protected void customServerAiStep(ServerLevel level) { ProfilerFiller profilerFiller = Profiler.get(); profilerFiller.push("zoglinBrain"); @@ -4684,7 +4684,7 @@ index 0dbc528bcad2b2f79585e2462a265d43fcbebe76..4379832f464824260a25055ed7338c28 profilerFiller.pop(); this.updateActivity(); diff --git a/net/minecraft/world/entity/monster/Zombie.java b/net/minecraft/world/entity/monster/Zombie.java -index e8f54f358b0af0a6755912df7cceb2909da9f0a9..5d68fa532c588ed942d6b9703cc1047feca4e641 100644 +index e320d34b8fb1e34408eff9f5be4e2e5b67c82942..e63328db6af1e2a52c9ebfeefbceda1afd5edfcd 100644 --- a/net/minecraft/world/entity/monster/Zombie.java +++ b/net/minecraft/world/entity/monster/Zombie.java @@ -103,11 +103,30 @@ public class Zombie extends Monster { @@ -4719,10 +4719,10 @@ index e8f54f358b0af0a6755912df7cceb2909da9f0a9..5d68fa532c588ed942d6b9703cc1047f } diff --git a/net/minecraft/world/entity/monster/ZombieVillager.java b/net/minecraft/world/entity/monster/ZombieVillager.java -index 75a8f3ecaec5cdfe98aa8363326a8a2047ea75b1..317693bccccbb41f38dc726a71cf059d5a861e27 100644 +index b1a017dd4e6bca642f33534d93c681516a1439b8..4a64ae41f5fa1df735ca62444c2b7bab2a1f4a8d 100644 --- a/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/net/minecraft/world/entity/monster/ZombieVillager.java -@@ -76,6 +76,23 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { +@@ -73,6 +73,23 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { super(entityType, level); } @@ -4747,7 +4747,7 @@ index 75a8f3ecaec5cdfe98aa8363326a8a2047ea75b1..317693bccccbb41f38dc726a71cf059d protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/monster/ZombifiedPiglin.java b/net/minecraft/world/entity/monster/ZombifiedPiglin.java -index 1be7c756d56cca63347d97f7896b491f3a343fa4..deb47d4828ac94f8d68a799b98cc696674d94a6f 100644 +index d6e9fc7e084fbc4e2d643f2408b36d52357c7af5..5919405428eb03c499167bc7b963e3f96f721c8c 100644 --- a/net/minecraft/world/entity/monster/ZombifiedPiglin.java +++ b/net/minecraft/world/entity/monster/ZombifiedPiglin.java @@ -64,6 +64,23 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { @@ -4775,10 +4775,10 @@ index 1be7c756d56cca63347d97f7896b491f3a343fa4..deb47d4828ac94f8d68a799b98cc6966 public void setPersistentAngerTarget(@Nullable UUID target) { this.persistentAngerTarget = target; diff --git a/net/minecraft/world/entity/monster/creaking/Creaking.java b/net/minecraft/world/entity/monster/creaking/Creaking.java -index 567e7952efec69b4222563fae724d18a9902bb05..b87ad5259b416693e57e3863327f46ee08a4928f 100644 +index f18b893cf7c7f87edb18beb3ef8781d892f6fc86..982790edbd74bd80988df1400b0e67669bfd164c 100644 --- a/net/minecraft/world/entity/monster/creaking/Creaking.java +++ b/net/minecraft/world/entity/monster/creaking/Creaking.java -@@ -103,6 +103,29 @@ public class Creaking extends Monster { +@@ -102,6 +102,29 @@ public class Creaking extends Monster { return this.getHomePos() != null; } @@ -4808,7 +4808,7 @@ index 567e7952efec69b4222563fae724d18a9902bb05..b87ad5259b416693e57e3863327f46ee @Override protected BodyRotationControl createBodyControl() { return new Creaking.CreakingBodyRotationControl(this); -@@ -572,28 +595,28 @@ public class Creaking extends Monster { +@@ -565,28 +588,28 @@ public class Creaking extends Monster { } } @@ -4844,10 +4844,10 @@ index 567e7952efec69b4222563fae724d18a9902bb05..b87ad5259b416693e57e3863327f46ee } } diff --git a/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/net/minecraft/world/entity/monster/hoglin/Hoglin.java -index 0ecf8533f6cad081df8713856feb74db93028f71..fce1a2dda2587c55e39e4ef51c30b5556efe0b33 100644 +index 422401ebe7ed5bbf69cad7083b333b9279978494..2d9746a61d4733e5cf6150fec36217376d95461c 100644 --- a/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/net/minecraft/world/entity/monster/hoglin/Hoglin.java -@@ -96,6 +96,23 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { +@@ -95,6 +95,23 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { this.xpReward = 5; } @@ -4871,7 +4871,7 @@ index 0ecf8533f6cad081df8713856feb74db93028f71..fce1a2dda2587c55e39e4ef51c30b555 @VisibleForTesting public void setTimeInOverworld(int timeInOverworld) { this.timeInOverworld = timeInOverworld; -@@ -164,6 +181,7 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { +@@ -163,6 +180,7 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { protected void customServerAiStep(ServerLevel level) { ProfilerFiller profilerFiller = Profiler.get(); profilerFiller.push("hoglinBrain"); @@ -4880,10 +4880,10 @@ index 0ecf8533f6cad081df8713856feb74db93028f71..fce1a2dda2587c55e39e4ef51c30b555 profilerFiller.pop(); HoglinAi.updateActivity(this); diff --git a/net/minecraft/world/entity/monster/piglin/Piglin.java b/net/minecraft/world/entity/monster/piglin/Piglin.java -index 8392ff1316f0c5be685a6ded7ccd08933c10ff4e..29c687a5f459e100a78f77a2edbf9e607f17a5ab 100644 +index d220e8f1517cf68a6083fc4791cb34ca926dd165..6d66f6b8a5dd616cb62af887b83576f268b24656 100644 --- a/net/minecraft/world/entity/monster/piglin/Piglin.java +++ b/net/minecraft/world/entity/monster/piglin/Piglin.java -@@ -137,6 +137,23 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento +@@ -136,6 +136,23 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento this.xpReward = 5; } @@ -4907,7 +4907,7 @@ index 8392ff1316f0c5be685a6ded7ccd08933c10ff4e..29c687a5f459e100a78f77a2edbf9e60 @Override protected void addAdditionalSaveData(ValueOutput output) { super.addAdditionalSaveData(output); -@@ -322,6 +339,7 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento +@@ -310,6 +327,7 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento protected void customServerAiStep(ServerLevel level) { ProfilerFiller profilerFiller = Profiler.get(); profilerFiller.push("piglinBrain"); @@ -4952,10 +4952,10 @@ index 219978cb0341b2d691f44c1146707d875788881e..4c8e49ba064241ec7ac505fa6f5df6d7 profilerFiller.pop(); PiglinBruteAi.updateActivity(this); diff --git a/net/minecraft/world/entity/monster/warden/Warden.java b/net/minecraft/world/entity/monster/warden/Warden.java -index 4a4cc7f9c95d4f4b6ad4948e3ed3504efbbcef15..f8a6aba7d6f0f357c72602f4ac6c2537b604eb6c 100644 +index 45fa724f7f6ff911a09d4c20811386fe2a10a80a..e28f5610be908879990849e2ab7c4ad2447d20e2 100644 --- a/net/minecraft/world/entity/monster/warden/Warden.java +++ b/net/minecraft/world/entity/monster/warden/Warden.java -@@ -124,8 +124,32 @@ public class Warden extends Monster implements VibrationSystem { +@@ -123,8 +123,32 @@ public class Warden extends Monster implements VibrationSystem { this.setPathfindingMalus(PathType.LAVA, 8.0F); this.setPathfindingMalus(PathType.DAMAGE_FIRE, 0.0F); this.setPathfindingMalus(PathType.DANGER_FIRE, 0.0F); @@ -4988,7 +4988,7 @@ index 4a4cc7f9c95d4f4b6ad4948e3ed3504efbbcef15..f8a6aba7d6f0f357c72602f4ac6c2537 @Override public Packet getAddEntityPacket(ServerEntity entity) { return new ClientboundAddEntityPacket(this, entity, this.hasPose(Pose.EMERGING) ? 1 : 0); -@@ -389,6 +413,7 @@ public class Warden extends Monster implements VibrationSystem { +@@ -382,6 +406,7 @@ public class Warden extends Monster implements VibrationSystem { @Contract("null->false") public boolean canTargetEntity(@Nullable Entity entity) { @@ -4997,7 +4997,7 @@ index 4a4cc7f9c95d4f4b6ad4948e3ed3504efbbcef15..f8a6aba7d6f0f357c72602f4ac6c2537 && this.level() == entity.level() && EntitySelector.NO_CREATIVE_OR_SPECTATOR.test(entity) diff --git a/net/minecraft/world/entity/npc/Villager.java b/net/minecraft/world/entity/npc/Villager.java -index 98303277236f2205f20e3db29f17f576ba2a7938..b1cad9a37d8d1f053add366699c5277c4fd84f6b 100644 +index 7a8a87fbbac91909ba15247b04725d11117b6ea3..94c0718ebc673827f0ba035be4617c64c46cd07d 100644 --- a/net/minecraft/world/entity/npc/Villager.java +++ b/net/minecraft/world/entity/npc/Villager.java @@ -249,6 +249,28 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -5045,7 +5045,7 @@ index 98303277236f2205f20e3db29f17f576ba2a7938..b1cad9a37d8d1f053add366699c5277c - return InteractionResult.SUCCESS; + return tryRide(player, hand, InteractionResult.SUCCESS); // Purpur - Ridables } else { - if (!this.level().isClientSide) { + if (!this.level().isClientSide()) { boolean isEmpty = this.getOffers().isEmpty(); @@ -431,9 +453,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler } @@ -5061,7 +5061,7 @@ index 98303277236f2205f20e3db29f17f576ba2a7938..b1cad9a37d8d1f053add366699c5277c this.startTrading(player); } diff --git a/net/minecraft/world/entity/npc/WanderingTrader.java b/net/minecraft/world/entity/npc/WanderingTrader.java -index 93ed977260f369677028bbd8396862f344dfeaa3..e5d6d8bd30876832e6219969849e826070343f45 100644 +index fa281aba7212be33d71d900564783ed23d4f8df5..10f2b2f96418b059c7f6b43e1f060b0ccb03362f 100644 --- a/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/net/minecraft/world/entity/npc/WanderingTrader.java @@ -67,6 +67,23 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill @@ -5090,7 +5090,7 @@ index 93ed977260f369677028bbd8396862f344dfeaa3..e5d6d8bd30876832e6219969849e8260 this.goalSelector.addGoal(0, new FloatGoal(this)); @@ -128,8 +145,9 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill - if (!this.level().isClientSide) { + if (!this.level().isClientSide()) { if (this.getOffers().isEmpty()) { - return InteractionResult.CONSUME; + return tryRide(player, hand, InteractionResult.CONSUME); // Purpur - Ridables @@ -5100,10 +5100,10 @@ index 93ed977260f369677028bbd8396862f344dfeaa3..e5d6d8bd30876832e6219969849e8260 if (this.level().purpurConfig.wanderingTraderAllowTrading) { // Purpur - Add config for villager trading this.setTradingPlayer(player); diff --git a/net/minecraft/world/entity/player/Player.java b/net/minecraft/world/entity/player/Player.java -index fd0322685f17f188d19ccc5fc8d2995bfab17f6e..b12bd1f756b91a1168eb8ac4959152dcca01c5b5 100644 +index 3bd072720a8f8ca124bf6eb61d2428317076c408..1e14640b74950ecd2abd0ae13a7c83fa6a318703 100644 --- a/net/minecraft/world/entity/player/Player.java +++ b/net/minecraft/world/entity/player/Player.java -@@ -239,6 +239,19 @@ public abstract class Player extends LivingEntity { +@@ -200,6 +200,19 @@ public abstract class Player extends Avatar implements ContainerUser { } // CraftBukkit end @@ -5122,9 +5122,9 @@ index fd0322685f17f188d19ccc5fc8d2995bfab17f6e..b12bd1f756b91a1168eb8ac4959152dc + public Player(Level level, GameProfile gameProfile) { super(EntityType.PLAYER, level); - this.setUUID(gameProfile.getId()); + this.setUUID(gameProfile.id()); diff --git a/net/minecraft/world/entity/projectile/LlamaSpit.java b/net/minecraft/world/entity/projectile/LlamaSpit.java -index f736f72b8e76dd82236badcdd2756f0d4da89aa4..0dbfbadcabcf1b719addb034e676cb51b74199d7 100644 +index 51366d17e521b1f01ddb2e425328938cd069bc93..3e2cf2f74b0c788ec3ec6fd83ff51a1f52f197e0 100644 --- a/net/minecraft/world/entity/projectile/LlamaSpit.java +++ b/net/minecraft/world/entity/projectile/LlamaSpit.java @@ -33,6 +33,12 @@ public class LlamaSpit extends Projectile { @@ -5141,7 +5141,7 @@ index f736f72b8e76dd82236badcdd2756f0d4da89aa4..0dbfbadcabcf1b719addb034e676cb51 protected double getDefaultGravity() { return 0.06; diff --git a/net/minecraft/world/entity/projectile/WitherSkull.java b/net/minecraft/world/entity/projectile/WitherSkull.java -index 5f20dded96fac2dd5d1b0282e7f8487344beb4ee..3b68e1a73da3e70f459cdc31e8447bcee37a914d 100644 +index 5e7642b982b58ae21cbf772b1c6667b3429facaf..1c9fae3eddd7372a60192a9361e67c2829078ab9 100644 --- a/net/minecraft/world/entity/projectile/WitherSkull.java +++ b/net/minecraft/world/entity/projectile/WitherSkull.java @@ -110,6 +110,14 @@ public class WitherSkull extends AbstractHurtingProjectile { diff --git a/purpur-server/minecraft-patches/unapplied-features/0002-Configurable-entity-base-attributes.patch b/purpur-server/minecraft-patches/features/0002-Configurable-entity-base-attributes.patch similarity index 92% rename from purpur-server/minecraft-patches/unapplied-features/0002-Configurable-entity-base-attributes.patch rename to purpur-server/minecraft-patches/features/0002-Configurable-entity-base-attributes.patch index 96b219d6f..fb5bbc31d 100644 --- a/purpur-server/minecraft-patches/unapplied-features/0002-Configurable-entity-base-attributes.patch +++ b/purpur-server/minecraft-patches/features/0002-Configurable-entity-base-attributes.patch @@ -23,10 +23,10 @@ index 8e8ddab59de508c84c4182e105a11554387dcce0..1896f91e10a5e17332836d5354813a18 protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java -index 310c18480dd5ff3d700f477a2466cbcc42690034..1b45fa392d3c3b58e232e6364d344354cf82f2c3 100644 +index 8ae8c9e2f0447634b2a4b0dc1662cd0feb00518f..a8de0e01547d94db3588f2a90309bfa0bccf509c 100644 --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java -@@ -291,6 +291,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin +@@ -292,6 +292,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin protected LivingEntity(EntityType entityType, Level level) { super(entityType, level); this.attributes = new AttributeMap(DefaultAttributes.getSupplier(entityType), this); // Purpur - Ridables @@ -34,7 +34,7 @@ index 310c18480dd5ff3d700f477a2466cbcc42690034..1b45fa392d3c3b58e232e6364d344354 this.craftAttributes = new org.bukkit.craftbukkit.attribute.CraftAttributeMap(this.attributes); // CraftBukkit // CraftBukkit - this.setHealth(this.getMaxHealth()) inlined and simplified to skip the instanceof check for Player, as getBukkitEntity() is not initialized in constructor this.entityData.set(LivingEntity.DATA_HEALTH_ID, this.getMaxHealth()); -@@ -309,6 +310,8 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin +@@ -316,6 +317,8 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin return new EntityEquipment(); } @@ -44,7 +44,7 @@ index 310c18480dd5ff3d700f477a2466cbcc42690034..1b45fa392d3c3b58e232e6364d344354 return this.brain; } diff --git a/net/minecraft/world/entity/ambient/Bat.java b/net/minecraft/world/entity/ambient/Bat.java -index ed4016af3532f33023a3267cd0daa10757765fa3..d25da9a9560ce171df3ada22756e4c54a91ff378 100644 +index 8fc9fd70abbaeab2c6aefd4aaf3d199fbe879dee..c817947dcba66004216ac8f3b2cdd1e940ee6d03 100644 --- a/net/minecraft/world/entity/ambient/Bat.java +++ b/net/minecraft/world/entity/ambient/Bat.java @@ -96,6 +96,21 @@ public class Bat extends AmbientCreature { @@ -70,10 +70,10 @@ index ed4016af3532f33023a3267cd0daa10757765fa3..d25da9a9560ce171df3ada22756e4c54 public boolean isFlapping() { return !this.isResting() && this.tickCount % 10.0F == 0.0F; diff --git a/net/minecraft/world/entity/animal/Bee.java b/net/minecraft/world/entity/animal/Bee.java -index be1774d479bfcd349e62ecb69bf7367d6eea7d75..bdb16d355dac48760c9a083303035265f6a1fc74 100644 +index aa90ba822ad00283d0347977f42078120aec7913..0238bbbd85100dd107a11c00fd19d2250766b11e 100644 --- a/net/minecraft/world/entity/animal/Bee.java +++ b/net/minecraft/world/entity/animal/Bee.java -@@ -473,6 +473,14 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -475,6 +475,14 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { return beehiveBlockEntity != null && beehiveBlockEntity.isFireNearby(); } @@ -164,7 +164,7 @@ index 802c536659d45d0974fe788535ca326b86f90551..9dbc5f7b3896acb199577afa85451da3 protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/animal/Dolphin.java b/net/minecraft/world/entity/animal/Dolphin.java -index 213421070ce6a356aecc31ef7b13701b4403952a..c8ed91c1902261d6b15744e1fbe1bf7f861b51a8 100644 +index ecd4dbcfc7f568722488c0894a98db68bb07ead9..03313754022b5ec682efef68e5d56a59ee2e8b92 100644 --- a/net/minecraft/world/entity/animal/Dolphin.java +++ b/net/minecraft/world/entity/animal/Dolphin.java @@ -151,6 +151,14 @@ public class Dolphin extends AgeableWaterCreature { @@ -183,7 +183,7 @@ index 213421070ce6a356aecc31ef7b13701b4403952a..c8ed91c1902261d6b15744e1fbe1bf7f @Override public SpawnGroupData finalizeSpawn( diff --git a/net/minecraft/world/entity/animal/Fox.java b/net/minecraft/world/entity/animal/Fox.java -index a81ada76bfd6c4b49d1552f48e2009bc7d8c71d2..869a0154c81593db8933f9daa6a7d3a9d02facc5 100644 +index 4d2b6a34c0c276ef304916b2b84c92a516fe4979..50c8030a9ac6d1fc465cdf6ffbc88f85933405b0 100644 --- a/net/minecraft/world/entity/animal/Fox.java +++ b/net/minecraft/world/entity/animal/Fox.java @@ -180,6 +180,14 @@ public class Fox extends Animal { @@ -202,10 +202,10 @@ index a81ada76bfd6c4b49d1552f48e2009bc7d8c71d2..869a0154c81593db8933f9daa6a7d3a9 protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/animal/HappyGhast.java b/net/minecraft/world/entity/animal/HappyGhast.java -index b425f43eb15abdfd6e10b5443acc3d5a68d63a70..3bdfd064ba3985e7f3d1c537d60908568678ec78 100644 +index 390b929a2d71df840febb081e68f675972db0fa4..597250765504186f7e01b3b88c7428258938afb3 100644 --- a/net/minecraft/world/entity/animal/HappyGhast.java +++ b/net/minecraft/world/entity/animal/HappyGhast.java -@@ -133,6 +133,19 @@ public class HappyGhast extends Animal { +@@ -132,6 +132,19 @@ public class HappyGhast extends Animal { } // Purpur end - Ridables @@ -225,7 +225,7 @@ index b425f43eb15abdfd6e10b5443acc3d5a68d63a70..3bdfd064ba3985e7f3d1c537d6090856 @Override protected void ageBoundaryReached() { if (this.isBaby()) { -@@ -156,7 +169,7 @@ public class HappyGhast extends Animal { +@@ -155,7 +168,7 @@ public class HappyGhast extends Animal { @Override protected float sanitizeScale(float scale) { @@ -235,7 +235,7 @@ index b425f43eb15abdfd6e10b5443acc3d5a68d63a70..3bdfd064ba3985e7f3d1c537d6090856 @Override diff --git a/net/minecraft/world/entity/animal/IronGolem.java b/net/minecraft/world/entity/animal/IronGolem.java -index d7c330e77c384bba800829bdbe07f6b66695896e..1cb7e0985a59e83f118d4656e94a79f4d81836ff 100644 +index febe8b7b6a29f34fda685d1ab467dbf168d998c3..1148a5dcd5eef8e961df5388dbdd49769508007d 100644 --- a/net/minecraft/world/entity/animal/IronGolem.java +++ b/net/minecraft/world/entity/animal/IronGolem.java @@ -92,6 +92,14 @@ public class IronGolem extends AbstractGolem implements NeutralMob { @@ -254,10 +254,10 @@ index d7c330e77c384bba800829bdbe07f6b66695896e..1cb7e0985a59e83f118d4656e94a79f4 protected void registerGoals() { if (this.level().purpurConfig.ironGolemPoppyCalm) this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.ReceiveFlower(this)); // Purpur - Iron golem calm anger options diff --git a/net/minecraft/world/entity/animal/MushroomCow.java b/net/minecraft/world/entity/animal/MushroomCow.java -index 80c25b591e0b9f3f8132cdad27d1896d70293cd2..8cfbe37df24647c3f0a2d64bcc3451de1402c86f 100644 +index cd13cff73e4a882a7d9aa246bfdf0c7ade99d987..eede8c36b351eb7bd555a0e6e362647e11dbeb2d 100644 --- a/net/minecraft/world/entity/animal/MushroomCow.java +++ b/net/minecraft/world/entity/animal/MushroomCow.java -@@ -79,6 +79,13 @@ public class MushroomCow extends AbstractCow implements Shearable { +@@ -80,6 +80,13 @@ public class MushroomCow extends AbstractCow implements Shearable { } // Purpur end - Ridables @@ -272,7 +272,7 @@ index 80c25b591e0b9f3f8132cdad27d1896d70293cd2..8cfbe37df24647c3f0a2d64bcc3451de public float getWalkTargetValue(BlockPos pos, LevelReader level) { return level.getBlockState(pos.below()).is(Blocks.MYCELIUM) ? 10.0F : level.getPathfindingCostFromLightLevels(pos); diff --git a/net/minecraft/world/entity/animal/Ocelot.java b/net/minecraft/world/entity/animal/Ocelot.java -index 2aad5800fa4e2fc68fb63ab440dc9d5fccb2d86b..84664a62dcae89dff1b63b0ac952756440ee090f 100644 +index 0340813f71980d2c48853a68b37d353cd50a28cb..9f3ab67cf17c4f66da8bec0c9b818025ef303040 100644 --- a/net/minecraft/world/entity/animal/Ocelot.java +++ b/net/minecraft/world/entity/animal/Ocelot.java @@ -81,6 +81,14 @@ public class Ocelot extends Animal { @@ -291,7 +291,7 @@ index 2aad5800fa4e2fc68fb63ab440dc9d5fccb2d86b..84664a62dcae89dff1b63b0ac9527564 return this.entityData.get(DATA_TRUSTING); } diff --git a/net/minecraft/world/entity/animal/Panda.java b/net/minecraft/world/entity/animal/Panda.java -index cbe493c19cd377c3b284dd9b3ea7bf24fee5cd7c..4ec69b45049b2c947e0d9ef71619e8acd358e7ad 100644 +index 65874fa6b80f5d0953317629ff997fafec68f66d..b31e2ef8a498fe33107a5c4ee2b4e056a44027cc 100644 --- a/net/minecraft/world/entity/animal/Panda.java +++ b/net/minecraft/world/entity/animal/Panda.java @@ -133,6 +133,15 @@ public class Panda extends Animal { @@ -324,7 +324,7 @@ index cbe493c19cd377c3b284dd9b3ea7bf24fee5cd7c..4ec69b45049b2c947e0d9ef71619e8ac if (this.isLazy()) { diff --git a/net/minecraft/world/entity/animal/Parrot.java b/net/minecraft/world/entity/animal/Parrot.java -index 03e68a5bd1c51da13dafefe002f95884ee5787d0..d997102941a6add1b116053c119bcd6690eb42a5 100644 +index 60e1810f91c086debb4ada192720398834c8ca84..24f7e486dec1714d917342887afaf775ef6300d5 100644 --- a/net/minecraft/world/entity/animal/Parrot.java +++ b/net/minecraft/world/entity/animal/Parrot.java @@ -193,6 +193,14 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { @@ -343,7 +343,7 @@ index 03e68a5bd1c51da13dafefe002f95884ee5787d0..d997102941a6add1b116053c119bcd66 @Override public SpawnGroupData finalizeSpawn( diff --git a/net/minecraft/world/entity/animal/Pig.java b/net/minecraft/world/entity/animal/Pig.java -index c2ac954b9cdea04450c7d72845568236fff1b686..9f511a6a2692dc46c14e0e0e59518c0a3040cfb9 100644 +index 70c9629e6f1f82f44e14487ed3c81e391d480029..39f6a3f3ea5f7e51580b7cbf9bbfd4a04368a380 100644 --- a/net/minecraft/world/entity/animal/Pig.java +++ b/net/minecraft/world/entity/animal/Pig.java @@ -83,6 +83,14 @@ public class Pig extends Animal implements ItemSteerable { @@ -362,7 +362,7 @@ index c2ac954b9cdea04450c7d72845568236fff1b686..9f511a6a2692dc46c14e0e0e59518c0a protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/net/minecraft/world/entity/animal/PolarBear.java b/net/minecraft/world/entity/animal/PolarBear.java -index 16dcc17778f3bde4c034a12259188d8297685dd9..28919a96de837a15d116c6b863eba5c8a1cf6a7b 100644 +index b0f1c80465b3e4dd8ff220209df8a00f60ede84a..75eb4a6dd43346622d6c528aa6e66d251167d3ac 100644 --- a/net/minecraft/world/entity/animal/PolarBear.java +++ b/net/minecraft/world/entity/animal/PolarBear.java @@ -117,6 +117,14 @@ public class PolarBear extends Animal implements NeutralMob { @@ -381,7 +381,7 @@ index 16dcc17778f3bde4c034a12259188d8297685dd9..28919a96de837a15d116c6b863eba5c8 @Override public AgeableMob getBreedOffspring(ServerLevel level, AgeableMob otherParent) { diff --git a/net/minecraft/world/entity/animal/Pufferfish.java b/net/minecraft/world/entity/animal/Pufferfish.java -index 754cd3c887c22b9b2afb0d70a2c57bfe6b251206..dbdb7f71464ccd06a04a47ace24a86e6854409fc 100644 +index 7c2d200165111e0a6fb804157074a28322304d95..9c9e0fb36d7a2e4f644314008c8dc6bdbeb42bcf 100644 --- a/net/minecraft/world/entity/animal/Pufferfish.java +++ b/net/minecraft/world/entity/animal/Pufferfish.java @@ -59,6 +59,13 @@ public class Pufferfish extends AbstractFish { @@ -399,7 +399,7 @@ index 754cd3c887c22b9b2afb0d70a2c57bfe6b251206..dbdb7f71464ccd06a04a47ace24a86e6 protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/animal/Rabbit.java b/net/minecraft/world/entity/animal/Rabbit.java -index 4f33044bf7c8fdf867983691b74a7f47b4689267..d74b492c5d1c3a323106b5de5bbf595a38d976a1 100644 +index daab94acd64b75ee19d582014eacfe4944aeda55..b644b85f2509f584770dee11677e5bfeef4a46a2 100644 --- a/net/minecraft/world/entity/animal/Rabbit.java +++ b/net/minecraft/world/entity/animal/Rabbit.java @@ -145,6 +145,14 @@ public class Rabbit extends Animal { @@ -436,7 +436,7 @@ index 265b2a6db778cabc1a97726c22c991051e3007fe..e426b3280b519a3cd727b20079432436 public int getMaxSchoolSize() { return 5; diff --git a/net/minecraft/world/entity/animal/SnowGolem.java b/net/minecraft/world/entity/animal/SnowGolem.java -index 6c7b218c01f466ccd1d427206c6662e23bea1c0e..2350e5a0ba3d4c3782332a4ef51e2b0ef0b53f39 100644 +index 6d0d1bb14b64d2a176db6a74f3a5ff0fa78a5434..3204145fc93bbeaad203f845edb984895a6ff494 100644 --- a/net/minecraft/world/entity/animal/SnowGolem.java +++ b/net/minecraft/world/entity/animal/SnowGolem.java @@ -80,6 +80,14 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM @@ -455,7 +455,7 @@ index 6c7b218c01f466ccd1d427206c6662e23bea1c0e..2350e5a0ba3d4c3782332a4ef51e2b0e protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables diff --git a/net/minecraft/world/entity/animal/Squid.java b/net/minecraft/world/entity/animal/Squid.java -index 21ff0b49a1df9b8a95cb2fdf7b43d9a676a497a6..2a0dc779ec2a53a4feb4d2d665cf9d820113ba04 100644 +index 438765bc5799dff8b9cfd6fa77808712e6ada9b2..559a483e39f9da5c6c1131b5af61b594b5d3e7e8 100644 --- a/net/minecraft/world/entity/animal/Squid.java +++ b/net/minecraft/world/entity/animal/Squid.java @@ -91,6 +91,14 @@ public class Squid extends AgeableWaterCreature { @@ -492,7 +492,7 @@ index cc26b929abd249536659df03a1cafbe83cde6f0f..c102db5ffdfc7dcb0ec7e59fb031fe6a return "entity.minecraft.tropical_fish.predefined." + variantId; } diff --git a/net/minecraft/world/entity/animal/Turtle.java b/net/minecraft/world/entity/animal/Turtle.java -index 4302c302d974bae294d7ffa6f30439f44fe5d0b1..e26b97e92ecfadb351e91aeae38beb4c4da87e26 100644 +index 542adc537723f9878a217aa3b71d67d1e4c1a8d2..b9dd8a359711a1993b515fda4b81e61d28a4da49 100644 --- a/net/minecraft/world/entity/animal/Turtle.java +++ b/net/minecraft/world/entity/animal/Turtle.java @@ -103,6 +103,14 @@ public class Turtle extends Animal { @@ -511,10 +511,10 @@ index 4302c302d974bae294d7ffa6f30439f44fe5d0b1..e26b97e92ecfadb351e91aeae38beb4c this.homePos = homePos; } diff --git a/net/minecraft/world/entity/animal/allay/Allay.java b/net/minecraft/world/entity/animal/allay/Allay.java -index e05f92d31cae8ac143274c662b2eca18ebc378d7..cf6ff7b7b4a007d7ff4b3c5a25d4f5a36422c683 100644 +index 25c03cec16711101b192d2e70b06bd0cd788980f..8f133fbad6303392ec56ae809f04087b5414db8b 100644 --- a/net/minecraft/world/entity/animal/allay/Allay.java +++ b/net/minecraft/world/entity/animal/allay/Allay.java -@@ -168,6 +168,14 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS +@@ -167,6 +167,14 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS } // Purpur end - Ridables @@ -530,7 +530,7 @@ index e05f92d31cae8ac143274c662b2eca18ebc378d7..cf6ff7b7b4a007d7ff4b3c5a25d4f5a3 protected Brain.Provider brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); diff --git a/net/minecraft/world/entity/animal/armadillo/Armadillo.java b/net/minecraft/world/entity/animal/armadillo/Armadillo.java -index c13745fc848c56bfce6161099c27388dc4164cb3..e4c8376c009984e40b90c01f78c65e76e260ee0b 100644 +index a394bc9e4de64a862acc2d33a01c1dd298bce464..c77284ba3dc3c2eb13ba97bbdcdea7c4a864c195 100644 --- a/net/minecraft/world/entity/animal/armadillo/Armadillo.java +++ b/net/minecraft/world/entity/animal/armadillo/Armadillo.java @@ -99,6 +99,14 @@ public class Armadillo extends Animal { @@ -549,10 +549,10 @@ index c13745fc848c56bfce6161099c27388dc4164cb3..e4c8376c009984e40b90c01f78c65e76 protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/net/minecraft/world/entity/animal/axolotl/Axolotl.java -index 8a21191672e524457f7f45782c57dd3638df1cec..17b20b36a3edafaea089288d22ad3e07795b9770 100644 +index 2adfa7fa8ab3dbfd2dd227a7a7c45c0084d3af2b..9bec0aa8cf669d68f9cdb87621024ac4dfe217c9 100644 --- a/net/minecraft/world/entity/animal/axolotl/Axolotl.java +++ b/net/minecraft/world/entity/animal/axolotl/Axolotl.java -@@ -139,6 +139,14 @@ public class Axolotl extends Animal implements Bucketable { +@@ -138,6 +138,14 @@ public class Axolotl extends Animal implements Bucketable { } // Purpur end - Ridables @@ -568,10 +568,10 @@ index 8a21191672e524457f7f45782c57dd3638df1cec..17b20b36a3edafaea089288d22ad3e07 public float getWalkTargetValue(BlockPos pos, LevelReader level) { return 0.0F; diff --git a/net/minecraft/world/entity/animal/camel/Camel.java b/net/minecraft/world/entity/animal/camel/Camel.java -index 78073cf5c93389224ccf7d7036d6b11af05280b6..f45d1ba8dc0bb4b7041c5efba5d6261a3a5f5ff4 100644 +index 96c98f032b1b3aec32aba38244ee8b45aca9078c..3a794ff3d68c86b4e5ef93ff8f5cedfa07d22f99 100644 --- a/net/minecraft/world/entity/animal/camel/Camel.java +++ b/net/minecraft/world/entity/animal/camel/Camel.java -@@ -336,6 +336,23 @@ public class Camel extends AbstractHorse { +@@ -335,6 +335,23 @@ public class Camel extends AbstractHorse { return this.dashCooldown; } @@ -596,7 +596,7 @@ index 78073cf5c93389224ccf7d7036d6b11af05280b6..f45d1ba8dc0bb4b7041c5efba5d6261a public SoundEvent getAmbientSound() { return SoundEvents.CAMEL_AMBIENT; diff --git a/net/minecraft/world/entity/animal/horse/AbstractHorse.java b/net/minecraft/world/entity/animal/horse/AbstractHorse.java -index ba56d68737cedabcddafafb18022f7c106631ca4..e78ef459d6eecb7f69882ed95cd9f9967f53989f 100644 +index b528bd7cc2001a3c0ec1cf615a4c306a9cd7e9f1..387f6bb134a766ce7b72cf2d4a56509f51687308 100644 --- a/net/minecraft/world/entity/animal/horse/AbstractHorse.java +++ b/net/minecraft/world/entity/animal/horse/AbstractHorse.java @@ -139,6 +139,46 @@ public abstract class AbstractHorse extends Animal implements HasCustomInventory @@ -646,7 +646,7 @@ index ba56d68737cedabcddafafb18022f7c106631ca4..e78ef459d6eecb7f69882ed95cd9f996 @Override protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HorseHasRider(this)); // Purpur - Ridables -@@ -1051,7 +1091,7 @@ public abstract class AbstractHorse extends Animal implements HasCustomInventory +@@ -1057,7 +1097,7 @@ public abstract class AbstractHorse extends Animal implements HasCustomInventory spawnGroupData = new AgeableMob.AgeableMobGroupData(0.2F); } @@ -712,7 +712,7 @@ index f1cb2e315e1d86f9fcd87db11d3ee7a81cfe12f6..53c0eac62018a0d88e30b8c13de94216 protected void randomizeAttributes(RandomSource random) { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(generateMaxHealth(random::nextInt)); diff --git a/net/minecraft/world/entity/animal/horse/Llama.java b/net/minecraft/world/entity/animal/horse/Llama.java -index f7c6b2188ed3801417c7497dbc36749def3e5057..3bc0f670a84216e5a62d1e3a9fb26bd85a0cd79a 100644 +index c3efc59c5e396c664022dd91bca143c60164fe0c..fb2b45b85d9f8ae5546573a31cf0d5a39dad149c 100644 --- a/net/minecraft/world/entity/animal/horse/Llama.java +++ b/net/minecraft/world/entity/animal/horse/Llama.java @@ -137,6 +137,23 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { @@ -796,7 +796,7 @@ index ba0e483df57cc56f356282519105a2e3e77601f8..a7bcc0ff10e429ebfe91173c392e9a0c return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 15.0).add(Attributes.MOVEMENT_SPEED, 0.2F); } diff --git a/net/minecraft/world/entity/animal/horse/TraderLlama.java b/net/minecraft/world/entity/animal/horse/TraderLlama.java -index 7214a8d3597cd46cdc8e0837365cdb4a0a5b4cba..39175d4537e84ef39bcbdafc5200ed7b14482d62 100644 +index 626b129b54aa622267dfc2ee5ec13bb9f10d6390..db07a476fdaa1cfde2b44be77cdc5a17a17bd898 100644 --- a/net/minecraft/world/entity/animal/horse/TraderLlama.java +++ b/net/minecraft/world/entity/animal/horse/TraderLlama.java @@ -53,6 +53,23 @@ public class TraderLlama extends Llama { @@ -852,7 +852,7 @@ index 45d09ebcc9ce4321285a4ec49e8ee369290f6b2c..3d597bd355b6c918ea1bf4b7d537ad4f return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 15.0).add(Attributes.MOVEMENT_SPEED, 0.2F); } diff --git a/net/minecraft/world/entity/animal/sheep/Sheep.java b/net/minecraft/world/entity/animal/sheep/Sheep.java -index f9e86a4f632e96d5cf531c90f2813afe2fb45fbb..8e4a14ca6a0cef1c52c64de3502077d7d25b0308 100644 +index 1975976c92e3acb361dcc1ec49c6ce5818173806..a36ce4568ae173edaeab04b580c88c5389487bd5 100644 --- a/net/minecraft/world/entity/animal/sheep/Sheep.java +++ b/net/minecraft/world/entity/animal/sheep/Sheep.java @@ -79,6 +79,14 @@ public class Sheep extends Animal implements Shearable { @@ -871,10 +871,10 @@ index f9e86a4f632e96d5cf531c90f2813afe2fb45fbb..8e4a14ca6a0cef1c52c64de3502077d7 protected void registerGoals() { this.eatBlockGoal = new EatBlockGoal(this); diff --git a/net/minecraft/world/entity/animal/sniffer/Sniffer.java b/net/minecraft/world/entity/animal/sniffer/Sniffer.java -index 430c2ba035468a81402d6ed0a442006d94d33f09..683c9f82bfb2306f81b094464462d7d372ef5b22 100644 +index 6dcf05e445ad99faf0edfb756be7f245a10b415f..04c80778f9ce75e337c6c97e8fe6c47f275a558c 100644 --- a/net/minecraft/world/entity/animal/sniffer/Sniffer.java +++ b/net/minecraft/world/entity/animal/sniffer/Sniffer.java -@@ -106,6 +106,14 @@ public class Sniffer extends Animal { +@@ -105,6 +105,14 @@ public class Sniffer extends Animal { } // Purpur end - Ridables @@ -890,7 +890,7 @@ index 430c2ba035468a81402d6ed0a442006d94d33f09..683c9f82bfb2306f81b094464462d7d3 protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/animal/wolf/Wolf.java b/net/minecraft/world/entity/animal/wolf/Wolf.java -index d4fa7d17d3fb63e0bdc09db9e454ca4376817265..7326debf3725844bfe8730dab480da7b1d6e99aa 100644 +index ba0f003546d70651eddb1907f33ceb549584c0ca..70753293961f73f917973c35e1d3fb81b836f1f8 100644 --- a/net/minecraft/world/entity/animal/wolf/Wolf.java +++ b/net/minecraft/world/entity/animal/wolf/Wolf.java @@ -208,6 +208,14 @@ public class Wolf extends TamableAnimal implements NeutralMob { @@ -909,7 +909,7 @@ index d4fa7d17d3fb63e0bdc09db9e454ca4376817265..7326debf3725844bfe8730dab480da7b protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -index f669dd446fc07d15c66a2a96006891bc6171baa4..40c92ff02c22ef18b36f5d8677096dc82a60f1bb 100644 +index c3eefe0a4a3b13e20853193450e8634c61257a0a..00ea1b2b62e422f8420dcd8a7fdf186474695ac7 100644 --- a/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java @@ -165,6 +165,13 @@ public class EnderDragon extends Mob implements Enemy { @@ -936,7 +936,7 @@ index f669dd446fc07d15c66a2a96006891bc6171baa4..40c92ff02c22ef18b36f5d8677096dc8 // CraftBukkit start - SPIGOT-2420: Special case, the ender dragon drops 12000 xp for the first kill and 500 xp for every other kill and this over time. diff --git a/net/minecraft/world/entity/boss/wither/WitherBoss.java b/net/minecraft/world/entity/boss/wither/WitherBoss.java -index 2c6158de44a8ba95d3c5124ed2827a0aa24b672d..7aaa905034979e557db97456eae3563614aab8d1 100644 +index 110ef9d81fdfa099316abf7b9c7ef4e1fdc976f7..3023c8e5b16b54a14abeb832f0a82456fa999707 100644 --- a/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/net/minecraft/world/entity/boss/wither/WitherBoss.java @@ -213,6 +213,14 @@ public class WitherBoss extends Monster implements RangedAttackMob { @@ -964,7 +964,7 @@ index 2c6158de44a8ba95d3c5124ed2827a0aa24b672d..7aaa905034979e557db97456eae35636 } else { super.customServerAiStep(level); diff --git a/net/minecraft/world/entity/monster/Blaze.java b/net/minecraft/world/entity/monster/Blaze.java -index 971b974c6717a544f7f96c441cd76e9dc8d0cc2c..1636e2809701013a18700ac17807fe7ecf191aa5 100644 +index e0a38808c3757aaaabb6d3d8a0f9c1c0133c792f..14e2fe8d0d21464c946af9949ba3a77e31f22d23 100644 --- a/net/minecraft/world/entity/monster/Blaze.java +++ b/net/minecraft/world/entity/monster/Blaze.java @@ -75,6 +75,14 @@ public class Blaze extends Monster { @@ -983,7 +983,7 @@ index 971b974c6717a544f7f96c441cd76e9dc8d0cc2c..1636e2809701013a18700ac17807fe7e protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables diff --git a/net/minecraft/world/entity/monster/Bogged.java b/net/minecraft/world/entity/monster/Bogged.java -index b1f06656bf60eda01e06cd4cfd908edc7b51c628..cace310ad4ad320a8a5745c6af3ec4b57e75b6a5 100644 +index 9ab5b3f88eeec22110b8aba71714e05209e4b855..579a5fd6e4545cc51eafbeac2369e114d404c2f1 100644 --- a/net/minecraft/world/entity/monster/Bogged.java +++ b/net/minecraft/world/entity/monster/Bogged.java @@ -60,6 +60,14 @@ public class Bogged extends AbstractSkeleton implements Shearable { @@ -1021,10 +1021,10 @@ index 4873a3d8dd9c160ecdbda594ee546c35ec03a1e7..64eecd8d1acd318743800c1daa77cd97 public boolean doHurtTarget(ServerLevel level, Entity source) { if (super.doHurtTarget(level, source)) { diff --git a/net/minecraft/world/entity/monster/Creeper.java b/net/minecraft/world/entity/monster/Creeper.java -index 5684ab59acb554f097d713d7c1a9860452bd3564..60e420d79b73dd844bdae6c3846c6f4838fe2ca2 100644 +index d250d8a2d0cbe41b2336a0a697c1c179b24dc823..b7d33384ca236a902a7aa2004b16d545e5a58c9e 100644 --- a/net/minecraft/world/entity/monster/Creeper.java +++ b/net/minecraft/world/entity/monster/Creeper.java -@@ -136,6 +136,14 @@ public class Creeper extends Monster { +@@ -137,6 +137,14 @@ public class Creeper extends Monster { } // Purpur end - Ridables @@ -1040,7 +1040,7 @@ index 5684ab59acb554f097d713d7c1a9860452bd3564..60e420d79b73dd844bdae6c3846c6f48 protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/net/minecraft/world/entity/monster/Drowned.java b/net/minecraft/world/entity/monster/Drowned.java -index fb7a06d64a2f3ac2355bcf9eb515d4504786c585..ec0f27d04125765e91e43c4c18415b29db62b181 100644 +index eb70d05d2540295f79d24fbd0c07a9a349783f88..453f9d6e9581165c59b959ea6bccc5387dff91bd 100644 --- a/net/minecraft/world/entity/monster/Drowned.java +++ b/net/minecraft/world/entity/monster/Drowned.java @@ -93,6 +93,19 @@ public class Drowned extends Zombie implements RangedAttackMob { @@ -1083,10 +1083,10 @@ index 07355eb21c7b06d282be32f6956d4de9e399b9c9..7ebc7224d3db38cc5137112d5a74999f return Guardian.createAttributes().add(Attributes.MOVEMENT_SPEED, 0.3F).add(Attributes.ATTACK_DAMAGE, 8.0).add(Attributes.MAX_HEALTH, 80.0); } diff --git a/net/minecraft/world/entity/monster/EnderMan.java b/net/minecraft/world/entity/monster/EnderMan.java -index 6836b44d88d8c7b74c05f56b66887c0319805ee7..c83d7c43969a94432f6bec076f78fb500f672926 100644 +index 612b0caa28d214886edab3b2de34838659bd39f2..73e3b50ffa544f29267413c88bcf21af71d1ff4f 100644 --- a/net/minecraft/world/entity/monster/EnderMan.java +++ b/net/minecraft/world/entity/monster/EnderMan.java -@@ -106,6 +106,14 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -107,6 +107,14 @@ public class EnderMan extends Monster implements NeutralMob { } // Purpur end - Ridables @@ -1102,7 +1102,7 @@ index 6836b44d88d8c7b74c05f56b66887c0319805ee7..c83d7c43969a94432f6bec076f78fb50 protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/net/minecraft/world/entity/monster/Endermite.java b/net/minecraft/world/entity/monster/Endermite.java -index 0d03bebf2cda34072db561f6e27b06a7d26095d1..2c3e44b82b396dd8e870f548f1d18d8f4b91ad1d 100644 +index c7e3a80a678df50cbb03349826f7e03c23a2c622..7e6cebeff52bb9252d55a191179b9bb82f4405bb 100644 --- a/net/minecraft/world/entity/monster/Endermite.java +++ b/net/minecraft/world/entity/monster/Endermite.java @@ -64,6 +64,14 @@ public class Endermite extends Monster { @@ -1140,7 +1140,7 @@ index 10142de6bdf9474958ca939c956a428218ee48db..e8aac93cffa3a9d4105c03c1aeb4d571 protected void registerGoals() { super.registerGoals(); diff --git a/net/minecraft/world/entity/monster/Ghast.java b/net/minecraft/world/entity/monster/Ghast.java -index e09004313c7c8333eba38bbfab09b20bdb646034..06333fe18ea71464d35584592f487c6ac572f0cd 100644 +index 49925c8db7166359fdcc0008d5be2130d01686b6..bcd602714104043e67ed67446ea47dda33761e31 100644 --- a/net/minecraft/world/entity/monster/Ghast.java +++ b/net/minecraft/world/entity/monster/Ghast.java @@ -74,6 +74,14 @@ public class Ghast extends Mob implements Enemy { @@ -1180,7 +1180,7 @@ index c098fc14eb4f2ebd7dc1f6be9507279296416eea..e673f488bfab9648075857bc40e1339f return Monster.createMonsterAttributes() .add(Attributes.MAX_HEALTH, 100.0) diff --git a/net/minecraft/world/entity/monster/Guardian.java b/net/minecraft/world/entity/monster/Guardian.java -index 26fb38b9741304f4fe461c929ead0f392255a3de..2b03af6e0f378d855c42fa688d0cd2bc8480102b 100644 +index 7202edbad08975fc62f9aa876d9e53a238182b20..1106f170bbfd8ea5446246c9778039742356a222 100644 --- a/net/minecraft/world/entity/monster/Guardian.java +++ b/net/minecraft/world/entity/monster/Guardian.java @@ -90,6 +90,14 @@ public class Guardian extends Monster { @@ -1199,10 +1199,10 @@ index 26fb38b9741304f4fe461c929ead0f392255a3de..2b03af6e0f378d855c42fa688d0cd2bc protected void registerGoals() { MoveTowardsRestrictionGoal moveTowardsRestrictionGoal = new MoveTowardsRestrictionGoal(this, 1.0); diff --git a/net/minecraft/world/entity/monster/Husk.java b/net/minecraft/world/entity/monster/Husk.java -index 0335e85f196363c06597812149e9a93cba57fa9e..5b0794bd87423715cada1f860b4141fdacd9ede6 100644 +index b8b7700df42feb2309d9e845e37aa0e9ca026f9b..4a617bb6bc3675d8cb42be0b5ae19befd4b3176f 100644 --- a/net/minecraft/world/entity/monster/Husk.java +++ b/net/minecraft/world/entity/monster/Husk.java -@@ -38,6 +38,18 @@ public class Husk extends Zombie { +@@ -37,6 +37,18 @@ public class Husk extends Zombie { } // Purpur end - Ridables @@ -1222,7 +1222,7 @@ index 0335e85f196363c06597812149e9a93cba57fa9e..5b0794bd87423715cada1f860b4141fd EntityType entityType, ServerLevelAccessor level, EntitySpawnReason spawnReason, BlockPos pos, RandomSource random ) { diff --git a/net/minecraft/world/entity/monster/Illusioner.java b/net/minecraft/world/entity/monster/Illusioner.java -index bb2649001f0b31676a51378745818d5c5b15c443..6311261d71aa062ba497a73cd22cb5dbdf2a4cdb 100644 +index c41d43d20db8a573efcbbe8593f5b1f56a18aa0e..753532aad0973230e1c7f4102ac55b243355c61e 100644 --- a/net/minecraft/world/entity/monster/Illusioner.java +++ b/net/minecraft/world/entity/monster/Illusioner.java @@ -74,6 +74,16 @@ public class Illusioner extends SpellcasterIllager implements RangedAttackMob { @@ -1276,7 +1276,7 @@ index 4a1299d6cee2807522de0c2d0d4745c5810e4121..bb1364c4a220cc93f7ac01cbaa617561 return Monster.createMonsterAttributes().add(Attributes.MOVEMENT_SPEED, 0.2F); } diff --git a/net/minecraft/world/entity/monster/Phantom.java b/net/minecraft/world/entity/monster/Phantom.java -index 855ec37a7e4110e37823ecf62f67f5cb3714f4bf..e35d1e91c1300d8f7d14a5cfa54c404c9f21184d 100644 +index f5cc26632345bdae6fbda72e1084bacf79a75752..958f0c86986a155f56d3995a87882f83df66043f 100644 --- a/net/minecraft/world/entity/monster/Phantom.java +++ b/net/minecraft/world/entity/monster/Phantom.java @@ -141,7 +141,10 @@ public class Phantom extends Mob implements Enemy { @@ -1291,8 +1291,8 @@ index 855ec37a7e4110e37823ecf62f67f5cb3714f4bf..e35d1e91c1300d8f7d14a5cfa54c404c } public int getPhantomSize() { -@@ -166,6 +169,23 @@ public class Phantom extends Mob implements Enemy { - return true; +@@ -161,6 +164,23 @@ public class Phantom extends Mob implements Enemy { + return this.getId() * 3; } + // Purpur start - Configurable entity base attributes @@ -1354,7 +1354,7 @@ index b67ac487ce4a7fd8b2f62452ab0b87f4a55006f2..9e7b07f353fb8f0650b8805014c37136 protected void registerGoals() { super.registerGoals(); diff --git a/net/minecraft/world/entity/monster/Shulker.java b/net/minecraft/world/entity/monster/Shulker.java -index f37ba04ae0277152d93e3e585973d46c25e52395..1782b1c8e03447d3d4e542f7066cb1af8acd8246 100644 +index d3b14cfb5310423e52899edd5873e9ba7f6a30fc..dac39e2c1ed4422b466effb0acc9267454bdc2fb 100644 --- a/net/minecraft/world/entity/monster/Shulker.java +++ b/net/minecraft/world/entity/monster/Shulker.java @@ -126,6 +126,14 @@ public class Shulker extends AbstractGolem implements Enemy { @@ -1372,7 +1372,7 @@ index f37ba04ae0277152d93e3e585973d46c25e52395..1782b1c8e03447d3d4e542f7066cb1af @Override protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables -@@ -609,7 +617,7 @@ public class Shulker extends AbstractGolem implements Enemy { +@@ -605,7 +613,7 @@ public class Shulker extends AbstractGolem implements Enemy { @Override protected float sanitizeScale(float scale) { @@ -1403,10 +1403,10 @@ index 19dcc657fd2a995638d5e23c2b043d012d978e79..c200d57841304ba0d7a76fdd9a440fe9 protected void registerGoals() { this.friendsGoal = new Silverfish.SilverfishWakeUpFriendsGoal(this); diff --git a/net/minecraft/world/entity/monster/Skeleton.java b/net/minecraft/world/entity/monster/Skeleton.java -index ed4f0d48120384d847291724ac995cdee00d10aa..c19b76a1a0572cb52ee83769384cdb44e4cdf700 100644 +index 028ec7c90e710182717ccd04ea7fb25042331dfd..430d9f67d76c5d4b8f0221ccbe6a8bc75dbbbbcf 100644 --- a/net/minecraft/world/entity/monster/Skeleton.java +++ b/net/minecraft/world/entity/monster/Skeleton.java -@@ -44,6 +44,13 @@ public class Skeleton extends AbstractSkeleton { +@@ -42,6 +42,13 @@ public class Skeleton extends AbstractSkeleton { } // Purpur end - Ridables @@ -1421,7 +1421,7 @@ index ed4f0d48120384d847291724ac995cdee00d10aa..c19b76a1a0572cb52ee83769384cdb44 protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/monster/Slime.java b/net/minecraft/world/entity/monster/Slime.java -index 7ac6449dc3ede6bda51579282b1155371f0800d3..38cdc67bd683b653eb76b1c70e5b493f08245fe6 100644 +index ce6e19b9cf943a8a9d1e85c8764d57b7f282cd69..6f6b6c47d003271a54fee53723cd09d435431be1 100644 --- a/net/minecraft/world/entity/monster/Slime.java +++ b/net/minecraft/world/entity/monster/Slime.java @@ -101,6 +101,39 @@ public class Slime extends Mob implements Enemy { @@ -1477,7 +1477,7 @@ index 7ac6449dc3ede6bda51579282b1155371f0800d3..38cdc67bd683b653eb76b1c70e5b493f this.setHealth(this.getMaxHealth()); } diff --git a/net/minecraft/world/entity/monster/Spider.java b/net/minecraft/world/entity/monster/Spider.java -index 5721a690859a1232234c9f6a4385f7185d9800ec..c2bcf769a85a28616472b050cd09d3d6cc60e81f 100644 +index 771592182fe56efc6fc0dae7fa852483b3b99c57..853752e66b2b9299b20d4a66dc73cf0db839d9e3 100644 --- a/net/minecraft/world/entity/monster/Spider.java +++ b/net/minecraft/world/entity/monster/Spider.java @@ -67,6 +67,14 @@ public class Spider extends Monster { @@ -1514,7 +1514,7 @@ index 4a7dbd1e4d927240433882a95822e9edfc83b827..b5465b552c5aea7603a54cfdeafe451b EntityType entityType, ServerLevelAccessor level, EntitySpawnReason spawnReason, BlockPos pos, RandomSource random ) { diff --git a/net/minecraft/world/entity/monster/Strider.java b/net/minecraft/world/entity/monster/Strider.java -index ddd3a0d629f720b7acacf01bf2a7db53ee28724e..a68e9f3f96f37b6dd685fd02072f38b9e320fffc 100644 +index f1e559f552b932d1d66b67ff35ca519ee273fc50..255d4d0cd8f48bf09232cd0fecb87f430e68084a 100644 --- a/net/minecraft/world/entity/monster/Strider.java +++ b/net/minecraft/world/entity/monster/Strider.java @@ -109,6 +109,14 @@ public class Strider extends Animal implements ItemSteerable { @@ -1533,7 +1533,7 @@ index ddd3a0d629f720b7acacf01bf2a7db53ee28724e..a68e9f3f96f37b6dd685fd02072f38b9 EntityType entityType, LevelAccessor level, EntitySpawnReason spawnReason, BlockPos pos, RandomSource random ) { diff --git a/net/minecraft/world/entity/monster/Vex.java b/net/minecraft/world/entity/monster/Vex.java -index 543913b7e9e92ac43c2e557213a487140326a69e..48e193182861d5e5b5364b226493c665957bcc2f 100644 +index f8fb8de570468151e1b82e8f15e66e2ea6fd8e22..a8d3d1aaaa62781824f3b3422030c87de884793d 100644 --- a/net/minecraft/world/entity/monster/Vex.java +++ b/net/minecraft/world/entity/monster/Vex.java @@ -104,6 +104,14 @@ public class Vex extends Monster implements TraceableEntity { @@ -1571,7 +1571,7 @@ index 8e5bf153a457026808e2ea670e874e66ca0d5e98..1f66c8d5194ee5b3794ea86a951ae553 protected void registerGoals() { super.registerGoals(); diff --git a/net/minecraft/world/entity/monster/Witch.java b/net/minecraft/world/entity/monster/Witch.java -index 4c5372be4bfc68184a88825214d36477f83edf73..2ff6ae7e1c809fa6607cf4d8685ba9b8ac46064c 100644 +index e420d7dc0fc09d712ee63238f2107a2fa0f799b7..620d529c0cf71e0c19b9ed6a02d173218a38abd4 100644 --- a/net/minecraft/world/entity/monster/Witch.java +++ b/net/minecraft/world/entity/monster/Witch.java @@ -73,6 +73,14 @@ public class Witch extends Raider implements RangedAttackMob { @@ -1590,7 +1590,7 @@ index 4c5372be4bfc68184a88825214d36477f83edf73..2ff6ae7e1c809fa6607cf4d8685ba9b8 protected void registerGoals() { super.registerGoals(); diff --git a/net/minecraft/world/entity/monster/WitherSkeleton.java b/net/minecraft/world/entity/monster/WitherSkeleton.java -index d8c10f5f93e3ca92a49e1df3216256450c62f219..213530a2378411db2bc597ba7e0bb68cfdb3ebc9 100644 +index 48f9d87d26bad99b81af001a81d2c3d274cad007..96dc17a43c258fec424954606a7a43d490e870d6 100644 --- a/net/minecraft/world/entity/monster/WitherSkeleton.java +++ b/net/minecraft/world/entity/monster/WitherSkeleton.java @@ -51,6 +51,14 @@ public class WitherSkeleton extends AbstractSkeleton { @@ -1609,10 +1609,10 @@ index d8c10f5f93e3ca92a49e1df3216256450c62f219..213530a2378411db2bc597ba7e0bb68c protected void registerGoals() { this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractPiglin.class, true)); diff --git a/net/minecraft/world/entity/monster/Zoglin.java b/net/minecraft/world/entity/monster/Zoglin.java -index 4379832f464824260a25055ed7338c2879a9a194..5333aea53ff61eb6143138c4e44ad85977e524d5 100644 +index 44ad3bbcfdf8615d6e5a896fb923685c481ae5b5..f1d42c8ee4a23ba3485477632b51dd9bcf9db926 100644 --- a/net/minecraft/world/entity/monster/Zoglin.java +++ b/net/minecraft/world/entity/monster/Zoglin.java -@@ -104,6 +104,14 @@ public class Zoglin extends Monster implements HoglinBase { +@@ -103,6 +103,14 @@ public class Zoglin extends Monster implements HoglinBase { } // Purpur end - Ridables @@ -1628,7 +1628,7 @@ index 4379832f464824260a25055ed7338c2879a9a194..5333aea53ff61eb6143138c4e44ad859 protected Brain.Provider brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); diff --git a/net/minecraft/world/entity/monster/Zombie.java b/net/minecraft/world/entity/monster/Zombie.java -index 5d68fa532c588ed942d6b9703cc1047feca4e641..6f26221e6982db3c97a77d4496686c666a80e3a4 100644 +index e63328db6af1e2a52c9ebfeefbceda1afd5edfcd..4bad786bee142bd1bc8fc76606829496ce44a455 100644 --- a/net/minecraft/world/entity/monster/Zombie.java +++ b/net/minecraft/world/entity/monster/Zombie.java @@ -120,6 +120,14 @@ public class Zombie extends Monster { @@ -1654,12 +1654,12 @@ index 5d68fa532c588ed942d6b9703cc1047feca4e641..6f26221e6982db3c97a77d4496686c66 + this.getAttribute(Attributes.SPAWN_REINFORCEMENTS_CHANCE).setBaseValue(this.random.nextDouble() * this.level().purpurConfig.zombieSpawnReinforcements); // Purpur - Configurable entity base attributes } - @Override + class ZombieAttackTurtleEggGoal extends RemoveBlockGoal { diff --git a/net/minecraft/world/entity/monster/ZombieVillager.java b/net/minecraft/world/entity/monster/ZombieVillager.java -index 317693bccccbb41f38dc726a71cf059d5a861e27..537bff97a27e043ed2f71fc82580689ecb784ac8 100644 +index 4a64ae41f5fa1df735ca62444c2b7bab2a1f4a8d..5a1ba4b80c104806ea8cff4242416951751ee919 100644 --- a/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/net/minecraft/world/entity/monster/ZombieVillager.java -@@ -93,6 +93,18 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { +@@ -90,6 +90,18 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { } // Purpur end - Ridables @@ -1679,7 +1679,7 @@ index 317693bccccbb41f38dc726a71cf059d5a861e27..537bff97a27e043ed2f71fc82580689e protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/monster/ZombifiedPiglin.java b/net/minecraft/world/entity/monster/ZombifiedPiglin.java -index deb47d4828ac94f8d68a799b98cc696674d94a6f..f0a809464d9e7f1839e1932955a7313e744384b1 100644 +index 5919405428eb03c499167bc7b963e3f96f721c8c..a6244a3d5d8e48b81147d6aed7ac1126e9ae5d64 100644 --- a/net/minecraft/world/entity/monster/ZombifiedPiglin.java +++ b/net/minecraft/world/entity/monster/ZombifiedPiglin.java @@ -81,6 +81,14 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { @@ -1697,7 +1697,7 @@ index deb47d4828ac94f8d68a799b98cc696674d94a6f..f0a809464d9e7f1839e1932955a7313e @Override public void setPersistentAngerTarget(@Nullable UUID target) { this.persistentAngerTarget = target; -@@ -266,7 +274,7 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { +@@ -261,7 +269,7 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { @Override protected void randomizeReinforcementsChance() { @@ -1707,10 +1707,10 @@ index deb47d4828ac94f8d68a799b98cc696674d94a6f..f0a809464d9e7f1839e1932955a7313e @Nullable diff --git a/net/minecraft/world/entity/monster/creaking/Creaking.java b/net/minecraft/world/entity/monster/creaking/Creaking.java -index b87ad5259b416693e57e3863327f46ee08a4928f..1b01d2b37dd221d5832cb68c072af9863aeb6868 100644 +index 982790edbd74bd80988df1400b0e67669bfd164c..c05d572fa2ab5a70c8825d2d2b6ffb36317e92fe 100644 --- a/net/minecraft/world/entity/monster/creaking/Creaking.java +++ b/net/minecraft/world/entity/monster/creaking/Creaking.java -@@ -126,6 +126,14 @@ public class Creaking extends Monster { +@@ -125,6 +125,14 @@ public class Creaking extends Monster { } // Purpur end - Ridables @@ -1726,10 +1726,10 @@ index b87ad5259b416693e57e3863327f46ee08a4928f..1b01d2b37dd221d5832cb68c072af986 protected BodyRotationControl createBodyControl() { return new Creaking.CreakingBodyRotationControl(this); diff --git a/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/net/minecraft/world/entity/monster/hoglin/Hoglin.java -index fce1a2dda2587c55e39e4ef51c30b5556efe0b33..c2de8c58f43a43df77f28e077fbbf00e0f930ba7 100644 +index 2d9746a61d4733e5cf6150fec36217376d95461c..c74c6409ce61f9d4d728b6ce6693bb7ba665e474 100644 --- a/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/net/minecraft/world/entity/monster/hoglin/Hoglin.java -@@ -113,6 +113,14 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { +@@ -112,6 +112,14 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { } // Purpur end - Ridables @@ -1745,10 +1745,10 @@ index fce1a2dda2587c55e39e4ef51c30b5556efe0b33..c2de8c58f43a43df77f28e077fbbf00e public void setTimeInOverworld(int timeInOverworld) { this.timeInOverworld = timeInOverworld; diff --git a/net/minecraft/world/entity/monster/piglin/Piglin.java b/net/minecraft/world/entity/monster/piglin/Piglin.java -index 29c687a5f459e100a78f77a2edbf9e607f17a5ab..a86cd2da7d0467e5b7d79ec2daceb65c86750445 100644 +index 6d66f6b8a5dd616cb62af887b83576f268b24656..b8f994025c0511169174154a077d9e34eac2443a 100644 --- a/net/minecraft/world/entity/monster/piglin/Piglin.java +++ b/net/minecraft/world/entity/monster/piglin/Piglin.java -@@ -154,6 +154,14 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento +@@ -153,6 +153,14 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento } // Purpur end - Ridables @@ -1783,7 +1783,7 @@ index 4c8e49ba064241ec7ac505fa6f5df6d7f9c009b6..f52aba35ee7e202074cda8fb4dfd6a7d return Monster.createMonsterAttributes() .add(Attributes.MAX_HEALTH, 50.0) diff --git a/net/minecraft/world/entity/npc/Villager.java b/net/minecraft/world/entity/npc/Villager.java -index b1cad9a37d8d1f053add366699c5277c4fd84f6b..eefc5c1f494f1053f93559e8c666065f561dec10 100644 +index 94c0718ebc673827f0ba035be4617c64c46cd07d..b5dc02822ce6a82eb69fd7341c317fb1f7ee0a7f 100644 --- a/net/minecraft/world/entity/npc/Villager.java +++ b/net/minecraft/world/entity/npc/Villager.java @@ -271,6 +271,14 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -1802,7 +1802,7 @@ index b1cad9a37d8d1f053add366699c5277c4fd84f6b..eefc5c1f494f1053f93559e8c666065f public Brain getBrain() { return (Brain)super.getBrain(); diff --git a/net/minecraft/world/entity/npc/WanderingTrader.java b/net/minecraft/world/entity/npc/WanderingTrader.java -index e5d6d8bd30876832e6219969849e826070343f45..28c86505efa994f9c7657538f5ffdf12772fb0a9 100644 +index 10f2b2f96418b059c7f6b43e1f060b0ccb03362f..0eeda11b37cd17122183d5e22d02d9cd61f2b4e5 100644 --- a/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/net/minecraft/world/entity/npc/WanderingTrader.java @@ -84,6 +84,13 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill diff --git a/purpur-server/minecraft-patches/unapplied-features/0003-Barrels-and-enderchests-6-rows.patch b/purpur-server/minecraft-patches/features/0003-Barrels-and-enderchests-6-rows.patch similarity index 92% rename from purpur-server/minecraft-patches/unapplied-features/0003-Barrels-and-enderchests-6-rows.patch rename to purpur-server/minecraft-patches/features/0003-Barrels-and-enderchests-6-rows.patch index 939608a61..9af3fd2cc 100644 --- a/purpur-server/minecraft-patches/unapplied-features/0003-Barrels-and-enderchests-6-rows.patch +++ b/purpur-server/minecraft-patches/features/0003-Barrels-and-enderchests-6-rows.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Barrels and enderchests 6 rows diff --git a/net/minecraft/server/players/PlayerList.java b/net/minecraft/server/players/PlayerList.java -index 189bf2f787e6f99ed16d75c2e05ff4351d2c8747..db56578bff06574337463c2421537f43d1a19189 100644 +index 23181b6192d3d69f263bf57bfd0d2fac000ce15b..f2fe9a8369b923edf6abe8af01d8a34e995e0b9b 100644 --- a/net/minecraft/server/players/PlayerList.java +++ b/net/minecraft/server/players/PlayerList.java -@@ -1002,6 +1002,27 @@ public abstract class PlayerList { +@@ -912,6 +912,27 @@ public abstract class PlayerList { player.getBukkitEntity().recalculatePermissions(); // CraftBukkit this.server.getCommands().sendCommands(player); } // Paper - Add sendOpLevel API @@ -37,10 +37,10 @@ index 189bf2f787e6f99ed16d75c2e05ff4351d2c8747..db56578bff06574337463c2421537f43 // Paper start - whitelist verify event / login event diff --git a/net/minecraft/world/entity/player/Player.java b/net/minecraft/world/entity/player/Player.java -index b12bd1f756b91a1168eb8ac4959152dcca01c5b5..d72e338232b95826b63d784ac0731f5a20bf8dcb 100644 +index 1e14640b74950ecd2abd0ae13a7c83fa6a318703..6a71ec21849b30dd3f0f1ad86ccb01ee472a55b7 100644 --- a/net/minecraft/world/entity/player/Player.java +++ b/net/minecraft/world/entity/player/Player.java -@@ -221,6 +221,7 @@ public abstract class Player extends LivingEntity { +@@ -182,6 +182,7 @@ public abstract class Player extends Avatar implements ContainerUser { public net.kyori.adventure.util.TriState flyingFallDamage = net.kyori.adventure.util.TriState.NOT_SET; // Paper - flying fall damage public int burpDelay = 0; // Purpur - Burp delay public boolean canPortalInstant = false; // Purpur - Add portal permission bypass @@ -84,10 +84,10 @@ index 0fffa384f928ab84451331380968fb4650eafe26..0399092c9f7a43ac100c11505176ade6 return new ChestMenu(MenuType.GENERIC_9x6, containerId, playerInventory, container, 6); } diff --git a/net/minecraft/world/inventory/PlayerEnderChestContainer.java b/net/minecraft/world/inventory/PlayerEnderChestContainer.java -index 51148b7b95c93a9e25da70ac9275c63f1458d84c..96359fef8c83b54ea65d4358aa5d594723b38ead 100644 +index 8cf089874a75735be690ab72a01264bac5ff793d..611f78f93b70674b53c025d9151dacb54af3e803 100644 --- a/net/minecraft/world/inventory/PlayerEnderChestContainer.java +++ b/net/minecraft/world/inventory/PlayerEnderChestContainer.java -@@ -26,11 +26,18 @@ public class PlayerEnderChestContainer extends SimpleContainer { +@@ -27,11 +27,18 @@ public class PlayerEnderChestContainer extends SimpleContainer { } public PlayerEnderChestContainer(Player owner) { @@ -108,7 +108,7 @@ index 51148b7b95c93a9e25da70ac9275c63f1458d84c..96359fef8c83b54ea65d4358aa5d5947 this.activeChest = enderChestBlockEntity; } diff --git a/net/minecraft/world/level/block/EnderChestBlock.java b/net/minecraft/world/level/block/EnderChestBlock.java -index 5077a9ff7b78801bdc53536a37aee07b8d86ee4d..72794e204f7fcc31ece94913b7fd9f36ae022b10 100644 +index 1518e035c4b6fdfc68b77fc42b043dd27f680767..a7b20c0781b0372a36e67c7b5a3eae90476f83e0 100644 --- a/net/minecraft/world/level/block/EnderChestBlock.java +++ b/net/minecraft/world/level/block/EnderChestBlock.java @@ -85,8 +85,8 @@ public class EnderChestBlock extends AbstractChestBlock i @@ -159,13 +159,13 @@ index 5077a9ff7b78801bdc53536a37aee07b8d86ee4d..72794e204f7fcc31ece94913b7fd9f36 public BlockEntity newBlockEntity(BlockPos pos, BlockState state) { return new EnderChestBlockEntity(pos, state); diff --git a/net/minecraft/world/level/block/entity/BarrelBlockEntity.java b/net/minecraft/world/level/block/entity/BarrelBlockEntity.java -index d679ab599dfd0bdbdc3ab5530d7fcd1c38baf7fa..0e4f6455ec48c5a7fcd4613c1c5b79d599e4960a 100644 +index f8cad05f5f1692c9a8701ff01f33d83477600c34..a4a4150beab8f2fa409a2d1d495a56679aecbae3 100644 --- a/net/minecraft/world/level/block/entity/BarrelBlockEntity.java +++ b/net/minecraft/world/level/block/entity/BarrelBlockEntity.java -@@ -56,7 +56,17 @@ public class BarrelBlockEntity extends RandomizableContainerBlockEntity { +@@ -58,7 +58,16 @@ public class BarrelBlockEntity extends RandomizableContainerBlockEntity { } // CraftBukkit end - + private static final Component DEFAULT_NAME = Component.translatable("container.barrel"); - private NonNullList items = NonNullList.withSize(27, ItemStack.EMPTY); + // Purpur start - Barrels and enderchests 6 rows + private NonNullList items = NonNullList.withSize(switch (org.purpurmc.purpur.PurpurConfig.barrelRows) { @@ -177,11 +177,10 @@ index d679ab599dfd0bdbdc3ab5530d7fcd1c38baf7fa..0e4f6455ec48c5a7fcd4613c1c5b79d5 + default -> 27; + }, ItemStack.EMPTY); + // Purpur end - Barrels and enderchests 6 rows -+ public final ContainerOpenersCounter openersCounter = new ContainerOpenersCounter() { @Override protected void onOpen(Level level, BlockPos pos, BlockState state) { -@@ -108,7 +118,16 @@ public class BarrelBlockEntity extends RandomizableContainerBlockEntity { +@@ -110,7 +119,16 @@ public class BarrelBlockEntity extends RandomizableContainerBlockEntity { @Override public int getContainerSize() { @@ -199,7 +198,7 @@ index d679ab599dfd0bdbdc3ab5530d7fcd1c38baf7fa..0e4f6455ec48c5a7fcd4613c1c5b79d5 } @Override -@@ -128,7 +147,16 @@ public class BarrelBlockEntity extends RandomizableContainerBlockEntity { +@@ -130,7 +148,16 @@ public class BarrelBlockEntity extends RandomizableContainerBlockEntity { @Override protected AbstractContainerMenu createMenu(int id, Inventory player) { diff --git a/purpur-server/minecraft-patches/unapplied-features/0004-Giants-AI-settings.patch b/purpur-server/minecraft-patches/features/0004-Giants-AI-settings.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-features/0004-Giants-AI-settings.patch rename to purpur-server/minecraft-patches/features/0004-Giants-AI-settings.patch diff --git a/purpur-server/minecraft-patches/unapplied-features/0005-Chickens-can-retaliate.patch b/purpur-server/minecraft-patches/features/0005-Chickens-can-retaliate.patch similarity index 100% rename from purpur-server/minecraft-patches/unapplied-features/0005-Chickens-can-retaliate.patch rename to purpur-server/minecraft-patches/features/0005-Chickens-can-retaliate.patch diff --git a/purpur-server/minecraft-patches/unapplied-features/0006-Minecart-settings-and-WASD-controls.patch b/purpur-server/minecraft-patches/features/0006-Minecart-settings-and-WASD-controls.patch similarity index 96% rename from purpur-server/minecraft-patches/unapplied-features/0006-Minecart-settings-and-WASD-controls.patch rename to purpur-server/minecraft-patches/features/0006-Minecart-settings-and-WASD-controls.patch index 69729b6f8..6acc823c6 100644 --- a/purpur-server/minecraft-patches/unapplied-features/0006-Minecart-settings-and-WASD-controls.patch +++ b/purpur-server/minecraft-patches/features/0006-Minecart-settings-and-WASD-controls.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Minecart settings and WASD controls diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java -index 83e69de9e59cc18cc7aff71fbee1e40ad0781f90..577bb59afb4e059523e68af6c3515d64f0b9e559 100644 +index b329ac34ff7fb9fa15daca26e0d2593e2db59a6f..365739b67b6d62f3e7da529117349dcbc9a509da 100644 --- a/net/minecraft/server/level/ServerPlayer.java +++ b/net/minecraft/server/level/ServerPlayer.java -@@ -1207,6 +1207,11 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc +@@ -1313,6 +1313,11 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc } else { // Purpur start - Add boat fall damage config if (damageSource.is(net.minecraft.tags.DamageTypeTags.IS_FALL)) { @@ -21,7 +21,7 @@ index 83e69de9e59cc18cc7aff71fbee1e40ad0781f90..577bb59afb4e059523e68af6c3515d64 return false; } diff --git a/net/minecraft/world/entity/vehicle/AbstractMinecart.java b/net/minecraft/world/entity/vehicle/AbstractMinecart.java -index 7e61d68b36ca2768f70dc1fc130a8d7b95347b6b..00eb9aef52ee54f9750c44832f2b3a9321a9f81a 100644 +index 2ae92078d69e5ab3cc27085a9c5e5ccf9f2c175d..d3099eed865e1c0eb7eb1eab440100c1815f0386 100644 --- a/net/minecraft/world/entity/vehicle/AbstractMinecart.java +++ b/net/minecraft/world/entity/vehicle/AbstractMinecart.java @@ -102,6 +102,10 @@ public abstract class AbstractMinecart extends VehicleEntity { @@ -64,7 +64,7 @@ index 7e61d68b36ca2768f70dc1fc130a8d7b95347b6b..00eb9aef52ee54f9750c44832f2b3a93 // CraftBukkit start double prevX = this.getX(); double prevY = this.getY(); -@@ -390,15 +407,61 @@ public abstract class AbstractMinecart extends VehicleEntity { +@@ -389,15 +406,61 @@ public abstract class AbstractMinecart extends VehicleEntity { this.behavior.moveAlongTrack(level); } diff --git a/purpur-server/minecraft-patches/unapplied-features/0007-Villagers-follow-emerald-blocks.patch b/purpur-server/minecraft-patches/features/0007-Villagers-follow-emerald-blocks.patch similarity index 93% rename from purpur-server/minecraft-patches/unapplied-features/0007-Villagers-follow-emerald-blocks.patch rename to purpur-server/minecraft-patches/features/0007-Villagers-follow-emerald-blocks.patch index 88cdc38e7..045cd3ad5 100644 --- a/purpur-server/minecraft-patches/unapplied-features/0007-Villagers-follow-emerald-blocks.patch +++ b/purpur-server/minecraft-patches/features/0007-Villagers-follow-emerald-blocks.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Villagers follow emerald blocks diff --git a/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java b/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java -index 4bb7a8955182d786a09fd2667b37a93373ff47be..bead2f6800bdc404228500c12caf326559fa47de 100644 +index c23d6edeaca324bcfd60c6e96ec4038f6ef595a9..9251693b3caa2d77b093064b6599db1078cd06d0 100644 --- a/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java +++ b/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java -@@ -164,7 +164,7 @@ public class DefaultAttributes { +@@ -167,7 +167,7 @@ public class DefaultAttributes { .put(EntityType.VILLAGER, Villager.createAttributes().build()) .put(EntityType.VINDICATOR, Vindicator.createAttributes().build()) .put(EntityType.WARDEN, Warden.createAttributes().build()) @@ -31,7 +31,7 @@ index dae935cc68e2e571d50e56ac8913c099a11cf771..a805c9426630c2c46db9d0dd536f1d16 @Override diff --git a/net/minecraft/world/entity/npc/AbstractVillager.java b/net/minecraft/world/entity/npc/AbstractVillager.java -index f8782cdcf3015cad2693663a3c222bd60822f45b..d1a77544df7bcaa5f1dbca3139324107d687ae0d 100644 +index cf4703cb909aa5906fdd689082208ea4dd77fc0f..8eceba09d1a410aaf359c71a2a0e5d44471e67b6 100644 --- a/net/minecraft/world/entity/npc/AbstractVillager.java +++ b/net/minecraft/world/entity/npc/AbstractVillager.java @@ -35,6 +35,7 @@ import net.minecraft.world.level.storage.ValueOutput; @@ -43,7 +43,7 @@ index f8782cdcf3015cad2693663a3c222bd60822f45b..d1a77544df7bcaa5f1dbca3139324107 public static final int VILLAGER_SLOT_OFFSET = 300; private static final int VILLAGER_INVENTORY_SIZE = 8; diff --git a/net/minecraft/world/entity/npc/Villager.java b/net/minecraft/world/entity/npc/Villager.java -index eefc5c1f494f1053f93559e8c666065f561dec10..835c80828f831c9bc0f8c7cdf451f268bb36e5ad 100644 +index b5dc02822ce6a82eb69fd7341c317fb1f7ee0a7f..4b076b9eeeb3614df3a024f16fecb287bed72ec7 100644 --- a/net/minecraft/world/entity/npc/Villager.java +++ b/net/minecraft/world/entity/npc/Villager.java @@ -268,6 +268,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -72,7 +72,7 @@ index eefc5c1f494f1053f93559e8c666065f561dec10..835c80828f831c9bc0f8c7cdf451f268 public boolean assignProfessionWhenSpawned() { diff --git a/net/minecraft/world/entity/npc/WanderingTrader.java b/net/minecraft/world/entity/npc/WanderingTrader.java -index 28c86505efa994f9c7657538f5ffdf12772fb0a9..2917820bf01b1a2ca7301a7099b7b3dcd6c3ee67 100644 +index 0eeda11b37cd17122183d5e22d02d9cd61f2b4e5..e9a98a7009555128cb5118093add3fb331a7d485 100644 --- a/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/net/minecraft/world/entity/npc/WanderingTrader.java @@ -88,9 +88,16 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill diff --git a/purpur-server/minecraft-patches/unapplied-features/0008-Implement-elytra-settings.patch b/purpur-server/minecraft-patches/features/0008-Implement-elytra-settings.patch similarity index 94% rename from purpur-server/minecraft-patches/unapplied-features/0008-Implement-elytra-settings.patch rename to purpur-server/minecraft-patches/features/0008-Implement-elytra-settings.patch index c3d03005b..2f480f6e4 100644 --- a/purpur-server/minecraft-patches/unapplied-features/0008-Implement-elytra-settings.patch +++ b/purpur-server/minecraft-patches/features/0008-Implement-elytra-settings.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Implement elytra settings diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java -index 56b090a464d6f8481f8b5a516799c325b25b5bf5..7165479d4445a7d370bdefe73ac23d5caeafabd9 100644 +index a8de0e01547d94db3588f2a90309bfa0bccf509c..b1dcb5d8849a1b5e93b01f883f1519aaebba82da 100644 --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java -@@ -3713,7 +3713,18 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin +@@ -3745,7 +3745,18 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin .filter(equipmentSlot1 -> canGlideUsing(this.getItemBySlot(equipmentSlot1), equipmentSlot1)) .toList(); EquipmentSlot equipmentSlot = Util.getRandom(list, this.random); @@ -51,10 +51,10 @@ index f86b0579e707ecfa5c2074ea22bbe383b5e11841..43a6d9bd3a2e301e3957e9933663c3af itemInHand.shrink(1); // Moved up from below } else { diff --git a/net/minecraft/world/item/ItemStack.java b/net/minecraft/world/item/ItemStack.java -index 373822831e3025e0365f2bf1a41013450f8b0e00..d3892cc9ef3ab66a45fe3ab72e8a5ef8b904b7c0 100644 +index c473caf0d333512524eb724340000dcc9f4fc042..84a4c79fd1ac92c10d6605e1c20a066b04a06dd5 100644 --- a/net/minecraft/world/item/ItemStack.java +++ b/net/minecraft/world/item/ItemStack.java -@@ -696,6 +696,14 @@ public final class ItemStack implements DataComponentHolder { +@@ -697,6 +697,14 @@ public final class ItemStack implements DataComponentHolder { org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerItemBreakEvent(serverPlayer, this); // Paper - Add EntityDamageItemEvent } // CraftBukkit end diff --git a/purpur-server/minecraft-patches/unapplied-features/0009-Configurable-jockey-options.patch b/purpur-server/minecraft-patches/features/0009-Configurable-jockey-options.patch similarity index 90% rename from purpur-server/minecraft-patches/unapplied-features/0009-Configurable-jockey-options.patch rename to purpur-server/minecraft-patches/features/0009-Configurable-jockey-options.patch index c53d8777b..a328305d9 100644 --- a/purpur-server/minecraft-patches/unapplied-features/0009-Configurable-jockey-options.patch +++ b/purpur-server/minecraft-patches/features/0009-Configurable-jockey-options.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Configurable jockey options diff --git a/net/minecraft/world/entity/monster/Drowned.java b/net/minecraft/world/entity/monster/Drowned.java -index ec0f27d04125765e91e43c4c18415b29db62b181..ffd9e34b4d57bdafc597b2208f754c7454afd48a 100644 +index 453f9d6e9581165c59b959ea6bccc5387dff91bd..ee13dd20af2730f3051f77fb0e73ce5c8253bd4a 100644 --- a/net/minecraft/world/entity/monster/Drowned.java +++ b/net/minecraft/world/entity/monster/Drowned.java @@ -106,6 +106,23 @@ public class Drowned extends Zombie implements RangedAttackMob { @@ -33,10 +33,10 @@ index ec0f27d04125765e91e43c4c18415b29db62b181..ffd9e34b4d57bdafc597b2208f754c74 protected void addBehaviourGoals() { this.goalSelector.addGoal(1, new Drowned.DrownedGoToWaterGoal(this, 1.0)); diff --git a/net/minecraft/world/entity/monster/Husk.java b/net/minecraft/world/entity/monster/Husk.java -index 5b0794bd87423715cada1f860b4141fdacd9ede6..75cb1db5584c04e442583ab2f50a26132ed48bfb 100644 +index 4a617bb6bc3675d8cb42be0b5ae19befd4b3176f..557b2d684936c15299d7082a92ec8b08e7fab9a5 100644 --- a/net/minecraft/world/entity/monster/Husk.java +++ b/net/minecraft/world/entity/monster/Husk.java -@@ -50,6 +50,23 @@ public class Husk extends Zombie { +@@ -49,6 +49,23 @@ public class Husk extends Zombie { } // Purpur end - Configurable entity base attributes @@ -61,7 +61,7 @@ index 5b0794bd87423715cada1f860b4141fdacd9ede6..75cb1db5584c04e442583ab2f50a2613 EntityType entityType, ServerLevelAccessor level, EntitySpawnReason spawnReason, BlockPos pos, RandomSource random ) { diff --git a/net/minecraft/world/entity/monster/Zombie.java b/net/minecraft/world/entity/monster/Zombie.java -index 6f26221e6982db3c97a77d4496686c666a80e3a4..ede9101c44ba53c5bd67254bea6fcff7f00b5b47 100644 +index 4bad786bee142bd1bc8fc76606829496ce44a455..604653d7748cc0f499071e04d396fef295bbdf9f 100644 --- a/net/minecraft/world/entity/monster/Zombie.java +++ b/net/minecraft/world/entity/monster/Zombie.java @@ -128,6 +128,20 @@ public class Zombie extends Monster { @@ -104,7 +104,7 @@ index 6f26221e6982db3c97a77d4496686c666a80e3a4..ede9101c44ba53c5bd67254bea6fcff7 if (!entitiesOfClass.isEmpty()) { Chicken chicken = entitiesOfClass.get(0); chicken.setChickenJockey(true); - this.startRiding(chicken); + this.startRiding(chicken, false, false); - } - } else if (random.nextFloat() < 0.05) { + } else { // Purpur - Configurable jockey options @@ -112,7 +112,7 @@ index 6f26221e6982db3c97a77d4496686c666a80e3a4..ede9101c44ba53c5bd67254bea6fcff7 if (chicken1 != null) { chicken1.snapTo(this.getX(), this.getY(), this.getZ(), this.getYRot(), 0.0F); @@ -578,6 +591,7 @@ public class Zombie extends Monster { - this.startRiding(chicken1); + this.startRiding(chicken1, false, false); level.addFreshEntity(chicken1, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.MOUNT); // CraftBukkit } + } // Purpur - Configurable jockey options @@ -120,10 +120,10 @@ index 6f26221e6982db3c97a77d4496686c666a80e3a4..ede9101c44ba53c5bd67254bea6fcff7 } } diff --git a/net/minecraft/world/entity/monster/ZombieVillager.java b/net/minecraft/world/entity/monster/ZombieVillager.java -index 537bff97a27e043ed2f71fc82580689ecb784ac8..02b503453fb8b64cbf0b9db1e498566289c6bbe3 100644 +index 5a1ba4b80c104806ea8cff4242416951751ee919..04748820e2c78a6d0faa6c4fb4901c7d8b2a8760 100644 --- a/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/net/minecraft/world/entity/monster/ZombieVillager.java -@@ -105,6 +105,23 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { +@@ -102,6 +102,23 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { } // Purpur end - Configurable entity base attributes @@ -148,7 +148,7 @@ index 537bff97a27e043ed2f71fc82580689ecb784ac8..02b503453fb8b64cbf0b9db1e4985662 protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/monster/ZombifiedPiglin.java b/net/minecraft/world/entity/monster/ZombifiedPiglin.java -index f0a809464d9e7f1839e1932955a7313e744384b1..2adee917a4275742968a2e1e8b65bce4b9ac3cc3 100644 +index a6244a3d5d8e48b81147d6aed7ac1126e9ae5d64..325d0f32fd8824dc1c7067eb9c303bdfc122c706 100644 --- a/net/minecraft/world/entity/monster/ZombifiedPiglin.java +++ b/net/minecraft/world/entity/monster/ZombifiedPiglin.java @@ -89,6 +89,23 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { diff --git a/purpur-server/minecraft-patches/unapplied-features/0010-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch b/purpur-server/minecraft-patches/features/0010-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch similarity index 98% rename from purpur-server/minecraft-patches/unapplied-features/0010-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch rename to purpur-server/minecraft-patches/features/0010-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch index f7ac0c09f..35507aff1 100644 --- a/purpur-server/minecraft-patches/unapplied-features/0010-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch +++ b/purpur-server/minecraft-patches/features/0010-Phantoms-attracted-to-crystals-and-crystals-shoot-ph.patch @@ -72,7 +72,7 @@ index 5bff703ae4f95091620dec5347246d7c0cbe5d5e..220a828717e1933a44c5282b56713ba0 @Override diff --git a/net/minecraft/world/entity/monster/Phantom.java b/net/minecraft/world/entity/monster/Phantom.java -index 4d49d8c473319a9ca43a5163b632c72623e79f93..029d90b7ef1dfe264ef873af133e7ac5334b1740 100644 +index 958f0c86986a155f56d3995a87882f83df66043f..3e0df2669e567094ad52ff8c59037e3fb5c96f30 100644 --- a/net/minecraft/world/entity/monster/Phantom.java +++ b/net/minecraft/world/entity/monster/Phantom.java @@ -49,6 +49,7 @@ public class Phantom extends Mob implements Enemy { @@ -128,7 +128,7 @@ index 4d49d8c473319a9ca43a5163b632c72623e79f93..029d90b7ef1dfe264ef873af133e7ac5 this.targetSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables this.targetSelector.addGoal(1, new Phantom.PhantomAttackPlayerTargetGoal()); } -@@ -515,6 +541,124 @@ public class Phantom extends Mob implements Enemy { +@@ -510,6 +536,124 @@ public class Phantom extends Mob implements Enemy { } } diff --git a/purpur-server/minecraft-patches/unapplied-features/0011-Phantoms-burn-in-light.patch b/purpur-server/minecraft-patches/features/0011-Phantoms-burn-in-light.patch similarity index 92% rename from purpur-server/minecraft-patches/unapplied-features/0011-Phantoms-burn-in-light.patch rename to purpur-server/minecraft-patches/features/0011-Phantoms-burn-in-light.patch index ccf02e89c..b07d16549 100644 --- a/purpur-server/minecraft-patches/unapplied-features/0011-Phantoms-burn-in-light.patch +++ b/purpur-server/minecraft-patches/features/0011-Phantoms-burn-in-light.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Phantoms burn in light diff --git a/net/minecraft/world/entity/monster/Phantom.java b/net/minecraft/world/entity/monster/Phantom.java -index 029d90b7ef1dfe264ef873af133e7ac5334b1740..7f3ac34023fe5232d53157e9fade56ffd0597c28 100644 +index 3e0df2669e567094ad52ff8c59037e3fb5c96f30..bf2330068d43f52a9a21d73180ef5a83697444ea 100644 --- a/net/minecraft/world/entity/monster/Phantom.java +++ b/net/minecraft/world/entity/monster/Phantom.java @@ -55,6 +55,7 @@ public class Phantom extends Mob implements Enemy { @@ -16,7 +16,7 @@ index 029d90b7ef1dfe264ef873af133e7ac5334b1740..7f3ac34023fe5232d53157e9fade56ff public Phantom(EntityType entityType, Level level) { super(entityType, level); -@@ -243,7 +244,11 @@ public class Phantom extends Mob implements Enemy { +@@ -238,7 +239,11 @@ public class Phantom extends Mob implements Enemy { @Override public void aiStep() { @@ -29,7 +29,7 @@ index 029d90b7ef1dfe264ef873af133e7ac5334b1740..7f3ac34023fe5232d53157e9fade56ff if (getRider() == null || !this.isControllable()) // Purpur - Ridables this.igniteForSeconds(8.0F); } -@@ -375,6 +380,7 @@ public class Phantom extends Mob implements Enemy { +@@ -370,6 +375,7 @@ public class Phantom extends Mob implements Enemy { List nearbyPlayers = serverLevel.getNearbyPlayers( this.attackTargeting, Phantom.this, Phantom.this.getBoundingBox().inflate(16.0, 64.0, 16.0) ); @@ -37,7 +37,7 @@ index 029d90b7ef1dfe264ef873af133e7ac5334b1740..7f3ac34023fe5232d53157e9fade56ff if (!nearbyPlayers.isEmpty()) { nearbyPlayers.sort(Comparator.comparing(Entity::getY).reversed()); -@@ -745,6 +751,12 @@ public class Phantom extends Mob implements Enemy { +@@ -740,6 +746,12 @@ public class Phantom extends Mob implements Enemy { return false; } else if (!target.isAlive()) { return false; diff --git a/purpur-server/minecraft-patches/unapplied-features/0012-Make-entity-breeding-times-configurable.patch b/purpur-server/minecraft-patches/features/0012-Make-entity-breeding-times-configurable.patch similarity index 89% rename from purpur-server/minecraft-patches/unapplied-features/0012-Make-entity-breeding-times-configurable.patch rename to purpur-server/minecraft-patches/features/0012-Make-entity-breeding-times-configurable.patch index 0763c556b..4cd6b2066 100644 --- a/purpur-server/minecraft-patches/unapplied-features/0012-Make-entity-breeding-times-configurable.patch +++ b/purpur-server/minecraft-patches/features/0012-Make-entity-breeding-times-configurable.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Make entity breeding times configurable diff --git a/net/minecraft/world/entity/ai/behavior/VillagerMakeLove.java b/net/minecraft/world/entity/ai/behavior/VillagerMakeLove.java -index 2591e4bbd234e51ff2c6b00db888d3b158f5a07d..e3d48c7c6615185f8a14bc96476a665bdadc275b 100644 +index f673a7e78729edf13f094d547a0b995ea9ae7146..0fa52865c293e74c9e5f3d1fd93a0e24435a9055 100644 --- a/net/minecraft/world/entity/ai/behavior/VillagerMakeLove.java +++ b/net/minecraft/world/entity/ai/behavior/VillagerMakeLove.java -@@ -118,8 +118,10 @@ public class VillagerMakeLove extends Behavior { +@@ -117,8 +117,10 @@ public class VillagerMakeLove extends Behavior { if (org.bukkit.craftbukkit.event.CraftEventFactory.callEntityBreedEvent(breedOffspring, parent, partner, null, null, 0).isCancelled()) { return Optional.empty(); } @@ -22,10 +22,10 @@ index 2591e4bbd234e51ff2c6b00db888d3b158f5a07d..e3d48c7c6615185f8a14bc96476a665b // CraftBukkit end - call EntityBreedEvent level.broadcastEntityEvent(breedOffspring, (byte)12); diff --git a/net/minecraft/world/entity/animal/Animal.java b/net/minecraft/world/entity/animal/Animal.java -index 235f6514328338d28c2bf967bcd06f1413f12c65..4d99a1bf2dc141630a76942ccbf1f60824cf7495 100644 +index 834a7d6b0a332c1c3f32ab8797fe1d3cb45159c1..8405cbe7754b916e3d3a39318685fb91af5edce2 100644 --- a/net/minecraft/world/entity/animal/Animal.java +++ b/net/minecraft/world/entity/animal/Animal.java -@@ -43,6 +43,7 @@ public abstract class Animal extends AgeableMob { +@@ -41,6 +41,7 @@ public abstract class Animal extends AgeableMob { @Nullable public EntityReference loveCause; public @Nullable ItemStack breedItem; // CraftBukkit - Add breedItem variable @@ -33,7 +33,7 @@ index 235f6514328338d28c2bf967bcd06f1413f12c65..4d99a1bf2dc141630a76942ccbf1f608 protected Animal(EntityType entityType, Level level) { super(entityType, level); -@@ -279,8 +280,10 @@ public abstract class Animal extends AgeableMob { +@@ -267,8 +268,10 @@ public abstract class Animal extends AgeableMob { player.awardStat(Stats.ANIMALS_BRED); CriteriaTriggers.BRED_ANIMALS.trigger(player, this, animal, baby); } // Paper - Call EntityBreedEvent @@ -47,10 +47,10 @@ index 235f6514328338d28c2bf967bcd06f1413f12c65..4d99a1bf2dc141630a76942ccbf1f608 animal.resetLove(); level.broadcastEntityEvent(this, (byte)18); diff --git a/net/minecraft/world/entity/animal/Bee.java b/net/minecraft/world/entity/animal/Bee.java -index bdb16d355dac48760c9a083303035265f6a1fc74..11a7cbb1781e396ecb2b9fdbad7af2c55ea2606a 100644 +index 0238bbbd85100dd107a11c00fd19d2250766b11e..a5e0edd6da8675643f3a4d63199e8cd865a6d836 100644 --- a/net/minecraft/world/entity/animal/Bee.java +++ b/net/minecraft/world/entity/animal/Bee.java -@@ -481,6 +481,13 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -483,6 +483,13 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { } // Purpur end - Configurable entity base attributes @@ -119,7 +119,7 @@ index 9dbc5f7b3896acb199577afa85451da38f2d2a01..753ed26cc6bfc8276d4405091b78b0e5 protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/animal/Fox.java b/net/minecraft/world/entity/animal/Fox.java -index 869a0154c81593db8933f9daa6a7d3a9d02facc5..37b6bfa8dc1fd4ed0006f6531d2056bcd3c3abae 100644 +index 50c8030a9ac6d1fc465cdf6ffbc88f85933405b0..8066bdf7c3b8ea37c9649a6f236fd8531b33f951 100644 --- a/net/minecraft/world/entity/animal/Fox.java +++ b/net/minecraft/world/entity/animal/Fox.java @@ -188,6 +188,13 @@ public class Fox extends Animal { @@ -150,10 +150,10 @@ index 869a0154c81593db8933f9daa6a7d3a9d02facc5..37b6bfa8dc1fd4ed0006f6531d2056bc this.partner.resetLove(); serverLevel.addFreshEntityWithPassengers(fox, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.BREEDING); // CraftBukkit - added SpawnReason diff --git a/net/minecraft/world/entity/animal/HappyGhast.java b/net/minecraft/world/entity/animal/HappyGhast.java -index 3bdfd064ba3985e7f3d1c537d60908568678ec78..9b101015f7add4821fb863255294ba2171f5405f 100644 +index 597250765504186f7e01b3b88c7428258938afb3..95dd6d0aa45330fb09e430d920ab92411ea8926e 100644 --- a/net/minecraft/world/entity/animal/HappyGhast.java +++ b/net/minecraft/world/entity/animal/HappyGhast.java -@@ -146,6 +146,13 @@ public class HappyGhast extends Animal { +@@ -145,6 +145,13 @@ public class HappyGhast extends Animal { } // Purpur end - Configurable entity base attributes @@ -168,10 +168,10 @@ index 3bdfd064ba3985e7f3d1c537d60908568678ec78..9b101015f7add4821fb863255294ba21 protected void ageBoundaryReached() { if (this.isBaby()) { diff --git a/net/minecraft/world/entity/animal/MushroomCow.java b/net/minecraft/world/entity/animal/MushroomCow.java -index 8cfbe37df24647c3f0a2d64bcc3451de1402c86f..3e4cb7680e6082ebab95e2b8307eedb0d3fcfbcd 100644 +index eede8c36b351eb7bd555a0e6e362647e11dbeb2d..5bca000fc9b8ba992e5285ef34b96b5fbcaae0da 100644 --- a/net/minecraft/world/entity/animal/MushroomCow.java +++ b/net/minecraft/world/entity/animal/MushroomCow.java -@@ -86,6 +86,13 @@ public class MushroomCow extends AbstractCow implements Shearable { +@@ -87,6 +87,13 @@ public class MushroomCow extends AbstractCow implements Shearable { } // Purpur end - Configurable entity base attributes @@ -186,7 +186,7 @@ index 8cfbe37df24647c3f0a2d64bcc3451de1402c86f..3e4cb7680e6082ebab95e2b8307eedb0 public float getWalkTargetValue(BlockPos pos, LevelReader level) { return level.getBlockState(pos.below()).is(Blocks.MYCELIUM) ? 10.0F : level.getPathfindingCostFromLightLevels(pos); diff --git a/net/minecraft/world/entity/animal/Ocelot.java b/net/minecraft/world/entity/animal/Ocelot.java -index 84664a62dcae89dff1b63b0ac952756440ee090f..c4ed3f906d4b47c07915afd07db7a731e99b7215 100644 +index 9f3ab67cf17c4f66da8bec0c9b818025ef303040..bc81c68fda213f3d64be5f480ae87264c581a52a 100644 --- a/net/minecraft/world/entity/animal/Ocelot.java +++ b/net/minecraft/world/entity/animal/Ocelot.java @@ -89,6 +89,13 @@ public class Ocelot extends Animal { @@ -204,7 +204,7 @@ index 84664a62dcae89dff1b63b0ac952756440ee090f..c4ed3f906d4b47c07915afd07db7a731 return this.entityData.get(DATA_TRUSTING); } diff --git a/net/minecraft/world/entity/animal/Panda.java b/net/minecraft/world/entity/animal/Panda.java -index 4ec69b45049b2c947e0d9ef71619e8acd358e7ad..c7686698a9615a51c653658cf6a46ccfb9c4d168 100644 +index b31e2ef8a498fe33107a5c4ee2b4e056a44027cc..83110d64ab7fd9b30a9fee1c5240c3de11c2514a 100644 --- a/net/minecraft/world/entity/animal/Panda.java +++ b/net/minecraft/world/entity/animal/Panda.java @@ -142,6 +142,13 @@ public class Panda extends Animal { @@ -222,7 +222,7 @@ index 4ec69b45049b2c947e0d9ef71619e8acd358e7ad..c7686698a9615a51c653658cf6a46ccf protected boolean canDispenserEquipIntoSlot(EquipmentSlot slot) { return slot == EquipmentSlot.MAINHAND && this.canPickUpLoot(); diff --git a/net/minecraft/world/entity/animal/Parrot.java b/net/minecraft/world/entity/animal/Parrot.java -index d997102941a6add1b116053c119bcd6690eb42a5..6019406d7c7e51c53d8822e44070e626091495af 100644 +index 24f7e486dec1714d917342887afaf775ef6300d5..35afe8dc9fb3ad6e9103f4fb60742ad70d933f85 100644 --- a/net/minecraft/world/entity/animal/Parrot.java +++ b/net/minecraft/world/entity/animal/Parrot.java @@ -201,6 +201,13 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { @@ -240,7 +240,7 @@ index d997102941a6add1b116053c119bcd6690eb42a5..6019406d7c7e51c53d8822e44070e626 @Override public SpawnGroupData finalizeSpawn( diff --git a/net/minecraft/world/entity/animal/Pig.java b/net/minecraft/world/entity/animal/Pig.java -index 9f511a6a2692dc46c14e0e0e59518c0a3040cfb9..885135fb301eeb6149aa53d581b4073d3724264d 100644 +index 39f6a3f3ea5f7e51580b7cbf9bbfd4a04368a380..50d20169b0a8ccc78e8573d26663e800f70a9f66 100644 --- a/net/minecraft/world/entity/animal/Pig.java +++ b/net/minecraft/world/entity/animal/Pig.java @@ -91,6 +91,13 @@ public class Pig extends Animal implements ItemSteerable { @@ -258,7 +258,7 @@ index 9f511a6a2692dc46c14e0e0e59518c0a3040cfb9..885135fb301eeb6149aa53d581b4073d protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/net/minecraft/world/entity/animal/PolarBear.java b/net/minecraft/world/entity/animal/PolarBear.java -index 28919a96de837a15d116c6b863eba5c8a1cf6a7b..e39ca22a871c911defdbfe1cb0f1b15cde8d4612 100644 +index 75eb4a6dd43346622d6c528aa6e66d251167d3ac..63fae10cea012f6f00a52d375e39b64538f88208 100644 --- a/net/minecraft/world/entity/animal/PolarBear.java +++ b/net/minecraft/world/entity/animal/PolarBear.java @@ -125,6 +125,13 @@ public class PolarBear extends Animal implements NeutralMob { @@ -276,7 +276,7 @@ index 28919a96de837a15d116c6b863eba5c8a1cf6a7b..e39ca22a871c911defdbfe1cb0f1b15c @Override public AgeableMob getBreedOffspring(ServerLevel level, AgeableMob otherParent) { diff --git a/net/minecraft/world/entity/animal/Rabbit.java b/net/minecraft/world/entity/animal/Rabbit.java -index d74b492c5d1c3a323106b5de5bbf595a38d976a1..5fc1d6ba3cb54f2ea8c6fe3f994ffea2cca5784b 100644 +index b644b85f2509f584770dee11677e5bfeef4a46a2..ec2620726f84a59312b03044b181ca436122d9bb 100644 --- a/net/minecraft/world/entity/animal/Rabbit.java +++ b/net/minecraft/world/entity/animal/Rabbit.java @@ -153,6 +153,13 @@ public class Rabbit extends Animal { @@ -294,7 +294,7 @@ index d74b492c5d1c3a323106b5de5bbf595a38d976a1..5fc1d6ba3cb54f2ea8c6fe3f994ffea2 public void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/net/minecraft/world/entity/animal/Turtle.java b/net/minecraft/world/entity/animal/Turtle.java -index e26b97e92ecfadb351e91aeae38beb4c4da87e26..f5735e5bcc34b78db544aa8971234bc86e0ddfa9 100644 +index b9dd8a359711a1993b515fda4b81e61d28a4da49..966f21d90996a9c162e3f60ff53edb53507645b3 100644 --- a/net/minecraft/world/entity/animal/Turtle.java +++ b/net/minecraft/world/entity/animal/Turtle.java @@ -111,6 +111,13 @@ public class Turtle extends Animal { @@ -325,7 +325,7 @@ index e26b97e92ecfadb351e91aeae38beb4c4da87e26..f5735e5bcc34b78db544aa8971234bc8 this.partner.resetLove(); RandomSource random = this.animal.getRandom(); diff --git a/net/minecraft/world/entity/animal/armadillo/Armadillo.java b/net/minecraft/world/entity/animal/armadillo/Armadillo.java -index e4c8376c009984e40b90c01f78c65e76e260ee0b..0da5c51c4830cf1826261f4d8877303b34c6cb87 100644 +index c77284ba3dc3c2eb13ba97bbdcdea7c4a864c195..33e678dca2a5f50eadcf6719822190cedf5265dd 100644 --- a/net/minecraft/world/entity/animal/armadillo/Armadillo.java +++ b/net/minecraft/world/entity/animal/armadillo/Armadillo.java @@ -107,6 +107,13 @@ public class Armadillo extends Animal { @@ -343,10 +343,10 @@ index e4c8376c009984e40b90c01f78c65e76e260ee0b..0da5c51c4830cf1826261f4d8877303b protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/net/minecraft/world/entity/animal/axolotl/Axolotl.java -index 17b20b36a3edafaea089288d22ad3e07795b9770..e32a78cb9574505d78f3e298a38a28a2422d34b3 100644 +index 9bec0aa8cf669d68f9cdb87621024ac4dfe217c9..a56ff850de466a592855a9bf2bc395c2e4b97c17 100644 --- a/net/minecraft/world/entity/animal/axolotl/Axolotl.java +++ b/net/minecraft/world/entity/animal/axolotl/Axolotl.java -@@ -147,6 +147,13 @@ public class Axolotl extends Animal implements Bucketable { +@@ -146,6 +146,13 @@ public class Axolotl extends Animal implements Bucketable { } // Purpur end - Configurable entity base attributes @@ -361,10 +361,10 @@ index 17b20b36a3edafaea089288d22ad3e07795b9770..e32a78cb9574505d78f3e298a38a28a2 public float getWalkTargetValue(BlockPos pos, LevelReader level) { return 0.0F; diff --git a/net/minecraft/world/entity/animal/camel/Camel.java b/net/minecraft/world/entity/animal/camel/Camel.java -index f45d1ba8dc0bb4b7041c5efba5d6261a3a5f5ff4..0c698241b10f84afb17ae10d3661a90bc62ec243 100644 +index 3a794ff3d68c86b4e5ef93ff8f5cedfa07d22f99..bb750bcc35a3dd75c112dea445595ab27cc15fd5 100644 --- a/net/minecraft/world/entity/animal/camel/Camel.java +++ b/net/minecraft/world/entity/animal/camel/Camel.java -@@ -98,6 +98,13 @@ public class Camel extends AbstractHorse { +@@ -97,6 +97,13 @@ public class Camel extends AbstractHorse { } // Purpur end - Ridables @@ -379,10 +379,10 @@ index f45d1ba8dc0bb4b7041c5efba5d6261a3a5f5ff4..0c698241b10f84afb17ae10d3661a90b protected void addAdditionalSaveData(ValueOutput output) { super.addAdditionalSaveData(output); diff --git a/net/minecraft/world/entity/animal/frog/Frog.java b/net/minecraft/world/entity/animal/frog/Frog.java -index 0bb0c875b12c94e9fb42b81210c5935cb5efecf8..1d5079602e7ae1042e2bb92209dded4007f703da 100644 +index 054fb0c62a827e708e2195c4d4991e24df2eca78..295a907236c2f0ad4038a86edef45374da906d98 100644 --- a/net/minecraft/world/entity/animal/frog/Frog.java +++ b/net/minecraft/world/entity/animal/frog/Frog.java -@@ -165,6 +165,13 @@ public class Frog extends Animal { +@@ -164,6 +164,13 @@ public class Frog extends Animal { } // Purpur end - Ridables @@ -397,10 +397,10 @@ index 0bb0c875b12c94e9fb42b81210c5935cb5efecf8..1d5079602e7ae1042e2bb92209dded40 protected Brain.Provider brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); diff --git a/net/minecraft/world/entity/animal/goat/Goat.java b/net/minecraft/world/entity/animal/goat/Goat.java -index f106d5bbbe9227b2c7cc4cc24ade57d8df9b4e10..8da2cdf5a308b4c1359f94127934ee90e9cef558 100644 +index 330fe06b0b1d4c25c69acde22c2e9c00e0756a52..52d35093b9fc84e27b4c4e62883a7e581e8c0f5b 100644 --- a/net/minecraft/world/entity/animal/goat/Goat.java +++ b/net/minecraft/world/entity/animal/goat/Goat.java -@@ -132,6 +132,13 @@ public class Goat extends Animal { +@@ -131,6 +131,13 @@ public class Goat extends Animal { } // Purpur end - Ridables @@ -451,7 +451,7 @@ index 53c0eac62018a0d88e30b8c13de94216ff829cd8..3678c767818abb9e4180c2ade378ca09 protected void randomizeAttributes(RandomSource random) { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(generateMaxHealth(random::nextInt)); diff --git a/net/minecraft/world/entity/animal/horse/Llama.java b/net/minecraft/world/entity/animal/horse/Llama.java -index 3bc0f670a84216e5a62d1e3a9fb26bd85a0cd79a..45d0977b5016a8728b11ec13c528b160598c80e2 100644 +index fb2b45b85d9f8ae5546573a31cf0d5a39dad149c..d6ae23d48dacb3f445465daf755e6fe7ad8c9c70 100644 --- a/net/minecraft/world/entity/animal/horse/Llama.java +++ b/net/minecraft/world/entity/animal/horse/Llama.java @@ -154,6 +154,13 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { @@ -505,7 +505,7 @@ index a7bcc0ff10e429ebfe91173c392e9a0c07903289..042b73f0807438327ebf4a2fd3a9d54d return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 15.0).add(Attributes.MOVEMENT_SPEED, 0.2F); } diff --git a/net/minecraft/world/entity/animal/horse/TraderLlama.java b/net/minecraft/world/entity/animal/horse/TraderLlama.java -index 39175d4537e84ef39bcbdafc5200ed7b14482d62..b36064e58ecc1512fed2d53c20bde333a405e8b0 100644 +index db07a476fdaa1cfde2b44be77cdc5a17a17bd898..09769f47dc2849ee9eeb60b3c4edb7536a5cf87d 100644 --- a/net/minecraft/world/entity/animal/horse/TraderLlama.java +++ b/net/minecraft/world/entity/animal/horse/TraderLlama.java @@ -70,6 +70,13 @@ public class TraderLlama extends Llama { @@ -541,7 +541,7 @@ index 3d597bd355b6c918ea1bf4b7d537ad4f76e218d2..69b9ae449e58f13bf0950fdfe3f89742 return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 15.0).add(Attributes.MOVEMENT_SPEED, 0.2F); } diff --git a/net/minecraft/world/entity/animal/sheep/Sheep.java b/net/minecraft/world/entity/animal/sheep/Sheep.java -index 8e4a14ca6a0cef1c52c64de3502077d7d25b0308..1fee6d36abe42ff9998287c47d0f498bbba910e3 100644 +index a36ce4568ae173edaeab04b580c88c5389487bd5..eca2b9e1b92ba626eb6203dbc5678976f43bdc29 100644 --- a/net/minecraft/world/entity/animal/sheep/Sheep.java +++ b/net/minecraft/world/entity/animal/sheep/Sheep.java @@ -87,6 +87,13 @@ public class Sheep extends Animal implements Shearable { @@ -559,10 +559,10 @@ index 8e4a14ca6a0cef1c52c64de3502077d7d25b0308..1fee6d36abe42ff9998287c47d0f498b protected void registerGoals() { this.eatBlockGoal = new EatBlockGoal(this); diff --git a/net/minecraft/world/entity/animal/sniffer/Sniffer.java b/net/minecraft/world/entity/animal/sniffer/Sniffer.java -index 683c9f82bfb2306f81b094464462d7d372ef5b22..9ad310cbc5fa41c949a37c1a5db6d6cd024f1483 100644 +index 04c80778f9ce75e337c6c97e8fe6c47f275a558c..93dc1c39d1d61a0f3c2b84e239dc083ee0abec65 100644 --- a/net/minecraft/world/entity/animal/sniffer/Sniffer.java +++ b/net/minecraft/world/entity/animal/sniffer/Sniffer.java -@@ -114,6 +114,13 @@ public class Sniffer extends Animal { +@@ -113,6 +113,13 @@ public class Sniffer extends Animal { } // Purpur end - Configurable entity base attributes @@ -577,7 +577,7 @@ index 683c9f82bfb2306f81b094464462d7d372ef5b22..9ad310cbc5fa41c949a37c1a5db6d6cd protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/animal/wolf/Wolf.java b/net/minecraft/world/entity/animal/wolf/Wolf.java -index 7326debf3725844bfe8730dab480da7b1d6e99aa..372360baedbe4f8b59e94c261bc60346ba3cfbbe 100644 +index 70753293961f73f917973c35e1d3fb81b836f1f8..c8966878b861ba8ecf1be1ca830742d2b4e76864 100644 --- a/net/minecraft/world/entity/animal/wolf/Wolf.java +++ b/net/minecraft/world/entity/animal/wolf/Wolf.java @@ -216,6 +216,13 @@ public class Wolf extends TamableAnimal implements NeutralMob { @@ -595,7 +595,7 @@ index 7326debf3725844bfe8730dab480da7b1d6e99aa..372360baedbe4f8b59e94c261bc60346 protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/net/minecraft/world/entity/monster/Strider.java b/net/minecraft/world/entity/monster/Strider.java -index a68e9f3f96f37b6dd685fd02072f38b9e320fffc..4e300141b0c7fa967e3d0b9ef952097efeb2bef6 100644 +index 255d4d0cd8f48bf09232cd0fecb87f430e68084a..eb33b66fa3bc705552b6abf2d8e941e84cdda60e 100644 --- a/net/minecraft/world/entity/monster/Strider.java +++ b/net/minecraft/world/entity/monster/Strider.java @@ -117,6 +117,13 @@ public class Strider extends Animal implements ItemSteerable { @@ -613,10 +613,10 @@ index a68e9f3f96f37b6dd685fd02072f38b9e320fffc..4e300141b0c7fa967e3d0b9ef952097e EntityType entityType, LevelAccessor level, EntitySpawnReason spawnReason, BlockPos pos, RandomSource random ) { diff --git a/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/net/minecraft/world/entity/monster/hoglin/Hoglin.java -index c2de8c58f43a43df77f28e077fbbf00e0f930ba7..298246318f5103ff416f076467d3b6bfec297c5e 100644 +index c74c6409ce61f9d4d728b6ce6693bb7ba665e474..b19717af413f739abf632050409db25e2e85e0c6 100644 --- a/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/net/minecraft/world/entity/monster/hoglin/Hoglin.java -@@ -121,6 +121,13 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { +@@ -120,6 +120,13 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { } // Purpur end - Configurable entity base attributes diff --git a/purpur-server/minecraft-patches/unapplied-features/0013-Apply-display-names-from-item-forms-of-entities-to-e.patch b/purpur-server/minecraft-patches/features/0013-Apply-display-names-from-item-forms-of-entities-to-e.patch similarity index 91% rename from purpur-server/minecraft-patches/unapplied-features/0013-Apply-display-names-from-item-forms-of-entities-to-e.patch rename to purpur-server/minecraft-patches/features/0013-Apply-display-names-from-item-forms-of-entities-to-e.patch index 570d86d86..3513846f8 100644 --- a/purpur-server/minecraft-patches/unapplied-features/0013-Apply-display-names-from-item-forms-of-entities-to-e.patch +++ b/purpur-server/minecraft-patches/features/0013-Apply-display-names-from-item-forms-of-entities-to-e.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Apply display names from item forms of entities to entities diff --git a/net/minecraft/world/entity/decoration/ArmorStand.java b/net/minecraft/world/entity/decoration/ArmorStand.java -index e2ffc9b4a95a7684a28b47ad93644c95f9eb5ec8..f145925a8215a501c8013045947de996e3c85532 100644 +index 3412b6dcc2d65986a4f657a6efd7b9fee63d5f8b..d2c5cf955cf8eb534f7bf0afebded9fdf209f117 100644 --- a/net/minecraft/world/entity/decoration/ArmorStand.java +++ b/net/minecraft/world/entity/decoration/ArmorStand.java @@ -450,6 +450,7 @@ public class ArmorStand extends LivingEntity { @@ -18,10 +18,10 @@ index e2ffc9b4a95a7684a28b47ad93644c95f9eb5ec8..f145925a8215a501c8013045947de996 this.drops.add(new DefaultDrop(itemStack, stack -> Block.popResource(this.level(), this.blockPosition(), stack))); // CraftBukkit - add to drops // Paper - Restore vanilla drops behavior return this.brokenByAnything(level, damageSource); // Paper diff --git a/net/minecraft/world/entity/decoration/ItemFrame.java b/net/minecraft/world/entity/decoration/ItemFrame.java -index 90fd3ca5ecd29befa9237222e9f86a8a79a011e4..7e96617f0d5e8777873b4c2cccd012d656612f96 100644 +index 56582d74b9420f688cc6a1abf31a644cb365b797..7346e1f49cc89fbc96bb5f903c2a043e71d0d1c9 100644 --- a/net/minecraft/world/entity/decoration/ItemFrame.java +++ b/net/minecraft/world/entity/decoration/ItemFrame.java -@@ -237,7 +237,11 @@ public class ItemFrame extends HangingEntity { +@@ -239,7 +239,11 @@ public class ItemFrame extends HangingEntity { this.removeFramedMap(item); } else { if (dropItem) { @@ -52,10 +52,10 @@ index cc34cadac8896a5f546d0879e795fea08d0c3f98..26a08b16de2318d5080be59a29c5f11e } } diff --git a/net/minecraft/world/entity/vehicle/AbstractBoat.java b/net/minecraft/world/entity/vehicle/AbstractBoat.java -index 4dcf6daa146645f096ac8815588c837715073c22..d947801b616af5b5dcdcc8bb70b36f97d6a69fdd 100644 +index 464d342d8e24f33745cb09d0d61aad35cf98ebdf..e6abec1b9245e07c8f0636272bece71865f59d9b 100644 --- a/net/minecraft/world/entity/vehicle/AbstractBoat.java +++ b/net/minecraft/world/entity/vehicle/AbstractBoat.java -@@ -825,7 +825,13 @@ public abstract class AbstractBoat extends VehicleEntity implements Leashable { +@@ -821,7 +821,13 @@ public abstract class AbstractBoat extends VehicleEntity implements Leashable { @Override public final ItemStack getPickResult() { @@ -86,7 +86,7 @@ index 962483d6f7225f13f121141882262d36dacad8cb..89d4bc00898fd8f6d40cda87c04c5983 level.playSound( null, armorStand.getX(), armorStand.getY(), armorStand.getZ(), SoundEvents.ARMOR_STAND_PLACE, SoundSource.BLOCKS, 0.75F, 0.8F diff --git a/net/minecraft/world/item/BoatItem.java b/net/minecraft/world/item/BoatItem.java -index 13ce174e4f7e406f57a68ea0d3ef0ee3367f3f3b..ca86122e38688b29340cd8413ccf1746315e292a 100644 +index e849d3b8d3cc0203fa7736f88a669c67af699110..fdf09c4fe801a36589f54982b07371d2f9421084 100644 --- a/net/minecraft/world/item/BoatItem.java +++ b/net/minecraft/world/item/BoatItem.java @@ -63,6 +63,7 @@ public class BoatItem extends Item { @@ -98,7 +98,7 @@ index 13ce174e4f7e406f57a68ea0d3ef0ee3367f3f3b..ca86122e38688b29340cd8413ccf1746 return InteractionResult.FAIL; } else { diff --git a/net/minecraft/world/item/HangingEntityItem.java b/net/minecraft/world/item/HangingEntityItem.java -index 5f9c166b8ba9e9dcabb7398308e7520a88335eae..e9e3a036290a5facc36cf6a484d03d4d3bfb65a5 100644 +index 0880db37298f9f338baa76028c132b4bb25f1d42..4a236dd14250bf0f1ce63e67349a4c48f104420c 100644 --- a/net/minecraft/world/item/HangingEntityItem.java +++ b/net/minecraft/world/item/HangingEntityItem.java @@ -59,7 +59,7 @@ public class HangingEntityItem extends Item { @@ -108,5 +108,5 @@ index 5f9c166b8ba9e9dcabb7398308e7520a88335eae..e9e3a036290a5facc36cf6a484d03d4d - EntityType.createDefaultStackConfig(level, itemInHand, player).accept(hangingEntity); + EntityType.appendDefaultStackConfig(entity -> {if (!level.purpurConfig.persistentDroppableEntityDisplayNames) entity.setCustomName(null);}, level, itemInHand, player).accept(hangingEntity); // Purpur - Apply display names from item forms of entities to entities and vice versa if (hangingEntity.survives()) { - if (!level.isClientSide) { + if (!level.isClientSide()) { // CraftBukkit start - fire HangingPlaceEvent diff --git a/purpur-server/minecraft-patches/unapplied-features/0014-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch b/purpur-server/minecraft-patches/features/0014-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch similarity index 99% rename from purpur-server/minecraft-patches/unapplied-features/0014-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch rename to purpur-server/minecraft-patches/features/0014-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch index 851fe58ad..82dffa957 100644 --- a/purpur-server/minecraft-patches/unapplied-features/0014-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch +++ b/purpur-server/minecraft-patches/features/0014-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch @@ -135,7 +135,7 @@ index f0583076ef62189508a392a76c3fb6b741bbdde9..dc4a9ddb8479e9d0c4895b19d7d677cd brain.setMemory(MemoryModuleType.SECONDARY_JOB_SITE, list); } else { diff --git a/net/minecraft/world/entity/npc/Villager.java b/net/minecraft/world/entity/npc/Villager.java -index 835c80828f831c9bc0f8c7cdf451f268bb36e5ad..d4c4856dccb56e2108f174a37e88ad2268967c8a 100644 +index 4b076b9eeeb3614df3a024f16fecb287bed72ec7..23f7032a044c61b7d541fbe7609449ecede23258 100644 --- a/net/minecraft/world/entity/npc/Villager.java +++ b/net/minecraft/world/entity/npc/Villager.java @@ -314,7 +314,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler diff --git a/purpur-server/minecraft-patches/unapplied-features/0015-Add-mobGriefing-override-to-everything-affected.patch b/purpur-server/minecraft-patches/features/0015-Add-mobGriefing-override-to-everything-affected.patch similarity index 93% rename from purpur-server/minecraft-patches/unapplied-features/0015-Add-mobGriefing-override-to-everything-affected.patch rename to purpur-server/minecraft-patches/features/0015-Add-mobGriefing-override-to-everything-affected.patch index 4b6933a16..3b7e078e3 100644 --- a/purpur-server/minecraft-patches/unapplied-features/0015-Add-mobGriefing-override-to-everything-affected.patch +++ b/purpur-server/minecraft-patches/features/0015-Add-mobGriefing-override-to-everything-affected.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add mobGriefing override to everything affected diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java -index 7165479d4445a7d370bdefe73ac23d5caeafabd9..5fb425f5064f2d9bf376ce209910a36808656417 100644 +index b1dcb5d8849a1b5e93b01f883f1519aaebba82da..de18e6ac0c4336b089a2c40660256488c9d042d5 100644 --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java -@@ -1936,7 +1936,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin +@@ -1944,7 +1944,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin if (this.level() instanceof ServerLevel serverLevel) { boolean var6 = false; if (this.dead && entitySource instanceof WitherBoss) { // Paper @@ -18,10 +18,10 @@ index 7165479d4445a7d370bdefe73ac23d5caeafabd9..5fb425f5064f2d9bf376ce209910a368 BlockState blockState = Blocks.WITHER_ROSE.defaultBlockState(); if (this.level().getBlockState(blockPos).isAir() && blockState.canSurvive(this.level(), blockPos)) { diff --git a/net/minecraft/world/entity/Mob.java b/net/minecraft/world/entity/Mob.java -index f9a8cfd96f0bd8d080e8635d754db82fb7a5400f..cb09a8d2c0d8a561814c5e9dc91bbeaa28a58db0 100644 +index 0ec11f0415bdb44d465c0e57c676eb73c8183be0..b43145dad28a5ee58eaa4559ac5bd462466c114d 100644 --- a/net/minecraft/world/entity/Mob.java +++ b/net/minecraft/world/entity/Mob.java -@@ -539,7 +539,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab +@@ -554,7 +554,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab && this.canPickUpLoot() && this.isAlive() && !this.dead @@ -57,7 +57,7 @@ index e026e07ca86700c864a3dceda6817fb7b6cb11e9..cf380a13d6d54d1a9e8d10b31124942d && !this.isOpen(); } diff --git a/net/minecraft/world/entity/ai/goal/EatBlockGoal.java b/net/minecraft/world/entity/ai/goal/EatBlockGoal.java -index 0bff58498b146f937c3b128ca3454e5ff2551270..4cbfb5f635736df0822966b34cd73226840722b1 100644 +index 9a9c5ced9309abb14b27b20f7f1d9e93b505b796..18dfe585d8be8d0a2031a4d2f9bf73d8ed9179e1 100644 --- a/net/minecraft/world/entity/ai/goal/EatBlockGoal.java +++ b/net/minecraft/world/entity/ai/goal/EatBlockGoal.java @@ -62,7 +62,7 @@ public class EatBlockGoal extends Goal { @@ -79,7 +79,7 @@ index 0bff58498b146f937c3b128ca3454e5ff2551270..4cbfb5f635736df0822966b34cd73226 this.level.setBlock(blockPos1, Blocks.DIRT.defaultBlockState(), 2); } diff --git a/net/minecraft/world/entity/ai/goal/RemoveBlockGoal.java b/net/minecraft/world/entity/ai/goal/RemoveBlockGoal.java -index 3d40911970caf6f1de2a1ebee1df4c077703226a..179597558e93c6e9172207f716f9294de3926c49 100644 +index 962c0b327a46cf0c58904466d3bcb608f474c329..72cc1d2cc76dd564b7fd5c797e8e784b9a343d8a 100644 --- a/net/minecraft/world/entity/ai/goal/RemoveBlockGoal.java +++ b/net/minecraft/world/entity/ai/goal/RemoveBlockGoal.java @@ -35,7 +35,7 @@ public class RemoveBlockGoal extends MoveToBlockGoal { @@ -92,7 +92,7 @@ index 3d40911970caf6f1de2a1ebee1df4c077703226a..179597558e93c6e9172207f716f9294d } else if (this.nextStartTick > 0) { this.nextStartTick--; diff --git a/net/minecraft/world/entity/animal/Fox.java b/net/minecraft/world/entity/animal/Fox.java -index 37b6bfa8dc1fd4ed0006f6531d2056bcd3c3abae..07767c9d649e7ef2b8fd8e3ac62d99ce13271fe4 100644 +index 8066bdf7c3b8ea37c9649a6f236fd8531b33f951..cb0cb2b1701a9b17557cb6d97090db3743200e4c 100644 --- a/net/minecraft/world/entity/animal/Fox.java +++ b/net/minecraft/world/entity/animal/Fox.java @@ -1058,7 +1058,7 @@ public class Fox extends Animal { @@ -105,7 +105,7 @@ index 37b6bfa8dc1fd4ed0006f6531d2056bcd3c3abae..07767c9d649e7ef2b8fd8e3ac62d99ce if (blockState.is(Blocks.SWEET_BERRY_BUSH)) { this.pickSweetBerries(blockState); diff --git a/net/minecraft/world/entity/animal/Rabbit.java b/net/minecraft/world/entity/animal/Rabbit.java -index 5fc1d6ba3cb54f2ea8c6fe3f994ffea2cca5784b..39154b01e23c626cc29b587ae96c611062e5b791 100644 +index ec2620726f84a59312b03044b181ca436122d9bb..a2ba60d8858bb595319cce8e97c91638701176f9 100644 --- a/net/minecraft/world/entity/animal/Rabbit.java +++ b/net/minecraft/world/entity/animal/Rabbit.java @@ -648,7 +648,7 @@ public class Rabbit extends Animal { @@ -118,7 +118,7 @@ index 5fc1d6ba3cb54f2ea8c6fe3f994ffea2cca5784b..39154b01e23c626cc29b587ae96c6110 } diff --git a/net/minecraft/world/entity/animal/SnowGolem.java b/net/minecraft/world/entity/animal/SnowGolem.java -index 2350e5a0ba3d4c3782332a4ef51e2b0ef0b53f39..a747c4bd3a41025c6dc225e5d809ba03f57069f8 100644 +index 3204145fc93bbeaad203f845edb984895a6ff494..405710ff3bb9344041449711c0b8311b00e75728 100644 --- a/net/minecraft/world/entity/animal/SnowGolem.java +++ b/net/minecraft/world/entity/animal/SnowGolem.java @@ -136,7 +136,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM @@ -131,7 +131,7 @@ index 2350e5a0ba3d4c3782332a4ef51e2b0ef0b53f39..a747c4bd3a41025c6dc225e5d809ba03 } diff --git a/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -index 40c92ff02c22ef18b36f5d8677096dc82a60f1bb..6191a58d09fd0ca4625ecb90be78cce2049e4696 100644 +index 00ea1b2b62e422f8420dcd8a7fdf186474695ac7..51115b67b9236b8ef3f89907fea60b5d448edde7 100644 --- a/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java @@ -544,7 +544,7 @@ public class EnderDragon extends Mob implements Enemy { @@ -144,7 +144,7 @@ index 40c92ff02c22ef18b36f5d8677096dc82a60f1bb..6191a58d09fd0ca4625ecb90be78cce2 //flag1 = level.removeBlock(blockPos, false) || flag1; flag1 = true; diff --git a/net/minecraft/world/entity/boss/wither/WitherBoss.java b/net/minecraft/world/entity/boss/wither/WitherBoss.java -index f5aabc5d181881a1da96cff5da299c9d136aa1ec..068676a28b6aaca96b91769b1ab59fea1ec97866 100644 +index 3023c8e5b16b54a14abeb832f0a82456fa999707..b65af78ece66a60e36cc7aad1ad3cd10445223fa 100644 --- a/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/net/minecraft/world/entity/boss/wither/WitherBoss.java @@ -495,7 +495,7 @@ public class WitherBoss extends Monster implements RangedAttackMob { @@ -157,10 +157,10 @@ index f5aabc5d181881a1da96cff5da299c9d136aa1ec..068676a28b6aaca96b91769b1ab59fea int alternativeTarget = Mth.floor(this.getBbWidth() / 2.0F + 1.0F); int floor = Mth.floor(this.getBbHeight()); diff --git a/net/minecraft/world/entity/monster/EnderMan.java b/net/minecraft/world/entity/monster/EnderMan.java -index c83d7c43969a94432f6bec076f78fb500f672926..002fef87101e2c98c8a091d416cb4729bd092455 100644 +index 73e3b50ffa544f29267413c88bcf21af71d1ff4f..9a1271771008089a5b08792bfd4cdc18a4458469 100644 --- a/net/minecraft/world/entity/monster/EnderMan.java +++ b/net/minecraft/world/entity/monster/EnderMan.java -@@ -507,7 +507,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -513,7 +513,7 @@ public class EnderMan extends Monster implements NeutralMob { public boolean canUse() { if (!enderman.level().purpurConfig.endermanAllowGriefing) return false; // Purpur - Add enderman and creeper griefing controls return this.enderman.getCarriedBlock() != null @@ -169,7 +169,7 @@ index c83d7c43969a94432f6bec076f78fb500f672926..002fef87101e2c98c8a091d416cb4729 && this.enderman.getRandom().nextInt(reducedTickDelay(2000)) == 0; } -@@ -657,7 +657,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -663,7 +663,7 @@ public class EnderMan extends Monster implements NeutralMob { public boolean canUse() { if (!enderman.level().purpurConfig.endermanAllowGriefing) return false; // Purpur - Add enderman and creeper griefing controls return this.enderman.getCarriedBlock() == null @@ -227,10 +227,10 @@ index c200d57841304ba0d7a76fdd9a440fe9f2b25136..6f4aaeb645d9638764c3516d2f150166 continue; } diff --git a/net/minecraft/world/entity/monster/piglin/Piglin.java b/net/minecraft/world/entity/monster/piglin/Piglin.java -index a86cd2da7d0467e5b7d79ec2daceb65c86750445..c600c9b1ea4fe08abdce0aed30f61ef073039c7c 100644 +index b8f994025c0511169174154a077d9e34eac2443a..033e619f91fe3010a8056974d812351494c65f72 100644 --- a/net/minecraft/world/entity/monster/piglin/Piglin.java +++ b/net/minecraft/world/entity/monster/piglin/Piglin.java -@@ -450,7 +450,7 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento +@@ -438,7 +438,7 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento @Override public boolean wantsToPickUp(ServerLevel level, ItemStack stack) { @@ -268,10 +268,10 @@ index dd0ec97ea4561d2dccf735580faf0d65d6ac4b0d..779879f8d678a5e45e2752e6e033cc35 org.bukkit.event.entity.ExplosionPrimeEvent event = new org.bukkit.event.entity.ExplosionPrimeEvent((org.bukkit.entity.Explosive) this.getBukkitEntity()); if (event.callEvent()) { diff --git a/net/minecraft/world/entity/projectile/Projectile.java b/net/minecraft/world/entity/projectile/Projectile.java -index dae6619f4670c6f68dae7e4b10b0b6a8bbe6dc2e..44166e077009ef0bdab95ed2df7c8252bf6bb87f 100644 +index 90c0e0a7574529846500e98494246974e836ad9a..0429da7bb95751673b608f5c63a997b09a47fe41 100644 --- a/net/minecraft/world/entity/projectile/Projectile.java +++ b/net/minecraft/world/entity/projectile/Projectile.java -@@ -436,7 +436,7 @@ public abstract class Projectile extends Entity implements TraceableEntity { +@@ -430,7 +430,7 @@ public abstract class Projectile extends Entity implements TraceableEntity { @Override public boolean mayInteract(ServerLevel level, BlockPos pos) { Entity owner = this.getOwner(); @@ -281,7 +281,7 @@ index dae6619f4670c6f68dae7e4b10b0b6a8bbe6dc2e..44166e077009ef0bdab95ed2df7c8252 public boolean mayBreak(ServerLevel level) { diff --git a/net/minecraft/world/entity/projectile/SmallFireball.java b/net/minecraft/world/entity/projectile/SmallFireball.java -index 8c84cea43fc0e42a576004663670977eac99f1a6..6a0ec832226894687b28f35e1a8a190ba1542201 100644 +index d0d54c67542544fd412d191bd4d4a83a1a629078..5f3b0435e4d1fbf27937887d0ef80c93fff87016 100644 --- a/net/minecraft/world/entity/projectile/SmallFireball.java +++ b/net/minecraft/world/entity/projectile/SmallFireball.java @@ -25,7 +25,7 @@ public class SmallFireball extends Fireball { @@ -307,10 +307,10 @@ index a495789b2d21fa9a24d5dca4ecfa196ddce49466..2254493c889b8967011c09dc448ba375 return true; } else if (this.mob.getCurrentRaid().isOver()) { diff --git a/net/minecraft/world/level/GameRules.java b/net/minecraft/world/level/GameRules.java -index d5536dd40a1e9a2e05967652f690abbbca287852..d510503a8ad272255aeba20a916642828023fd19 100644 +index 5b148c977efad9f312acfc0304356f70a6cb1170..0c825a849e7be4a682d59d9e12a57abe8a897c8d 100644 --- a/net/minecraft/world/level/GameRules.java +++ b/net/minecraft/world/level/GameRules.java -@@ -354,6 +354,13 @@ public class GameRules { +@@ -369,6 +369,13 @@ public class GameRules { this.getRule(key).setFrom(rule, level); // CraftBukkit - per-world } @@ -351,10 +351,10 @@ index 9883e6d1a1b76155c8ba1817fda6615b4742e18e..dc1ad33f801c308871931d271f97ff91 // CraftBukkit start - Interact soil org.bukkit.event.Cancellable cancellable; diff --git a/net/minecraft/world/level/block/PowderSnowBlock.java b/net/minecraft/world/level/block/PowderSnowBlock.java -index a9b0e6c4dbccfc4f2ca31e0ff67bc7fb3ec4bef2..46a2726c3aa50d48eca8702cfde4ac87e2cfae82 100644 +index 90e613b28e0f293f3cb09ba93e41589de5b54fe3..03ec0eeca0f6e18e91918142a43d857412642f8a 100644 --- a/net/minecraft/world/level/block/PowderSnowBlock.java +++ b/net/minecraft/world/level/block/PowderSnowBlock.java -@@ -94,7 +94,7 @@ public class PowderSnowBlock extends Block implements BucketPickup { +@@ -96,7 +96,7 @@ public class PowderSnowBlock extends Block implements BucketPickup { // CraftBukkit - move down && entity1.mayInteract(serverLevel, blockPos)) { // CraftBukkit start @@ -364,7 +364,7 @@ index a9b0e6c4dbccfc4f2ca31e0ff67bc7fb3ec4bef2..46a2726c3aa50d48eca8702cfde4ac87 } // CraftBukkit end diff --git a/net/minecraft/world/level/block/TurtleEggBlock.java b/net/minecraft/world/level/block/TurtleEggBlock.java -index a23626dbfacf98ef1bc7918ca35406fa71307bed..41e51cb4f1a2443361b52c8523688e2c307a1d75 100644 +index 00554972f51d1758f0d81364bdc13901fcdb1052..91e43cbb8bf5faf2677b170f6884fb2b4e74ca86 100644 --- a/net/minecraft/world/level/block/TurtleEggBlock.java +++ b/net/minecraft/world/level/block/TurtleEggBlock.java @@ -214,7 +214,7 @@ public class TurtleEggBlock extends Block { diff --git a/purpur-server/minecraft-patches/unapplied-features/0016-Add-EntityTeleportHinderedEvent.patch b/purpur-server/minecraft-patches/features/0016-Add-EntityTeleportHinderedEvent.patch similarity index 94% rename from purpur-server/minecraft-patches/unapplied-features/0016-Add-EntityTeleportHinderedEvent.patch rename to purpur-server/minecraft-patches/features/0016-Add-EntityTeleportHinderedEvent.patch index 38ee57b2c..58316bace 100644 --- a/purpur-server/minecraft-patches/unapplied-features/0016-Add-EntityTeleportHinderedEvent.patch +++ b/purpur-server/minecraft-patches/features/0016-Add-EntityTeleportHinderedEvent.patch @@ -17,7 +17,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . diff --git a/net/minecraft/world/level/block/EndGatewayBlock.java b/net/minecraft/world/level/block/EndGatewayBlock.java -index 68914268ca9350a6c1d794e011e1f9a8aecd609c..8e53b45dbf740de6c6fe499ef424d11b2b15f9d8 100644 +index c70401544b4764518e62e42e3284ea185e4d997d..27e929b69db5b625fb566ec69162b7d3d482f9ab 100644 --- a/net/minecraft/world/level/block/EndGatewayBlock.java +++ b/net/minecraft/world/level/block/EndGatewayBlock.java @@ -99,6 +99,13 @@ public class EndGatewayBlock extends BaseEntityBlock implements Portal { @@ -35,10 +35,10 @@ index 68914268ca9350a6c1d794e011e1f9a8aecd609c..8e53b45dbf740de6c6fe499ef424d11b TheEndGatewayBlockEntity.triggerCooldown(level, pos, state, theEndGatewayBlockEntity); } diff --git a/net/minecraft/world/level/block/EndPortalBlock.java b/net/minecraft/world/level/block/EndPortalBlock.java -index f6c64277c3d6e16250e2bf963b6427404e27aa9b..997831c2b916899da8518c1415233812e6ec16b8 100644 +index cbd8c06f5bf4319dd2470c289442237c465cff57..3edc2b4a195103f617a8d211a96cfb1cfa5ab9db 100644 --- a/net/minecraft/world/level/block/EndPortalBlock.java +++ b/net/minecraft/world/level/block/EndPortalBlock.java -@@ -60,6 +60,13 @@ public class EndPortalBlock extends BaseEntityBlock implements Portal { +@@ -61,6 +61,13 @@ public class EndPortalBlock extends BaseEntityBlock implements Portal { protected void entityInside(BlockState state, Level level, BlockPos pos, Entity entity, InsideBlockEffectApplier effectApplier) { if (!new io.papermc.paper.event.entity.EntityInsideBlockEvent(entity.getBukkitEntity(), org.bukkit.craftbukkit.block.CraftBlock.at(level, pos)).callEvent()) { return; } // Paper - Add EntityInsideBlockEvent if (entity.canUsePortal(false)) { @@ -53,7 +53,7 @@ index f6c64277c3d6e16250e2bf963b6427404e27aa9b..997831c2b916899da8518c1415233812 org.bukkit.event.entity.EntityPortalEnterEvent event = new org.bukkit.event.entity.EntityPortalEnterEvent(entity.getBukkitEntity(), org.bukkit.craftbukkit.util.CraftLocation.toBukkit(pos, level), org.bukkit.PortalType.ENDER); // Paper - add portal type level.getCraftServer().getPluginManager().callEvent(event); diff --git a/net/minecraft/world/level/block/NetherPortalBlock.java b/net/minecraft/world/level/block/NetherPortalBlock.java -index f408bdd8083210b2ef660e6194610462a3e113b6..44707c0bf2c11f7bf7e30f747357ca2a1c6057d6 100644 +index a9eda5185b9cb9fe81c6fe0e494b9266b0bef585..47b422f4901ea305b7211721a5e54bcd646a112f 100644 --- a/net/minecraft/world/level/block/NetherPortalBlock.java +++ b/net/minecraft/world/level/block/NetherPortalBlock.java @@ -113,6 +113,13 @@ public class NetherPortalBlock extends Block implements Portal { diff --git a/purpur-server/minecraft-patches/unapplied-features/0017-Toggle-for-water-sensitive-mob-damage.patch b/purpur-server/minecraft-patches/features/0017-Toggle-for-water-sensitive-mob-damage.patch similarity index 90% rename from purpur-server/minecraft-patches/unapplied-features/0017-Toggle-for-water-sensitive-mob-damage.patch rename to purpur-server/minecraft-patches/features/0017-Toggle-for-water-sensitive-mob-damage.patch index 2cd1c61e7..188bc1bff 100644 --- a/purpur-server/minecraft-patches/unapplied-features/0017-Toggle-for-water-sensitive-mob-damage.patch +++ b/purpur-server/minecraft-patches/features/0017-Toggle-for-water-sensitive-mob-damage.patch @@ -23,7 +23,7 @@ index 1896f91e10a5e17332836d5354813a18a4dfe6dc..1c446cec71aa163374ab9832c961a6b4 protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/net/minecraft/world/entity/ambient/Bat.java b/net/minecraft/world/entity/ambient/Bat.java -index d25da9a9560ce171df3ada22756e4c54a91ff378..2d2b44f2617732bcdfd969454f80b9ad4af470a1 100644 +index c817947dcba66004216ac8f3b2cdd1e940ee6d03..eac9b5bcb5cfaa1fe4d1944a0e192a9e86f6f0d3 100644 --- a/net/minecraft/world/entity/ambient/Bat.java +++ b/net/minecraft/world/entity/ambient/Bat.java @@ -111,6 +111,13 @@ public class Bat extends AmbientCreature { @@ -41,10 +41,10 @@ index d25da9a9560ce171df3ada22756e4c54a91ff378..2d2b44f2617732bcdfd969454f80b9ad public boolean isFlapping() { return !this.isResting() && this.tickCount % 10.0F == 0.0F; diff --git a/net/minecraft/world/entity/animal/Bee.java b/net/minecraft/world/entity/animal/Bee.java -index 11a7cbb1781e396ecb2b9fdbad7af2c55ea2606a..31a9451417272ec5bb6a6cbc3ec308f6c5cd057f 100644 +index a5e0edd6da8675643f3a4d63199e8cd865a6d836..57e465cea9da02af055ab99bd3ff41cc13939d47 100644 --- a/net/minecraft/world/entity/animal/Bee.java +++ b/net/minecraft/world/entity/animal/Bee.java -@@ -182,7 +182,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -184,7 +184,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { // Paper end - Fix MC-167279 this.lookControl = new Bee.BeeLookControl(this); this.setPathfindingMalus(PathType.DANGER_FIRE, -1.0F); @@ -53,7 +53,7 @@ index 11a7cbb1781e396ecb2b9fdbad7af2c55ea2606a..31a9451417272ec5bb6a6cbc3ec308f6 this.setPathfindingMalus(PathType.WATER_BORDER, 16.0F); this.setPathfindingMalus(PathType.COCOA, -1.0F); this.setPathfindingMalus(PathType.FENCE, -1.0F); -@@ -488,6 +488,13 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -490,6 +490,13 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { } // Purpur end - Make entity breeding times configurable @@ -140,7 +140,7 @@ index 753ed26cc6bfc8276d4405091b78b0e50182b84a..d584ffe3cc8dfb5fd4ce352b1da18af6 protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/animal/Dolphin.java b/net/minecraft/world/entity/animal/Dolphin.java -index c8ed91c1902261d6b15744e1fbe1bf7f861b51a8..cff87e0047167751d9b4672a0caae642f15426a9 100644 +index 03313754022b5ec682efef68e5d56a59ee2e8b92..e6df7495a8c4e36ec7d0921a7dcccc16a9cb7916 100644 --- a/net/minecraft/world/entity/animal/Dolphin.java +++ b/net/minecraft/world/entity/animal/Dolphin.java @@ -159,6 +159,13 @@ public class Dolphin extends AgeableWaterCreature { @@ -158,7 +158,7 @@ index c8ed91c1902261d6b15744e1fbe1bf7f861b51a8..cff87e0047167751d9b4672a0caae642 @Override public SpawnGroupData finalizeSpawn( diff --git a/net/minecraft/world/entity/animal/Fox.java b/net/minecraft/world/entity/animal/Fox.java -index 07767c9d649e7ef2b8fd8e3ac62d99ce13271fe4..23e119ce82c3a0541b40249b20f133e39fac6858 100644 +index cb0cb2b1701a9b17557cb6d97090db3743200e4c..15e5ebdf0446ccf4e380fe910a288d3bbf048549 100644 --- a/net/minecraft/world/entity/animal/Fox.java +++ b/net/minecraft/world/entity/animal/Fox.java @@ -195,6 +195,13 @@ public class Fox extends Animal { @@ -176,10 +176,10 @@ index 07767c9d649e7ef2b8fd8e3ac62d99ce13271fe4..23e119ce82c3a0541b40249b20f133e3 protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/animal/HappyGhast.java b/net/minecraft/world/entity/animal/HappyGhast.java -index 9b101015f7add4821fb863255294ba2171f5405f..57d691d4bdb63d20ee582f28c475b5eaca128269 100644 +index 95dd6d0aa45330fb09e430d920ab92411ea8926e..f15dcbd16f910f191f1e4ce8bda857476cc94fee 100644 --- a/net/minecraft/world/entity/animal/HappyGhast.java +++ b/net/minecraft/world/entity/animal/HappyGhast.java -@@ -153,6 +153,13 @@ public class HappyGhast extends Animal { +@@ -152,6 +152,13 @@ public class HappyGhast extends Animal { } // Purpur end - Make entity breeding times configurable @@ -194,7 +194,7 @@ index 9b101015f7add4821fb863255294ba2171f5405f..57d691d4bdb63d20ee582f28c475b5ea protected void ageBoundaryReached() { if (this.isBaby()) { diff --git a/net/minecraft/world/entity/animal/IronGolem.java b/net/minecraft/world/entity/animal/IronGolem.java -index 1cb7e0985a59e83f118d4656e94a79f4d81836ff..006df1758bdaeb55a7db938afd9e00c575a62e60 100644 +index 1148a5dcd5eef8e961df5388dbdd49769508007d..e58fb3cbb71693d8556bace35d6e57ea9e455d80 100644 --- a/net/minecraft/world/entity/animal/IronGolem.java +++ b/net/minecraft/world/entity/animal/IronGolem.java @@ -100,6 +100,13 @@ public class IronGolem extends AbstractGolem implements NeutralMob { @@ -212,10 +212,10 @@ index 1cb7e0985a59e83f118d4656e94a79f4d81836ff..006df1758bdaeb55a7db938afd9e00c5 protected void registerGoals() { if (this.level().purpurConfig.ironGolemPoppyCalm) this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.ReceiveFlower(this)); // Purpur - Iron golem calm anger options diff --git a/net/minecraft/world/entity/animal/MushroomCow.java b/net/minecraft/world/entity/animal/MushroomCow.java -index 3e4cb7680e6082ebab95e2b8307eedb0d3fcfbcd..298cd49b28b5efb0f6401c19fc083a3714cb9aeb 100644 +index 5bca000fc9b8ba992e5285ef34b96b5fbcaae0da..270563334fcb1b2124e5721ce0d443ac8d712080 100644 --- a/net/minecraft/world/entity/animal/MushroomCow.java +++ b/net/minecraft/world/entity/animal/MushroomCow.java -@@ -93,6 +93,13 @@ public class MushroomCow extends AbstractCow implements Shearable { +@@ -94,6 +94,13 @@ public class MushroomCow extends AbstractCow implements Shearable { } // Purpur end - Make entity breeding times configurable @@ -230,7 +230,7 @@ index 3e4cb7680e6082ebab95e2b8307eedb0d3fcfbcd..298cd49b28b5efb0f6401c19fc083a37 public float getWalkTargetValue(BlockPos pos, LevelReader level) { return level.getBlockState(pos.below()).is(Blocks.MYCELIUM) ? 10.0F : level.getPathfindingCostFromLightLevels(pos); diff --git a/net/minecraft/world/entity/animal/Ocelot.java b/net/minecraft/world/entity/animal/Ocelot.java -index c4ed3f906d4b47c07915afd07db7a731e99b7215..d92af280d85856d57f3031dfaf7c644cbfc18f15 100644 +index bc81c68fda213f3d64be5f480ae87264c581a52a..4810b6cd45d27da3c601d1eb4d3377572f1a61dc 100644 --- a/net/minecraft/world/entity/animal/Ocelot.java +++ b/net/minecraft/world/entity/animal/Ocelot.java @@ -96,6 +96,13 @@ public class Ocelot extends Animal { @@ -248,7 +248,7 @@ index c4ed3f906d4b47c07915afd07db7a731e99b7215..d92af280d85856d57f3031dfaf7c644c return this.entityData.get(DATA_TRUSTING); } diff --git a/net/minecraft/world/entity/animal/Panda.java b/net/minecraft/world/entity/animal/Panda.java -index c7686698a9615a51c653658cf6a46ccfb9c4d168..4678f432b6a8f74bbd121aee41f1b093888946f7 100644 +index 83110d64ab7fd9b30a9fee1c5240c3de11c2514a..5fde42f9e86adc5872a10eb864a38f5bae171c10 100644 --- a/net/minecraft/world/entity/animal/Panda.java +++ b/net/minecraft/world/entity/animal/Panda.java @@ -149,6 +149,13 @@ public class Panda extends Animal { @@ -266,7 +266,7 @@ index c7686698a9615a51c653658cf6a46ccfb9c4d168..4678f432b6a8f74bbd121aee41f1b093 protected boolean canDispenserEquipIntoSlot(EquipmentSlot slot) { return slot == EquipmentSlot.MAINHAND && this.canPickUpLoot(); diff --git a/net/minecraft/world/entity/animal/Parrot.java b/net/minecraft/world/entity/animal/Parrot.java -index 6019406d7c7e51c53d8822e44070e626091495af..92f43418e5b21eb2a323a12649a96e0f62764618 100644 +index 35afe8dc9fb3ad6e9103f4fb60742ad70d933f85..861739ca43e0212ab9ad4037693b729bd69fbb0b 100644 --- a/net/minecraft/world/entity/animal/Parrot.java +++ b/net/minecraft/world/entity/animal/Parrot.java @@ -208,6 +208,13 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { @@ -284,7 +284,7 @@ index 6019406d7c7e51c53d8822e44070e626091495af..92f43418e5b21eb2a323a12649a96e0f @Override public SpawnGroupData finalizeSpawn( diff --git a/net/minecraft/world/entity/animal/Pig.java b/net/minecraft/world/entity/animal/Pig.java -index 885135fb301eeb6149aa53d581b4073d3724264d..6f318222011e3bc57c4f0b92c0fba1f410a1d65e 100644 +index 50d20169b0a8ccc78e8573d26663e800f70a9f66..5ea66e3eb813c961d4275657a69300bc3953b1bc 100644 --- a/net/minecraft/world/entity/animal/Pig.java +++ b/net/minecraft/world/entity/animal/Pig.java @@ -98,6 +98,13 @@ public class Pig extends Animal implements ItemSteerable { @@ -302,7 +302,7 @@ index 885135fb301eeb6149aa53d581b4073d3724264d..6f318222011e3bc57c4f0b92c0fba1f4 protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/net/minecraft/world/entity/animal/PolarBear.java b/net/minecraft/world/entity/animal/PolarBear.java -index e39ca22a871c911defdbfe1cb0f1b15cde8d4612..a800acb671a18287f1407bd293a433f1fe039ce5 100644 +index 63fae10cea012f6f00a52d375e39b64538f88208..e69acaf3e99e298535ba9a39a6389f4ca5d304aa 100644 --- a/net/minecraft/world/entity/animal/PolarBear.java +++ b/net/minecraft/world/entity/animal/PolarBear.java @@ -132,6 +132,13 @@ public class PolarBear extends Animal implements NeutralMob { @@ -320,7 +320,7 @@ index e39ca22a871c911defdbfe1cb0f1b15cde8d4612..a800acb671a18287f1407bd293a433f1 @Override public AgeableMob getBreedOffspring(ServerLevel level, AgeableMob otherParent) { diff --git a/net/minecraft/world/entity/animal/Pufferfish.java b/net/minecraft/world/entity/animal/Pufferfish.java -index dbdb7f71464ccd06a04a47ace24a86e6854409fc..a9219906038a24831b3d1e6851af4225b60616c3 100644 +index 9c9e0fb36d7a2e4f644314008c8dc6bdbeb42bcf..d91560b021775dd29f1f099f4a9df8af0e7b8d4c 100644 --- a/net/minecraft/world/entity/animal/Pufferfish.java +++ b/net/minecraft/world/entity/animal/Pufferfish.java @@ -66,6 +66,13 @@ public class Pufferfish extends AbstractFish { @@ -338,7 +338,7 @@ index dbdb7f71464ccd06a04a47ace24a86e6854409fc..a9219906038a24831b3d1e6851af4225 protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/animal/Rabbit.java b/net/minecraft/world/entity/animal/Rabbit.java -index 39154b01e23c626cc29b587ae96c611062e5b791..dcbbe3406cf481e2e1d5c4cc6baaa5ac564b1ad1 100644 +index a2ba60d8858bb595319cce8e97c91638701176f9..f773595560a59724c13a0f9e9cbe0a4d5b442313 100644 --- a/net/minecraft/world/entity/animal/Rabbit.java +++ b/net/minecraft/world/entity/animal/Rabbit.java @@ -160,6 +160,13 @@ public class Rabbit extends Animal { @@ -374,7 +374,7 @@ index e426b3280b519a3cd727b200794324361c62b67e..3c517936aee31fcf246787c033688870 public int getMaxSchoolSize() { return 5; diff --git a/net/minecraft/world/entity/animal/SnowGolem.java b/net/minecraft/world/entity/animal/SnowGolem.java -index a747c4bd3a41025c6dc225e5d809ba03f57069f8..8917b3d2d75dc1a0ddf1b6dd64267f69506e80dc 100644 +index 405710ff3bb9344041449711c0b8311b00e75728..448946f352e394b4c5e84914c583c26c0bd390c3 100644 --- a/net/minecraft/world/entity/animal/SnowGolem.java +++ b/net/minecraft/world/entity/animal/SnowGolem.java @@ -125,7 +125,7 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM @@ -387,7 +387,7 @@ index a747c4bd3a41025c6dc225e5d809ba03f57069f8..8917b3d2d75dc1a0ddf1b6dd64267f69 @Override diff --git a/net/minecraft/world/entity/animal/Squid.java b/net/minecraft/world/entity/animal/Squid.java -index 2a0dc779ec2a53a4feb4d2d665cf9d820113ba04..2108cbddc9a880347ff36fc4ce8b56e8215b9eac 100644 +index 559a483e39f9da5c6c1131b5af61b594b5d3e7e8..c752eec4ed181eb4fa5c8b382764f2f544719f23 100644 --- a/net/minecraft/world/entity/animal/Squid.java +++ b/net/minecraft/world/entity/animal/Squid.java @@ -99,6 +99,13 @@ public class Squid extends AgeableWaterCreature { @@ -423,7 +423,7 @@ index c102db5ffdfc7dcb0ec7e59fb031fe6afcdd8237..4510798913f94474b16ab6cbfa32dc0f return "entity.minecraft.tropical_fish.predefined." + variantId; } diff --git a/net/minecraft/world/entity/animal/Turtle.java b/net/minecraft/world/entity/animal/Turtle.java -index f5735e5bcc34b78db544aa8971234bc86e0ddfa9..3c2ded73af16360474fb0410456e94746393ca0e 100644 +index 966f21d90996a9c162e3f60ff53edb53507645b3..6a52e549257582d09af824f4067c91130f35cf8a 100644 --- a/net/minecraft/world/entity/animal/Turtle.java +++ b/net/minecraft/world/entity/animal/Turtle.java @@ -118,6 +118,13 @@ public class Turtle extends Animal { @@ -441,10 +441,10 @@ index f5735e5bcc34b78db544aa8971234bc86e0ddfa9..3c2ded73af16360474fb0410456e9474 this.homePos = homePos; } diff --git a/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/net/minecraft/world/entity/animal/axolotl/Axolotl.java -index e32a78cb9574505d78f3e298a38a28a2422d34b3..f364117decd00f00ae0dc729addb5a35008b6ca5 100644 +index a56ff850de466a592855a9bf2bc395c2e4b97c17..ac56f22dc069ec7c4832024083b242f965c51c58 100644 --- a/net/minecraft/world/entity/animal/axolotl/Axolotl.java +++ b/net/minecraft/world/entity/animal/axolotl/Axolotl.java -@@ -154,6 +154,13 @@ public class Axolotl extends Animal implements Bucketable { +@@ -153,6 +153,13 @@ public class Axolotl extends Animal implements Bucketable { } // Purpur end - Make entity breeding times configurable @@ -459,10 +459,10 @@ index e32a78cb9574505d78f3e298a38a28a2422d34b3..f364117decd00f00ae0dc729addb5a35 public float getWalkTargetValue(BlockPos pos, LevelReader level) { return 0.0F; diff --git a/net/minecraft/world/entity/animal/goat/Goat.java b/net/minecraft/world/entity/animal/goat/Goat.java -index 8da2cdf5a308b4c1359f94127934ee90e9cef558..952d9f5c2bb2e869df475a78b04be10e7541829e 100644 +index 52d35093b9fc84e27b4c4e62883a7e581e8c0f5b..c6a03e6f223010dbcf56719197f2dcc62916649b 100644 --- a/net/minecraft/world/entity/animal/goat/Goat.java +++ b/net/minecraft/world/entity/animal/goat/Goat.java -@@ -139,6 +139,13 @@ public class Goat extends Animal { +@@ -138,6 +138,13 @@ public class Goat extends Animal { } // Purpur end - Make entity breeding times configurable @@ -513,7 +513,7 @@ index 3678c767818abb9e4180c2ade378ca09761ad784..2928159447a87ea8cc945e73e2e81ad1 protected void randomizeAttributes(RandomSource random) { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(generateMaxHealth(random::nextInt)); diff --git a/net/minecraft/world/entity/animal/horse/Llama.java b/net/minecraft/world/entity/animal/horse/Llama.java -index 45d0977b5016a8728b11ec13c528b160598c80e2..ea25c48cb60aff6fbc82a364789beff92b054a88 100644 +index d6ae23d48dacb3f445465daf755e6fe7ad8c9c70..9a16450170734e4c47bbc91d764b889765e473f0 100644 --- a/net/minecraft/world/entity/animal/horse/Llama.java +++ b/net/minecraft/world/entity/animal/horse/Llama.java @@ -161,6 +161,13 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { @@ -567,7 +567,7 @@ index 042b73f0807438327ebf4a2fd3a9d54d52159511..cff709a28830a842a499f7dfe3b8bc0b return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 15.0).add(Attributes.MOVEMENT_SPEED, 0.2F); } diff --git a/net/minecraft/world/entity/animal/horse/TraderLlama.java b/net/minecraft/world/entity/animal/horse/TraderLlama.java -index b36064e58ecc1512fed2d53c20bde333a405e8b0..81e902ba31b55722f4d257e918b56fa654083916 100644 +index 09769f47dc2849ee9eeb60b3c4edb7536a5cf87d..3222b0439a4c3cabab8f5648b71df2c215e335ff 100644 --- a/net/minecraft/world/entity/animal/horse/TraderLlama.java +++ b/net/minecraft/world/entity/animal/horse/TraderLlama.java @@ -77,6 +77,13 @@ public class TraderLlama extends Llama { @@ -603,7 +603,7 @@ index 69b9ae449e58f13bf0950fdfe3f89742af89956e..e78fac0a5e37d53afbc200f015adab60 return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 15.0).add(Attributes.MOVEMENT_SPEED, 0.2F); } diff --git a/net/minecraft/world/entity/animal/sheep/Sheep.java b/net/minecraft/world/entity/animal/sheep/Sheep.java -index 1fee6d36abe42ff9998287c47d0f498bbba910e3..8394453415a0d098de6176662f97df2174a83697 100644 +index eca2b9e1b92ba626eb6203dbc5678976f43bdc29..fe5bbf00e02efa8ff71014d2b334ad1f6cd4052f 100644 --- a/net/minecraft/world/entity/animal/sheep/Sheep.java +++ b/net/minecraft/world/entity/animal/sheep/Sheep.java @@ -94,6 +94,13 @@ public class Sheep extends Animal implements Shearable { @@ -621,7 +621,7 @@ index 1fee6d36abe42ff9998287c47d0f498bbba910e3..8394453415a0d098de6176662f97df21 protected void registerGoals() { this.eatBlockGoal = new EatBlockGoal(this); diff --git a/net/minecraft/world/entity/animal/wolf/Wolf.java b/net/minecraft/world/entity/animal/wolf/Wolf.java -index 372360baedbe4f8b59e94c261bc60346ba3cfbbe..d492c6bcbc45e312a5ee2d3567a26853b514d027 100644 +index c8966878b861ba8ecf1be1ca830742d2b4e76864..9c76157edc1ee7a15498e8759b5c2f71be3b0b51 100644 --- a/net/minecraft/world/entity/animal/wolf/Wolf.java +++ b/net/minecraft/world/entity/animal/wolf/Wolf.java @@ -223,6 +223,13 @@ public class Wolf extends TamableAnimal implements NeutralMob { @@ -639,7 +639,7 @@ index 372360baedbe4f8b59e94c261bc60346ba3cfbbe..d492c6bcbc45e312a5ee2d3567a26853 protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -index 6191a58d09fd0ca4625ecb90be78cce2049e4696..de09a91b89661118e460842453e33f383ea08a94 100644 +index 51115b67b9236b8ef3f89907fea60b5d448edde7..52a84b1d354201fc6496dd937be091c1750eba33 100644 --- a/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java @@ -172,6 +172,13 @@ public class EnderDragon extends Mob implements Enemy { @@ -657,7 +657,7 @@ index 6191a58d09fd0ca4625ecb90be78cce2049e4696..de09a91b89661118e460842453e33f38 return Mob.createMobAttributes().add(Attributes.MAX_HEALTH, 200.0).add(Attributes.CAMERA_DISTANCE, 16.0); } diff --git a/net/minecraft/world/entity/boss/wither/WitherBoss.java b/net/minecraft/world/entity/boss/wither/WitherBoss.java -index 72a7fde24a132f986318c9730aad9e4cefc70fdb..d4e4aa98e2259aa7f5dbce1585257a4e24b4782f 100644 +index b65af78ece66a60e36cc7aad1ad3cd10445223fa..d38a004d1192e967dfc82d858257fbfc4586df37 100644 --- a/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/net/minecraft/world/entity/boss/wither/WitherBoss.java @@ -221,6 +221,13 @@ public class WitherBoss extends Monster implements RangedAttackMob { @@ -675,7 +675,7 @@ index 72a7fde24a132f986318c9730aad9e4cefc70fdb..d4e4aa98e2259aa7f5dbce1585257a4e protected PathNavigation createNavigation(Level level) { FlyingPathNavigation flyingPathNavigation = new FlyingPathNavigation(this, level); diff --git a/net/minecraft/world/entity/monster/Blaze.java b/net/minecraft/world/entity/monster/Blaze.java -index 1636e2809701013a18700ac17807fe7ecf191aa5..2bd645e163ca7b118beec5194e5c0b00e6dff563 100644 +index 14e2fe8d0d21464c946af9949ba3a77e31f22d23..e43d6fabcaffca05ee93878ee28ac9df0bb5789f 100644 --- a/net/minecraft/world/entity/monster/Blaze.java +++ b/net/minecraft/world/entity/monster/Blaze.java @@ -34,7 +34,7 @@ public class Blaze extends Monster { @@ -715,10 +715,10 @@ index 64eecd8d1acd318743800c1daa77cd97097a0f7c..420fe0d01d0b173a6a541f77e1aaca3f public boolean doHurtTarget(ServerLevel level, Entity source) { if (super.doHurtTarget(level, source)) { diff --git a/net/minecraft/world/entity/monster/Creeper.java b/net/minecraft/world/entity/monster/Creeper.java -index 60e420d79b73dd844bdae6c3846c6f4838fe2ca2..7ebce241a4195326bbecd158952f2ec559196ad3 100644 +index b7d33384ca236a902a7aa2004b16d545e5a58c9e..099ece4b4d0996fc26a5d42f81a42fcc63f22506 100644 --- a/net/minecraft/world/entity/monster/Creeper.java +++ b/net/minecraft/world/entity/monster/Creeper.java -@@ -265,6 +265,13 @@ public class Creeper extends Monster { +@@ -266,6 +266,13 @@ public class Creeper extends Monster { } // Purpur end - Config to make Creepers explode on death @@ -733,7 +733,7 @@ index 60e420d79b73dd844bdae6c3846c6f4838fe2ca2..7ebce241a4195326bbecd158952f2ec5 public SoundEvent getHurtSound(DamageSource damageSource) { return SoundEvents.CREEPER_HURT; diff --git a/net/minecraft/world/entity/monster/Drowned.java b/net/minecraft/world/entity/monster/Drowned.java -index ffd9e34b4d57bdafc597b2208f754c7454afd48a..6e8ae9aa0b5051b7fb303476e52ba2cc76c29c84 100644 +index ee13dd20af2730f3051f77fb0e73ce5c8253bd4a..33c45250277b2383f4ef1d740898ba02f22bcb26 100644 --- a/net/minecraft/world/entity/monster/Drowned.java +++ b/net/minecraft/world/entity/monster/Drowned.java @@ -123,6 +123,13 @@ public class Drowned extends Zombie implements RangedAttackMob { @@ -769,10 +769,10 @@ index 7ebc7224d3db38cc5137112d5a74999f6e23b8d5..287b6fea404d4f1f121219f92918dc2d return Guardian.createAttributes().add(Attributes.MOVEMENT_SPEED, 0.3F).add(Attributes.ATTACK_DAMAGE, 8.0).add(Attributes.MAX_HEALTH, 80.0); } diff --git a/net/minecraft/world/entity/monster/EnderMan.java b/net/minecraft/world/entity/monster/EnderMan.java -index 002fef87101e2c98c8a091d416cb4729bd092455..73d66dffa57b31e4d772438f6d2f23cfbbcfb281 100644 +index 9a1271771008089a5b08792bfd4cdc18a4458469..122c68cd0ad5a308600d7bbde15d246131d28546 100644 --- a/net/minecraft/world/entity/monster/EnderMan.java +++ b/net/minecraft/world/entity/monster/EnderMan.java -@@ -86,7 +86,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -87,7 +87,7 @@ public class EnderMan extends Monster implements NeutralMob { public EnderMan(EntityType entityType, Level level) { super(entityType, level); @@ -781,7 +781,7 @@ index 002fef87101e2c98c8a091d416cb4729bd092455..73d66dffa57b31e4d772438f6d2f23cf } // Purpur start - Ridables -@@ -281,7 +281,7 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -287,7 +287,7 @@ public class EnderMan extends Monster implements NeutralMob { @Override public boolean isSensitiveToWater() { @@ -791,7 +791,7 @@ index 002fef87101e2c98c8a091d416cb4729bd092455..73d66dffa57b31e4d772438f6d2f23cf @Override diff --git a/net/minecraft/world/entity/monster/Endermite.java b/net/minecraft/world/entity/monster/Endermite.java -index 2c3e44b82b396dd8e870f548f1d18d8f4b91ad1d..4565a592face29a077d96fc0cd52bceaed52f755 100644 +index 7e6cebeff52bb9252d55a191179b9bb82f4405bb..a1e848405acfa412d0555f051f4a2f28d933652c 100644 --- a/net/minecraft/world/entity/monster/Endermite.java +++ b/net/minecraft/world/entity/monster/Endermite.java @@ -72,6 +72,13 @@ public class Endermite extends Monster { @@ -827,7 +827,7 @@ index 4d1d746e39d136243dc620c89b29daf80dc62230..d77e3b0f36ec4a262ff375d9e2da9125 protected void registerGoals() { super.registerGoals(); diff --git a/net/minecraft/world/entity/monster/Ghast.java b/net/minecraft/world/entity/monster/Ghast.java -index 06333fe18ea71464d35584592f487c6ac572f0cd..07ea4f44d9fd32d5be5aae6c36b30806acc9db64 100644 +index bcd602714104043e67ed67446ea47dda33761e31..2ad7a35efbae5c4697413a48ff28a4c6f3c94a35 100644 --- a/net/minecraft/world/entity/monster/Ghast.java +++ b/net/minecraft/world/entity/monster/Ghast.java @@ -82,6 +82,13 @@ public class Ghast extends Mob implements Enemy { @@ -863,7 +863,7 @@ index f5565d314ded2145219debc446c7ddcb93b660e9..ccc2f7906c322a5406467986565074cb return Monster.createMonsterAttributes() .add(Attributes.MAX_HEALTH, 100.0) diff --git a/net/minecraft/world/entity/monster/Guardian.java b/net/minecraft/world/entity/monster/Guardian.java -index 2b03af6e0f378d855c42fa688d0cd2bc8480102b..9868117ecf0a3b36f81086297c639f6f274e0055 100644 +index 1106f170bbfd8ea5446246c9778039742356a222..0af004e822b6f474b8119626c542bd822bb21e45 100644 --- a/net/minecraft/world/entity/monster/Guardian.java +++ b/net/minecraft/world/entity/monster/Guardian.java @@ -98,6 +98,13 @@ public class Guardian extends Monster { @@ -881,10 +881,10 @@ index 2b03af6e0f378d855c42fa688d0cd2bc8480102b..9868117ecf0a3b36f81086297c639f6f protected void registerGoals() { MoveTowardsRestrictionGoal moveTowardsRestrictionGoal = new MoveTowardsRestrictionGoal(this, 1.0); diff --git a/net/minecraft/world/entity/monster/Husk.java b/net/minecraft/world/entity/monster/Husk.java -index 75cb1db5584c04e442583ab2f50a26132ed48bfb..9baec22561093d64157d93449e84c23b3f238b39 100644 +index 557b2d684936c15299d7082a92ec8b08e7fab9a5..d25baa1e1b03b38219c8851c1552f342543ba884 100644 --- a/net/minecraft/world/entity/monster/Husk.java +++ b/net/minecraft/world/entity/monster/Husk.java -@@ -67,6 +67,13 @@ public class Husk extends Zombie { +@@ -66,6 +66,13 @@ public class Husk extends Zombie { } // Purpur end - Configurable jockey options @@ -899,7 +899,7 @@ index 75cb1db5584c04e442583ab2f50a26132ed48bfb..9baec22561093d64157d93449e84c23b EntityType entityType, ServerLevelAccessor level, EntitySpawnReason spawnReason, BlockPos pos, RandomSource random ) { diff --git a/net/minecraft/world/entity/monster/Illusioner.java b/net/minecraft/world/entity/monster/Illusioner.java -index 6311261d71aa062ba497a73cd22cb5dbdf2a4cdb..4b68c0e999c37b3a3b62b522e2fcc805d2483943 100644 +index 753532aad0973230e1c7f4102ac55b243355c61e..ac31cd022f079561ca90ceb2a1c28a126efd255a 100644 --- a/net/minecraft/world/entity/monster/Illusioner.java +++ b/net/minecraft/world/entity/monster/Illusioner.java @@ -84,6 +84,13 @@ public class Illusioner extends SpellcasterIllager implements RangedAttackMob { @@ -935,7 +935,7 @@ index bb1364c4a220cc93f7ac01cbaa617561de4cd2e3..da90b7dc79aa6d01e88c1250fff662ba return Monster.createMonsterAttributes().add(Attributes.MOVEMENT_SPEED, 0.2F); } diff --git a/net/minecraft/world/entity/monster/Phantom.java b/net/minecraft/world/entity/monster/Phantom.java -index 5b2018019f6ec9e91357d46dd66865e2f232507a..67dc738faef3ab414bf791692090aaea3dbe7385 100644 +index bf2330068d43f52a9a21d73180ef5a83697444ea..e0193db5ce783b4ab2b8afaeaeffde8ac8bc8a71 100644 --- a/net/minecraft/world/entity/monster/Phantom.java +++ b/net/minecraft/world/entity/monster/Phantom.java @@ -129,6 +129,13 @@ public class Phantom extends Mob implements Enemy { @@ -989,7 +989,7 @@ index 23b6d3c9746e1ee641d8b19ec50805cb271a9cc9..d75df6de50f9830efeea826d0ebdac17 protected void registerGoals() { super.registerGoals(); diff --git a/net/minecraft/world/entity/monster/Shulker.java b/net/minecraft/world/entity/monster/Shulker.java -index 1782b1c8e03447d3d4e542f7066cb1af8acd8246..9f6b05671c973e1262cbd6673aac7f1d3a74e2e3 100644 +index dac39e2c1ed4422b466effb0acc9267454bdc2fb..219ae068c4c17b38424af39b0c08d9e1e35fb00d 100644 --- a/net/minecraft/world/entity/monster/Shulker.java +++ b/net/minecraft/world/entity/monster/Shulker.java @@ -134,6 +134,13 @@ public class Shulker extends AbstractGolem implements Enemy { @@ -1025,10 +1025,10 @@ index 6f4aaeb645d9638764c3516d2f1501661ac56170..51714029d4ea5033014dcefd25f74cc0 protected void registerGoals() { this.friendsGoal = new Silverfish.SilverfishWakeUpFriendsGoal(this); diff --git a/net/minecraft/world/entity/monster/Skeleton.java b/net/minecraft/world/entity/monster/Skeleton.java -index c19b76a1a0572cb52ee83769384cdb44e4cdf700..555ada78c81ce912bf8d57a9a094102804b372ef 100644 +index 430d9f67d76c5d4b8f0221ccbe6a8bc75dbbbbcf..cad46630ea1da0f77779f14a7882ae2f78700c51 100644 --- a/net/minecraft/world/entity/monster/Skeleton.java +++ b/net/minecraft/world/entity/monster/Skeleton.java -@@ -51,6 +51,13 @@ public class Skeleton extends AbstractSkeleton { +@@ -49,6 +49,13 @@ public class Skeleton extends AbstractSkeleton { } // Purpur end - Configurable entity base attributes @@ -1043,7 +1043,7 @@ index c19b76a1a0572cb52ee83769384cdb44e4cdf700..555ada78c81ce912bf8d57a9a0941028 protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/monster/Slime.java b/net/minecraft/world/entity/monster/Slime.java -index 38cdc67bd683b653eb76b1c70e5b493f08245fe6..29b500eb4c010ff83d8474f8ee5602c479243e19 100644 +index 6f6b6c47d003271a54fee53723cd09d435431be1..75a82b32c0efc1403dc9c875012739a417443c27 100644 --- a/net/minecraft/world/entity/monster/Slime.java +++ b/net/minecraft/world/entity/monster/Slime.java @@ -134,6 +134,13 @@ public class Slime extends Mob implements Enemy { @@ -1061,7 +1061,7 @@ index 38cdc67bd683b653eb76b1c70e5b493f08245fe6..29b500eb4c010ff83d8474f8ee5602c4 protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables diff --git a/net/minecraft/world/entity/monster/Spider.java b/net/minecraft/world/entity/monster/Spider.java -index c2bcf769a85a28616472b050cd09d3d6cc60e81f..e7bd63256979e41670772c3c5293c9a637593541 100644 +index 853752e66b2b9299b20d4a66dc73cf0db839d9e3..ed343a806be211299f03c46ed2214caed552f149 100644 --- a/net/minecraft/world/entity/monster/Spider.java +++ b/net/minecraft/world/entity/monster/Spider.java @@ -75,6 +75,13 @@ public class Spider extends Monster { @@ -1097,7 +1097,7 @@ index b5465b552c5aea7603a54cfdeafe451bfaf38bf2..e4ae604d4d0756edc9418634d9958338 EntityType entityType, ServerLevelAccessor level, EntitySpawnReason spawnReason, BlockPos pos, RandomSource random ) { diff --git a/net/minecraft/world/entity/monster/Strider.java b/net/minecraft/world/entity/monster/Strider.java -index 4e300141b0c7fa967e3d0b9ef952097efeb2bef6..533801988cb4f8a916ef002a179990ca913b2f32 100644 +index eb33b66fa3bc705552b6abf2d8e941e84cdda60e..d64ece808045016679b74c315ffd54b10eea47b9 100644 --- a/net/minecraft/world/entity/monster/Strider.java +++ b/net/minecraft/world/entity/monster/Strider.java @@ -86,7 +86,7 @@ public class Strider extends Animal implements ItemSteerable { @@ -1109,7 +1109,7 @@ index 4e300141b0c7fa967e3d0b9ef952097efeb2bef6..533801988cb4f8a916ef002a179990ca this.setPathfindingMalus(PathType.LAVA, 0.0F); this.setPathfindingMalus(PathType.DANGER_FIRE, 0.0F); this.setPathfindingMalus(PathType.DAMAGE_FIRE, 0.0F); -@@ -389,7 +389,7 @@ public class Strider extends Animal implements ItemSteerable { +@@ -390,7 +390,7 @@ public class Strider extends Animal implements ItemSteerable { @Override public boolean isSensitiveToWater() { @@ -1119,7 +1119,7 @@ index 4e300141b0c7fa967e3d0b9ef952097efeb2bef6..533801988cb4f8a916ef002a179990ca @Override diff --git a/net/minecraft/world/entity/monster/Vex.java b/net/minecraft/world/entity/monster/Vex.java -index 48e193182861d5e5b5364b226493c665957bcc2f..30bd8a1b75376e6c74847ec338cc7f8988d6ca8a 100644 +index a8d3d1aaaa62781824f3b3422030c87de884793d..39f7c6ab8aa0fb0e1b472205f4849b3b10c74d81 100644 --- a/net/minecraft/world/entity/monster/Vex.java +++ b/net/minecraft/world/entity/monster/Vex.java @@ -112,6 +112,13 @@ public class Vex extends Monster implements TraceableEntity { @@ -1155,7 +1155,7 @@ index 1f66c8d5194ee5b3794ea86a951ae553aa375422..28fc1cd1e8721e2a87b5aa610d27afa8 protected void registerGoals() { super.registerGoals(); diff --git a/net/minecraft/world/entity/monster/Witch.java b/net/minecraft/world/entity/monster/Witch.java -index 2ff6ae7e1c809fa6607cf4d8685ba9b8ac46064c..e90ac2c977555793ee8c25f04ec3c33b0332d312 100644 +index 620d529c0cf71e0c19b9ed6a02d173218a38abd4..5d32cbb46b5ac9833a2a16e828b7d1915a08f3f1 100644 --- a/net/minecraft/world/entity/monster/Witch.java +++ b/net/minecraft/world/entity/monster/Witch.java @@ -81,6 +81,13 @@ public class Witch extends Raider implements RangedAttackMob { @@ -1173,7 +1173,7 @@ index 2ff6ae7e1c809fa6607cf4d8685ba9b8ac46064c..e90ac2c977555793ee8c25f04ec3c33b protected void registerGoals() { super.registerGoals(); diff --git a/net/minecraft/world/entity/monster/WitherSkeleton.java b/net/minecraft/world/entity/monster/WitherSkeleton.java -index 213530a2378411db2bc597ba7e0bb68cfdb3ebc9..ef2a7fdc8abe05b7718b71e23556258aba392c75 100644 +index 96dc17a43c258fec424954606a7a43d490e870d6..29a2d1b25c8f04691d4e34fcb3256a4f0144829d 100644 --- a/net/minecraft/world/entity/monster/WitherSkeleton.java +++ b/net/minecraft/world/entity/monster/WitherSkeleton.java @@ -59,6 +59,13 @@ public class WitherSkeleton extends AbstractSkeleton { @@ -1191,10 +1191,10 @@ index 213530a2378411db2bc597ba7e0bb68cfdb3ebc9..ef2a7fdc8abe05b7718b71e23556258a protected void registerGoals() { this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractPiglin.class, true)); diff --git a/net/minecraft/world/entity/monster/Zoglin.java b/net/minecraft/world/entity/monster/Zoglin.java -index 5333aea53ff61eb6143138c4e44ad85977e524d5..ddc8de9a111395aa77025b809f176425be7bb30c 100644 +index f1d42c8ee4a23ba3485477632b51dd9bcf9db926..5ed357158eccc48b2d1e25e06c35b7436086e7c5 100644 --- a/net/minecraft/world/entity/monster/Zoglin.java +++ b/net/minecraft/world/entity/monster/Zoglin.java -@@ -112,6 +112,13 @@ public class Zoglin extends Monster implements HoglinBase { +@@ -111,6 +111,13 @@ public class Zoglin extends Monster implements HoglinBase { } // Purpur end - Configurable entity base attributes @@ -1209,7 +1209,7 @@ index 5333aea53ff61eb6143138c4e44ad85977e524d5..ddc8de9a111395aa77025b809f176425 protected Brain.Provider brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); diff --git a/net/minecraft/world/entity/monster/Zombie.java b/net/minecraft/world/entity/monster/Zombie.java -index ede9101c44ba53c5bd67254bea6fcff7f00b5b47..51cd12a8173d9f95c6a7c2503c3e0e4d40c427c5 100644 +index 604653d7748cc0f499071e04d396fef295bbdf9f..3c520bc7f53685d7a38238a35b0589aaf68e7906 100644 --- a/net/minecraft/world/entity/monster/Zombie.java +++ b/net/minecraft/world/entity/monster/Zombie.java @@ -142,6 +142,13 @@ public class Zombie extends Monster { @@ -1227,10 +1227,10 @@ index ede9101c44ba53c5bd67254bea6fcff7f00b5b47..51cd12a8173d9f95c6a7c2503c3e0e4d protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables diff --git a/net/minecraft/world/entity/monster/ZombieVillager.java b/net/minecraft/world/entity/monster/ZombieVillager.java -index 02b503453fb8b64cbf0b9db1e498566289c6bbe3..606fe4bd9c3359e42a025a866873e147ee16a40e 100644 +index 04748820e2c78a6d0faa6c4fb4901c7d8b2a8760..a75452d77c48a09e9cea2ca2e94745d02e618a12 100644 --- a/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/net/minecraft/world/entity/monster/ZombieVillager.java -@@ -122,6 +122,13 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { +@@ -119,6 +119,13 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { } // Purpur end - Configurable jockey options @@ -1245,7 +1245,7 @@ index 02b503453fb8b64cbf0b9db1e498566289c6bbe3..606fe4bd9c3359e42a025a866873e147 protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/monster/ZombifiedPiglin.java b/net/minecraft/world/entity/monster/ZombifiedPiglin.java -index 2adee917a4275742968a2e1e8b65bce4b9ac3cc3..7406f1f589509769aed260197f7cfabc081ce37b 100644 +index 325d0f32fd8824dc1c7067eb9c303bdfc122c706..3e262c6919287ad981b1d36b7f96dd14cae8e190 100644 --- a/net/minecraft/world/entity/monster/ZombifiedPiglin.java +++ b/net/minecraft/world/entity/monster/ZombifiedPiglin.java @@ -106,6 +106,13 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { @@ -1263,10 +1263,10 @@ index 2adee917a4275742968a2e1e8b65bce4b9ac3cc3..7406f1f589509769aed260197f7cfabc public void setPersistentAngerTarget(@Nullable UUID target) { this.persistentAngerTarget = target; diff --git a/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/net/minecraft/world/entity/monster/hoglin/Hoglin.java -index 298246318f5103ff416f076467d3b6bfec297c5e..ddb7532d83b46dae22798937e097a8876fcd6106 100644 +index b19717af413f739abf632050409db25e2e85e0c6..55a802d5a4480b09f8564949b4b04fb8e43fe8bd 100644 --- a/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/net/minecraft/world/entity/monster/hoglin/Hoglin.java -@@ -128,6 +128,13 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { +@@ -127,6 +127,13 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { } // Purpur end - Make entity breeding times configurable @@ -1281,10 +1281,10 @@ index 298246318f5103ff416f076467d3b6bfec297c5e..ddb7532d83b46dae22798937e097a887 public void setTimeInOverworld(int timeInOverworld) { this.timeInOverworld = timeInOverworld; diff --git a/net/minecraft/world/entity/monster/piglin/Piglin.java b/net/minecraft/world/entity/monster/piglin/Piglin.java -index c600c9b1ea4fe08abdce0aed30f61ef073039c7c..76d572959b3422d1691e34fec3bbeb8d5b50d715 100644 +index 033e619f91fe3010a8056974d812351494c65f72..f9247771363ed1ccca775f23212eb402612c896d 100644 --- a/net/minecraft/world/entity/monster/piglin/Piglin.java +++ b/net/minecraft/world/entity/monster/piglin/Piglin.java -@@ -162,6 +162,13 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento +@@ -161,6 +161,13 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento } // Purpur end - Configurable entity base attributes @@ -1317,7 +1317,7 @@ index f52aba35ee7e202074cda8fb4dfd6a7d9ded1f09..f4893cc54d7f144025da0057beedb3a9 return Monster.createMonsterAttributes() .add(Attributes.MAX_HEALTH, 50.0) diff --git a/net/minecraft/world/entity/npc/Villager.java b/net/minecraft/world/entity/npc/Villager.java -index d4c4856dccb56e2108f174a37e88ad2268967c8a..67732dbbad95791724901058615026a90ad05fc5 100644 +index 23f7032a044c61b7d541fbe7609449ecede23258..5919135e4766e5e252aa07f9ff1170d92b9d839f 100644 --- a/net/minecraft/world/entity/npc/Villager.java +++ b/net/minecraft/world/entity/npc/Villager.java @@ -281,6 +281,13 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -1335,7 +1335,7 @@ index d4c4856dccb56e2108f174a37e88ad2268967c8a..67732dbbad95791724901058615026a9 public Brain getBrain() { return (Brain)super.getBrain(); diff --git a/net/minecraft/world/entity/npc/WanderingTrader.java b/net/minecraft/world/entity/npc/WanderingTrader.java -index 2917820bf01b1a2ca7301a7099b7b3dcd6c3ee67..f2b59a4490226168dd69ace94022cf6398d48615 100644 +index e9a98a7009555128cb5118093add3fb331a7d485..a23b8788db33625df43940a26de8dffdb91d5d2d 100644 --- a/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/net/minecraft/world/entity/npc/WanderingTrader.java @@ -98,6 +98,13 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill diff --git a/purpur-server/minecraft-patches/unapplied-features/0018-API-for-any-mob-to-burn-daylight.patch b/purpur-server/minecraft-patches/features/0018-API-for-any-mob-to-burn-daylight.patch similarity index 92% rename from purpur-server/minecraft-patches/unapplied-features/0018-API-for-any-mob-to-burn-daylight.patch rename to purpur-server/minecraft-patches/features/0018-API-for-any-mob-to-burn-daylight.patch index 22c2b06ad..a1d3f8a5e 100644 --- a/purpur-server/minecraft-patches/unapplied-features/0018-API-for-any-mob-to-burn-daylight.patch +++ b/purpur-server/minecraft-patches/features/0018-API-for-any-mob-to-burn-daylight.patch @@ -6,16 +6,16 @@ Subject: [PATCH] API for any mob to burn daylight Co-authored by: Encode42 diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index 029cfd544165725b7762947f6628271016844278..cb5c4491a8b4964df1a58933c27191024ad9f787 100644 +index 0dc4962cae6fa15b4cfbfa2938e271f5303cf2bb..c5bf15d4c526e9eebaf3485baf9ac34dd1d1d806 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java -@@ -542,6 +542,24 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -544,6 +544,24 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name } // Purpur end - Add canSaveToDisk to Entity + // Purpur start - copied from Mob - API for any mob to burn daylight + public boolean isSunBurnTick() { -+ if (this.level().isBrightOutside() && !this.level().isClientSide) { ++ if (this.level().isBrightOutside() && !this.level().isClientSide()) { + float lightLevelDependentMagicValue = this.getLightLevelDependentMagicValue(); + BlockPos blockPos = BlockPos.containing(this.getX(), this.getEyeY(), this.getZ()); + boolean flag = this.isInWaterOrRain() || this.isInPowderSnow || this.wasInPowderSnow; @@ -35,10 +35,10 @@ index 029cfd544165725b7762947f6628271016844278..cb5c4491a8b4964df1a58933c2719102 this.type = entityType; this.level = level; diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java -index e396eddb5ef0a78efaf239f30a51a5269367eeaa..ddd3acbc804cbc07eaccf578349d3f9e0e00b6fc 100644 +index de18e6ac0c4336b089a2c40660256488c9d042d5..b758b62ea666b18cf2a8d52651901173410abac6 100644 --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java -@@ -286,6 +286,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin +@@ -287,6 +287,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin public boolean silentDeath = false; // Paper - mark entity as dying silently for cancellable death event public net.kyori.adventure.util.TriState frictionState = net.kyori.adventure.util.TriState.NOT_SET; // Paper - Friction API public int shieldBlockingDelay = this.level().paperConfig().misc.shieldBlockingDelay; // Paper - Make shield blocking delay configurable @@ -46,7 +46,7 @@ index e396eddb5ef0a78efaf239f30a51a5269367eeaa..ddd3acbc804cbc07eaccf578349d3f9e // CraftBukkit end protected LivingEntity(EntityType entityType, Level level) { -@@ -789,6 +790,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin +@@ -796,6 +797,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin this.getSleepingPos().ifPresent(blockPos -> output.store("sleeping_pos", BlockPos.CODEC, blockPos)); DataResult> dataResult = this.brain.serializeStart(NbtOps.INSTANCE).map(tag -> new Dynamic<>(NbtOps.INSTANCE, tag)); dataResult.resultOrPartial(LOGGER::error).ifPresent(dynamic -> output.store("Brain", Codec.PASSTHROUGH, (Dynamic)dynamic)); @@ -54,7 +54,7 @@ index e396eddb5ef0a78efaf239f30a51a5269367eeaa..ddd3acbc804cbc07eaccf578349d3f9e if (this.lastHurtByPlayer != null) { this.lastHurtByPlayer.store(output, "last_hurt_by_player"); output.putInt("last_hurt_by_player_memory_time", this.lastHurtByPlayerMemoryTime); -@@ -915,6 +917,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin +@@ -922,6 +924,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin } // Paper - The sleeping pos will always also set the actual pos, so a desync suggests something is wrong }, this::clearSleepingPos); input.read("Brain", Codec.PASSTHROUGH).ifPresent(dynamic -> this.brain = this.makeBrain((Dynamic)dynamic)); @@ -62,7 +62,7 @@ index e396eddb5ef0a78efaf239f30a51a5269367eeaa..ddd3acbc804cbc07eaccf578349d3f9e this.lastHurtByPlayer = EntityReference.read(input, "last_hurt_by_player"); this.lastHurtByPlayerMemoryTime = input.getIntOr("last_hurt_by_player_memory_time", 0); this.lastHurtByMob = EntityReference.read(input, "last_hurt_by_mob"); -@@ -3680,6 +3683,32 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin +@@ -3712,6 +3715,32 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin if (this.level() instanceof ServerLevel serverLevel && this.isSensitiveToWater() && this.isInWaterOrRain()) { this.hurtServer(serverLevel, this.damageSources().drown(), 1.0F); } @@ -96,14 +96,14 @@ index e396eddb5ef0a78efaf239f30a51a5269367eeaa..ddd3acbc804cbc07eaccf578349d3f9e protected void applyInput() { diff --git a/net/minecraft/world/entity/Mob.java b/net/minecraft/world/entity/Mob.java -index cb09a8d2c0d8a561814c5e9dc91bbeaa28a58db0..035eb50335daa88679672cba550ed87ac3fa5873 100644 +index b43145dad28a5ee58eaa4559ac5bd462466c114d..e7b29ba441b16661ad4d5f535b481980408ac2e2 100644 --- a/net/minecraft/world/entity/Mob.java +++ b/net/minecraft/world/entity/Mob.java -@@ -1570,19 +1570,8 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab +@@ -1589,19 +1589,8 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab } public boolean isSunBurnTick() { -- if (this.level().isBrightOutside() && !this.level().isClientSide) { +- if (this.level().isBrightOutside() && !this.level().isClientSide()) { - float lightLevelDependentMagicValue = this.getLightLevelDependentMagicValue(); - BlockPos blockPos = BlockPos.containing(this.getX(), this.getEyeY(), this.getZ()); - boolean flag = this.isInWaterOrRain() || this.isInPowderSnow || this.wasInPowderSnow; @@ -122,7 +122,7 @@ index cb09a8d2c0d8a561814c5e9dc91bbeaa28a58db0..035eb50335daa88679672cba550ed87a @Override diff --git a/net/minecraft/world/entity/monster/AbstractSkeleton.java b/net/minecraft/world/entity/monster/AbstractSkeleton.java -index 352d0655374e05da787225c3fce8803fa547c99d..53ab51ffa5dd7d30a25f17dea0d9106bf30b49ba 100644 +index 2ef478b287e1240dd172235f7cabf31f60456a8a..b228c29e550d77f62ac53df9f32efe1a31c9f933 100644 --- a/net/minecraft/world/entity/monster/AbstractSkeleton.java +++ b/net/minecraft/world/entity/monster/AbstractSkeleton.java @@ -64,11 +64,12 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo @@ -186,10 +186,10 @@ index 352d0655374e05da787225c3fce8803fa547c99d..53ab51ffa5dd7d30a25f17dea0d9106b // Paper end - shouldBurnInDay API diff --git a/net/minecraft/world/entity/monster/Husk.java b/net/minecraft/world/entity/monster/Husk.java -index 9baec22561093d64157d93449e84c23b3f238b39..3f331215ef49c52fa3a53bcf744159d2221111f5 100644 +index d25baa1e1b03b38219c8851c1552f342543ba884..f8f27c7e5be15d6b7684159c193167837270d96b 100644 --- a/net/minecraft/world/entity/monster/Husk.java +++ b/net/minecraft/world/entity/monster/Husk.java -@@ -19,6 +19,7 @@ import net.minecraft.world.level.ServerLevelAccessor; +@@ -18,6 +18,7 @@ import net.minecraft.world.level.ServerLevelAccessor; public class Husk extends Zombie { public Husk(EntityType entityType, Level level) { super(entityType, level); @@ -197,7 +197,7 @@ index 9baec22561093d64157d93449e84c23b3f238b39..3f331215ef49c52fa3a53bcf744159d2 } // Purpur start - Ridables -@@ -82,7 +83,7 @@ public class Husk extends Zombie { +@@ -81,7 +82,7 @@ public class Husk extends Zombie { @Override public boolean isSunSensitive() { @@ -207,7 +207,7 @@ index 9baec22561093d64157d93449e84c23b3f238b39..3f331215ef49c52fa3a53bcf744159d2 @Override diff --git a/net/minecraft/world/entity/monster/Phantom.java b/net/minecraft/world/entity/monster/Phantom.java -index 67dc738faef3ab414bf791692090aaea3dbe7385..512195d639e84684a32ad6fb53e527996b0a4d21 100644 +index e0193db5ce783b4ab2b8afaeaeffde8ac8bc8a71..aa292ec60655cc9419da2a744c8cb841ddbc40e1 100644 --- a/net/minecraft/world/entity/monster/Phantom.java +++ b/net/minecraft/world/entity/monster/Phantom.java @@ -53,7 +53,7 @@ public class Phantom extends Mob implements Enemy { @@ -244,7 +244,7 @@ index 67dc738faef3ab414bf791692090aaea3dbe7385..512195d639e84684a32ad6fb53e52799 @Override public boolean isFlapping() { return (this.getUniqueFlapTickOffset() + this.tickCount) % TICKS_PER_FLAP == 0; -@@ -251,15 +262,7 @@ public class Phantom extends Mob implements Enemy { +@@ -246,15 +257,7 @@ public class Phantom extends Mob implements Enemy { @Override public void aiStep() { @@ -261,7 +261,7 @@ index 67dc738faef3ab414bf791692090aaea3dbe7385..512195d639e84684a32ad6fb53e52799 super.aiStep(); } -@@ -306,7 +309,7 @@ public class Phantom extends Mob implements Enemy { +@@ -301,7 +304,7 @@ public class Phantom extends Mob implements Enemy { this.setPhantomSize(input.getIntOr("size", 0)); // Paper start this.spawningEntity = input.read("Paper.SpawningEntity", net.minecraft.core.UUIDUtil.CODEC).orElse(null); @@ -270,7 +270,7 @@ index 67dc738faef3ab414bf791692090aaea3dbe7385..512195d639e84684a32ad6fb53e52799 // Paper end } -@@ -317,7 +320,7 @@ public class Phantom extends Mob implements Enemy { +@@ -312,7 +315,7 @@ public class Phantom extends Mob implements Enemy { output.putInt("size", this.getPhantomSize()); // Paper start output.storeNullable("Paper.SpawningEntity", net.minecraft.core.UUIDUtil.CODEC, this.spawningEntity); @@ -280,7 +280,7 @@ index 67dc738faef3ab414bf791692090aaea3dbe7385..512195d639e84684a32ad6fb53e52799 } diff --git a/net/minecraft/world/entity/monster/Zombie.java b/net/minecraft/world/entity/monster/Zombie.java -index 51cd12a8173d9f95c6a7c2503c3e0e4d40c427c5..147c030a2f8fd0d430070a36946fa42af177ea68 100644 +index 3c520bc7f53685d7a38238a35b0589aaf68e7906..fab34ee698752b4f0c79f143efac98f134b5276b 100644 --- a/net/minecraft/world/entity/monster/Zombie.java +++ b/net/minecraft/world/entity/monster/Zombie.java @@ -92,11 +92,12 @@ public class Zombie extends Monster { diff --git a/purpur-server/minecraft-patches/unapplied-features/0019-Cows-naturally-aggressive-to-players-chance.patch b/purpur-server/minecraft-patches/features/0019-Cows-naturally-aggressive-to-players-chance.patch similarity index 95% rename from purpur-server/minecraft-patches/unapplied-features/0019-Cows-naturally-aggressive-to-players-chance.patch rename to purpur-server/minecraft-patches/features/0019-Cows-naturally-aggressive-to-players-chance.patch index b22e0ee04..3a4f4b3b9 100644 --- a/purpur-server/minecraft-patches/unapplied-features/0019-Cows-naturally-aggressive-to-players-chance.patch +++ b/purpur-server/minecraft-patches/features/0019-Cows-naturally-aggressive-to-players-chance.patch @@ -5,13 +5,13 @@ Subject: [PATCH] Cows naturally aggressive to players chance diff --git a/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java b/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java -index bead2f6800bdc404228500c12caf326559fa47de..e6ef56d94e29a6629c9b672ed4ac4ef29ad6a286 100644 +index 9251693b3caa2d77b093064b6599db1078cd06d0..99458462d99f0b503ccb55444f4930515c7c641c 100644 --- a/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java +++ b/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java -@@ -128,7 +128,7 @@ public class DefaultAttributes { - .put(EntityType.IRON_GOLEM, IronGolem.createAttributes().build()) +@@ -131,7 +131,7 @@ public class DefaultAttributes { .put(EntityType.LLAMA, Llama.createAttributes().build()) .put(EntityType.MAGMA_CUBE, MagmaCube.createAttributes().build()) + .put(EntityType.MANNEQUIN, LivingEntity.createLivingAttributes().build()) - .put(EntityType.MOOSHROOM, Cow.createAttributes().build()) + .put(EntityType.MOOSHROOM, net.minecraft.world.entity.animal.AbstractCow.createAttributes().build()) // Purpur - Cows naturally aggressive to players chance .put(EntityType.MULE, AbstractChestedHorse.createBaseChestedHorseAttributes().build()) diff --git a/purpur-server/minecraft-patches/unapplied-features/0020-Mobs-always-drop-experience.patch b/purpur-server/minecraft-patches/features/0020-Mobs-always-drop-experience.patch similarity index 90% rename from purpur-server/minecraft-patches/unapplied-features/0020-Mobs-always-drop-experience.patch rename to purpur-server/minecraft-patches/features/0020-Mobs-always-drop-experience.patch index becbe446e..ad98b7a73 100644 --- a/purpur-server/minecraft-patches/unapplied-features/0020-Mobs-always-drop-experience.patch +++ b/purpur-server/minecraft-patches/features/0020-Mobs-always-drop-experience.patch @@ -23,7 +23,7 @@ index 1c446cec71aa163374ab9832c961a6b4c3fc534b..86a694b94045b47f6e98c480645f7573 protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/net/minecraft/world/entity/ambient/Bat.java b/net/minecraft/world/entity/ambient/Bat.java -index 2d2b44f2617732bcdfd969454f80b9ad4af470a1..4e046158a0782a1fd08c6b4d8d332b6eb5bce7aa 100644 +index eac9b5bcb5cfaa1fe4d1944a0e192a9e86f6f0d3..507e048e8a54964e330642009f2c75261c06ea0d 100644 --- a/net/minecraft/world/entity/ambient/Bat.java +++ b/net/minecraft/world/entity/ambient/Bat.java @@ -118,6 +118,13 @@ public class Bat extends AmbientCreature { @@ -41,10 +41,10 @@ index 2d2b44f2617732bcdfd969454f80b9ad4af470a1..4e046158a0782a1fd08c6b4d8d332b6e public boolean isFlapping() { return !this.isResting() && this.tickCount % 10.0F == 0.0F; diff --git a/net/minecraft/world/entity/animal/Bee.java b/net/minecraft/world/entity/animal/Bee.java -index 31a9451417272ec5bb6a6cbc3ec308f6c5cd057f..ca5651f15552f91fba650747d28a75c00fa11442 100644 +index 57e465cea9da02af055ab99bd3ff41cc13939d47..b6e109ecbe3fa5afaaadc22ece6447ea6202ff96 100644 --- a/net/minecraft/world/entity/animal/Bee.java +++ b/net/minecraft/world/entity/animal/Bee.java -@@ -495,6 +495,13 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -497,6 +497,13 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { } // Purpur end - Toggle for water sensitive mob damage @@ -131,7 +131,7 @@ index 09ee10a17e15431a2937cf753e670dc000a2e36f..b2fa170b14bc3037e5c143d320d0a1ef protected void registerGoals() { super.registerGoals(); diff --git a/net/minecraft/world/entity/animal/Dolphin.java b/net/minecraft/world/entity/animal/Dolphin.java -index cff87e0047167751d9b4672a0caae642f15426a9..23696a5e2871ea07f34d4b4f6a20e2896ac3f5bd 100644 +index e6df7495a8c4e36ec7d0921a7dcccc16a9cb7916..39c31dcce4df2b5fddf69bf20e2d81b25ed8e469 100644 --- a/net/minecraft/world/entity/animal/Dolphin.java +++ b/net/minecraft/world/entity/animal/Dolphin.java @@ -166,6 +166,13 @@ public class Dolphin extends AgeableWaterCreature { @@ -149,7 +149,7 @@ index cff87e0047167751d9b4672a0caae642f15426a9..23696a5e2871ea07f34d4b4f6a20e289 @Override public SpawnGroupData finalizeSpawn( diff --git a/net/minecraft/world/entity/animal/Fox.java b/net/minecraft/world/entity/animal/Fox.java -index 23e119ce82c3a0541b40249b20f133e39fac6858..8964bb5098c0dc36741af3656af6bc0b5b463abe 100644 +index 15e5ebdf0446ccf4e380fe910a288d3bbf048549..0602c7fc5b5f4c895dcb9fc55fd2f079617c1483 100644 --- a/net/minecraft/world/entity/animal/Fox.java +++ b/net/minecraft/world/entity/animal/Fox.java @@ -202,6 +202,13 @@ public class Fox extends Animal { @@ -167,10 +167,10 @@ index 23e119ce82c3a0541b40249b20f133e39fac6858..8964bb5098c0dc36741af3656af6bc0b protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/animal/HappyGhast.java b/net/minecraft/world/entity/animal/HappyGhast.java -index 57d691d4bdb63d20ee582f28c475b5eaca128269..fb37669b4d66bb853eabf2d15a369d7ad5a2dbb9 100644 +index f15dcbd16f910f191f1e4ce8bda857476cc94fee..5b08703e27a9e92fb4bcd019661b1407078c24e1 100644 --- a/net/minecraft/world/entity/animal/HappyGhast.java +++ b/net/minecraft/world/entity/animal/HappyGhast.java -@@ -160,6 +160,13 @@ public class HappyGhast extends Animal { +@@ -159,6 +159,13 @@ public class HappyGhast extends Animal { } // Purpur end - Toggle for water sensitive mob damage @@ -185,7 +185,7 @@ index 57d691d4bdb63d20ee582f28c475b5eaca128269..fb37669b4d66bb853eabf2d15a369d7a protected void ageBoundaryReached() { if (this.isBaby()) { diff --git a/net/minecraft/world/entity/animal/IronGolem.java b/net/minecraft/world/entity/animal/IronGolem.java -index 006df1758bdaeb55a7db938afd9e00c575a62e60..8885ab56eb72c0106ef57359ca11f70c012fc348 100644 +index e58fb3cbb71693d8556bace35d6e57ea9e455d80..a0c3ef5ca2fccc0719b5d70e1610aa0fbf921b0c 100644 --- a/net/minecraft/world/entity/animal/IronGolem.java +++ b/net/minecraft/world/entity/animal/IronGolem.java @@ -107,6 +107,13 @@ public class IronGolem extends AbstractGolem implements NeutralMob { @@ -203,10 +203,10 @@ index 006df1758bdaeb55a7db938afd9e00c575a62e60..8885ab56eb72c0106ef57359ca11f70c protected void registerGoals() { if (this.level().purpurConfig.ironGolemPoppyCalm) this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.ReceiveFlower(this)); // Purpur - Iron golem calm anger options diff --git a/net/minecraft/world/entity/animal/MushroomCow.java b/net/minecraft/world/entity/animal/MushroomCow.java -index 298cd49b28b5efb0f6401c19fc083a3714cb9aeb..5750f87944ea84d59674d1df7f5d48121d987a54 100644 +index 270563334fcb1b2124e5721ce0d443ac8d712080..d08c79943993014d2a266b66ce79e30f6d7a321f 100644 --- a/net/minecraft/world/entity/animal/MushroomCow.java +++ b/net/minecraft/world/entity/animal/MushroomCow.java -@@ -100,6 +100,13 @@ public class MushroomCow extends AbstractCow implements Shearable { +@@ -101,6 +101,13 @@ public class MushroomCow extends AbstractCow implements Shearable { } // Purpur end - Toggle for water sensitive mob damage @@ -221,7 +221,7 @@ index 298cd49b28b5efb0f6401c19fc083a3714cb9aeb..5750f87944ea84d59674d1df7f5d4812 public float getWalkTargetValue(BlockPos pos, LevelReader level) { return level.getBlockState(pos.below()).is(Blocks.MYCELIUM) ? 10.0F : level.getPathfindingCostFromLightLevels(pos); diff --git a/net/minecraft/world/entity/animal/Ocelot.java b/net/minecraft/world/entity/animal/Ocelot.java -index d92af280d85856d57f3031dfaf7c644cbfc18f15..4c20569ec5c504c582575851ab1d74248289b1c0 100644 +index 4810b6cd45d27da3c601d1eb4d3377572f1a61dc..13f0e2910e232f115ecb2496de2192617fd334e5 100644 --- a/net/minecraft/world/entity/animal/Ocelot.java +++ b/net/minecraft/world/entity/animal/Ocelot.java @@ -103,6 +103,13 @@ public class Ocelot extends Animal { @@ -239,7 +239,7 @@ index d92af280d85856d57f3031dfaf7c644cbfc18f15..4c20569ec5c504c582575851ab1d7424 return this.entityData.get(DATA_TRUSTING); } diff --git a/net/minecraft/world/entity/animal/Panda.java b/net/minecraft/world/entity/animal/Panda.java -index 4678f432b6a8f74bbd121aee41f1b093888946f7..02bfa88568e635770675ea9173f2cf3ca21457fa 100644 +index 5fde42f9e86adc5872a10eb864a38f5bae171c10..580ded94fbb6ba861259fd92c174d0aab879b3ab 100644 --- a/net/minecraft/world/entity/animal/Panda.java +++ b/net/minecraft/world/entity/animal/Panda.java @@ -156,6 +156,13 @@ public class Panda extends Animal { @@ -257,7 +257,7 @@ index 4678f432b6a8f74bbd121aee41f1b093888946f7..02bfa88568e635770675ea9173f2cf3c protected boolean canDispenserEquipIntoSlot(EquipmentSlot slot) { return slot == EquipmentSlot.MAINHAND && this.canPickUpLoot(); diff --git a/net/minecraft/world/entity/animal/Parrot.java b/net/minecraft/world/entity/animal/Parrot.java -index 92f43418e5b21eb2a323a12649a96e0f62764618..dddf3a2e372bd0d483c1da01d36fe59b17b3d4e2 100644 +index 861739ca43e0212ab9ad4037693b729bd69fbb0b..fa00f9fab8a5f4226e2e4b061239537303ff73e0 100644 --- a/net/minecraft/world/entity/animal/Parrot.java +++ b/net/minecraft/world/entity/animal/Parrot.java @@ -215,6 +215,13 @@ public class Parrot extends ShoulderRidingEntity implements FlyingAnimal { @@ -275,7 +275,7 @@ index 92f43418e5b21eb2a323a12649a96e0f62764618..dddf3a2e372bd0d483c1da01d36fe59b @Override public SpawnGroupData finalizeSpawn( diff --git a/net/minecraft/world/entity/animal/Pig.java b/net/minecraft/world/entity/animal/Pig.java -index 6f318222011e3bc57c4f0b92c0fba1f410a1d65e..adbbe938c14d14a628d9963acec57c32661957cd 100644 +index 5ea66e3eb813c961d4275657a69300bc3953b1bc..9a68ee7b31cf050af007c1a58cf4fd01771cd8ff 100644 --- a/net/minecraft/world/entity/animal/Pig.java +++ b/net/minecraft/world/entity/animal/Pig.java @@ -105,6 +105,13 @@ public class Pig extends Animal implements ItemSteerable { @@ -293,7 +293,7 @@ index 6f318222011e3bc57c4f0b92c0fba1f410a1d65e..adbbe938c14d14a628d9963acec57c32 protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/net/minecraft/world/entity/animal/PolarBear.java b/net/minecraft/world/entity/animal/PolarBear.java -index a800acb671a18287f1407bd293a433f1fe039ce5..e0b51b482607ec5a9f5b4d13d918d79b2f52f9c0 100644 +index e69acaf3e99e298535ba9a39a6389f4ca5d304aa..de0d6239686fda715d2c5f3e34ce77edcf803800 100644 --- a/net/minecraft/world/entity/animal/PolarBear.java +++ b/net/minecraft/world/entity/animal/PolarBear.java @@ -139,6 +139,13 @@ public class PolarBear extends Animal implements NeutralMob { @@ -311,7 +311,7 @@ index a800acb671a18287f1407bd293a433f1fe039ce5..e0b51b482607ec5a9f5b4d13d918d79b @Override public AgeableMob getBreedOffspring(ServerLevel level, AgeableMob otherParent) { diff --git a/net/minecraft/world/entity/animal/Pufferfish.java b/net/minecraft/world/entity/animal/Pufferfish.java -index a9219906038a24831b3d1e6851af4225b60616c3..685176ce37538cbbc614401db568acdb0ad264bb 100644 +index d91560b021775dd29f1f099f4a9df8af0e7b8d4c..1ed4e7b13c7a578fbfdbf75740f79fadad3f6d2f 100644 --- a/net/minecraft/world/entity/animal/Pufferfish.java +++ b/net/minecraft/world/entity/animal/Pufferfish.java @@ -73,6 +73,13 @@ public class Pufferfish extends AbstractFish { @@ -329,7 +329,7 @@ index a9219906038a24831b3d1e6851af4225b60616c3..685176ce37538cbbc614401db568acdb protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/animal/Rabbit.java b/net/minecraft/world/entity/animal/Rabbit.java -index dcbbe3406cf481e2e1d5c4cc6baaa5ac564b1ad1..1af1b33702296f9aa74c33436ea2904c5e5ae43d 100644 +index f773595560a59724c13a0f9e9cbe0a4d5b442313..44dc38b94c311a791fadb073200fe04510f5123e 100644 --- a/net/minecraft/world/entity/animal/Rabbit.java +++ b/net/minecraft/world/entity/animal/Rabbit.java @@ -167,6 +167,13 @@ public class Rabbit extends Animal { @@ -365,7 +365,7 @@ index 3c517936aee31fcf246787c033688870a2349e55..d2679beaa3be6de36227c5b66609e0df public int getMaxSchoolSize() { return 5; diff --git a/net/minecraft/world/entity/animal/SnowGolem.java b/net/minecraft/world/entity/animal/SnowGolem.java -index 8917b3d2d75dc1a0ddf1b6dd64267f69506e80dc..8984a4fc0aae9fd72bc3f7222003c7593810ab77 100644 +index 448946f352e394b4c5e84914c583c26c0bd390c3..efba95b3d833f2393ae846af1b27d10ef75550af 100644 --- a/net/minecraft/world/entity/animal/SnowGolem.java +++ b/net/minecraft/world/entity/animal/SnowGolem.java @@ -88,6 +88,13 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM @@ -383,7 +383,7 @@ index 8917b3d2d75dc1a0ddf1b6dd64267f69506e80dc..8984a4fc0aae9fd72bc3f7222003c759 protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables diff --git a/net/minecraft/world/entity/animal/Squid.java b/net/minecraft/world/entity/animal/Squid.java -index 2108cbddc9a880347ff36fc4ce8b56e8215b9eac..8371f3892e50150db018f0b265986ffab37f21e7 100644 +index c752eec4ed181eb4fa5c8b382764f2f544719f23..19f176976218db6207b7cdd8aacd370b83cfd536 100644 --- a/net/minecraft/world/entity/animal/Squid.java +++ b/net/minecraft/world/entity/animal/Squid.java @@ -106,6 +106,13 @@ public class Squid extends AgeableWaterCreature { @@ -419,7 +419,7 @@ index 4510798913f94474b16ab6cbfa32dc0fdf0a226a..8d1fa86c6f4881c05f11fa80018b8de7 return "entity.minecraft.tropical_fish.predefined." + variantId; } diff --git a/net/minecraft/world/entity/animal/Turtle.java b/net/minecraft/world/entity/animal/Turtle.java -index 3c2ded73af16360474fb0410456e94746393ca0e..9bdc1f10e3b40672449ad166f130ecabdacc75d3 100644 +index 6a52e549257582d09af824f4067c91130f35cf8a..bb2f87ee973ad4163a7d130d607e6efa4cefdd92 100644 --- a/net/minecraft/world/entity/animal/Turtle.java +++ b/net/minecraft/world/entity/animal/Turtle.java @@ -125,6 +125,13 @@ public class Turtle extends Animal { @@ -437,10 +437,10 @@ index 3c2ded73af16360474fb0410456e94746393ca0e..9bdc1f10e3b40672449ad166f130ecab this.homePos = homePos; } diff --git a/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/net/minecraft/world/entity/animal/axolotl/Axolotl.java -index f364117decd00f00ae0dc729addb5a35008b6ca5..05070562ee7ea23d4e2fa602466f097827ffa35b 100644 +index ac56f22dc069ec7c4832024083b242f965c51c58..c349bc41bb3aa464918eae445c297a24bf67756d 100644 --- a/net/minecraft/world/entity/animal/axolotl/Axolotl.java +++ b/net/minecraft/world/entity/animal/axolotl/Axolotl.java -@@ -161,6 +161,13 @@ public class Axolotl extends Animal implements Bucketable { +@@ -160,6 +160,13 @@ public class Axolotl extends Animal implements Bucketable { } // Purpur end - Toggle for water sensitive mob damage @@ -455,10 +455,10 @@ index f364117decd00f00ae0dc729addb5a35008b6ca5..05070562ee7ea23d4e2fa602466f0978 public float getWalkTargetValue(BlockPos pos, LevelReader level) { return 0.0F; diff --git a/net/minecraft/world/entity/animal/goat/Goat.java b/net/minecraft/world/entity/animal/goat/Goat.java -index 952d9f5c2bb2e869df475a78b04be10e7541829e..386591ff45c45146b75d44071f54c2789db15a21 100644 +index c6a03e6f223010dbcf56719197f2dcc62916649b..500ffed7cff5dd66cb7182e16cc0a723f9f5bfd6 100644 --- a/net/minecraft/world/entity/animal/goat/Goat.java +++ b/net/minecraft/world/entity/animal/goat/Goat.java -@@ -146,6 +146,13 @@ public class Goat extends Animal { +@@ -145,6 +145,13 @@ public class Goat extends Animal { } // Purpur end - Toggle for water sensitive mob damage @@ -509,7 +509,7 @@ index 2928159447a87ea8cc945e73e2e81ad1dbe13680..f1080a40f759b30b921b88b4f6edd35f protected void randomizeAttributes(RandomSource random) { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(generateMaxHealth(random::nextInt)); diff --git a/net/minecraft/world/entity/animal/horse/Llama.java b/net/minecraft/world/entity/animal/horse/Llama.java -index ea25c48cb60aff6fbc82a364789beff92b054a88..455a84ffa16152137409777e1fddbab5a21bd57d 100644 +index 9a16450170734e4c47bbc91d764b889765e473f0..e4f261e14bf57d6c50cf7c012707f1265fcf9f61 100644 --- a/net/minecraft/world/entity/animal/horse/Llama.java +++ b/net/minecraft/world/entity/animal/horse/Llama.java @@ -168,6 +168,13 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { @@ -563,7 +563,7 @@ index cff709a28830a842a499f7dfe3b8bc0b703c9af4..f6ab6ecc10486694d77905239a82bda4 return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 15.0).add(Attributes.MOVEMENT_SPEED, 0.2F); } diff --git a/net/minecraft/world/entity/animal/horse/TraderLlama.java b/net/minecraft/world/entity/animal/horse/TraderLlama.java -index 81e902ba31b55722f4d257e918b56fa654083916..a8540e491161d82a6b72262e4414f8bb16705d47 100644 +index 3222b0439a4c3cabab8f5648b71df2c215e335ff..61775beaba90ed3b43f5de62c96fe7bf81fc92e4 100644 --- a/net/minecraft/world/entity/animal/horse/TraderLlama.java +++ b/net/minecraft/world/entity/animal/horse/TraderLlama.java @@ -84,6 +84,13 @@ public class TraderLlama extends Llama { @@ -599,7 +599,7 @@ index e78fac0a5e37d53afbc200f015adab60b3bfc9da..e59172ea2fafbab673dc3e9bdc25055f return createBaseHorseAttributes().add(Attributes.MAX_HEALTH, 15.0).add(Attributes.MOVEMENT_SPEED, 0.2F); } diff --git a/net/minecraft/world/entity/animal/sheep/Sheep.java b/net/minecraft/world/entity/animal/sheep/Sheep.java -index 8394453415a0d098de6176662f97df2174a83697..500c87f5f7b2eda637103125d6e541f7c9fb385f 100644 +index fe5bbf00e02efa8ff71014d2b334ad1f6cd4052f..5924a195de35d5fed84ef7175f7c69610eeafd38 100644 --- a/net/minecraft/world/entity/animal/sheep/Sheep.java +++ b/net/minecraft/world/entity/animal/sheep/Sheep.java @@ -101,6 +101,13 @@ public class Sheep extends Animal implements Shearable { @@ -617,7 +617,7 @@ index 8394453415a0d098de6176662f97df2174a83697..500c87f5f7b2eda637103125d6e541f7 protected void registerGoals() { this.eatBlockGoal = new EatBlockGoal(this); diff --git a/net/minecraft/world/entity/animal/wolf/Wolf.java b/net/minecraft/world/entity/animal/wolf/Wolf.java -index d492c6bcbc45e312a5ee2d3567a26853b514d027..7e7cb9db1c84bdb173b444bec90663a93fb3b549 100644 +index 9c76157edc1ee7a15498e8759b5c2f71be3b0b51..b3f3959e5da61460a5c29b6a75af32e3459f3528 100644 --- a/net/minecraft/world/entity/animal/wolf/Wolf.java +++ b/net/minecraft/world/entity/animal/wolf/Wolf.java @@ -230,6 +230,13 @@ public class Wolf extends TamableAnimal implements NeutralMob { @@ -635,7 +635,7 @@ index d492c6bcbc45e312a5ee2d3567a26853b514d027..7e7cb9db1c84bdb173b444bec90663a9 protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/net/minecraft/world/entity/boss/wither/WitherBoss.java b/net/minecraft/world/entity/boss/wither/WitherBoss.java -index d4e4aa98e2259aa7f5dbce1585257a4e24b4782f..0613d80561f50e32dc4d1c471521f001659d017d 100644 +index d38a004d1192e967dfc82d858257fbfc4586df37..5b4d8bafaa7c03a40d02d84449a20cd0f7682afd 100644 --- a/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/net/minecraft/world/entity/boss/wither/WitherBoss.java @@ -228,6 +228,13 @@ public class WitherBoss extends Monster implements RangedAttackMob { @@ -653,7 +653,7 @@ index d4e4aa98e2259aa7f5dbce1585257a4e24b4782f..0613d80561f50e32dc4d1c471521f001 protected PathNavigation createNavigation(Level level) { FlyingPathNavigation flyingPathNavigation = new FlyingPathNavigation(this, level); diff --git a/net/minecraft/world/entity/monster/Blaze.java b/net/minecraft/world/entity/monster/Blaze.java -index 2bd645e163ca7b118beec5194e5c0b00e6dff563..fa21b7dba208d5ba6ecf1d2b68965bb50642b53a 100644 +index e43d6fabcaffca05ee93878ee28ac9df0bb5789f..26bef7ee1c68c75c77b7c72d8c08ce3b3c2efb98 100644 --- a/net/minecraft/world/entity/monster/Blaze.java +++ b/net/minecraft/world/entity/monster/Blaze.java @@ -83,6 +83,13 @@ public class Blaze extends Monster { @@ -689,10 +689,10 @@ index 420fe0d01d0b173a6a541f77e1aaca3f3bb565e7..7eca4b751d900c6d6ee34993c3e23681 public boolean doHurtTarget(ServerLevel level, Entity source) { if (super.doHurtTarget(level, source)) { diff --git a/net/minecraft/world/entity/monster/Creeper.java b/net/minecraft/world/entity/monster/Creeper.java -index 7ebce241a4195326bbecd158952f2ec559196ad3..2839c755e5ca58896bc14f95ce4889d48ec415b3 100644 +index 099ece4b4d0996fc26a5d42f81a42fcc63f22506..b68025d5c5e2727026bb792663d026f1be5a2ea2 100644 --- a/net/minecraft/world/entity/monster/Creeper.java +++ b/net/minecraft/world/entity/monster/Creeper.java -@@ -272,6 +272,13 @@ public class Creeper extends Monster { +@@ -273,6 +273,13 @@ public class Creeper extends Monster { } // Purpur end - Toggle for water sensitive mob damage @@ -707,7 +707,7 @@ index 7ebce241a4195326bbecd158952f2ec559196ad3..2839c755e5ca58896bc14f95ce4889d4 public SoundEvent getHurtSound(DamageSource damageSource) { return SoundEvents.CREEPER_HURT; diff --git a/net/minecraft/world/entity/monster/Drowned.java b/net/minecraft/world/entity/monster/Drowned.java -index 6e8ae9aa0b5051b7fb303476e52ba2cc76c29c84..2e6d0f035a01277aa28bbe912d5df8dc4cf04547 100644 +index 33c45250277b2383f4ef1d740898ba02f22bcb26..592b4f139a184f0522e350f5b83777b235eb243c 100644 --- a/net/minecraft/world/entity/monster/Drowned.java +++ b/net/minecraft/world/entity/monster/Drowned.java @@ -130,6 +130,13 @@ public class Drowned extends Zombie implements RangedAttackMob { @@ -743,10 +743,10 @@ index 287b6fea404d4f1f121219f92918dc2d1c0ac780..ab1c050ff326a072e817a05958b8f4ec return Guardian.createAttributes().add(Attributes.MOVEMENT_SPEED, 0.3F).add(Attributes.ATTACK_DAMAGE, 8.0).add(Attributes.MAX_HEALTH, 80.0); } diff --git a/net/minecraft/world/entity/monster/EnderMan.java b/net/minecraft/world/entity/monster/EnderMan.java -index 73d66dffa57b31e4d772438f6d2f23cfbbcfb281..fcdb3ee493e65bf002e78862f00061336e731ede 100644 +index 122c68cd0ad5a308600d7bbde15d246131d28546..bf5fedd1dc7eea2a36edfb1420efe207ac409085 100644 --- a/net/minecraft/world/entity/monster/EnderMan.java +++ b/net/minecraft/world/entity/monster/EnderMan.java -@@ -114,6 +114,13 @@ public class EnderMan extends Monster implements NeutralMob { +@@ -115,6 +115,13 @@ public class EnderMan extends Monster implements NeutralMob { } // Purpur end - Configurable entity base attributes @@ -761,7 +761,7 @@ index 73d66dffa57b31e4d772438f6d2f23cfbbcfb281..fcdb3ee493e65bf002e78862f0006133 protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/net/minecraft/world/entity/monster/Endermite.java b/net/minecraft/world/entity/monster/Endermite.java -index 4565a592face29a077d96fc0cd52bceaed52f755..4ea0e5f24664a1c8f2c8bdae559784434374adf6 100644 +index a1e848405acfa412d0555f051f4a2f28d933652c..3b3855a74c62c6d513e07221ae45b1cbfb1a3c2f 100644 --- a/net/minecraft/world/entity/monster/Endermite.java +++ b/net/minecraft/world/entity/monster/Endermite.java @@ -79,6 +79,13 @@ public class Endermite extends Monster { @@ -797,7 +797,7 @@ index d77e3b0f36ec4a262ff375d9e2da912553a344f8..5c1992a7fd5d7c5fe23ebfad35a82826 protected void registerGoals() { super.registerGoals(); diff --git a/net/minecraft/world/entity/monster/Ghast.java b/net/minecraft/world/entity/monster/Ghast.java -index 07ea4f44d9fd32d5be5aae6c36b30806acc9db64..6f312f0b8ab60c839129ea671f2d9c128fa58e58 100644 +index 2ad7a35efbae5c4697413a48ff28a4c6f3c94a35..ce7cd858e724f17d14e31516127a4c88874f3de8 100644 --- a/net/minecraft/world/entity/monster/Ghast.java +++ b/net/minecraft/world/entity/monster/Ghast.java @@ -89,6 +89,13 @@ public class Ghast extends Mob implements Enemy { @@ -833,7 +833,7 @@ index ccc2f7906c322a5406467986565074cbddf6cbe0..f4ec41a74b13be98f3ac78521fdd3578 return Monster.createMonsterAttributes() .add(Attributes.MAX_HEALTH, 100.0) diff --git a/net/minecraft/world/entity/monster/Guardian.java b/net/minecraft/world/entity/monster/Guardian.java -index 9868117ecf0a3b36f81086297c639f6f274e0055..3ba8da3bd04774fb3131fdbd2aa0bd6c9f31c817 100644 +index 0af004e822b6f474b8119626c542bd822bb21e45..fdb866927740f41c411914ab67ce77316937e3e2 100644 --- a/net/minecraft/world/entity/monster/Guardian.java +++ b/net/minecraft/world/entity/monster/Guardian.java @@ -105,6 +105,13 @@ public class Guardian extends Monster { @@ -851,10 +851,10 @@ index 9868117ecf0a3b36f81086297c639f6f274e0055..3ba8da3bd04774fb3131fdbd2aa0bd6c protected void registerGoals() { MoveTowardsRestrictionGoal moveTowardsRestrictionGoal = new MoveTowardsRestrictionGoal(this, 1.0); diff --git a/net/minecraft/world/entity/monster/Husk.java b/net/minecraft/world/entity/monster/Husk.java -index 3f331215ef49c52fa3a53bcf744159d2221111f5..a4ce65911a5d778f60bcedb3acd9fe59a5094c96 100644 +index f8f27c7e5be15d6b7684159c193167837270d96b..f2c55aa23ec647af6907b349b937c98fffd95523 100644 --- a/net/minecraft/world/entity/monster/Husk.java +++ b/net/minecraft/world/entity/monster/Husk.java -@@ -75,6 +75,13 @@ public class Husk extends Zombie { +@@ -74,6 +74,13 @@ public class Husk extends Zombie { } // Purpur end - Toggle for water sensitive mob damage @@ -869,7 +869,7 @@ index 3f331215ef49c52fa3a53bcf744159d2221111f5..a4ce65911a5d778f60bcedb3acd9fe59 EntityType entityType, ServerLevelAccessor level, EntitySpawnReason spawnReason, BlockPos pos, RandomSource random ) { diff --git a/net/minecraft/world/entity/monster/Illusioner.java b/net/minecraft/world/entity/monster/Illusioner.java -index 4b68c0e999c37b3a3b62b522e2fcc805d2483943..2ea8c8480dcc15eb5b4bc9686554ec912ef1f3f4 100644 +index ac31cd022f079561ca90ceb2a1c28a126efd255a..2b7ea7db4153c084d5f1edd9e3555c59ea3bed12 100644 --- a/net/minecraft/world/entity/monster/Illusioner.java +++ b/net/minecraft/world/entity/monster/Illusioner.java @@ -91,6 +91,13 @@ public class Illusioner extends SpellcasterIllager implements RangedAttackMob { @@ -905,7 +905,7 @@ index da90b7dc79aa6d01e88c1250fff662ba1b001dc3..7ef0f84d4c449a8991683ca66d7b16ca return Monster.createMonsterAttributes().add(Attributes.MOVEMENT_SPEED, 0.2F); } diff --git a/net/minecraft/world/entity/monster/Phantom.java b/net/minecraft/world/entity/monster/Phantom.java -index 2c7f11e165ea9f59dca6de559c7bcba39977cb19..3b812e0860e37d30d5d12f97410ed5fd2babadf6 100644 +index aa292ec60655cc9419da2a744c8cb841ddbc40e1..db1ce88d5289aa8432bafce099e3c73230681f76 100644 --- a/net/minecraft/world/entity/monster/Phantom.java +++ b/net/minecraft/world/entity/monster/Phantom.java @@ -147,6 +147,13 @@ public class Phantom extends Mob implements Enemy { @@ -959,7 +959,7 @@ index d75df6de50f9830efeea826d0ebdac17f56d4c4b..2b85cedf235e673d6030c2a649abf60b protected void registerGoals() { super.registerGoals(); diff --git a/net/minecraft/world/entity/monster/Shulker.java b/net/minecraft/world/entity/monster/Shulker.java -index 9f6b05671c973e1262cbd6673aac7f1d3a74e2e3..a46ca09f661a4f8f3ede6550d613e0c704a9389b 100644 +index 219ae068c4c17b38424af39b0c08d9e1e35fb00d..ae95ee80a8846c7daefb240f1e22aebd772a6ee9 100644 --- a/net/minecraft/world/entity/monster/Shulker.java +++ b/net/minecraft/world/entity/monster/Shulker.java @@ -141,6 +141,13 @@ public class Shulker extends AbstractGolem implements Enemy { @@ -995,10 +995,10 @@ index 51714029d4ea5033014dcefd25f74cc0c9a72dbd..bcae390578519fef362a126fbcf2b5cf protected void registerGoals() { this.friendsGoal = new Silverfish.SilverfishWakeUpFriendsGoal(this); diff --git a/net/minecraft/world/entity/monster/Skeleton.java b/net/minecraft/world/entity/monster/Skeleton.java -index 555ada78c81ce912bf8d57a9a094102804b372ef..c6ab31fa5204220f4c89dd48dd0966036a4975cf 100644 +index cad46630ea1da0f77779f14a7882ae2f78700c51..be15358828c6b89214d304b193e4a8c1305f3e5f 100644 --- a/net/minecraft/world/entity/monster/Skeleton.java +++ b/net/minecraft/world/entity/monster/Skeleton.java -@@ -58,6 +58,13 @@ public class Skeleton extends AbstractSkeleton { +@@ -56,6 +56,13 @@ public class Skeleton extends AbstractSkeleton { } // Purpur end - Toggle for water sensitive mob damage @@ -1013,7 +1013,7 @@ index 555ada78c81ce912bf8d57a9a094102804b372ef..c6ab31fa5204220f4c89dd48dd096603 protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/monster/Slime.java b/net/minecraft/world/entity/monster/Slime.java -index 29b500eb4c010ff83d8474f8ee5602c479243e19..b299fc08fe900b4d48ce3e6986bcea000253053e 100644 +index 75a82b32c0efc1403dc9c875012739a417443c27..970105d598964194e167ad243f6e2fc2a19fba08 100644 --- a/net/minecraft/world/entity/monster/Slime.java +++ b/net/minecraft/world/entity/monster/Slime.java @@ -141,6 +141,13 @@ public class Slime extends Mob implements Enemy { @@ -1031,7 +1031,7 @@ index 29b500eb4c010ff83d8474f8ee5602c479243e19..b299fc08fe900b4d48ce3e6986bcea00 protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables diff --git a/net/minecraft/world/entity/monster/Spider.java b/net/minecraft/world/entity/monster/Spider.java -index e7bd63256979e41670772c3c5293c9a637593541..7c50ed0b7bd0d7138b80613ea08519ae457f49a3 100644 +index ed343a806be211299f03c46ed2214caed552f149..9af8dc2e82491ef27f9b99feddb96df2cabbcf07 100644 --- a/net/minecraft/world/entity/monster/Spider.java +++ b/net/minecraft/world/entity/monster/Spider.java @@ -82,6 +82,13 @@ public class Spider extends Monster { @@ -1067,7 +1067,7 @@ index e4ae604d4d0756edc9418634d9958338997c8203..e69a5c552d2f57bc373cb2b89690a7dd EntityType entityType, ServerLevelAccessor level, EntitySpawnReason spawnReason, BlockPos pos, RandomSource random ) { diff --git a/net/minecraft/world/entity/monster/Strider.java b/net/minecraft/world/entity/monster/Strider.java -index 533801988cb4f8a916ef002a179990ca913b2f32..fe31c4a45afd61be8b74efe9d0858ccd0aced075 100644 +index d64ece808045016679b74c315ffd54b10eea47b9..592095f4c78866c53745786a615f1681dcaf6bf6 100644 --- a/net/minecraft/world/entity/monster/Strider.java +++ b/net/minecraft/world/entity/monster/Strider.java @@ -124,6 +124,13 @@ public class Strider extends Animal implements ItemSteerable { @@ -1085,7 +1085,7 @@ index 533801988cb4f8a916ef002a179990ca913b2f32..fe31c4a45afd61be8b74efe9d0858ccd EntityType entityType, LevelAccessor level, EntitySpawnReason spawnReason, BlockPos pos, RandomSource random ) { diff --git a/net/minecraft/world/entity/monster/Vex.java b/net/minecraft/world/entity/monster/Vex.java -index 30bd8a1b75376e6c74847ec338cc7f8988d6ca8a..ab320cf5a8c68fd239e81172a2f3909a67931105 100644 +index 39f7c6ab8aa0fb0e1b472205f4849b3b10c74d81..9ecbecb2a5feed3e4cbb09c07e2c5b66f0a1c7c6 100644 --- a/net/minecraft/world/entity/monster/Vex.java +++ b/net/minecraft/world/entity/monster/Vex.java @@ -119,6 +119,13 @@ public class Vex extends Monster implements TraceableEntity { @@ -1121,7 +1121,7 @@ index 28fc1cd1e8721e2a87b5aa610d27afa8df3f4074..7f70b2387842f65da4632f1a27669a02 protected void registerGoals() { super.registerGoals(); diff --git a/net/minecraft/world/entity/monster/Witch.java b/net/minecraft/world/entity/monster/Witch.java -index e90ac2c977555793ee8c25f04ec3c33b0332d312..4b253ae8149f5d9505c5140a00a96d8c8850b1c4 100644 +index 5d32cbb46b5ac9833a2a16e828b7d1915a08f3f1..1abfaf4bbb26dafc506ddf2d5449ba009364bd76 100644 --- a/net/minecraft/world/entity/monster/Witch.java +++ b/net/minecraft/world/entity/monster/Witch.java @@ -88,6 +88,13 @@ public class Witch extends Raider implements RangedAttackMob { @@ -1139,7 +1139,7 @@ index e90ac2c977555793ee8c25f04ec3c33b0332d312..4b253ae8149f5d9505c5140a00a96d8c protected void registerGoals() { super.registerGoals(); diff --git a/net/minecraft/world/entity/monster/WitherSkeleton.java b/net/minecraft/world/entity/monster/WitherSkeleton.java -index ef2a7fdc8abe05b7718b71e23556258aba392c75..b3f5b2e3e2cfc378de948c0e186727d5687c0e98 100644 +index 29a2d1b25c8f04691d4e34fcb3256a4f0144829d..80705c379e6bc41c6b6e4e75e6168aef17c8acf1 100644 --- a/net/minecraft/world/entity/monster/WitherSkeleton.java +++ b/net/minecraft/world/entity/monster/WitherSkeleton.java @@ -66,6 +66,13 @@ public class WitherSkeleton extends AbstractSkeleton { @@ -1157,10 +1157,10 @@ index ef2a7fdc8abe05b7718b71e23556258aba392c75..b3f5b2e3e2cfc378de948c0e186727d5 protected void registerGoals() { this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractPiglin.class, true)); diff --git a/net/minecraft/world/entity/monster/Zoglin.java b/net/minecraft/world/entity/monster/Zoglin.java -index ddc8de9a111395aa77025b809f176425be7bb30c..e37c6dcbe62cba2cb7f33ac1792d539f9b07aa24 100644 +index 5ed357158eccc48b2d1e25e06c35b7436086e7c5..e0ee4f71786dce5690cf75bb55def05c8608c8d2 100644 --- a/net/minecraft/world/entity/monster/Zoglin.java +++ b/net/minecraft/world/entity/monster/Zoglin.java -@@ -119,6 +119,13 @@ public class Zoglin extends Monster implements HoglinBase { +@@ -118,6 +118,13 @@ public class Zoglin extends Monster implements HoglinBase { } // Purpur end - Toggle for water sensitive mob damage @@ -1175,7 +1175,7 @@ index ddc8de9a111395aa77025b809f176425be7bb30c..e37c6dcbe62cba2cb7f33ac1792d539f protected Brain.Provider brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); diff --git a/net/minecraft/world/entity/monster/Zombie.java b/net/minecraft/world/entity/monster/Zombie.java -index 147c030a2f8fd0d430070a36946fa42af177ea68..ab4dc7b3a7593d255dbd7d1df667fce3504af3ed 100644 +index fab34ee698752b4f0c79f143efac98f134b5276b..3c7d9bfc57c68f58466f64cd5d51e08635d8657b 100644 --- a/net/minecraft/world/entity/monster/Zombie.java +++ b/net/minecraft/world/entity/monster/Zombie.java @@ -150,6 +150,13 @@ public class Zombie extends Monster { @@ -1193,10 +1193,10 @@ index 147c030a2f8fd0d430070a36946fa42af177ea68..ab4dc7b3a7593d255dbd7d1df667fce3 protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur - Ridables diff --git a/net/minecraft/world/entity/monster/ZombieVillager.java b/net/minecraft/world/entity/monster/ZombieVillager.java -index 606fe4bd9c3359e42a025a866873e147ee16a40e..e218e5d5f146ec996a6f5ce7e76b1d6506ac1cb9 100644 +index a75452d77c48a09e9cea2ca2e94745d02e618a12..30107b919a467f233a27c0f29ab7a35d1dd4d7e7 100644 --- a/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/net/minecraft/world/entity/monster/ZombieVillager.java -@@ -129,6 +129,13 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { +@@ -126,6 +126,13 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { } // Purpur end - Toggle for water sensitive mob damage @@ -1211,7 +1211,7 @@ index 606fe4bd9c3359e42a025a866873e147ee16a40e..e218e5d5f146ec996a6f5ce7e76b1d65 protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/monster/ZombifiedPiglin.java b/net/minecraft/world/entity/monster/ZombifiedPiglin.java -index 7406f1f589509769aed260197f7cfabc081ce37b..f58c48d9de85fda3d13079f3e56b31af75b3c725 100644 +index 3e262c6919287ad981b1d36b7f96dd14cae8e190..1955ea6cff628234342989249de6efd1180b0999 100644 --- a/net/minecraft/world/entity/monster/ZombifiedPiglin.java +++ b/net/minecraft/world/entity/monster/ZombifiedPiglin.java @@ -113,6 +113,13 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { @@ -1229,10 +1229,10 @@ index 7406f1f589509769aed260197f7cfabc081ce37b..f58c48d9de85fda3d13079f3e56b31af public void setPersistentAngerTarget(@Nullable UUID target) { this.persistentAngerTarget = target; diff --git a/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/net/minecraft/world/entity/monster/hoglin/Hoglin.java -index ddb7532d83b46dae22798937e097a8876fcd6106..994f6e5cb0960d43de00d9ef6d25e81107e0774a 100644 +index 55a802d5a4480b09f8564949b4b04fb8e43fe8bd..12c4c7dfa5a22283c5179ae2c1c94d9580cd2c43 100644 --- a/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/net/minecraft/world/entity/monster/hoglin/Hoglin.java -@@ -135,6 +135,13 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { +@@ -134,6 +134,13 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { } // Purpur end - Toggle for water sensitive mob damage @@ -1247,10 +1247,10 @@ index ddb7532d83b46dae22798937e097a8876fcd6106..994f6e5cb0960d43de00d9ef6d25e811 public void setTimeInOverworld(int timeInOverworld) { this.timeInOverworld = timeInOverworld; diff --git a/net/minecraft/world/entity/monster/piglin/Piglin.java b/net/minecraft/world/entity/monster/piglin/Piglin.java -index 76d572959b3422d1691e34fec3bbeb8d5b50d715..c48044ff1fd5b587935d11747d93598d0bc0c7a3 100644 +index f9247771363ed1ccca775f23212eb402612c896d..69633aa1a457a936a53d873f478113a5ae71dbd5 100644 --- a/net/minecraft/world/entity/monster/piglin/Piglin.java +++ b/net/minecraft/world/entity/monster/piglin/Piglin.java -@@ -169,6 +169,13 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento +@@ -168,6 +168,13 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento } // Purpur end - Toggle for water sensitive mob damage @@ -1283,7 +1283,7 @@ index f4893cc54d7f144025da0057beedb3a974c80dc1..70ee15527fa6f30783d6a58bb767b181 return Monster.createMonsterAttributes() .add(Attributes.MAX_HEALTH, 50.0) diff --git a/net/minecraft/world/entity/npc/Villager.java b/net/minecraft/world/entity/npc/Villager.java -index 67732dbbad95791724901058615026a90ad05fc5..edef9b959200008dda8c5036319e29c5e2d92dae 100644 +index 5919135e4766e5e252aa07f9ff1170d92b9d839f..0b8697459de698e152e1b4c0dc78c63339a48b17 100644 --- a/net/minecraft/world/entity/npc/Villager.java +++ b/net/minecraft/world/entity/npc/Villager.java @@ -288,6 +288,13 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -1301,7 +1301,7 @@ index 67732dbbad95791724901058615026a90ad05fc5..edef9b959200008dda8c5036319e29c5 public Brain getBrain() { return (Brain)super.getBrain(); diff --git a/net/minecraft/world/entity/npc/WanderingTrader.java b/net/minecraft/world/entity/npc/WanderingTrader.java -index f2b59a4490226168dd69ace94022cf6398d48615..dc6b30518270486cf3b2eaab4db13a507917f37d 100644 +index a23b8788db33625df43940a26de8dffdb91d5d2d..1b86f903a1ef71465635ea04ed34832bf59ff6b5 100644 --- a/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/net/minecraft/world/entity/npc/WanderingTrader.java @@ -105,6 +105,13 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Bee.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Bee.java.patch new file mode 100644 index 000000000..15c6e1abf --- /dev/null +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Bee.java.patch @@ -0,0 +1,52 @@ +--- a/net/minecraft/world/entity/animal/Bee.java ++++ b/net/minecraft/world/entity/animal/Bee.java +@@ -170,7 +_,7 @@ + // Paper end - Fix MC-167279 + this.lookControl = new Bee.BeeLookControl(this); + this.setPathfindingMalus(PathType.DANGER_FIRE, -1.0F); +- this.setPathfindingMalus(PathType.WATER, -1.0F); ++ if (this.level().purpurConfig.beeCanInstantlyStartDrowning) this.setPathfindingMalus(PathType.WATER, -1.0F); // Purpur - bee can instantly start drowning in water option + this.setPathfindingMalus(PathType.WATER_BORDER, 16.0F); + this.setPathfindingMalus(PathType.COCOA, -1.0F); + this.setPathfindingMalus(PathType.FENCE, -1.0F); +@@ -368,7 +_,7 @@ + } + + public static boolean isNightOrRaining(Level level) { +- return level.dimensionType().hasSkyLight() && level.dimension() != Level.END && (level.isDarkOutside() || level.isRaining()); ++ return level.dimensionType().hasSkyLight() && (level.isDarkOutside() && !level.purpurConfig.beeCanWorkAtNight || level.isRaining() && !level.purpurConfig.beeCanWorkInRain); // Purpur - Bee can work when raining or at night + } + + public void setStayOutOfHiveCountdown(int stayOutOfHiveCountdown) { +@@ -401,6 +_,7 @@ + this.hurtServer(level, this.damageSources().drown(), 1.0F); + } + ++ if (hasStung && !this.level().purpurConfig.beeDiesAfterSting) setHasStung(false); else // Purpur - Stop bees from dying after stinging + if (hasStung) { + this.timeSinceSting++; + if (this.timeSinceSting % 5 == 0 && this.random.nextInt(Mth.clamp(1200 - this.timeSinceSting, 1, 1200)) == 0) { +@@ -1140,6 +_,7 @@ + Bee.this.savedFlowerPos = optional.get(); + Bee.this.navigation + .moveTo(Bee.this.savedFlowerPos.getX() + 0.5, Bee.this.savedFlowerPos.getY() + 0.5, Bee.this.savedFlowerPos.getZ() + 0.5, 1.2F); ++ new org.purpurmc.purpur.event.entity.BeeFoundFlowerEvent((org.bukkit.entity.Bee) Bee.this.getBukkitEntity(), org.bukkit.craftbukkit.util.CraftLocation.toBukkit(Bee.this.savedFlowerPos, Bee.this.level())).callEvent(); // Purpur - Bee API + return true; + } else { + Bee.this.remainingCooldownBeforeLocatingNewFlower = Mth.nextInt(Bee.this.random, 20, 60); +@@ -1186,6 +_,7 @@ + this.pollinating = false; + Bee.this.navigation.stop(); + Bee.this.remainingCooldownBeforeLocatingNewFlower = 200; ++ new org.purpurmc.purpur.event.entity.BeeStopPollinatingEvent((org.bukkit.entity.Bee) Bee.this.getBukkitEntity(), Bee.this.savedFlowerPos == null ? null : org.bukkit.craftbukkit.util.CraftLocation.toBukkit(Bee.this.savedFlowerPos, Bee.this.level()), Bee.this.hasNectar()).callEvent(); // Purpur - Bee API + } + + @Override +@@ -1232,6 +_,7 @@ + this.setWantedPos(); + } + ++ if (this.successfulPollinatingTicks == 0) new org.purpurmc.purpur.event.entity.BeeStartedPollinatingEvent((org.bukkit.entity.Bee) Bee.this.getBukkitEntity(), org.bukkit.craftbukkit.util.CraftLocation.toBukkit(Bee.this.savedFlowerPos, Bee.this.level())).callEvent(); // Purpur - Bee API + this.successfulPollinatingTicks++; + if (Bee.this.random.nextFloat() < 0.05F && this.successfulPollinatingTicks > this.lastSoundPlayedTick + 60) { + this.lastSoundPlayedTick = this.successfulPollinatingTicks; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Parrot.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Parrot.java.patch new file mode 100644 index 000000000..c515b3a4c --- /dev/null +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Parrot.java.patch @@ -0,0 +1,52 @@ +--- a/net/minecraft/world/entity/animal/Parrot.java ++++ b/net/minecraft/world/entity/animal/Parrot.java +@@ -159,6 +_,7 @@ + protected void registerGoals() { + this.goalSelector.addGoal(0, new TamableAnimal.TamableAnimalPanicGoal(1.25)); + this.goalSelector.addGoal(0, new FloatGoal(this)); ++ if (this.level().purpurConfig.parrotBreedable) this.goalSelector.addGoal(1, new net.minecraft.world.entity.ai.goal.BreedGoal(this, 1.0D)); // Purpur - Breedable parrots + this.goalSelector.addGoal(1, new LookAtPlayerGoal(this, Player.class, 8.0F)); + this.goalSelector.addGoal(2, new SitWhenOrderedToGoal(this)); + this.goalSelector.addGoal(2, new FollowOwnerGoal(this, 1.0, 5.0F, 1.0F)); +@@ -264,7 +_,7 @@ + } + + if (!this.level().isClientSide()) { +- if (this.random.nextInt(10) == 0 && !org.bukkit.craftbukkit.event.CraftEventFactory.callEntityTameEvent(this, player).isCancelled()) { // CraftBukkit ++ if (((this.level().purpurConfig.alwaysTameInCreative && player.hasInfiniteMaterials()) || this.random.nextInt(10) == 0) && !org.bukkit.craftbukkit.event.CraftEventFactory.callEntityTameEvent(this, player).isCancelled()) { // CraftBukkit // Purpur - Config to always tame in Creative + this.tame(player); + this.level().broadcastEntityEvent(this, (byte)7); + } else { +@@ -272,6 +_,7 @@ + } + } + ++ if (this.level().purpurConfig.parrotBreedable) return super.mobInteract(player, hand); // Purpur - Breedable parrots + return InteractionResult.SUCCESS; + } else if (!itemInHand.is(ItemTags.PARROT_POISONOUS_FOOD)) { + if (!this.isFlying() && this.isTame() && this.isOwnedBy(player)) { +@@ -296,7 +_,7 @@ + + @Override + public boolean isFood(ItemStack stack) { +- return false; ++ return this.level().purpurConfig.parrotBreedable && stack.is(ItemTags.PARROT_FOOD); // Purpur - Breedable parrots + } + + public static boolean checkParrotSpawnRules( +@@ -311,13 +_,13 @@ + + @Override + public boolean canMate(Animal otherAnimal) { +- return false; ++ return super.canMate(otherAnimal); // Purpur - Breedable parrots + } + + @Nullable + @Override + public AgeableMob getBreedOffspring(ServerLevel level, AgeableMob otherParent) { +- return null; ++ return level.purpurConfig.parrotBreedable ? EntityType.PARROT.create(level, EntitySpawnReason.BREEDING) : null; // Purpur - Breedable parrots + } + + @Nullable