diff --git a/gradle.properties b/gradle.properties index e396430b7..5da4fd431 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.10-R0.1-SNAPSHOT mcVersion = 1.21.10 -paperCommit = 610f1d2177f9e6320503e3dad6c42a93a6e48d56 +paperCommit = 81b7a578643f413e4f294f756f9bb58282d1b2de org.gradle.configuration-cache = true org.gradle.caching = true diff --git a/purpur-server/minecraft-patches/features/0001-Ridables.patch b/purpur-server/minecraft-patches/features/0001-Ridables.patch index 7197011de..3261e9e7a 100644 --- a/purpur-server/minecraft-patches/features/0001-Ridables.patch +++ b/purpur-server/minecraft-patches/features/0001-Ridables.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Ridables diff --git a/net/minecraft/gametest/framework/GameTestHelper.java b/net/minecraft/gametest/framework/GameTestHelper.java -index aa87e93ade4c25a575e7861fef45b70c3e4e3aeb..c92ffd8b2fe4945ccd552eb54154b7be0e1b492e 100644 +index bbe6a5b6c7a24a77aa2304e21a9ee4fe2e22786b..cff4be95e13d00c12ae8d4074d5d6e14808d9123 100644 --- a/net/minecraft/gametest/framework/GameTestHelper.java +++ b/net/minecraft/gametest/framework/GameTestHelper.java @@ -314,6 +314,8 @@ public class GameTestHelper { @@ -18,10 +18,10 @@ index aa87e93ade4c25a575e7861fef45b70c3e4e3aeb..c92ffd8b2fe4945ccd552eb54154b7be public boolean isClientAuthoritative() { return false; diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java -index faf13ac8c8c1b1d0830a9d0ffce89782f4d5918f..5c1df262383785c1b3b7ecff2d836d164e1c3644 100644 +index e35fb4f48a16780d8728ac1c7bb0fc64e2ded4e7..2c7039281854cc9b21e2badb62389522a5c1728e 100644 --- a/net/minecraft/server/MinecraftServer.java +++ b/net/minecraft/server/MinecraftServer.java -@@ -1805,6 +1805,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,7 +30,7 @@ index faf13ac8c8c1b1d0830a9d0ffce89782f4d5918f..5c1df262383785c1b3b7ecff2d836d16 /* 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 1650e1c9d7a9fc2bcd61eba79f7d09ffa17bb02c..e4d9bf14564d5984da64b1ecefc589c740817c47 100644 +index d814aa9654163cdd8f6f938276d820a85036f04a..7dedba7fa332e02c4655424fea5263fee56222d8 100644 --- a/net/minecraft/server/level/ServerLevel.java +++ b/net/minecraft/server/level/ServerLevel.java @@ -224,6 +224,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe @@ -42,7 +42,7 @@ index 1650e1c9d7a9fc2bcd61eba79f7d09ffa17bb02c..e4d9bf14564d5984da64b1ecefc589c7 @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 306ff1cf578526dc01f602385fd7893f9cb00935..4aa64ea7ac3d7bb52bbf042eae43c0f025a2aaaf 100644 +index 1dc24601d40d54dd8db21ce3bec4fb9b4bf24f08..5b910e27daa43ba2ac29d29e8ecc1b0b0897fe84 100644 --- a/net/minecraft/server/level/ServerPlayer.java +++ b/net/minecraft/server/level/ServerPlayer.java @@ -774,6 +774,15 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc @@ -62,7 +62,7 @@ index 306ff1cf578526dc01f602385fd7893f9cb00935..4aa64ea7ac3d7bb52bbf042eae43c0f0 private void updatePlayerAttributes() { diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index f2765b2481305f971da5e3695f465245f398c548..ade5df8bc5ef8414f8b51d63f354d59488a58ce8 100644 +index 753d668313a6e0b180975fb91ae7741f7ca19119..b39d3713b0ece3ae08f1c1c359d114011117192f 100644 --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -2862,6 +2862,8 @@ public class ServerGamePacketListenerImpl @@ -75,10 +75,10 @@ index f2765b2481305f971da5e3695f465245f398c548..ade5df8bc5ef8414f8b51d63f354d594 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 611bca1ae544f3358e77f515473679cf7ca194fa..03afc46f7f437fe2b516c7b1ec8c34e084b3f5fd 100644 +index faba848cf70bac2ac280565b0de3c2342be8e977..75039c43a1f7d6f22fdebd1bac56a028354d1527 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java -@@ -3362,6 +3362,13 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name +@@ -3361,6 +3361,13 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name this.passengers = ImmutableList.copyOf(list); } @@ -92,7 +92,7 @@ index 611bca1ae544f3358e77f515473679cf7ca194fa..03afc46f7f437fe2b516c7b1ec8c34e0 } } -@@ -3402,6 +3409,14 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name +@@ -3401,6 +3408,14 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name return false; } // CraftBukkit end @@ -107,7 +107,7 @@ index 611bca1ae544f3358e77f515473679cf7ca194fa..03afc46f7f437fe2b516c7b1ec8c34e0 if (this.passengers.size() == 1 && this.passengers.get(0) == passenger) { this.passengers = ImmutableList.of(); } else { -@@ -5469,4 +5484,44 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name +@@ -5468,4 +5483,44 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name return ((ServerLevel) this.level()).isPositionEntityTicking(this.blockPosition()); } // Paper end - Expose entity id counter @@ -153,7 +153,7 @@ index 611bca1ae544f3358e77f515473679cf7ca194fa..03afc46f7f437fe2b516c7b1ec8c34e0 + // Purpur end - Ridables } diff --git a/net/minecraft/world/entity/GlowSquid.java b/net/minecraft/world/entity/GlowSquid.java -index f0c452ddc4b299a930de261722cc41a89aa78eeb..8e8ddab59de508c84c4182e105a11554387dcce0 100644 +index 70790f4e813bb950e103314644bd1d767edb4123..8a10da9409e19b03b559d14c6f5238b5393545c7 100644 --- a/net/minecraft/world/entity/GlowSquid.java +++ b/net/minecraft/world/entity/GlowSquid.java @@ -34,6 +34,19 @@ public class GlowSquid extends Squid { @@ -177,7 +177,7 @@ 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 d6540b82ce0f7c8fde596c6af24212bac1ef54bd..fdf197b040b87468fe89d86f21688c7c07bef853 100644 +index 7bddc4c939c37771b615a6364dccd5e5a50b1010..0002c7c4c728f44106ad4984e1d39ff2c76bf86f 100644 --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java @@ -239,9 +239,9 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin @@ -195,10 +195,10 @@ index d6540b82ce0f7c8fde596c6af24212bac1ef54bd..fdf197b040b87468fe89d86f21688c7c protected int lerpHeadSteps; @@ -290,7 +290,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.attributes = new AttributeMap(DefaultAttributes.getSupplier(entityType), this); // Purpur - Ridables + protected LivingEntity(EntityType type, Level level) { + super(type, level); +- this.attributes = new AttributeMap(DefaultAttributes.getSupplier(type)); ++ this.attributes = new AttributeMap(DefaultAttributes.getSupplier(type), this); // Purpur - Ridables 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()); @@ -210,7 +210,7 @@ index d6540b82ce0f7c8fde596c6af24212bac1ef54bd..fdf197b040b87468fe89d86f21688c7c @Override protected void checkFallDamage(double y, boolean onGround, BlockState state, BlockPos pos) { -@@ -3057,6 +3058,20 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin +@@ -3063,6 +3064,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 d6540b82ce0f7c8fde596c6af24212bac1ef54bd..fdf197b040b87468fe89d86f21688c7c this.moveRelative(amount, relative); this.move(MoverType.SELF, this.getDeltaMovement()); this.setDeltaMovement(this.getDeltaMovement().scale(0.91F)); -@@ -3660,8 +3675,10 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin +@@ -3666,8 +3681,10 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin this.pushEntities(); profilerFiller.pop(); // Paper start - Add EntityMoveEvent @@ -244,7 +244,7 @@ index d6540b82ce0f7c8fde596c6af24212bac1ef54bd..fdf197b040b87468fe89d86f21688c7c 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()); -@@ -3671,6 +3688,21 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin +@@ -3677,6 +3694,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,11 +267,11 @@ index d6540b82ce0f7c8fde596c6af24212bac1ef54bd..fdf197b040b87468fe89d86f21688c7c // 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 73c110a04f17141e6331d5c518780fc5122f2bc3..2bef2cd10447f41d5fc4c37eb574ce32fc2386ab 100644 +index 2697ca37851e2750c5217faf147dbac1113b8348..996e9e098ed510cdadc82e4f133b6aec509040d3 100644 --- a/net/minecraft/world/entity/Mob.java +++ b/net/minecraft/world/entity/Mob.java @@ -156,8 +156,8 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab - super(entityType, level); + super(type, level); this.goalSelector = new GoalSelector(); this.targetSelector = new GoalSelector(); - this.lookControl = new LookControl(this); @@ -291,7 +291,7 @@ index 73c110a04f17141e6331d5c518780fc5122f2bc3..2bef2cd10447f41d5fc4c37eb574ce32 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(level, this)); + registrar.register(DebugSubscriptions.BRAINS, () -> DebugBrainDump.takeBrainDump(level, this)); } } + @@ -387,7 +387,7 @@ 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 f14358b09785fe78459964c0e25ef8f4c12c8e60..c23d6edeaca324bcfd60c6e96ec4038f6ef595a9 100644 +index 942cda3d411e579fb5fd2f2edf0be59cc7bdbee8..d9aefe5777fa545d67621bc1ce2ef6a11ca9b27c 100644 --- a/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java +++ b/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java @@ -136,7 +136,7 @@ public class DefaultAttributes { @@ -400,7 +400,7 @@ index f14358b09785fe78459964c0e25ef8f4c12c8e60..c23d6edeaca324bcfd60c6e96ec4038f .put(EntityType.PIGLIN, Piglin.createAttributes().build()) .put(EntityType.PIGLIN_BRUTE, PiglinBrute.createAttributes().build()) diff --git a/net/minecraft/world/entity/ai/control/MoveControl.java b/net/minecraft/world/entity/ai/control/MoveControl.java -index b6921582adef6f4c48de4dcffd6873ac0f909a08..89ee325b26ec3a647f55e45c9122ff4196433a43 100644 +index b7a4b5ad718e8f4ea108f606669d4fcaf5219e6f..0604fca0687e02e75c097ff864b13e2763bfeb76 100644 --- a/net/minecraft/world/entity/ai/control/MoveControl.java +++ b/net/minecraft/world/entity/ai/control/MoveControl.java @@ -29,6 +29,20 @@ public class MoveControl implements Control { @@ -447,13 +447,13 @@ 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 43978de88c97ef2bd3e57171ea124e53a04171fd..3b4ebfaf2327dd599cd98918418b6efc6d6be9b2 100644 +index 40558cfe11f6ea28d777f17814cc08f6d92617d3..16cebb7e0ba7070c67dee00a67c29c3f808d8048 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 { - public Bat(EntityType entityType, Level level) { - super(entityType, level); + public Bat(EntityType type, Level level) { + super(type, level); + this.moveControl = new org.purpurmc.purpur.controller.FlyingWithSpacebarMoveControllerWASD(this, 0.075F); // Purpur - Ridables if (!level.isClientSide()) { this.setResting(true); @@ -534,7 +534,7 @@ index 43978de88c97ef2bd3e57171ea124e53a04171fd..3b4ebfaf2327dd599cd98918418b6efc BlockPos blockPos = this.blockPosition(); BlockPos blockPos1 = blockPos.above(); diff --git a/net/minecraft/world/entity/animal/AbstractCow.java b/net/minecraft/world/entity/animal/AbstractCow.java -index 4e81bc7215c845b316bcd46ce29f49af7f986088..61e7300bbf272398b2faebf5e537d9c2ddedc6d6 100644 +index 439d0dfabf9263bfbfb727b87dba17e848f6e66c..ce578519ad26d1086a81ebf2a2b698d1bee643af 100644 --- a/net/minecraft/world/entity/animal/AbstractCow.java +++ b/net/minecraft/world/entity/animal/AbstractCow.java @@ -37,6 +37,7 @@ public abstract class AbstractCow extends Animal { @@ -562,7 +562,7 @@ index 4e81bc7215c845b316bcd46ce29f49af7f986088..61e7300bbf272398b2faebf5e537d9c2 // CraftBukkit end player.playSound(SoundEvents.COW_MILK, 1.0F, 1.0F); diff --git a/net/minecraft/world/entity/animal/AbstractFish.java b/net/minecraft/world/entity/animal/AbstractFish.java -index b18765bb91b4015bef326663dbc8966945929996..0002e39e2670ad92849ccc0aada163b174fe1ec2 100644 +index ee762c5f6bba53e78ba7c478ebfad19f017f31ca..9ffd362fbf977e5df272ca78927cd02f0a7191f3 100644 --- a/net/minecraft/world/entity/animal/AbstractFish.java +++ b/net/minecraft/world/entity/animal/AbstractFish.java @@ -90,6 +90,7 @@ public abstract class AbstractFish extends WaterAnimal implements Bucketable { @@ -617,17 +617,17 @@ 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 924dbe3f82224ce4e68b9829c59586c2efda1781..3da697dfaef1880070ef61a3386adbf20d98e1a1 100644 +index 60031ee5b3f1b8783813dae304b14a968ed18934..c0abcf209d45146d1f98599c2f4d16877431a46c 100644 --- a/net/minecraft/world/entity/animal/Bee.java +++ b/net/minecraft/world/entity/animal/Bee.java @@ -152,6 +152,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { - public Bee(EntityType entityType, Level level) { - super(entityType, level); + public Bee(EntityType type, Level level) { + super(type, level); + final org.purpurmc.purpur.controller.FlyingMoveControllerWASD flyingController = new org.purpurmc.purpur.controller.FlyingMoveControllerWASD(this, 0.25F, 1.0F, false); // Purpur - Ridables // Paper start - Fix MC-167279 class BeeFlyingMoveControl extends FlyingMoveControl { - public BeeFlyingMoveControl(final Mob entity, final int maxPitchChange, final boolean noGravity) { + public BeeFlyingMoveControl(final Mob mob, final int maxTurn, final boolean hoversInPlace) { @@ -160,11 +161,24 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { @Override @@ -710,7 +710,7 @@ index 924dbe3f82224ce4e68b9829c59586c2efda1781..3da697dfaef1880070ef61a3386adbf2 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)); -@@ -1088,15 +1138,15 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -1086,15 +1136,15 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { } } @@ -730,7 +730,7 @@ index 924dbe3f82224ce4e68b9829c59586c2efda1781..3da697dfaef1880070ef61a3386adbf2 } diff --git a/net/minecraft/world/entity/animal/Cat.java b/net/minecraft/world/entity/animal/Cat.java -index 5b9d8c85f91396287b0deb4deac30e2c136cc461..a960c3a4854f7d2343747d463d1d505b2e39d16b 100644 +index 0796795bc2d1aa84051ce184a769614cdaf7b843..59bcbf6d5d844000ab26c0ca7e6674c7ac6f35ed 100644 --- a/net/minecraft/world/entity/animal/Cat.java +++ b/net/minecraft/world/entity/animal/Cat.java @@ -92,10 +92,36 @@ public class Cat extends TamableAnimal { @@ -787,7 +787,7 @@ index 5b9d8c85f91396287b0deb4deac30e2c136cc461..a960c3a4854f7d2343747d463d1d505b Item item = itemInHand.getItem(); if (this.isTame()) { diff --git a/net/minecraft/world/entity/animal/Chicken.java b/net/minecraft/world/entity/animal/Chicken.java -index da408c313d898413dee928e9c80501ddf56d75e8..26732fde9894816cb83ba1249b2ac9b47e2b639b 100644 +index 59b634a186cfb7b1bb6205ec0db76b1e3d2523c2..bb261f049e28dd5fec00d92a844a1eaa4e8e0ca3 100644 --- a/net/minecraft/world/entity/animal/Chicken.java +++ b/net/minecraft/world/entity/animal/Chicken.java @@ -72,9 +72,27 @@ public class Chicken extends Animal { @@ -819,11 +819,11 @@ index da408c313d898413dee928e9c80501ddf56d75e8..26732fde9894816cb83ba1249b2ac9b4 this.goalSelector.addGoal(2, new BreedGoal(this, 1.0)); this.goalSelector.addGoal(3, new TemptGoal(this, 1.0, itemStack -> itemStack.is(ItemTags.CHICKEN_FOOD), false)); diff --git a/net/minecraft/world/entity/animal/Cod.java b/net/minecraft/world/entity/animal/Cod.java -index 75509be5b9162c1f7f91f2290ef2d80171ae61df..651c9243902e3c48fb438913974e996d67d6f746 100644 +index 03fdb604042f6bca069f16d062345e8f45baac23..4bbe60e47cd3710c2dd31a418de38b894eb8247d 100644 --- a/net/minecraft/world/entity/animal/Cod.java +++ b/net/minecraft/world/entity/animal/Cod.java @@ -13,6 +13,18 @@ public class Cod extends AbstractSchoolingFish { - super(entityType, level); + super(type, level); } + // Purpur start - Ridables @@ -842,11 +842,11 @@ index 75509be5b9162c1f7f91f2290ef2d80171ae61df..651c9243902e3c48fb438913974e996d public ItemStack getBucketItemStack() { return new ItemStack(Items.COD_BUCKET); diff --git a/net/minecraft/world/entity/animal/Cow.java b/net/minecraft/world/entity/animal/Cow.java -index 176425cbacea381990386d440059b768a583af98..802c536659d45d0974fe788535ca326b86f90551 100644 +index 83b399be5af622aa413f1fd6ad82d920ae92b454..380c8e3c9c790d626cd9f8d4b1f13838d0b756ec 100644 --- a/net/minecraft/world/entity/animal/Cow.java +++ b/net/minecraft/world/entity/animal/Cow.java @@ -29,6 +29,23 @@ public class Cow extends AbstractCow { - super(entityType, level); + super(type, level); } + // Purpur start - Ridables @@ -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 1386ba68ae768af5593c066b4a0acc7f62239290..ecd4dbcfc7f568722488c0894a98db68bb07ead9 100644 +index 28785ef53fbea7a0413c16b0eaf28a2092e314d8..68dfce3c68cb4a861932e76dfa39f1b4f3724a50 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 { @@ -879,8 +879,8 @@ index 1386ba68ae768af5593c066b4a0acc7f62239290..ecd4dbcfc7f568722488c0894a98db68 private boolean isNaturallyAggressiveToPlayers; // Purpur - Dolphins naturally aggressive to players chance + private int spitCooldown; // Purpur - Ridables - public Dolphin(EntityType entityType, Level level) { - super(entityType, level); + public Dolphin(EntityType type, Level level) { + super(type, level); - this.moveControl = new SmoothSwimmingMoveControl(this, 85, 10, 0.02F, 0.1F, true); + // Purpur start - Ridables + class DolphinMoveControl extends SmoothSwimmingMoveControl { @@ -995,7 +995,7 @@ index 1386ba68ae768af5593c066b4a0acc7f62239290..ecd4dbcfc7f568722488c0894a98db68 this.setAirSupply(this.getMaxAirSupply()); } else { diff --git a/net/minecraft/world/entity/animal/Fox.java b/net/minecraft/world/entity/animal/Fox.java -index defdacce68e59b038b919b597df17d1aae366b51..4d2b6a34c0c276ef304916b2b84c92a516fe4979 100644 +index f7da92c77fd1038750014d0ee3e878101176127a..6b931060a7be54aa6a1c0d196c52c4e4b56c0a95 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,7 +1098,7 @@ index defdacce68e59b038b919b597df17d1aae366b51..4d2b6a34c0c276ef304916b2b84c92a5 } } diff --git a/net/minecraft/world/entity/animal/HappyGhast.java b/net/minecraft/world/entity/animal/HappyGhast.java -index 4d13d33fc40e42fe924f8aeca737e15b9a4ee136..390b929a2d71df840febb081e68f675972db0fa4 100644 +index aafbbe791f6913748c5aed94b7aef4cd92692c8a..eb14c2c508efd927d4696ac4e7cd420104ccc192 100644 --- a/net/minecraft/world/entity/animal/HappyGhast.java +++ b/net/minecraft/world/entity/animal/HappyGhast.java @@ -125,6 +125,13 @@ public class HappyGhast extends Animal { @@ -1116,7 +1116,7 @@ index 4d13d33fc40e42fe924f8aeca737e15b9a4ee136..390b929a2d71df840febb081e68f6759 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 b449c1cf9966fadb58a93c8895cddc16920fbb17..febe8b7b6a29f34fda685d1ab467dbf168d998c3 100644 +index ff8402137475fc1eb8ab4240579135e604bb7f92..ed2ddcb4d4736b384a1b90cc4ea0e086e9d53102 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,11 +1172,11 @@ index b449c1cf9966fadb58a93c8895cddc16920fbb17..febe8b7b6a29f34fda685d1ab467dbf1 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 a3e2aea5de34809220979cb14b70261acae49bfa..cd13cff73e4a882a7d9aa246bfdf0c7ade99d987 100644 +index 3ce300a6abc4ee39f010ff5318b64c50e732742b..9de016cb4e1aba2ab8ff4f16827b3450e8155992 100644 --- a/net/minecraft/world/entity/animal/MushroomCow.java +++ b/net/minecraft/world/entity/animal/MushroomCow.java @@ -63,6 +63,23 @@ public class MushroomCow extends AbstractCow implements Shearable { - super(entityType, level); + super(type, level); } + // Purpur start - Ridables @@ -1209,7 +1209,7 @@ index a3e2aea5de34809220979cb14b70261acae49bfa..cd13cff73e4a882a7d9aa246bfdf0c7a // Paper end - custom shear drops } diff --git a/net/minecraft/world/entity/animal/Ocelot.java b/net/minecraft/world/entity/animal/Ocelot.java -index 3b29ad366586b12a61bf7bd4c2f8417773cf2f27..0340813f71980d2c48853a68b37d353cd50a28cb 100644 +index 3320024f208dc86eb344f195b61622d6e7989989..91fa99c852e79e572165322212b0291e73ebf0b3 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 3b29ad366586b12a61bf7bd4c2f8417773cf2f27..0340813f71980d2c48853a68b37d353c 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 3da6752ba714988a6558332e4eb205db9cf31f5b..65874fa6b80f5d0953317629ff997fafec68f66d 100644 +index 4b8b56c1f4ee31c235a9a68746185826cd9efa41..7be63b0738a1962a4b2563e78ae72f48bc330a2a 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,13 +1344,13 @@ index 3da6752ba714988a6558332e4eb205db9cf31f5b..65874fa6b80f5d0953317629ff997faf } } diff --git a/net/minecraft/world/entity/animal/Parrot.java b/net/minecraft/world/entity/animal/Parrot.java -index 9029eed9a5e578a7fa216cbfa084b3cf7622eebc..60e1810f91c086debb4ada192720398834c8ca84 100644 +index 11c1de6f66afa74506901c88ab8de95ea4fb20e0..e0374a72738f8110e41471cd0ef2d044be616523 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 { - public Parrot(EntityType entityType, Level level) { - super(entityType, level); + public Parrot(EntityType type, Level level) { + super(type, level); - this.moveControl = new FlyingMoveControl(this, 10, false); + // Purpur start - Ridables + final org.purpurmc.purpur.controller.FlyingWithSpacebarMoveControllerWASD flyingController = new org.purpurmc.purpur.controller.FlyingWithSpacebarMoveControllerWASD(this, 0.3F); @@ -1431,11 +1431,11 @@ index 9029eed9a5e578a7fa216cbfa084b3cf7622eebc..60e1810f91c086debb4ada1927203988 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 9366bb9b0c297f6c914be6001cfaa070e0cb2d7b..70c9629e6f1f82f44e14487ed3c81e391d480029 100644 +index 8a12ac29e2221c7e91f4935046894fbc77eaf2a1..84afbacfb7f590fa68858816b7c717a92fd03fc2 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 { - super(entityType, level); + super(type, level); } + // Purpur start - Ridables @@ -1463,7 +1463,7 @@ index 9366bb9b0c297f6c914be6001cfaa070e0cb2d7b..70c9629e6f1f82f44e14487ed3c81e39 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 8e6168ddfc3c1b335bee035dec5ae55ab358c778..b0f1c80465b3e4dd8ff220209df8a00f60ede84a 100644 +index 59288cb00951808d3ea7921875c9cbecb2de7f98..6ffb35630bab1303edb2179e4dcf749f9b3c3c28 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 { @@ -1472,8 +1472,8 @@ index 8e6168ddfc3c1b335bee035dec5ae55ab358c778..b0f1c80465b3e4dd8ff220209df8a00f private UUID persistentAngerTarget; + private int standTimer = 0; // Purpur - Ridables - public PolarBear(EntityType entityType, Level level) { - super(entityType, level); + public PolarBear(EntityType type, Level level) { + super(type, level); @@ -88,6 +89,34 @@ public class PolarBear extends Animal implements NeutralMob { } // Purpur end - Breedable Polar Bears @@ -1508,7 +1508,7 @@ index 8e6168ddfc3c1b335bee035dec5ae55ab358c778..b0f1c80465b3e4dd8ff220209df8a00f + @Nullable @Override - public AgeableMob getBreedOffspring(ServerLevel level, AgeableMob otherParent) { + public AgeableMob getBreedOffspring(ServerLevel level, AgeableMob partner) { @@ -103,6 +132,7 @@ public class PolarBear extends Animal implements NeutralMob { protected void registerGoals() { super.registerGoals(); @@ -1547,7 +1547,7 @@ index 8e6168ddfc3c1b335bee035dec5ae55ab358c778..b0f1c80465b3e4dd8ff220209df8a00f public float getStandingAnimationScale(float partialTick) { diff --git a/net/minecraft/world/entity/animal/Pufferfish.java b/net/minecraft/world/entity/animal/Pufferfish.java -index de7d1fd5a55c7b2b9cd9fc87959931232a1037d6..7c2d200165111e0a6fb804157074a28322304d95 100644 +index 29ae59edc8750ae7b10d88a425868dca7775a266..51dd0333b02ee232f3e2b17c9ae3617ea36f18ba 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 de7d1fd5a55c7b2b9cd9fc87959931232a1037d6..7c2d200165111e0a6fb804157074a283 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 c500caf43b458ea7cb0c7b6ac942e1f01648724e..daab94acd64b75ee19d582014eacfe4944aeda55 100644 +index 4b8a3e2299c8b216d570c57c2b449824e46a34a1..f50b38c98ec6eb96a72dde926a20e9a3803ee630 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 { @@ -1579,10 +1579,10 @@ index c500caf43b458ea7cb0c7b6ac942e1f01648724e..daab94acd64b75ee19d582014eacfe49 public int moreCarrotTicks = 0; + private boolean actualJump; // Purpur - Ridables - public Rabbit(EntityType entityType, Level level) { - super(entityType, level); + public Rabbit(EntityType type, Level level) { + super(type, level); @@ -99,9 +100,55 @@ public class Rabbit extends Animal { - //this.setSpeedModifier(0.0); // CraftBukkit + // this.setSpeedModifier(0.0); // CraftBukkit } + // Purpur start - Ridables @@ -1692,7 +1692,7 @@ index c500caf43b458ea7cb0c7b6ac942e1f01648724e..daab94acd64b75ee19d582014eacfe49 @Override diff --git a/net/minecraft/world/entity/animal/Salmon.java b/net/minecraft/world/entity/animal/Salmon.java -index 8a3e1d420263ac53b87ffed026380dcdc4a48285..265b2a6db778cabc1a97726c22c991051e3007fe 100644 +index e3ace30f12fe3183324ebd3025b411bbb09492e4..a0bd1c1446b81868fdb61a4d3db6140e7887cdb9 100644 --- a/net/minecraft/world/entity/animal/Salmon.java +++ b/net/minecraft/world/entity/animal/Salmon.java @@ -39,6 +39,18 @@ public class Salmon extends AbstractSchoolingFish { @@ -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 55e751c12cd3c9a87834fdd1367a75c46ccaf05d..6d0d1bb14b64d2a176db6a74f3a5ff0fa78a5434 100644 +index 8fa983d168874ef1497dc38b673295eb76a4e8b4..00af403efafbdd7274524403b2212c15026ee147 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 55e751c12cd3c9a87834fdd1367a75c46ccaf05d..6d0d1bb14b64d2a176db6a74f3a5ff0f } diff --git a/net/minecraft/world/entity/animal/Squid.java b/net/minecraft/world/entity/animal/Squid.java -index f8b4a97cf0558dcf1fc4916a38867f97f0dca868..438765bc5799dff8b9cfd6fa77808712e6ada9b2 100644 +index 9780ee6ad6954f67c1acaa84d1ebd934cd6c3ffb..39c8703d3034b48c9218adf4d347bd5e24231145 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 { @@ -1852,11 +1852,11 @@ index f8b4a97cf0558dcf1fc4916a38867f97f0dca868..438765bc5799dff8b9cfd6fa77808712 if (noActionTime > 100) { this.squid.movementVector = Vec3.ZERO; diff --git a/net/minecraft/world/entity/animal/TropicalFish.java b/net/minecraft/world/entity/animal/TropicalFish.java -index 806fb2561d1eb0fba56dc40ba5c1f306c3105880..cc26b929abd249536659df03a1cafbe83cde6f0f 100644 +index 548751d245acaf901880026a8efd9c8cea699fe5..6c2497ab50dd7ab6d5a7043935b0beeed36bfad8 100644 --- a/net/minecraft/world/entity/animal/TropicalFish.java +++ b/net/minecraft/world/entity/animal/TropicalFish.java @@ -77,6 +77,18 @@ public class TropicalFish extends AbstractSchoolingFish { - super(entityType, level); + super(type, level); } + // Purpur start - Ridables @@ -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 9262bd842b4f012a68a2a99531695e51cdfaf611..542adc537723f9878a217aa3b71d67d1e4c1a8d2 100644 +index 3731808f9a6a23068990bdb87a24beae73c6f616..bb54f64cc36939bfd1e6ca57a1128b813fab2ad7 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,7 +1945,7 @@ index 9262bd842b4f012a68a2a99531695e51cdfaf611..542adc537723f9878a217aa3b71d67d1 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 2cd30038c9b82d074408be33447d1401de876fb8..173101a3b5bb1057adec2b5df396fd3000c028bc 100644 +index b855f7cd640d9c6ae4ff3b79e54a8441ed466cad..4d08642a006d4b7d9b858d8c594c2888f0d7e595 100644 --- a/net/minecraft/world/entity/animal/allay/Allay.java +++ b/net/minecraft/world/entity/animal/allay/Allay.java @@ -113,10 +113,23 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS @@ -1954,8 +1954,8 @@ index 2cd30038c9b82d074408be33447d1401de876fb8..173101a3b5bb1057adec2b5df396fd30 public boolean forceDancing = false; // CraftBukkit + private org.purpurmc.purpur.controller.FlyingMoveControllerWASD purpurController; // Purpur - Ridables - public Allay(EntityType entityType, Level level) { - super(entityType, level); + public Allay(EntityType type, Level level) { + super(type, level); - this.moveControl = new FlyingMoveControl(this, 20, true); + // Purpur start - Ridables + this.purpurController = new org.purpurmc.purpur.controller.FlyingMoveControllerWASD(this, 0.1F, 0.5F); @@ -2011,7 +2011,7 @@ index 2cd30038c9b82d074408be33447d1401de876fb8..173101a3b5bb1057adec2b5df396fd30 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 4792e7e6b720a315d64f18d9c3b12f703da8fb21..a394bc9e4de64a862acc2d33a01c1dd298bce464 100644 +index 5d8a20017a90896f9cf3ee06b1b2c79d9fcabf63..764ad0be43e225f2f9d84641158ad0844993489e 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,7 +2039,7 @@ index 4792e7e6b720a315d64f18d9c3b12f703da8fb21..a394bc9e4de64a862acc2d33a01c1dd2 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 3cf26691c453aff306194b28c0610168cf75c950..d350bd4a29e3ce6196e3df9f0757ca24bd667075 100644 +index e40bb3232de7ae3a9b9490ec9eb41256ae25ea12..6614b38726dc1a9778032cbedc22e4343f70774f 100644 --- a/net/minecraft/world/entity/animal/axolotl/Axolotl.java +++ b/net/minecraft/world/entity/animal/axolotl/Axolotl.java @@ -121,6 +121,23 @@ public class Axolotl extends Animal implements Bucketable { @@ -2109,7 +2109,7 @@ index 3cf26691c453aff306194b28c0610168cf75c950..d350bd4a29e3ce6196e3df9f0757ca24 super.tick(); } diff --git a/net/minecraft/world/entity/animal/camel/Camel.java b/net/minecraft/world/entity/animal/camel/Camel.java -index 9ad94aca22a100dddaded5833763f9acd2a0ce56..96c98f032b1b3aec32aba38244ee8b45aca9078c 100644 +index 314dfd6611b95547a161517be1bf985305e45f41..486974bf7764a6eee37e67acdfc3b7798fa218ef 100644 --- a/net/minecraft/world/entity/animal/camel/Camel.java +++ b/net/minecraft/world/entity/animal/camel/Camel.java @@ -90,6 +90,13 @@ public class Camel extends AbstractHorse { @@ -2127,7 +2127,7 @@ index 9ad94aca22a100dddaded5833763f9acd2a0ce56..96c98f032b1b3aec32aba38244ee8b45 protected void addAdditionalSaveData(ValueOutput output) { super.addAdditionalSaveData(output); diff --git a/net/minecraft/world/entity/animal/coppergolem/CopperGolem.java b/net/minecraft/world/entity/animal/coppergolem/CopperGolem.java -index 620312b916e18aeba74b05631a93ea772dd7c14a..256b1d964c3069d2dd67e0a1cabd78aed5ee339a 100644 +index 67d3d3a03f78ce0c15972795e2c95db5161f5a1f..f63dee3d9192836c4a92696a4383bcfb1489385d 100644 --- a/net/minecraft/world/entity/animal/coppergolem/CopperGolem.java +++ b/net/minecraft/world/entity/animal/coppergolem/CopperGolem.java @@ -109,6 +109,28 @@ public class CopperGolem extends AbstractGolem implements ContainerUser, Shearab @@ -2186,7 +2186,7 @@ index 620312b916e18aeba74b05631a93ea772dd7c14a..256b1d964c3069d2dd67e0a1cabd78ae } } diff --git a/net/minecraft/world/entity/animal/frog/Frog.java b/net/minecraft/world/entity/animal/frog/Frog.java -index 7d63881ec187f11544947a487fd0445561228247..e451e604b37f078cb94f3204ebb25dbc153d2551 100644 +index f14e79bd8902dc17b63e124cfa44db9e60a42934..4979ae6dc8f6c2361b443b8bbe90738e4a199200 100644 --- a/net/minecraft/world/entity/animal/frog/Frog.java +++ b/net/minecraft/world/entity/animal/frog/Frog.java @@ -105,6 +105,8 @@ public class Frog extends Animal { @@ -2196,8 +2196,8 @@ index 7d63881ec187f11544947a487fd0445561228247..e451e604b37f078cb94f3204ebb25dbc + private org.purpurmc.purpur.controller.MoveControllerWASD purpurLandController; // Purpur - Ridables + private org.purpurmc.purpur.controller.WaterMoveControllerWASD purpurWaterController; // Purpur - Ridables - public Frog(EntityType entityType, Level level) { - super(entityType, level); + public Frog(EntityType type, Level level) { + super(type, level); @@ -112,7 +114,55 @@ public class Frog extends Animal { this.setPathfindingMalus(PathType.WATER, 4.0F); this.setPathfindingMalus(PathType.TRAPDOOR, -1.0F); @@ -2272,7 +2272,7 @@ index 7d63881ec187f11544947a487fd0445561228247..e451e604b37f078cb94f3204ebb25dbc super(mob); } diff --git a/net/minecraft/world/entity/animal/frog/Tadpole.java b/net/minecraft/world/entity/animal/frog/Tadpole.java -index d216c2fbf2fe846c0d9b7164d24eb3815b7235ff..e2fdcc1bc0c2db5702430d593f7541840ef26337 100644 +index 3ce172c1bdaf8b8a8ad774dd37498e8e379c68bb..790194e3b618f95a003ba8eb6104f765a7dfddaa 100644 --- a/net/minecraft/world/entity/animal/frog/Tadpole.java +++ b/net/minecraft/world/entity/animal/frog/Tadpole.java @@ -65,13 +65,50 @@ public class Tadpole extends AbstractFish { @@ -2281,8 +2281,8 @@ index d216c2fbf2fe846c0d9b7164d24eb3815b7235ff..e2fdcc1bc0c2db5702430d593f754184 public boolean ageLocked; // Paper + private org.purpurmc.purpur.controller.WaterMoveControllerWASD purpurController; // Purpur - Ridables - public Tadpole(EntityType entityType, Level level) { - super(entityType, level); + public Tadpole(EntityType type, Level level) { + super(type, level); - this.moveControl = new SmoothSwimmingMoveControl(this, 85, 10, 0.02F, 0.1F, true); + // Purpur start - Ridables + this.purpurController = new org.purpurmc.purpur.controller.WaterMoveControllerWASD(this, 0.5F); @@ -2336,7 +2336,7 @@ index d216c2fbf2fe846c0d9b7164d24eb3815b7235ff..e2fdcc1bc0c2db5702430d593f754184 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 76e85c905e12a56f14b1e4cf14986e0a62847b1f..ba603ac36e7fc6bee605c9f49a53d20085b0c6ee 100644 +index 1ec7ba1654de7cdcc292e63f2e21f0505e65cf4d..3f264db00d9312cc1e8bfba8da0c829774ba00aa 100644 --- a/net/minecraft/world/entity/animal/goat/Goat.java +++ b/net/minecraft/world/entity/animal/goat/Goat.java @@ -114,6 +114,23 @@ public class Goat extends Animal { @@ -2372,13 +2372,13 @@ index 76e85c905e12a56f14b1e4cf14986e0a62847b1f..ba603ac36e7fc6bee605c9f49a53d200 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 fde1f235332127f727da8491e03b54680e42ea4a..b528bd7cc2001a3c0ec1cf615a4c306a9cd7e9f1 100644 +index f0330c1a64cdb4879cff9a06b44a7861e79adea9..628f93f477d188cb4400be9a12cdfe09badcb971 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 - protected AbstractHorse(EntityType entityType, Level level) { - super(entityType, level); + protected AbstractHorse(EntityType type, Level level) { + super(type, level); + this.moveControl = new net.minecraft.world.entity.ai.control.MoveControl(this); // Purpur - use vanilla controller + this.lookControl = new net.minecraft.world.entity.ai.control.LookControl(this); // Purpur - use vanilla controller this.createInventory(); @@ -2406,11 +2406,11 @@ index fde1f235332127f727da8491e03b54680e42ea4a..b528bd7cc2001a3c0ec1cf615a4c306a this.addBehaviourGoals(); } diff --git a/net/minecraft/world/entity/animal/horse/Donkey.java b/net/minecraft/world/entity/animal/horse/Donkey.java -index 5dff98b5b2e4bba5f874d6a99d034a3905775c9b..66dda36aeb668488076f0c93dc83ab6cc4ec1a31 100644 +index eebf910bdae26453f365570b215a7e472ddef67c..88e45b38763992a645e36cccab36f74a2024f671 100644 --- a/net/minecraft/world/entity/animal/horse/Donkey.java +++ b/net/minecraft/world/entity/animal/horse/Donkey.java @@ -16,6 +16,13 @@ public class Donkey extends AbstractChestedHorse { - super(entityType, level); + super(type, level); } + // Purpur start - Ridables @@ -2424,11 +2424,11 @@ index 5dff98b5b2e4bba5f874d6a99d034a3905775c9b..66dda36aeb668488076f0c93dc83ab6c public SoundEvent getAmbientSound() { return SoundEvents.DONKEY_AMBIENT; diff --git a/net/minecraft/world/entity/animal/horse/Horse.java b/net/minecraft/world/entity/animal/horse/Horse.java -index 2a1d720557c0bd4895a32723e34512c0a557e4f2..f1cb2e315e1d86f9fcd87db11d3ee7a81cfe12f6 100644 +index f67553098098611573d6194d1b8424d44dc7cf63..e5fc006066a817737110918d047e71abf24bb334 100644 --- a/net/minecraft/world/entity/animal/horse/Horse.java +++ b/net/minecraft/world/entity/animal/horse/Horse.java @@ -47,6 +47,13 @@ public class Horse extends AbstractHorse { - super(entityType, level); + super(type, level); } + // Purpur start - Ridables @@ -2442,11 +2442,11 @@ 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 7afb96b89a7f2b3d4155031016e51e03dd9b31ce..c3efc59c5e396c664022dd91bca143c60164fe0c 100644 +index bcbbcea51261a2f1d6fbe3463e06900a6cd3d0ba..1e76e5c5e046e9e284c42ad5de9430aa489a7b28 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 { - super(entityType, level); + super(type, level); this.getNavigation().setRequiredPathLength(40.0F); this.maxDomestication = 30; // Paper - Missing entity API; configure max temper instead of a hardcoded value + // Purpur start - Ridables @@ -2504,7 +2504,7 @@ index 7afb96b89a7f2b3d4155031016e51e03dd9b31ce..c3efc59c5e396c664022dd91bca143c6 public boolean isTraderLlama() { return false; -@@ -127,6 +178,7 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { +@@ -122,6 +173,7 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { @Override protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); @@ -2512,7 +2512,7 @@ index 7afb96b89a7f2b3d4155031016e51e03dd9b31ce..c3efc59c5e396c664022dd91bca143c6 this.goalSelector.addGoal(1, new RunAroundLikeCrazyGoal(this, 1.2)); this.goalSelector.addGoal(2, new LlamaFollowCaravanGoal(this, 2.1F)); this.goalSelector.addGoal(3, new RangedAttackGoal(this, 1.25, 40, 20.0F)); -@@ -137,6 +189,7 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { +@@ -132,6 +184,7 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { this.goalSelector.addGoal(7, new WaterAvoidingRandomStrollGoal(this, 0.7)); this.goalSelector.addGoal(8, new LookAtPlayerGoal(this, Player.class, 6.0F)); this.goalSelector.addGoal(9, new RandomLookAroundGoal(this)); @@ -2521,11 +2521,11 @@ index 7afb96b89a7f2b3d4155031016e51e03dd9b31ce..c3efc59c5e396c664022dd91bca143c6 this.targetSelector.addGoal(2, new Llama.LlamaAttackWolfGoal(this)); } diff --git a/net/minecraft/world/entity/animal/horse/Mule.java b/net/minecraft/world/entity/animal/horse/Mule.java -index 39725b7a6bac9390406733cd51d7341d0cb363d1..b1c96936ba8dcba4435a649dd7e6ec3c921c3702 100644 +index 9f9485e9e83255615abeffe95a602331e578ea4d..d6c61075321e6005f977be17bbb6d7045f42d7f0 100644 --- a/net/minecraft/world/entity/animal/horse/Mule.java +++ b/net/minecraft/world/entity/animal/horse/Mule.java @@ -15,6 +15,13 @@ public class Mule extends AbstractChestedHorse { - super(entityType, level); + super(type, level); } + // Purpur start - Ridables @@ -2539,11 +2539,11 @@ index 39725b7a6bac9390406733cd51d7341d0cb363d1..b1c96936ba8dcba4435a649dd7e6ec3c public SoundEvent getAmbientSound() { return SoundEvents.MULE_AMBIENT; diff --git a/net/minecraft/world/entity/animal/horse/SkeletonHorse.java b/net/minecraft/world/entity/animal/horse/SkeletonHorse.java -index 580134c5a075c7efdc7c2f86a179df2fa336eba9..ba0e483df57cc56f356282519105a2e3e77601f8 100644 +index 3f0b3b38e8135c5534fa5a1d900d499e6091eb73..47b36581d5291e4d223fb39572d62674b8eb68bc 100644 --- a/net/minecraft/world/entity/animal/horse/SkeletonHorse.java +++ b/net/minecraft/world/entity/animal/horse/SkeletonHorse.java @@ -42,6 +42,13 @@ public class SkeletonHorse extends AbstractHorse { - super(entityType, level); + super(type, level); } + // Purpur start - Ridables @@ -2565,11 +2565,11 @@ 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 37cb92e6fe2318495fc69928b01e7d63dfb313a8..626b129b54aa622267dfc2ee5ec13bb9f10d6390 100644 +index d8c58d747b78bf9aa49dbc0f7685ecbefcb817ce..21211278de627079d7c9e91305e42aa0f8ae34d3 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 { - super(entityType, level); + super(type, level); } + // Purpur start - Ridables @@ -2598,11 +2598,11 @@ index 37cb92e6fe2318495fc69928b01e7d63dfb313a8..626b129b54aa622267dfc2ee5ec13bb9 public boolean isTraderLlama() { return true; diff --git a/net/minecraft/world/entity/animal/horse/ZombieHorse.java b/net/minecraft/world/entity/animal/horse/ZombieHorse.java -index ee327bdec37df5197c35aef60cf456bb81f8d048..45d09ebcc9ce4321285a4ec49e8ee369290f6b2c 100644 +index c7bc8c41e01f4fe1c49ed79e0e5f3324e2fa0118..c916c28b0d3115588cedf84cf70469b6f6050ec9 100644 --- a/net/minecraft/world/entity/animal/horse/ZombieHorse.java +++ b/net/minecraft/world/entity/animal/horse/ZombieHorse.java @@ -33,6 +33,18 @@ public class ZombieHorse extends AbstractHorse { - super(entityType, level); + super(type, level); } + // Purpur start - Ridables @@ -2629,11 +2629,11 @@ 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 aa97a98cc7e87c5e23684e97bef3fdb2abc6a509..1975976c92e3acb361dcc1ec49c6ce5818173806 100644 +index 8d4601e882f2045197162cf30d21a2ca07eb1181..1e453cdbe3c290209fd2fb912a90fb44a642959a 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 { - super(entityType, level); + super(type, level); } + // Purpur start - Ridables @@ -2662,7 +2662,7 @@ index aa97a98cc7e87c5e23684e97bef3fdb2abc6a509..1975976c92e3acb361dcc1ec49c6ce58 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 9736ecdeefa2c8ed9f618672f2b63492cac2a6be..85a5cad5d7c4056fccf11807e6bcce5432febbc5 100644 +index 057316aaa461cdc1659cdecf8478c7805f456cb9..1013898f40c82b64bc62eb99365d10a57e8f66b5 100644 --- a/net/minecraft/world/entity/animal/sniffer/Sniffer.java +++ b/net/minecraft/world/entity/animal/sniffer/Sniffer.java @@ -88,6 +88,23 @@ public class Sniffer extends Animal { @@ -2698,7 +2698,7 @@ index 9736ecdeefa2c8ed9f618672f2b63492cac2a6be..85a5cad5d7c4056fccf11807e6bcce54 profilerFiller.popPush("snifferActivityUpdate"); SnifferAi.updateActivity(this); diff --git a/net/minecraft/world/entity/animal/wolf/Wolf.java b/net/minecraft/world/entity/animal/wolf/Wolf.java -index 5bbcd6fdf7e01e1a4e94668e6a5d39e171ba4bb7..ba0f003546d70651eddb1907f33ceb549584c0ca 100644 +index ecd55f1ceec45e0f0197a0517bcf81f0fe01c728..901138575d9468374565d395b56bfaeb353479f7 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 { @@ -2761,7 +2761,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 8a2f8cefe23f7599dab9a4a8cc948772475cc0f7..c3eefe0a4a3b13e20853193450e8634c61257a0a 100644 +index 2d12c376bbcb16eb758a982be0989e668b4e36f6..f695e3ba62a4047d8203c0399790d646e97309f7 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 { @@ -2770,7 +2770,7 @@ index 8a2f8cefe23f7599dab9a4a8cc948772475cc0f7..c3eefe0a4a3b13e20853193450e8634c // Paper end + private boolean hadRider; // Purpur - Ridables - public EnderDragon(EntityType entityType, Level level) { + public EnderDragon(EntityType type, Level level) { super(EntityType.ENDER_DRAGON, level); @@ -108,6 +109,37 @@ public class EnderDragon extends Mob implements Enemy { this.noPhysics = true; @@ -2918,7 +2918,7 @@ index 8a2f8cefe23f7599dab9a4a8cc948772475cc0f7..c3eefe0a4a3b13e20853193450e8634c 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 142731cc843a596ec1f156d7f25d97a0ca11f880..110ef9d81fdfa099316abf7b9c7ef4e1fdc976f7 100644 +index 8918c55199a77f7e5efe23429a696b56fa7dccd1..151bfd4de9a11642ca128e91a6ed80d41820b358 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 { @@ -2935,8 +2935,8 @@ index 142731cc843a596ec1f156d7f25d97a0ca11f880..110ef9d81fdfa099316abf7b9c7ef4e1 @Nullable private java.util.UUID summoner; // Purpur - Summoner API + private org.purpurmc.purpur.controller.FlyingWithSpacebarMoveControllerWASD purpurController; // Purpur - Ridables - public WitherBoss(EntityType entityType, Level level) { - super(entityType, level); + public WitherBoss(EntityType type, Level level) { + super(type, level); + // Purpur start - Ridables + this.purpurController = new org.purpurmc.purpur.controller.FlyingWithSpacebarMoveControllerWASD(this, 0.1F); + this.moveControl = new FlyingMoveControl(this, 10, false) { @@ -3104,7 +3104,7 @@ index 142731cc843a596ec1f156d7f25d97a0ca11f880..110ef9d81fdfa099316abf7b9c7ef4e1 public boolean isPowered() { diff --git a/net/minecraft/world/entity/monster/AbstractSkeleton.java b/net/minecraft/world/entity/monster/AbstractSkeleton.java -index ac5afa9e0605524f5a4e8541ba1e91775901eb11..2ef478b287e1240dd172235f7cabf31f60456a8a 100644 +index 3d2fcdc99cea6981c8d516853ba28f51bd114dbd..7e43dd4b44335989127cc1b6e2c59d771876887a 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 @@ -3123,13 +3123,13 @@ index ac5afa9e0605524f5a4e8541ba1e91775901eb11..2ef478b287e1240dd172235f7cabf31f 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 463ec6bec0b4b606cfc5276aa7803176e476d450..e0a38808c3757aaaabb6d3d8a0f9c1c0133c792f 100644 +index e36572baa045ec60543743354da6f83e4019ca37..937300689b75486ba582b6dbe294c4355dc31d9e 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 { - public Blaze(EntityType entityType, Level level) { - super(entityType, level); + public Blaze(EntityType type, Level level) { + super(type, level); + this.moveControl = new org.purpurmc.purpur.controller.FlyingWithSpacebarMoveControllerWASD(this, 0.3F); // Purpur - Ridables this.setPathfindingMalus(PathType.WATER, -1.0F); this.setPathfindingMalus(PathType.LAVA, 8.0F); @@ -3206,11 +3206,11 @@ index 463ec6bec0b4b606cfc5276aa7803176e476d450..e0a38808c3757aaaabb6d3d8a0f9c1c0 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 7b6c9d2e223d501e8a754e935d95e5aa7b530fd2..9ab5b3f88eeec22110b8aba71714e05209e4b855 100644 +index c216f7c388b1d7003609177bb1a0be12a3c8053f..71a8bf118babb1fd7985caac087855c1da85025c 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 { - super(entityType, level); + super(type, level); } + // Purpur start - Ridables @@ -3234,7 +3234,7 @@ index 7b6c9d2e223d501e8a754e935d95e5aa7b530fd2..9ab5b3f88eeec22110b8aba71714e052 protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/monster/CaveSpider.java b/net/minecraft/world/entity/monster/CaveSpider.java -index 2e32567fca7a2a4cd87bc078a6eeb30e3ffabfce..4873a3d8dd9c160ecdbda594ee546c35ec03a1e7 100644 +index f033b7c5934a97baafa2434ad82516c2a1e76d76..e528e85dfb080c6fa28c01536d8fd0a29662651e 100644 --- a/net/minecraft/world/entity/monster/CaveSpider.java +++ b/net/minecraft/world/entity/monster/CaveSpider.java @@ -26,6 +26,23 @@ public class CaveSpider extends Spider { @@ -3259,14 +3259,14 @@ index 2e32567fca7a2a4cd87bc078a6eeb30e3ffabfce..4873a3d8dd9c160ecdbda594ee546c35 + // Purpur end - Ridables + @Override - public boolean doHurtTarget(ServerLevel level, Entity source) { - if (super.doHurtTarget(level, source)) { + public boolean doHurtTarget(ServerLevel level, Entity target) { + if (super.doHurtTarget(level, target)) { diff --git a/net/minecraft/world/entity/monster/Creeper.java b/net/minecraft/world/entity/monster/Creeper.java -index 98c8942993e8cb5073a794552082f63ed1f4d542..d250d8a2d0cbe41b2336a0a697c1c179b24dc823 100644 +index c3386bd6028a9391d2eb00567b711f89b4585608..c3e2677a817da764577acc7298ad5fe52d7d5b2e 100644 --- a/net/minecraft/world/entity/monster/Creeper.java +++ b/net/minecraft/world/entity/monster/Creeper.java @@ -57,21 +57,98 @@ public class Creeper extends Monster { - private boolean droppedSkulls; + public boolean droppedSkulls; public @Nullable Entity entityIgniter; // CraftBukkit private boolean exploding = false; // Purpur - Config to make Creepers explode on death + // Purpur start - Ridables @@ -3275,8 +3275,8 @@ index 98c8942993e8cb5073a794552082f63ed1f4d542..d250d8a2d0cbe41b2336a0a697c1c179 + private int powerToggleDelay = 0; + // Purpur end - Ridables - public Creeper(EntityType entityType, Level level) { - super(entityType, level); + public Creeper(EntityType type, Level level) { + super(type, level); } + // Purpur start - Ridables @@ -3373,7 +3373,7 @@ index 98c8942993e8cb5073a794552082f63ed1f4d542..d250d8a2d0cbe41b2336a0a697c1c179 } } diff --git a/net/minecraft/world/entity/monster/Drowned.java b/net/minecraft/world/entity/monster/Drowned.java -index 1dc745180a2671415f526f8afeedf61d90c21bd9..eb70d05d2540295f79d24fbd0c07a9a349783f88 100644 +index 6c51ecee06538de51ce02ea73e173a766ce8515c..8ab6c0f67ac25c1229850ae01abd01d878827d0c 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 { @@ -3437,7 +3437,7 @@ index 1dc745180a2671415f526f8afeedf61d90c21bd9..eb70d05d2540295f79d24fbd0c07a9a3 } } diff --git a/net/minecraft/world/entity/monster/ElderGuardian.java b/net/minecraft/world/entity/monster/ElderGuardian.java -index 7eef05b988d52391ab061382fd8898705c705e03..07355eb21c7b06d282be32f6956d4de9e399b9c9 100644 +index 3a16eb269b733fcf1db5dbc2dfae13009e2278b5..e5d16ca14a40d520dce43dd3d9b6347aefbd25d7 100644 --- a/net/minecraft/world/entity/monster/ElderGuardian.java +++ b/net/minecraft/world/entity/monster/ElderGuardian.java @@ -31,6 +31,18 @@ public class ElderGuardian extends Guardian { @@ -3460,7 +3460,7 @@ 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 956e6e2f0c7cff67a39e5a8487c0607f38971bd0..612b0caa28d214886edab3b2de34838659bd39f2 100644 +index f3ffb74dd54b483113901712408734abfdc2dd74..eaa5cc7e72ba604d14e41975d24624f1def04656 100644 --- a/net/minecraft/world/entity/monster/EnderMan.java +++ b/net/minecraft/world/entity/monster/EnderMan.java @@ -90,9 +90,27 @@ public class EnderMan extends Monster implements NeutralMob { @@ -3517,7 +3517,7 @@ index 956e6e2f0c7cff67a39e5a8487c0607f38971bd0..612b0caa28d214886edab3b2de348386 } 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 74ce5bc242838c8979b07e1f6936f93d758b8396..c7e3a80a678df50cbb03349826f7e03c23a2c622 100644 +index 980ec0e45581812c027bb2ce8cd25d74e5f10663..844ba943a2a752f9b25506b644a4b4abc981b4cb 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 { @@ -3555,7 +3555,7 @@ index 74ce5bc242838c8979b07e1f6936f93d758b8396..c7e3a80a678df50cbb03349826f7e03c this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true)); } diff --git a/net/minecraft/world/entity/monster/Evoker.java b/net/minecraft/world/entity/monster/Evoker.java -index 7efa39ab1fb34da41a04cd6816f2571c6eba98f5..10142de6bdf9474958ca939c956a428218ee48db 100644 +index 9fb7b3e4cbbde0f1d45d9fffb648240fbd2f3d49..70cf903d95d35b539e9a299a4035c8ddde5e4b97 100644 --- a/net/minecraft/world/entity/monster/Evoker.java +++ b/net/minecraft/world/entity/monster/Evoker.java @@ -48,10 +48,28 @@ public class Evoker extends SpellcasterIllager { @@ -3596,7 +3596,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 9d5abdd8f25a84f1e5f27ab7a49a34ddce93f764..49925c8db7166359fdcc0008d5be2130d01686b6 100644 +index 226286194e662e61faed17e7d4c53b5f776779f3..1d888ebabecfd1beebdf718c5d771b312070245a 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 { @@ -3670,11 +3670,11 @@ index 9d5abdd8f25a84f1e5f27ab7a49a34ddce93f764..49925c8db7166359fdcc0008d5be2130 this.operation = MoveControl.Operation.WAIT; this.ghast.stopInPlace(); diff --git a/net/minecraft/world/entity/monster/Giant.java b/net/minecraft/world/entity/monster/Giant.java -index ab0b44fd3e20fcab4e2fea985e7471575b619069..c098fc14eb4f2ebd7dc1f6be9507279296416eea 100644 +index 0de6a20a3fed53bd11a0152de6953bfaecc85289..dcbe6bbce0baa4fad7fe180944beeb6ca4026f7d 100644 --- a/net/minecraft/world/entity/monster/Giant.java +++ b/net/minecraft/world/entity/monster/Giant.java @@ -12,6 +12,29 @@ public class Giant extends Monster { - super(entityType, level); + super(type, level); } + // Purpur start - Ridables @@ -3704,7 +3704,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 911b98264f29d08cc57143258ec53e6af8aa271c..7202edbad08975fc62f9aa876d9e53a238182b20 100644 +index 5aff55743129c293497f21330eb93ac0a86ae04b..339c81d0a9833e762ca4fc63430d22266f95627d 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 { @@ -3798,11 +3798,11 @@ index 911b98264f29d08cc57143258ec53e6af8aa271c..7202edbad08975fc62f9aa876d9e53a2 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 4de3e70d78e861f15d2aedb54280158988823caa..b8b7700df42feb2309d9e845e37aa0e9ca026f9b 100644 +index 8764b5026c68bcffc3e2fb24c2dda9865f331adc..af1af1687bbbc9a60b71ad83879ca5cb5af15eef 100644 --- a/net/minecraft/world/entity/monster/Husk.java +++ b/net/minecraft/world/entity/monster/Husk.java @@ -20,6 +20,23 @@ public class Husk extends Zombie { - super(entityType, level); + super(type, level); } + // Purpur start - Ridables @@ -3826,7 +3826,7 @@ index 4de3e70d78e861f15d2aedb54280158988823caa..b8b7700df42feb2309d9e845e37aa0e9 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 c56665b7d0173542dcddeb1a3aa9eb8e7847e2a1..c41d43d20db8a573efcbbe8593f5b1f56a18aa0e 100644 +index 53e4a9b99bbaac7438e6d8380fbcd9d5ffe61fb9..162986914c6718438b7e1d5408bdbe5a4d3e3a68 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 { @@ -3867,11 +3867,11 @@ index c56665b7d0173542dcddeb1a3aa9eb8e7847e2a1..c41d43d20db8a573efcbbe8593f5b1f5 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/MagmaCube.java b/net/minecraft/world/entity/monster/MagmaCube.java -index 889c31cc9257fbbd5df8325ccee9ce39b026ec4b..4a1299d6cee2807522de0c2d0d4745c5810e4121 100644 +index 034a41573c330b2366fb305bb0796293d5d6a187..9be4861fc5cf5e9f8f562785eb3e857b6c1d3585 100644 --- a/net/minecraft/world/entity/monster/MagmaCube.java +++ b/net/minecraft/world/entity/monster/MagmaCube.java @@ -24,6 +24,28 @@ public class MagmaCube extends Slime { - super(entityType, level); + super(type, level); } + // Purpur start - Ridables @@ -3908,7 +3908,7 @@ index 889c31cc9257fbbd5df8325ccee9ce39b026ec4b..4a1299d6cee2807522de0c2d0d4745c5 @Override diff --git a/net/minecraft/world/entity/monster/Phantom.java b/net/minecraft/world/entity/monster/Phantom.java -index 59e100360ce960c98d3df69052795e4100bc415b..f5cc26632345bdae6fbda72e1084bacf79a75752 100644 +index c83e07372222ddf46f95fecfa10755b9755c2517..d29752add305e97d2265606b7b4212c308072523 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 { @@ -4056,11 +4056,11 @@ index 59e100360ce960c98d3df69052795e4100bc415b..f5cc26632345bdae6fbda72e1084bacf Phantom.this.setYRot(Phantom.this.getYRot() + 180.0F); this.speed = 0.1F; diff --git a/net/minecraft/world/entity/monster/Pillager.java b/net/minecraft/world/entity/monster/Pillager.java -index 4f72db7e6f99844761de2f749e52cda156b08ad7..fa49ed77f33bca6335812e9f56176cc053a364ad 100644 +index e871f4b7c53894eab0d8a9593b500c7c9998ee66..f75eab4f895c0ed381b65717dc106dc13325428a 100644 --- a/net/minecraft/world/entity/monster/Pillager.java +++ b/net/minecraft/world/entity/monster/Pillager.java @@ -64,16 +64,35 @@ public class Pillager extends AbstractIllager implements CrossbowAttackMob, Inve - super(entityType, level); + super(type, level); } + // Purpur start - Ridables @@ -4096,7 +4096,7 @@ index 4f72db7e6f99844761de2f749e52cda156b08ad7..fa49ed77f33bca6335812e9f56176cc0 this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true)); this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractVillager.class, false)); diff --git a/net/minecraft/world/entity/monster/Ravager.java b/net/minecraft/world/entity/monster/Ravager.java -index 2b9a72b8742bf13c69df5ce0c905d47a92b9d8bc..b67ac487ce4a7fd8b2f62452ab0b87f4a55006f2 100644 +index 901313102621a04856082d81d4bf9826ce131111..91514bc1eb85eb224b8760f17cecc423c6206554 100644 --- a/net/minecraft/world/entity/monster/Ravager.java +++ b/net/minecraft/world/entity/monster/Ravager.java @@ -70,15 +70,40 @@ public class Ravager extends Raider { @@ -4150,7 +4150,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 ed89eae7f941b4a771691006b7150537ffb97d19..d3b14cfb5310423e52899edd5873e9ba7f6a30fc 100644 +index d0bcd2d1f7afd4a01c9a0f7d66082df38db50edd..d9401842948fed8edd6d31fcf08da2747f1a3921 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 { @@ -4195,11 +4195,11 @@ index ed89eae7f941b4a771691006b7150537ffb97d19..d3b14cfb5310423e52899edd5873e9ba super(mob); } diff --git a/net/minecraft/world/entity/monster/Silverfish.java b/net/minecraft/world/entity/monster/Silverfish.java -index 4e34833ea5c71b817c9f42a58320fe100981ec93..19dcc657fd2a995638d5e23c2b043d012d978e79 100644 +index fc672a2e37b521ffe42ad96cfc429a78fd67b58a..b278c8cce74f16c49f579ca13688dabfce95d14d 100644 --- a/net/minecraft/world/entity/monster/Silverfish.java +++ b/net/minecraft/world/entity/monster/Silverfish.java @@ -39,14 +39,33 @@ public class Silverfish extends Monster { - super(entityType, level); + super(type, level); } + // Purpur start - Ridables @@ -4233,11 +4233,11 @@ 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 2661c73bb09e885d68ed57cbbeb9611fb990669e..bb7f93435168da4023ee07585e92192717881acc 100644 +index d64e4b7175a017c92b3ffa4c2b0271c772a90030..c39072d9265b2640e3bd701dacb54aa629f3b230 100644 --- a/net/minecraft/world/entity/monster/Skeleton.java +++ b/net/minecraft/world/entity/monster/Skeleton.java @@ -25,6 +25,23 @@ public class Skeleton extends AbstractSkeleton { - super(entityType, level); + super(type, level); } + // Purpur start - Ridables @@ -4261,7 +4261,7 @@ index 2661c73bb09e885d68ed57cbbeb9611fb990669e..bb7f93435168da4023ee07585e921927 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 678b065a8119d23c3c6b3b3657ae6e728bd7a046..ce6e19b9cf943a8a9d1e85c8764d57b7f282cd69 100644 +index 6a4bdf6e8e785460c864552f21116dec8c545bd6..3b9c4f2623ddecf54b139e032d8056a7ec0d59c0 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 { @@ -4270,8 +4270,8 @@ index 678b065a8119d23c3c6b3b3657ae6e728bd7a046..ce6e19b9cf943a8a9d1e85c8764d57b7 private boolean canWander = true; // Paper - Slime pathfinder events + protected boolean actualJump; // Purpur - Ridables - public Slime(EntityType entityType, Level level) { - super(entityType, level); + public Slime(EntityType type, Level level) { + super(type, level); @@ -66,12 +67,48 @@ public class Slime extends Mob implements Enemy { this.moveControl = new Slime.SlimeMoveControl(this); } @@ -4341,9 +4341,9 @@ index 678b065a8119d23c3c6b3b3657ae6e728bd7a046..ce6e19b9cf943a8a9d1e85c8764d57b7 @@ -537,21 +575,33 @@ public class Slime extends Mob implements Enemy { } - public void setWantedMovement(double speed) { -- this.speedModifier = speed; -+ this.setSpeedModifier(speed); // Purpur - Ridables + public void setWantedMovement(double speedModifier) { +- this.speedModifier = speedModifier; ++ this.setSpeedModifier(speedModifier); // Purpur - Ridables this.operation = MoveControl.Operation.MOVE_TO; } @@ -4385,11 +4385,11 @@ index 678b065a8119d23c3c6b3b3657ae6e728bd7a046..ce6e19b9cf943a8a9d1e85c8764d57b7 } } diff --git a/net/minecraft/world/entity/monster/Spider.java b/net/minecraft/world/entity/monster/Spider.java -index 13f49a2e43adbbbb4ec9cd5b479814fefcca1cce..771592182fe56efc6fc0dae7fa852483b3b99c57 100644 +index a0008c2c5338d442040598ee79a667060a649695..6237bbbed2aa643755e8e58a5fdd2f6d75f717ac 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 { - super(entityType, level); + super(type, level); } + // Purpur start - Ridables @@ -4424,11 +4424,11 @@ index 13f49a2e43adbbbb4ec9cd5b479814fefcca1cce..771592182fe56efc6fc0dae7fa852483 this.targetSelector.addGoal(2, new Spider.SpiderTargetGoal<>(this, Player.class)); this.targetSelector.addGoal(3, new Spider.SpiderTargetGoal<>(this, IronGolem.class)); diff --git a/net/minecraft/world/entity/monster/Stray.java b/net/minecraft/world/entity/monster/Stray.java -index f3de370ee4bafc2cca033293d0d8e5c9c2a6737b..4a7dbd1e4d927240433882a95822e9edfc83b827 100644 +index 10f1ad8b65a655fcfb2f6b9124d7d2d70f1d8e45..b1013db104186ba079a51c6c30bb7f89b92da3d7 100644 --- a/net/minecraft/world/entity/monster/Stray.java +++ b/net/minecraft/world/entity/monster/Stray.java @@ -22,6 +22,23 @@ public class Stray extends AbstractSkeleton { - super(entityType, level); + super(type, level); } + // Purpur start - Ridables @@ -4452,7 +4452,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 824e5d81d392566fb14647ab3672f1fdb1111e7e..f1e559f552b932d1d66b67ff35ca519ee273fc50 100644 +index 312564fcaf91280d70e379994bd9d8fcb54b0a40..f03ec1e8985f2c81ad2ec13d136e4c0362be4fff 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 { @@ -4497,7 +4497,7 @@ index 824e5d81d392566fb14647ab3672f1fdb1111e7e..f1e559f552b932d1d66b67ff35ca519e 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 71ccccf12289972cb35686c1bda11510da7663dd..f8fb8de570468151e1b82e8f15e66e2ea6fd8e22 100644 +index 3f050c4ce44ee3970c2904eda759230f85730462..6713498d873980bd979b864ab0ac6dfc9d4e1482 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 { @@ -4607,11 +4607,11 @@ index 71ccccf12289972cb35686c1bda11510da7663dd..f8fb8de570468151e1b82e8f15e66e2e Vec3 deltaMovement = Vex.this.getDeltaMovement(); Vex.this.setYRot(-((float)Mth.atan2(deltaMovement.x, deltaMovement.z)) * (180.0F / (float)Math.PI)); diff --git a/net/minecraft/world/entity/monster/Vindicator.java b/net/minecraft/world/entity/monster/Vindicator.java -index 71d84306788be023bc949400d30966548d968c86..8e5bf153a457026808e2ea670e874e66ca0d5e98 100644 +index 29482ed26387e5d6f04d59deda5990d24b7a07a9..c584a404838d5f8a916a27a74b4f4e8e3d5c1b1d 100644 --- a/net/minecraft/world/entity/monster/Vindicator.java +++ b/net/minecraft/world/entity/monster/Vindicator.java @@ -56,15 +56,34 @@ public class Vindicator extends AbstractIllager { - super(entityType, level); + super(type, level); } + // Purpur start - Ridables @@ -4646,11 +4646,11 @@ 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 1e573104a1f6d296d15315da3465a046bce157e1..e420d7dc0fc09d712ee63238f2107a2fa0f799b7 100644 +index af99952cd179dc1e142f861e5efd99789cb8afb5..bed6ce6749df67c3a4966958801d13ccd9529b1d 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 { - super(entityType, level); + super(type, level); } + // Purpur start - Ridables @@ -4687,7 +4687,7 @@ index 1e573104a1f6d296d15315da3465a046bce157e1..e420d7dc0fc09d712ee63238f2107a2f 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 32b730338eb510d374a6ec5e279b0112f7bee286..48f9d87d26bad99b81af001a81d2c3d274cad007 100644 +index 188836285862e13a9eae6d92920b0ae7d9e33a17..7061a0ae68ed28ea72335bb5eab013a6554abc07 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 { @@ -4715,7 +4715,7 @@ index 32b730338eb510d374a6ec5e279b0112f7bee286..48f9d87d26bad99b81af001a81d2c3d2 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 4feaa6167d82278a104a37c3b10257e24b299e6c..44ad3bbcfdf8615d6e5a896fb923685c481ae5b5 100644 +index 66b797d4b53a0b687f494b0081ee5bf53d58fb65..68095374ffd82db27ed704eb82dd68c51071df19 100644 --- a/net/minecraft/world/entity/monster/Zoglin.java +++ b/net/minecraft/world/entity/monster/Zoglin.java @@ -86,6 +86,23 @@ public class Zoglin extends Monster implements HoglinBase { @@ -4751,7 +4751,7 @@ index 4feaa6167d82278a104a37c3b10257e24b299e6c..44ad3bbcfdf8615d6e5a896fb923685c profilerFiller.pop(); this.updateActivity(); diff --git a/net/minecraft/world/entity/monster/Zombie.java b/net/minecraft/world/entity/monster/Zombie.java -index a3b8bdacfde77963efba4a7e475031598c44e82f..1aeea30498e089d686b845f31b44aef0ff994c60 100644 +index 48989a6482907efa14e7038af0ed23db251bc972..3f000e9a1be45134b12b46badc2b52d23b960e9a 100644 --- a/net/minecraft/world/entity/monster/Zombie.java +++ b/net/minecraft/world/entity/monster/Zombie.java @@ -102,11 +102,30 @@ public class Zombie extends Monster { @@ -4786,11 +4786,11 @@ index a3b8bdacfde77963efba4a7e475031598c44e82f..1aeea30498e089d686b845f31b44aef0 } diff --git a/net/minecraft/world/entity/monster/ZombieVillager.java b/net/minecraft/world/entity/monster/ZombieVillager.java -index 22a5c966feed50ebb9ed771f7e8a9cc59ac4d2bc..454e2795e04c7b7cac88f782df3dfb4200b192fc 100644 +index 862d32470a2eb40c947eb1ca4554737061d7bf6e..f9c119d38c2812cfeeb775e728f6c751bf748c85 100644 --- a/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/net/minecraft/world/entity/monster/ZombieVillager.java @@ -73,6 +73,23 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { - super(entityType, level); + super(type, level); } + // Purpur start - Ridables @@ -4814,7 +4814,7 @@ index 22a5c966feed50ebb9ed771f7e8a9cc59ac4d2bc..454e2795e04c7b7cac88f782df3dfb42 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 d6e9fc7e084fbc4e2d643f2408b36d52357c7af5..5919405428eb03c499167bc7b963e3f96f721c8c 100644 +index d8f6612f65d9dd5f46f947c4748a9cde5cb98312..d52e83ee890ab278440a69972ad83d4dd2f972a6 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 { @@ -4842,7 +4842,7 @@ index d6e9fc7e084fbc4e2d643f2408b36d52357c7af5..5919405428eb03c499167bc7b963e3f9 public void setPersistentAngerTarget(@Nullable UUID target) { this.persistentAngerTarget = target; diff --git a/net/minecraft/world/entity/monster/breeze/Breeze.java b/net/minecraft/world/entity/monster/breeze/Breeze.java -index c1e391bac9976f74f5fe3f5b0d91130c927ebec2..11408fd409eb00e6bf3289e6a5a35e98178fa6e2 100644 +index f02e5f09416dea33a170c43347aac7a6664c663f..405eb5f041bf3a611f8111fd58864ffec30ab0c0 100644 --- a/net/minecraft/world/entity/monster/breeze/Breeze.java +++ b/net/minecraft/world/entity/monster/breeze/Breeze.java @@ -236,6 +236,7 @@ public class Breeze extends Monster { @@ -4854,7 +4854,7 @@ index c1e391bac9976f74f5fe3f5b0d91130c927ebec2..11408fd409eb00e6bf3289e6a5a35e98 profilerFiller.popPush("breezeActivityUpdate"); BreezeAi.updateActivity(this); diff --git a/net/minecraft/world/entity/monster/creaking/Creaking.java b/net/minecraft/world/entity/monster/creaking/Creaking.java -index f18b893cf7c7f87edb18beb3ef8781d892f6fc86..982790edbd74bd80988df1400b0e67669bfd164c 100644 +index a5fb6c8247bbf41602984b094c09ed07394e9589..c3c4dfb89c807020c4147140bc23ba1ce5cfe888 100644 --- a/net/minecraft/world/entity/monster/creaking/Creaking.java +++ b/net/minecraft/world/entity/monster/creaking/Creaking.java @@ -102,6 +102,29 @@ public class Creaking extends Monster { @@ -4923,7 +4923,7 @@ index f18b893cf7c7f87edb18beb3ef8781d892f6fc86..982790edbd74bd80988df1400b0e6766 } } diff --git a/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/net/minecraft/world/entity/monster/hoglin/Hoglin.java -index 422401ebe7ed5bbf69cad7083b333b9279978494..c3d08cfdb15602f6fbe2ac81c751e879668a4dd7 100644 +index 172783861b8704dc9c46c8c2f6be2d24c08e705b..d852f8cff28e3ff2189896d713d37a3400b0a70b 100644 --- a/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/net/minecraft/world/entity/monster/hoglin/Hoglin.java @@ -95,6 +95,23 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { @@ -4959,7 +4959,7 @@ index 422401ebe7ed5bbf69cad7083b333b9279978494..c3d08cfdb15602f6fbe2ac81c751e879 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 d220e8f1517cf68a6083fc4791cb34ca926dd165..8a7c6326e056772fb89ca73b20cc1d9d1a029db9 100644 +index fbbf7364b07ea49116dd86fa9722fa341978bc19..0dc2d7f71c06ba575c2ac97a4be6b2466d5407d9 100644 --- a/net/minecraft/world/entity/monster/piglin/Piglin.java +++ b/net/minecraft/world/entity/monster/piglin/Piglin.java @@ -136,6 +136,23 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento @@ -4995,7 +4995,7 @@ index d220e8f1517cf68a6083fc4791cb34ca926dd165..8a7c6326e056772fb89ca73b20cc1d9d profilerFiller.pop(); PiglinAi.updateActivity(this); diff --git a/net/minecraft/world/entity/monster/piglin/PiglinBrute.java b/net/minecraft/world/entity/monster/piglin/PiglinBrute.java -index 219978cb0341b2d691f44c1146707d875788881e..4c8e49ba064241ec7ac505fa6f5df6d7f9c009b6 100644 +index b692d989d71dc2d9ff9fe0d998b2524020d12c63..e1b1a909c7e92c5fa5e8f9c155bc57290ef6667b 100644 --- a/net/minecraft/world/entity/monster/piglin/PiglinBrute.java +++ b/net/minecraft/world/entity/monster/piglin/PiglinBrute.java @@ -65,6 +65,23 @@ public class PiglinBrute extends AbstractPiglin { @@ -5031,7 +5031,7 @@ 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 45fa724f7f6ff911a09d4c20811386fe2a10a80a..137510f81e6454f45010f8d96001ad1ebdddfde6 100644 +index 2fe643942f09b503a890994e2ea46f872bf0aed9..380fe9b03e205d6c5b2eb48030384c8b756bc3f9 100644 --- a/net/minecraft/world/entity/monster/warden/Warden.java +++ b/net/minecraft/world/entity/monster/warden/Warden.java @@ -123,8 +123,32 @@ public class Warden extends Monster implements VibrationSystem { @@ -5084,7 +5084,7 @@ index 45fa724f7f6ff911a09d4c20811386fe2a10a80a..137510f81e6454f45010f8d96001ad1e && 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 d440e27c81925da6c532de701815f5f7d61fa226..cf92712dbe0eee7296bd641e1acaf9000fca9189 100644 +index 2d9c8218ea211ffa845ea50fd7e79dee73e66454..5f982512eb04cbfff21e270026046a384bb01537 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 @@ -5148,10 +5148,10 @@ index d440e27c81925da6c532de701815f5f7d61fa226..cf92712dbe0eee7296bd641e1acaf900 this.startTrading(player); } diff --git a/net/minecraft/world/entity/npc/WanderingTrader.java b/net/minecraft/world/entity/npc/WanderingTrader.java -index fa281aba7212be33d71d900564783ed23d4f8df5..10f2b2f96418b059c7f6b43e1f060b0ccb03362f 100644 +index 4032215d5907b926d1a8e08a8b0852c1388b51c5..5372f9cef4667a11b4e4447b1bacd7c232b6b0ad 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 +@@ -67,6 +67,23 @@ public class WanderingTrader extends AbstractVillager implements Consumable.Over } // Purpur end - Allow leashing villagers @@ -5175,7 +5175,7 @@ index fa281aba7212be33d71d900564783ed23d4f8df5..10f2b2f96418b059c7f6b43e1f060b0c @Override protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); -@@ -128,8 +145,9 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill +@@ -128,8 +145,9 @@ public class WanderingTrader extends AbstractVillager implements Consumable.Over if (!this.level().isClientSide()) { if (this.getOffers().isEmpty()) { @@ -5187,7 +5187,7 @@ index fa281aba7212be33d71d900564783ed23d4f8df5..10f2b2f96418b059c7f6b43e1f060b0c 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 2ce4e79966a8542896d8870e06b2364e182e512e..3c1641a906f301dbfb0f30a597479fb727f4639c 100644 +index 179eba2b3359913562e79f196455d3f62fe992d1..2c0b158c6e666941a073295e9b112f64ad5b6d90 100644 --- a/net/minecraft/world/entity/player/Player.java +++ b/net/minecraft/world/entity/player/Player.java @@ -200,6 +200,19 @@ public abstract class Player extends Avatar implements ContainerUser { @@ -5211,7 +5211,7 @@ index 2ce4e79966a8542896d8870e06b2364e182e512e..3c1641a906f301dbfb0f30a597479fb7 super(EntityType.PLAYER, level); this.setUUID(gameProfile.id()); diff --git a/net/minecraft/world/entity/projectile/LlamaSpit.java b/net/minecraft/world/entity/projectile/LlamaSpit.java -index 51366d17e521b1f01ddb2e425328938cd069bc93..3e2cf2f74b0c788ec3ec6fd83ff51a1f52f197e0 100644 +index 68322dec4f658c40437bfd43f78b045e0df36e8b..47fa648f7a3a081be1b1d44c1e75e066a18c896b 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 { @@ -5228,7 +5228,7 @@ index 51366d17e521b1f01ddb2e425328938cd069bc93..3e2cf2f74b0c788ec3ec6fd83ff51a1f 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 5e7642b982b58ae21cbf772b1c6667b3429facaf..1c9fae3eddd7372a60192a9361e67c2829078ab9 100644 +index 6787a48f8e06e95caa83e0aa7a6695cedfd6aca4..c21cb4dfbe75fa9ac8dbc9d6dbc3f10d1cabe9b5 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/features/0002-Configurable-entity-base-attributes.patch b/purpur-server/minecraft-patches/features/0002-Configurable-entity-base-attributes.patch index 416e3bcb3..1396abb3e 100644 --- a/purpur-server/minecraft-patches/features/0002-Configurable-entity-base-attributes.patch +++ b/purpur-server/minecraft-patches/features/0002-Configurable-entity-base-attributes.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Configurable entity base attributes diff --git a/net/minecraft/world/entity/GlowSquid.java b/net/minecraft/world/entity/GlowSquid.java -index 8e8ddab59de508c84c4182e105a11554387dcce0..1896f91e10a5e17332836d5354813a18a4dfe6dc 100644 +index 8a10da9409e19b03b559d14c6f5238b5393545c7..cbb7e0591dc761d0566ac99dc6e5697b3ba4eeda 100644 --- a/net/minecraft/world/entity/GlowSquid.java +++ b/net/minecraft/world/entity/GlowSquid.java @@ -47,6 +47,13 @@ public class GlowSquid extends Squid { @@ -23,13 +23,13 @@ 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 fdf197b040b87468fe89d86f21688c7c07bef853..41d0bab1a046fdfd1a266883e2b522cf63b87157 100644 +index 0002c7c4c728f44106ad4984e1d39ff2c76bf86f..be657ca79feed6a39fa5ca173d875e6678faf27e 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 - protected LivingEntity(EntityType entityType, Level level) { - super(entityType, level); - this.attributes = new AttributeMap(DefaultAttributes.getSupplier(entityType), this); // Purpur - Ridables + protected LivingEntity(EntityType type, Level level) { + super(type, level); + this.attributes = new AttributeMap(DefaultAttributes.getSupplier(type), this); // Purpur - Ridables + this.initAttributes(); // Purpur - Configurable entity base attributes 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 @@ -44,7 +44,7 @@ index fdf197b040b87468fe89d86f21688c7c07bef853..41d0bab1a046fdfd1a266883e2b522cf return this.brain; } diff --git a/net/minecraft/world/entity/ambient/Bat.java b/net/minecraft/world/entity/ambient/Bat.java -index 3b4ebfaf2327dd599cd98918418b6efc6d6be9b2..c5d2997629db6da1bb883e9b778d9da34e57430f 100644 +index 16cebb7e0ba7070c67dee00a67c29c3f808d8048..947619d07ef381ab79774b3f6cdc4c2454b632cb 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 3b4ebfaf2327dd599cd98918418b6efc6d6be9b2..c5d2997629db6da1bb883e9b778d9da3 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 3da697dfaef1880070ef61a3386adbf20d98e1a1..44e8623c03ee1f3dc1ece10d4d319246dec5b6eb 100644 +index c0abcf209d45146d1f98599c2f4d16877431a46c..30f25727b60d3d846956b878dc53542669de6203 100644 --- a/net/minecraft/world/entity/animal/Bee.java +++ b/net/minecraft/world/entity/animal/Bee.java -@@ -475,6 +475,14 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -473,6 +473,14 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { return beehiveBlockEntity != null && beehiveBlockEntity.isFireNearby(); } @@ -89,7 +89,7 @@ index 3da697dfaef1880070ef61a3386adbf20d98e1a1..44e8623c03ee1f3dc1ece10d4d319246 public int getRemainingPersistentAngerTime() { return this.entityData.get(DATA_REMAINING_ANGER_TIME); diff --git a/net/minecraft/world/entity/animal/Cat.java b/net/minecraft/world/entity/animal/Cat.java -index a960c3a4854f7d2343747d463d1d505b2e39d16b..d429beb03da8b499f19c3ed721b110d916849698 100644 +index 59bcbf6d5d844000ab26c0ca7e6674c7ac6f35ed..10365c8a63bfbefa49d243d0e51a79b7a2052238 100644 --- a/net/minecraft/world/entity/animal/Cat.java +++ b/net/minecraft/world/entity/animal/Cat.java @@ -117,6 +117,14 @@ public class Cat extends TamableAnimal { @@ -108,7 +108,7 @@ index a960c3a4854f7d2343747d463d1d505b2e39d16b..d429beb03da8b499f19c3ed721b110d9 protected void registerGoals() { this.temptGoal = new Cat.CatTemptGoal(this, 0.6, stack -> stack.is(ItemTags.CAT_FOOD), true); diff --git a/net/minecraft/world/entity/animal/Chicken.java b/net/minecraft/world/entity/animal/Chicken.java -index 26732fde9894816cb83ba1249b2ac9b47e2b639b..b4b2cebbc8d4645dec0b1bfe4243426a1e7ccda5 100644 +index bb261f049e28dd5fec00d92a844a1eaa4e8e0ca3..123527a051ec53f5cec886948bbb4da289d00270 100644 --- a/net/minecraft/world/entity/animal/Chicken.java +++ b/net/minecraft/world/entity/animal/Chicken.java @@ -89,6 +89,14 @@ public class Chicken extends Animal { @@ -127,7 +127,7 @@ index 26732fde9894816cb83ba1249b2ac9b47e2b639b..b4b2cebbc8d4645dec0b1bfe4243426a protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/net/minecraft/world/entity/animal/Cod.java b/net/minecraft/world/entity/animal/Cod.java -index 651c9243902e3c48fb438913974e996d67d6f746..ed52fbbf93e7a238d0f45981f8629ba8613bf3d4 100644 +index 4bbe60e47cd3710c2dd31a418de38b894eb8247d..9b9a237a20d8e39ac11a39a4d5782084f97ea674 100644 --- a/net/minecraft/world/entity/animal/Cod.java +++ b/net/minecraft/world/entity/animal/Cod.java @@ -25,6 +25,13 @@ public class Cod extends AbstractSchoolingFish { @@ -145,7 +145,7 @@ index 651c9243902e3c48fb438913974e996d67d6f746..ed52fbbf93e7a238d0f45981f8629ba8 public ItemStack getBucketItemStack() { return new ItemStack(Items.COD_BUCKET); diff --git a/net/minecraft/world/entity/animal/Cow.java b/net/minecraft/world/entity/animal/Cow.java -index 802c536659d45d0974fe788535ca326b86f90551..9dbc5f7b3896acb199577afa85451da38f2d2a01 100644 +index 380c8e3c9c790d626cd9f8d4b1f13838d0b756ec..e7100834ce813e9814139c6d6e957fce15861ab7 100644 --- a/net/minecraft/world/entity/animal/Cow.java +++ b/net/minecraft/world/entity/animal/Cow.java @@ -46,6 +46,14 @@ public class Cow extends AbstractCow { @@ -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 ecd4dbcfc7f568722488c0894a98db68bb07ead9..03313754022b5ec682efef68e5d56a59ee2e8b92 100644 +index 68dfce3c68cb4a861932e76dfa39f1b4f3724a50..71147da158f389207c032bc8e952ddb677e6d0ee 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 ecd4dbcfc7f568722488c0894a98db68bb07ead9..03313754022b5ec682efef68e5d56a59 @Override public SpawnGroupData finalizeSpawn( diff --git a/net/minecraft/world/entity/animal/Fox.java b/net/minecraft/world/entity/animal/Fox.java -index 4d2b6a34c0c276ef304916b2b84c92a516fe4979..50c8030a9ac6d1fc465cdf6ffbc88f85933405b0 100644 +index 6b931060a7be54aa6a1c0d196c52c4e4b56c0a95..ce46a3ff3a24666736211221fa9c5e69b8146be8 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,7 +202,7 @@ index 4d2b6a34c0c276ef304916b2b84c92a516fe4979..50c8030a9ac6d1fc465cdf6ffbc88f85 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 390b929a2d71df840febb081e68f675972db0fa4..597250765504186f7e01b3b88c7428258938afb3 100644 +index eb14c2c508efd927d4696ac4e7cd420104ccc192..c5a126718c93d01376b73eb1337cfa63d9acd99e 100644 --- a/net/minecraft/world/entity/animal/HappyGhast.java +++ b/net/minecraft/world/entity/animal/HappyGhast.java @@ -132,6 +132,19 @@ public class HappyGhast extends Animal { @@ -235,7 +235,7 @@ index 390b929a2d71df840febb081e68f675972db0fa4..597250765504186f7e01b3b88c742825 @Override diff --git a/net/minecraft/world/entity/animal/IronGolem.java b/net/minecraft/world/entity/animal/IronGolem.java -index febe8b7b6a29f34fda685d1ab467dbf168d998c3..1148a5dcd5eef8e961df5388dbdd49769508007d 100644 +index ed2ddcb4d4736b384a1b90cc4ea0e086e9d53102..89799cb1545b29ff10c25096e5ec7ba12af74eb1 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,7 +254,7 @@ index febe8b7b6a29f34fda685d1ab467dbf168d998c3..1148a5dcd5eef8e961df5388dbdd4976 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 cd13cff73e4a882a7d9aa246bfdf0c7ade99d987..eede8c36b351eb7bd555a0e6e362647e11dbeb2d 100644 +index 9de016cb4e1aba2ab8ff4f16827b3450e8155992..743faa77525d68181ee38415399bc6078f9360f8 100644 --- a/net/minecraft/world/entity/animal/MushroomCow.java +++ b/net/minecraft/world/entity/animal/MushroomCow.java @@ -80,6 +80,13 @@ public class MushroomCow extends AbstractCow implements Shearable { @@ -272,7 +272,7 @@ index cd13cff73e4a882a7d9aa246bfdf0c7ade99d987..eede8c36b351eb7bd555a0e6e362647e 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 0340813f71980d2c48853a68b37d353cd50a28cb..9f3ab67cf17c4f66da8bec0c9b818025ef303040 100644 +index 91fa99c852e79e572165322212b0291e73ebf0b3..751aa4fea84db8e385001633df0c0d18ef6fde3a 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 0340813f71980d2c48853a68b37d353cd50a28cb..9f3ab67cf17c4f66da8bec0c9b818025 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 65874fa6b80f5d0953317629ff997fafec68f66d..b31e2ef8a498fe33107a5c4ee2b4e056a44027cc 100644 +index 7be63b0738a1962a4b2563e78ae72f48bc330a2a..c74f2a95a473464be3497ea39e366564d3f74e66 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 65874fa6b80f5d0953317629ff997fafec68f66d..b31e2ef8a498fe33107a5c4ee2b4e056 if (this.isLazy()) { diff --git a/net/minecraft/world/entity/animal/Parrot.java b/net/minecraft/world/entity/animal/Parrot.java -index 60e1810f91c086debb4ada192720398834c8ca84..24f7e486dec1714d917342887afaf775ef6300d5 100644 +index e0374a72738f8110e41471cd0ef2d044be616523..debda7f54b05831d16014fb271b1a996822fecb5 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 60e1810f91c086debb4ada192720398834c8ca84..24f7e486dec1714d917342887afaf775 @Override public SpawnGroupData finalizeSpawn( diff --git a/net/minecraft/world/entity/animal/Pig.java b/net/minecraft/world/entity/animal/Pig.java -index 70c9629e6f1f82f44e14487ed3c81e391d480029..39f6a3f3ea5f7e51580b7cbf9bbfd4a04368a380 100644 +index 84afbacfb7f590fa68858816b7c717a92fd03fc2..8a8c796377254d47e68d0d8b1c9bdac7d4b99360 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 70c9629e6f1f82f44e14487ed3c81e391d480029..39f6a3f3ea5f7e51580b7cbf9bbfd4a0 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 b0f1c80465b3e4dd8ff220209df8a00f60ede84a..75eb4a6dd43346622d6c528aa6e66d251167d3ac 100644 +index 6ffb35630bab1303edb2179e4dcf749f9b3c3c28..2cf417f3bcf338a3edc4a2f71d8a700aca2e52dc 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 { @@ -379,9 +379,9 @@ index b0f1c80465b3e4dd8ff220209df8a00f60ede84a..75eb4a6dd43346622d6c528aa6e66d25 + @Nullable @Override - public AgeableMob getBreedOffspring(ServerLevel level, AgeableMob otherParent) { + public AgeableMob getBreedOffspring(ServerLevel level, AgeableMob partner) { diff --git a/net/minecraft/world/entity/animal/Pufferfish.java b/net/minecraft/world/entity/animal/Pufferfish.java -index 7c2d200165111e0a6fb804157074a28322304d95..9c9e0fb36d7a2e4f644314008c8dc6bdbeb42bcf 100644 +index 51dd0333b02ee232f3e2b17c9ae3617ea36f18ba..8b895308ee7639396983c73dc4c2572c957df027 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 7c2d200165111e0a6fb804157074a28322304d95..9c9e0fb36d7a2e4f644314008c8dc6bd 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 daab94acd64b75ee19d582014eacfe4944aeda55..b644b85f2509f584770dee11677e5bfeef4a46a2 100644 +index f50b38c98ec6eb96a72dde926a20e9a3803ee630..1b29d2a49350ff557e09b1297b3825f2cc28bad3 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 { @@ -418,7 +418,7 @@ index daab94acd64b75ee19d582014eacfe4944aeda55..b644b85f2509f584770dee11677e5bfe public void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/net/minecraft/world/entity/animal/Salmon.java b/net/minecraft/world/entity/animal/Salmon.java -index 265b2a6db778cabc1a97726c22c991051e3007fe..e426b3280b519a3cd727b200794324361c62b67e 100644 +index a0bd1c1446b81868fdb61a4d3db6140e7887cdb9..e5790db0472fa97471b828cf6d817697389c3a8c 100644 --- a/net/minecraft/world/entity/animal/Salmon.java +++ b/net/minecraft/world/entity/animal/Salmon.java @@ -51,6 +51,13 @@ public class Salmon extends AbstractSchoolingFish { @@ -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 6d0d1bb14b64d2a176db6a74f3a5ff0fa78a5434..3204145fc93bbeaad203f845edb984895a6ff494 100644 +index 00af403efafbdd7274524403b2212c15026ee147..d6f2a04cf04090e3cb68f5111d47bff9f1243568 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 6d0d1bb14b64d2a176db6a74f3a5ff0fa78a5434..3204145fc93bbeaad203f845edb98489 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 438765bc5799dff8b9cfd6fa77808712e6ada9b2..559a483e39f9da5c6c1131b5af61b594b5d3e7e8 100644 +index 39c8703d3034b48c9218adf4d347bd5e24231145..ad2be25e45b350c7d971cd750245dbfa2b27ccb5 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 { @@ -474,7 +474,7 @@ index 438765bc5799dff8b9cfd6fa77808712e6ada9b2..559a483e39f9da5c6c1131b5af61b594 protected void registerGoals() { this.goalSelector.addGoal(0, new Squid.SquidRandomMovementGoal(this)); diff --git a/net/minecraft/world/entity/animal/TropicalFish.java b/net/minecraft/world/entity/animal/TropicalFish.java -index cc26b929abd249536659df03a1cafbe83cde6f0f..c102db5ffdfc7dcb0ec7e59fb031fe6afcdd8237 100644 +index 6c2497ab50dd7ab6d5a7043935b0beeed36bfad8..95368fd534c77e7d89ed6219f1f3948c428c256c 100644 --- a/net/minecraft/world/entity/animal/TropicalFish.java +++ b/net/minecraft/world/entity/animal/TropicalFish.java @@ -89,6 +89,13 @@ public class TropicalFish extends AbstractSchoolingFish { @@ -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 542adc537723f9878a217aa3b71d67d1e4c1a8d2..b9dd8a359711a1993b515fda4b81e61d28a4da49 100644 +index bb54f64cc36939bfd1e6ca57a1128b813fab2ad7..88bd025f491ec17884007cc5c1b57c64461d2901 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,7 +511,7 @@ index 542adc537723f9878a217aa3b71d67d1e4c1a8d2..b9dd8a359711a1993b515fda4b81e61d this.homePos = homePos; } diff --git a/net/minecraft/world/entity/animal/allay/Allay.java b/net/minecraft/world/entity/animal/allay/Allay.java -index 173101a3b5bb1057adec2b5df396fd3000c028bc..d2665a3bc4602ca8e9635bc9f8104c7ad8eacc5a 100644 +index 4d08642a006d4b7d9b858d8c594c2888f0d7e595..d842d0158f1c685a9350c61158a6eaa36ea9e897 100644 --- a/net/minecraft/world/entity/animal/allay/Allay.java +++ b/net/minecraft/world/entity/animal/allay/Allay.java @@ -167,6 +167,14 @@ public class Allay extends PathfinderMob implements InventoryCarrier, VibrationS @@ -530,7 +530,7 @@ index 173101a3b5bb1057adec2b5df396fd3000c028bc..d2665a3bc4602ca8e9635bc9f8104c7a 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 a394bc9e4de64a862acc2d33a01c1dd298bce464..c77284ba3dc3c2eb13ba97bbdcdea7c4a864c195 100644 +index 764ad0be43e225f2f9d84641158ad0844993489e..2343f4fcca96f4887c6fb00e8fdc43b959aba69e 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,7 +549,7 @@ index a394bc9e4de64a862acc2d33a01c1dd298bce464..c77284ba3dc3c2eb13ba97bbdcdea7c4 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 d350bd4a29e3ce6196e3df9f0757ca24bd667075..78c3750b0e9fa53f3c3ef1958663e8e3c0269c5c 100644 +index 6614b38726dc1a9778032cbedc22e4343f70774f..330caf84f0a8e0edff764d4bd34b85b54b9f057f 100644 --- a/net/minecraft/world/entity/animal/axolotl/Axolotl.java +++ b/net/minecraft/world/entity/animal/axolotl/Axolotl.java @@ -138,6 +138,14 @@ public class Axolotl extends Animal implements Bucketable { @@ -568,7 +568,7 @@ index d350bd4a29e3ce6196e3df9f0757ca24bd667075..78c3750b0e9fa53f3c3ef1958663e8e3 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 96c98f032b1b3aec32aba38244ee8b45aca9078c..3a794ff3d68c86b4e5ef93ff8f5cedfa07d22f99 100644 +index 486974bf7764a6eee37e67acdfc3b7798fa218ef..78df0eb0a0b6765406bd0dc041a02b099d86dd60 100644 --- a/net/minecraft/world/entity/animal/camel/Camel.java +++ b/net/minecraft/world/entity/animal/camel/Camel.java @@ -335,6 +335,23 @@ public class Camel extends AbstractHorse { @@ -596,7 +596,7 @@ index 96c98f032b1b3aec32aba38244ee8b45aca9078c..3a794ff3d68c86b4e5ef93ff8f5cedfa public SoundEvent getAmbientSound() { return SoundEvents.CAMEL_AMBIENT; diff --git a/net/minecraft/world/entity/animal/coppergolem/CopperGolem.java b/net/minecraft/world/entity/animal/coppergolem/CopperGolem.java -index 20d2f081fa2576ea946489d3e717b389092abaef..0597de19bcb1dc21cc7d07bb9b69dfb6967bba6f 100644 +index f63dee3d9192836c4a92696a4383bcfb1489385d..e50f9c7113063ce0c8696e06a3ca6ab768adc4af 100644 --- a/net/minecraft/world/entity/animal/coppergolem/CopperGolem.java +++ b/net/minecraft/world/entity/animal/coppergolem/CopperGolem.java @@ -131,6 +131,16 @@ public class CopperGolem extends AbstractGolem implements ContainerUser, Shearab @@ -617,7 +617,7 @@ index 20d2f081fa2576ea946489d3e717b389092abaef..0597de19bcb1dc21cc7d07bb9b69dfb6 return Mob.createMobAttributes().add(Attributes.MOVEMENT_SPEED, 0.2F).add(Attributes.STEP_HEIGHT, 1.0).add(Attributes.MAX_HEALTH, 12.0); } diff --git a/net/minecraft/world/entity/animal/horse/AbstractHorse.java b/net/minecraft/world/entity/animal/horse/AbstractHorse.java -index b528bd7cc2001a3c0ec1cf615a4c306a9cd7e9f1..387f6bb134a766ce7b72cf2d4a56509f51687308 100644 +index 628f93f477d188cb4400be9a12cdfe09badcb971..59d5f89403a33d402910a0adca13edd14607431f 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 @@ -677,7 +677,7 @@ index b528bd7cc2001a3c0ec1cf615a4c306a9cd7e9f1..387f6bb134a766ce7b72cf2d4a56509f } diff --git a/net/minecraft/world/entity/animal/horse/Donkey.java b/net/minecraft/world/entity/animal/horse/Donkey.java -index 66dda36aeb668488076f0c93dc83ab6cc4ec1a31..3aa12702cd1f4ef160180bc6ba64a6566cbddc9d 100644 +index 88e45b38763992a645e36cccab36f74a2024f671..65470905a29f1ae0ea7ac1d29ee108adcbc499c7 100644 --- a/net/minecraft/world/entity/animal/horse/Donkey.java +++ b/net/minecraft/world/entity/animal/horse/Donkey.java @@ -23,6 +23,23 @@ public class Donkey extends AbstractChestedHorse { @@ -705,7 +705,7 @@ index 66dda36aeb668488076f0c93dc83ab6cc4ec1a31..3aa12702cd1f4ef160180bc6ba64a656 public SoundEvent getAmbientSound() { return SoundEvents.DONKEY_AMBIENT; diff --git a/net/minecraft/world/entity/animal/horse/Horse.java b/net/minecraft/world/entity/animal/horse/Horse.java -index f1cb2e315e1d86f9fcd87db11d3ee7a81cfe12f6..53c0eac62018a0d88e30b8c13de94216ff829cd8 100644 +index e5fc006066a817737110918d047e71abf24bb334..78b68881357f1bc1111478bb7c9e4f1ba55e055e 100644 --- a/net/minecraft/world/entity/animal/horse/Horse.java +++ b/net/minecraft/world/entity/animal/horse/Horse.java @@ -54,6 +54,23 @@ public class Horse extends AbstractHorse { @@ -733,7 +733,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 c3efc59c5e396c664022dd91bca143c60164fe0c..fb2b45b85d9f8ae5546573a31cf0d5a39dad149c 100644 +index 1e76e5c5e046e9e284c42ad5de9430aa489a7b28..d1f1f30486ea5c4785e5c4c0104fa31a2e27521a 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 { @@ -761,7 +761,7 @@ index c3efc59c5e396c664022dd91bca143c60164fe0c..fb2b45b85d9f8ae5546573a31cf0d5a3 return false; } diff --git a/net/minecraft/world/entity/animal/horse/Mule.java b/net/minecraft/world/entity/animal/horse/Mule.java -index b1c96936ba8dcba4435a649dd7e6ec3c921c3702..0107bb5fc029c5390d73e9a4cd08c13838a2ded5 100644 +index d6c61075321e6005f977be17bbb6d7045f42d7f0..dc3723c5a0bca9e1023629657f668c7e5f6df4a4 100644 --- a/net/minecraft/world/entity/animal/horse/Mule.java +++ b/net/minecraft/world/entity/animal/horse/Mule.java @@ -22,6 +22,23 @@ public class Mule extends AbstractChestedHorse { @@ -789,7 +789,7 @@ index b1c96936ba8dcba4435a649dd7e6ec3c921c3702..0107bb5fc029c5390d73e9a4cd08c138 public SoundEvent getAmbientSound() { return SoundEvents.MULE_AMBIENT; diff --git a/net/minecraft/world/entity/animal/horse/SkeletonHorse.java b/net/minecraft/world/entity/animal/horse/SkeletonHorse.java -index ba0e483df57cc56f356282519105a2e3e77601f8..a7bcc0ff10e429ebfe91173c392e9a0c07903289 100644 +index 47b36581d5291e4d223fb39572d62674b8eb68bc..557e06b9002217b7ba5a07399bd71491cb0236c6 100644 --- a/net/minecraft/world/entity/animal/horse/SkeletonHorse.java +++ b/net/minecraft/world/entity/animal/horse/SkeletonHorse.java @@ -49,6 +49,23 @@ public class SkeletonHorse extends AbstractHorse { @@ -817,7 +817,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 626b129b54aa622267dfc2ee5ec13bb9f10d6390..db07a476fdaa1cfde2b44be77cdc5a17a17bd898 100644 +index 21211278de627079d7c9e91305e42aa0f8ae34d3..a566336bb088286a29eeeca1703addc98922f6e6 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 { @@ -845,7 +845,7 @@ index 626b129b54aa622267dfc2ee5ec13bb9f10d6390..db07a476fdaa1cfde2b44be77cdc5a17 public boolean isTraderLlama() { return true; diff --git a/net/minecraft/world/entity/animal/horse/ZombieHorse.java b/net/minecraft/world/entity/animal/horse/ZombieHorse.java -index 45d09ebcc9ce4321285a4ec49e8ee369290f6b2c..3d597bd355b6c918ea1bf4b7d537ad4f76e218d2 100644 +index c916c28b0d3115588cedf84cf70469b6f6050ec9..6684f5dfb7dec101bad15b7ede3d9fd377aacd45 100644 --- a/net/minecraft/world/entity/animal/horse/ZombieHorse.java +++ b/net/minecraft/world/entity/animal/horse/ZombieHorse.java @@ -45,6 +45,23 @@ public class ZombieHorse extends AbstractHorse { @@ -873,7 +873,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 1975976c92e3acb361dcc1ec49c6ce5818173806..a36ce4568ae173edaeab04b580c88c5389487bd5 100644 +index 1e453cdbe3c290209fd2fb912a90fb44a642959a..0e371655c8a500bad69626475222f9e726013c02 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 { @@ -892,7 +892,7 @@ index 1975976c92e3acb361dcc1ec49c6ce5818173806..a36ce4568ae173edaeab04b580c88c53 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 85a5cad5d7c4056fccf11807e6bcce5432febbc5..0c0f25664f4433e3c6c2e51779d7cfc309114d90 100644 +index 1013898f40c82b64bc62eb99365d10a57e8f66b5..cd6a5173e2c6d49c7df9baae464b391ea1fdd620 100644 --- a/net/minecraft/world/entity/animal/sniffer/Sniffer.java +++ b/net/minecraft/world/entity/animal/sniffer/Sniffer.java @@ -105,6 +105,14 @@ public class Sniffer extends Animal { @@ -911,7 +911,7 @@ index 85a5cad5d7c4056fccf11807e6bcce5432febbc5..0c0f25664f4433e3c6c2e51779d7cfc3 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 ba0f003546d70651eddb1907f33ceb549584c0ca..70753293961f73f917973c35e1d3fb81b836f1f8 100644 +index 901138575d9468374565d395b56bfaeb353479f7..56db9816b52aed4facc80c95ec664cd98c6daca2 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 { @@ -930,7 +930,7 @@ index ba0f003546d70651eddb1907f33ceb549584c0ca..70753293961f73f917973c35e1d3fb81 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 c3eefe0a4a3b13e20853193450e8634c61257a0a..00ea1b2b62e422f8420dcd8a7fdf186474695ac7 100644 +index f695e3ba62a4047d8203c0399790d646e97309f7..81f73a5b400a346ee86285bf4ca6c846c0c4b87e 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 { @@ -957,7 +957,7 @@ index c3eefe0a4a3b13e20853193450e8634c61257a0a..00ea1b2b62e422f8420dcd8a7fdf1864 // 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 110ef9d81fdfa099316abf7b9c7ef4e1fdc976f7..3023c8e5b16b54a14abeb832f0a82456fa999707 100644 +index 151bfd4de9a11642ca128e91a6ed80d41820b358..8e5e364d297a3eb55b67ce7081ec7548cbf7f3a6 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 { @@ -985,7 +985,7 @@ index 110ef9d81fdfa099316abf7b9c7ef4e1fdc976f7..3023c8e5b16b54a14abeb832f0a82456 } else { super.customServerAiStep(level); diff --git a/net/minecraft/world/entity/monster/Blaze.java b/net/minecraft/world/entity/monster/Blaze.java -index e0a38808c3757aaaabb6d3d8a0f9c1c0133c792f..14e2fe8d0d21464c946af9949ba3a77e31f22d23 100644 +index 937300689b75486ba582b6dbe294c4355dc31d9e..8621ab150da50116260cd76821c02109cd32e351 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 { @@ -1004,7 +1004,7 @@ index e0a38808c3757aaaabb6d3d8a0f9c1c0133c792f..14e2fe8d0d21464c946af9949ba3a77e 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 9ab5b3f88eeec22110b8aba71714e05209e4b855..579a5fd6e4545cc51eafbeac2369e114d404c2f1 100644 +index 71a8bf118babb1fd7985caac087855c1da85025c..2ec4e1cc570ebdbaa8a0f3fc681026a4b89f53ed 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 { @@ -1023,7 +1023,7 @@ index 9ab5b3f88eeec22110b8aba71714e05209e4b855..579a5fd6e4545cc51eafbeac2369e114 protected void defineSynchedData(SynchedEntityData.Builder builder) { super.defineSynchedData(builder); diff --git a/net/minecraft/world/entity/monster/CaveSpider.java b/net/minecraft/world/entity/monster/CaveSpider.java -index 4873a3d8dd9c160ecdbda594ee546c35ec03a1e7..64eecd8d1acd318743800c1daa77cd97097a0f7c 100644 +index e528e85dfb080c6fa28c01536d8fd0a29662651e..ca8e92447eb5f58e2bd855ac6fa1d580425218f9 100644 --- a/net/minecraft/world/entity/monster/CaveSpider.java +++ b/net/minecraft/world/entity/monster/CaveSpider.java @@ -43,6 +43,14 @@ public class CaveSpider extends Spider { @@ -1039,10 +1039,10 @@ index 4873a3d8dd9c160ecdbda594ee546c35ec03a1e7..64eecd8d1acd318743800c1daa77cd97 + // Purpur end - Configurable entity base attributes + @Override - public boolean doHurtTarget(ServerLevel level, Entity source) { - if (super.doHurtTarget(level, source)) { + public boolean doHurtTarget(ServerLevel level, Entity target) { + if (super.doHurtTarget(level, target)) { diff --git a/net/minecraft/world/entity/monster/Creeper.java b/net/minecraft/world/entity/monster/Creeper.java -index d250d8a2d0cbe41b2336a0a697c1c179b24dc823..b7d33384ca236a902a7aa2004b16d545e5a58c9e 100644 +index c3e2677a817da764577acc7298ad5fe52d7d5b2e..6259636b9856be5b03af83ee515e70cbf1eb51d8 100644 --- a/net/minecraft/world/entity/monster/Creeper.java +++ b/net/minecraft/world/entity/monster/Creeper.java @@ -137,6 +137,14 @@ public class Creeper extends Monster { @@ -1061,7 +1061,7 @@ index d250d8a2d0cbe41b2336a0a697c1c179b24dc823..b7d33384ca236a902a7aa2004b16d545 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 eb70d05d2540295f79d24fbd0c07a9a349783f88..453f9d6e9581165c59b959ea6bccc5387dff91bd 100644 +index 8ab6c0f67ac25c1229850ae01abd01d878827d0c..4037f13778d21461c862c26a0fcc3c08e6d472ae 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 { @@ -1085,7 +1085,7 @@ index eb70d05d2540295f79d24fbd0c07a9a349783f88..453f9d6e9581165c59b959ea6bccc538 protected void addBehaviourGoals() { this.goalSelector.addGoal(1, new Drowned.DrownedGoToWaterGoal(this, 1.0)); diff --git a/net/minecraft/world/entity/monster/ElderGuardian.java b/net/minecraft/world/entity/monster/ElderGuardian.java -index 07355eb21c7b06d282be32f6956d4de9e399b9c9..7ebc7224d3db38cc5137112d5a74999f6e23b8d5 100644 +index e5d16ca14a40d520dce43dd3d9b6347aefbd25d7..57fb334f670d35aa181b13e12fa2c5f36da1dda6 100644 --- a/net/minecraft/world/entity/monster/ElderGuardian.java +++ b/net/minecraft/world/entity/monster/ElderGuardian.java @@ -43,6 +43,14 @@ public class ElderGuardian extends Guardian { @@ -1104,7 +1104,7 @@ 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 612b0caa28d214886edab3b2de34838659bd39f2..73e3b50ffa544f29267413c88bcf21af71d1ff4f 100644 +index eaa5cc7e72ba604d14e41975d24624f1def04656..b8fd334b9dd704d5d4502a6e051db09cced24f59 100644 --- a/net/minecraft/world/entity/monster/EnderMan.java +++ b/net/minecraft/world/entity/monster/EnderMan.java @@ -107,6 +107,14 @@ public class EnderMan extends Monster implements NeutralMob { @@ -1123,7 +1123,7 @@ index 612b0caa28d214886edab3b2de34838659bd39f2..73e3b50ffa544f29267413c88bcf21af 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 c7e3a80a678df50cbb03349826f7e03c23a2c622..7e6cebeff52bb9252d55a191179b9bb82f4405bb 100644 +index 844ba943a2a752f9b25506b644a4b4abc981b4cb..c6ae00f6ab83743b9ce43d9e55f04ba23b0de0f1 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 { @@ -1142,7 +1142,7 @@ index c7e3a80a678df50cbb03349826f7e03c23a2c622..7e6cebeff52bb9252d55a191179b9bb8 protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/net/minecraft/world/entity/monster/Evoker.java b/net/minecraft/world/entity/monster/Evoker.java -index 10142de6bdf9474958ca939c956a428218ee48db..e8aac93cffa3a9d4105c03c1aeb4d571ee0eba6c 100644 +index 70cf903d95d35b539e9a299a4035c8ddde5e4b97..a5243b7969fec5d60b94368caf5e962c348c4135 100644 --- a/net/minecraft/world/entity/monster/Evoker.java +++ b/net/minecraft/world/entity/monster/Evoker.java @@ -65,6 +65,14 @@ public class Evoker extends SpellcasterIllager { @@ -1161,7 +1161,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 49925c8db7166359fdcc0008d5be2130d01686b6..bcd602714104043e67ed67446ea47dda33761e31 100644 +index 1d888ebabecfd1beebdf718c5d771b312070245a..fdbf14ff7e62d8db023b3d3bdf4ae685b5f085a8 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 49925c8db7166359fdcc0008d5be2130d01686b6..bcd602714104043e67ed67446ea47dda 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/Giant.java b/net/minecraft/world/entity/monster/Giant.java -index c098fc14eb4f2ebd7dc1f6be9507279296416eea..e673f488bfab9648075857bc40e1339f974a903c 100644 +index dcbe6bbce0baa4fad7fe180944beeb6ca4026f7d..416bb85fc87b5f9e372f33df8fe27f12e83834b9 100644 --- a/net/minecraft/world/entity/monster/Giant.java +++ b/net/minecraft/world/entity/monster/Giant.java @@ -35,6 +35,16 @@ public class Giant extends Monster { @@ -1201,7 +1201,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 7202edbad08975fc62f9aa876d9e53a238182b20..1106f170bbfd8ea5446246c9778039742356a222 100644 +index 339c81d0a9833e762ca4fc63430d22266f95627d..c59f2dd8661d7a6bd35aaa1933a60a47f795bdd1 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 { @@ -1220,7 +1220,7 @@ index 7202edbad08975fc62f9aa876d9e53a238182b20..1106f170bbfd8ea5446246c977803974 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 b8b7700df42feb2309d9e845e37aa0e9ca026f9b..4a617bb6bc3675d8cb42be0b5ae19befd4b3176f 100644 +index af1af1687bbbc9a60b71ad83879ca5cb5af15eef..43d4e0eb3defdd4c76896097788d2ba0970c33c9 100644 --- a/net/minecraft/world/entity/monster/Husk.java +++ b/net/minecraft/world/entity/monster/Husk.java @@ -37,6 +37,18 @@ public class Husk extends Zombie { @@ -1243,7 +1243,7 @@ index b8b7700df42feb2309d9e845e37aa0e9ca026f9b..4a617bb6bc3675d8cb42be0b5ae19bef 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 c41d43d20db8a573efcbbe8593f5b1f56a18aa0e..753532aad0973230e1c7f4102ac55b243355c61e 100644 +index 162986914c6718438b7e1d5408bdbe5a4d3e3a68..b6872c94d769346ed2a8bb2406fc2b39ef64a67c 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 { @@ -1264,7 +1264,7 @@ index c41d43d20db8a573efcbbe8593f5b1f56a18aa0e..753532aad0973230e1c7f4102ac55b24 protected void registerGoals() { super.registerGoals(); diff --git a/net/minecraft/world/entity/monster/MagmaCube.java b/net/minecraft/world/entity/monster/MagmaCube.java -index 4a1299d6cee2807522de0c2d0d4745c5810e4121..bb1364c4a220cc93f7ac01cbaa617561de4cd2e3 100644 +index 9be4861fc5cf5e9f8f562785eb3e857b6c1d3585..f39611741c4dacec2b1ad2d25ca9b7d47c188049 100644 --- a/net/minecraft/world/entity/monster/MagmaCube.java +++ b/net/minecraft/world/entity/monster/MagmaCube.java @@ -46,6 +46,28 @@ public class MagmaCube extends Slime { @@ -1297,7 +1297,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 f5cc26632345bdae6fbda72e1084bacf79a75752..958f0c86986a155f56d3995a87882f83df66043f 100644 +index d29752add305e97d2265606b7b4212c308072523..ba9368c601f0b720cc665b96f392be1370fb9556 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 { @@ -1337,7 +1337,7 @@ index f5cc26632345bdae6fbda72e1084bacf79a75752..958f0c86986a155f56d3995a87882f83 public void tick() { super.tick(); diff --git a/net/minecraft/world/entity/monster/Pillager.java b/net/minecraft/world/entity/monster/Pillager.java -index fa49ed77f33bca6335812e9f56176cc053a364ad..bcc20f9642e9d20cf18bb5f8e63daa277154be1a 100644 +index f75eab4f895c0ed381b65717dc106dc13325428a..748233be6bdfd735aa3ccc02a7ba21a45603ffa4 100644 --- a/net/minecraft/world/entity/monster/Pillager.java +++ b/net/minecraft/world/entity/monster/Pillager.java @@ -81,6 +81,14 @@ public class Pillager extends AbstractIllager implements CrossbowAttackMob, Inve @@ -1356,7 +1356,7 @@ index fa49ed77f33bca6335812e9f56176cc053a364ad..bcc20f9642e9d20cf18bb5f8e63daa27 protected void registerGoals() { super.registerGoals(); diff --git a/net/minecraft/world/entity/monster/Ravager.java b/net/minecraft/world/entity/monster/Ravager.java -index b67ac487ce4a7fd8b2f62452ab0b87f4a55006f2..9e7b07f353fb8f0650b8805014c371368eaabcd5 100644 +index 91514bc1eb85eb224b8760f17cecc423c6206554..f43125ca7d52170a1ca2a54a5b2758794f25fbd1 100644 --- a/net/minecraft/world/entity/monster/Ravager.java +++ b/net/minecraft/world/entity/monster/Ravager.java @@ -93,6 +93,14 @@ public class Ravager extends Raider { @@ -1375,7 +1375,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 d3b14cfb5310423e52899edd5873e9ba7f6a30fc..dac39e2c1ed4422b466effb0acc9267454bdc2fb 100644 +index d9401842948fed8edd6d31fcf08da2747f1a3921..3909804ba8f9e220260efe6255ff2b298a4448db 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 { @@ -1403,7 +1403,7 @@ index d3b14cfb5310423e52899edd5873e9ba7f6a30fc..dac39e2c1ed4422b466effb0acc92674 private void setVariant(Optional variant) { diff --git a/net/minecraft/world/entity/monster/Silverfish.java b/net/minecraft/world/entity/monster/Silverfish.java -index 19dcc657fd2a995638d5e23c2b043d012d978e79..c200d57841304ba0d7a76fdd9a440fe9f2b25136 100644 +index b278c8cce74f16c49f579ca13688dabfce95d14d..23722456ce82dcc6b571b96e5c9b0d70005f9c2e 100644 --- a/net/minecraft/world/entity/monster/Silverfish.java +++ b/net/minecraft/world/entity/monster/Silverfish.java @@ -56,6 +56,16 @@ public class Silverfish extends Monster { @@ -1424,7 +1424,7 @@ 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 bb7f93435168da4023ee07585e92192717881acc..dc9a946b102e93a024130967b1eb1d5e78070b4d 100644 +index c39072d9265b2640e3bd701dacb54aa629f3b230..8d1f83ba8042435a0dc1e6e1fb9873173efe277d 100644 --- a/net/minecraft/world/entity/monster/Skeleton.java +++ b/net/minecraft/world/entity/monster/Skeleton.java @@ -42,6 +42,13 @@ public class Skeleton extends AbstractSkeleton { @@ -1442,7 +1442,7 @@ index bb7f93435168da4023ee07585e92192717881acc..dc9a946b102e93a024130967b1eb1d5e 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 ce6e19b9cf943a8a9d1e85c8764d57b7f282cd69..6f6b6c47d003271a54fee53723cd09d435431be1 100644 +index 3b9c4f2623ddecf54b139e032d8056a7ec0d59c0..beb504f9a5de48d9631585648a98cd3d2d682d76 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 { @@ -1498,7 +1498,7 @@ index ce6e19b9cf943a8a9d1e85c8764d57b7f282cd69..6f6b6c47d003271a54fee53723cd09d4 this.setHealth(this.getMaxHealth()); } diff --git a/net/minecraft/world/entity/monster/Spider.java b/net/minecraft/world/entity/monster/Spider.java -index 771592182fe56efc6fc0dae7fa852483b3b99c57..853752e66b2b9299b20d4a66dc73cf0db839d9e3 100644 +index 6237bbbed2aa643755e8e58a5fdd2f6d75f717ac..580047cd6a803ffdf6a1887d32731ddfd23316b9 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 { @@ -1517,7 +1517,7 @@ index 771592182fe56efc6fc0dae7fa852483b3b99c57..853752e66b2b9299b20d4a66dc73cf0d protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/net/minecraft/world/entity/monster/Stray.java b/net/minecraft/world/entity/monster/Stray.java -index 4a7dbd1e4d927240433882a95822e9edfc83b827..b5465b552c5aea7603a54cfdeafe451bfaf38bf2 100644 +index b1013db104186ba079a51c6c30bb7f89b92da3d7..1be523e22b2fa0f9546eb272f3f68a896a0575c9 100644 --- a/net/minecraft/world/entity/monster/Stray.java +++ b/net/minecraft/world/entity/monster/Stray.java @@ -39,6 +39,13 @@ public class Stray extends AbstractSkeleton { @@ -1535,7 +1535,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 f1e559f552b932d1d66b67ff35ca519ee273fc50..255d4d0cd8f48bf09232cd0fecb87f430e68084a 100644 +index f03ec1e8985f2c81ad2ec13d136e4c0362be4fff..5d41885ceb7145a516a398da0d7553faeb386710 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 { @@ -1554,7 +1554,7 @@ index f1e559f552b932d1d66b67ff35ca519ee273fc50..255d4d0cd8f48bf09232cd0fecb87f43 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 f8fb8de570468151e1b82e8f15e66e2ea6fd8e22..a8d3d1aaaa62781824f3b3422030c87de884793d 100644 +index 6713498d873980bd979b864ab0ac6dfc9d4e1482..7fddf0a36b1c4a3f7fbab8b0319e00281e8acd90 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 { @@ -1573,7 +1573,7 @@ index f8fb8de570468151e1b82e8f15e66e2ea6fd8e22..a8d3d1aaaa62781824f3b3422030c87d public boolean isFlapping() { return this.tickCount % TICKS_PER_FLAP == 0; diff --git a/net/minecraft/world/entity/monster/Vindicator.java b/net/minecraft/world/entity/monster/Vindicator.java -index 8e5bf153a457026808e2ea670e874e66ca0d5e98..1f66c8d5194ee5b3794ea86a951ae553aa375422 100644 +index c584a404838d5f8a916a27a74b4f4e8e3d5c1b1d..fdaf024a27825844105ef62baddf30e3b4412d28 100644 --- a/net/minecraft/world/entity/monster/Vindicator.java +++ b/net/minecraft/world/entity/monster/Vindicator.java @@ -73,6 +73,14 @@ public class Vindicator extends AbstractIllager { @@ -1592,7 +1592,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 e420d7dc0fc09d712ee63238f2107a2fa0f799b7..620d529c0cf71e0c19b9ed6a02d173218a38abd4 100644 +index bed6ce6749df67c3a4966958801d13ccd9529b1d..60a6d8880e6d0009cfd136599ca6f1c1b07adc42 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 { @@ -1611,7 +1611,7 @@ index e420d7dc0fc09d712ee63238f2107a2fa0f799b7..620d529c0cf71e0c19b9ed6a02d17321 protected void registerGoals() { super.registerGoals(); diff --git a/net/minecraft/world/entity/monster/WitherSkeleton.java b/net/minecraft/world/entity/monster/WitherSkeleton.java -index 48f9d87d26bad99b81af001a81d2c3d274cad007..96dc17a43c258fec424954606a7a43d490e870d6 100644 +index 7061a0ae68ed28ea72335bb5eab013a6554abc07..4d4e04d9fb5b68897ffa6f299bd2009bb397da3d 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 { @@ -1630,7 +1630,7 @@ index 48f9d87d26bad99b81af001a81d2c3d274cad007..96dc17a43c258fec424954606a7a43d4 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 44ad3bbcfdf8615d6e5a896fb923685c481ae5b5..f1d42c8ee4a23ba3485477632b51dd9bcf9db926 100644 +index 68095374ffd82db27ed704eb82dd68c51071df19..5e52eab9a78db8a5652bdee7127d75921f641ab9 100644 --- a/net/minecraft/world/entity/monster/Zoglin.java +++ b/net/minecraft/world/entity/monster/Zoglin.java @@ -103,6 +103,14 @@ public class Zoglin extends Monster implements HoglinBase { @@ -1649,7 +1649,7 @@ index 44ad3bbcfdf8615d6e5a896fb923685c481ae5b5..f1d42c8ee4a23ba3485477632b51dd9b 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 1aeea30498e089d686b845f31b44aef0ff994c60..4f5d19c19887dc543c336bb72dac76c82503f792 100644 +index 3f000e9a1be45134b12b46badc2b52d23b960e9a..6e106c03fc81ab9f5a9de80e86e0e46cf853a232 100644 --- a/net/minecraft/world/entity/monster/Zombie.java +++ b/net/minecraft/world/entity/monster/Zombie.java @@ -119,6 +119,14 @@ public class Zombie extends Monster { @@ -1677,7 +1677,7 @@ index 1aeea30498e089d686b845f31b44aef0ff994c60..4f5d19c19887dc543c336bb72dac76c8 class ZombieAttackTurtleEggGoal extends RemoveBlockGoal { diff --git a/net/minecraft/world/entity/monster/ZombieVillager.java b/net/minecraft/world/entity/monster/ZombieVillager.java -index 454e2795e04c7b7cac88f782df3dfb4200b192fc..706c0cc803ede18f0790e94cfc989f0676199e7a 100644 +index f9c119d38c2812cfeeb775e728f6c751bf748c85..1de823b94ee0e53109b4dd3e726f721eaed0acd4 100644 --- a/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/net/minecraft/world/entity/monster/ZombieVillager.java @@ -90,6 +90,18 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { @@ -1700,7 +1700,7 @@ index 454e2795e04c7b7cac88f782df3dfb4200b192fc..706c0cc803ede18f0790e94cfc989f06 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 5919405428eb03c499167bc7b963e3f96f721c8c..a6244a3d5d8e48b81147d6aed7ac1126e9ae5d64 100644 +index d52e83ee890ab278440a69972ad83d4dd2f972a6..819faafec711edc6e837a2f52a318910f4ef0a5c 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 { @@ -1728,7 +1728,7 @@ index 5919405428eb03c499167bc7b963e3f96f721c8c..a6244a3d5d8e48b81147d6aed7ac1126 @Nullable diff --git a/net/minecraft/world/entity/monster/creaking/Creaking.java b/net/minecraft/world/entity/monster/creaking/Creaking.java -index 982790edbd74bd80988df1400b0e67669bfd164c..c05d572fa2ab5a70c8825d2d2b6ffb36317e92fe 100644 +index c3c4dfb89c807020c4147140bc23ba1ce5cfe888..f31a29531cc7d63bed5a4bcbe3986bcc366b6103 100644 --- a/net/minecraft/world/entity/monster/creaking/Creaking.java +++ b/net/minecraft/world/entity/monster/creaking/Creaking.java @@ -125,6 +125,14 @@ public class Creaking extends Monster { @@ -1747,7 +1747,7 @@ index 982790edbd74bd80988df1400b0e67669bfd164c..c05d572fa2ab5a70c8825d2d2b6ffb36 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 c3d08cfdb15602f6fbe2ac81c751e879668a4dd7..04eb22a9bbafb81f010a4413e653ae31426ba3e6 100644 +index d852f8cff28e3ff2189896d713d37a3400b0a70b..1062df067d6b98ffba27864450d8a867446aae79 100644 --- a/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/net/minecraft/world/entity/monster/hoglin/Hoglin.java @@ -112,6 +112,14 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { @@ -1766,7 +1766,7 @@ index c3d08cfdb15602f6fbe2ac81c751e879668a4dd7..04eb22a9bbafb81f010a4413e653ae31 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 8a7c6326e056772fb89ca73b20cc1d9d1a029db9..c44fd14350b2504fc38ae22a61029d5c44b60918 100644 +index 0dc2d7f71c06ba575c2ac97a4be6b2466d5407d9..19211c0d78113da7827a071fd510b4f36e63a9f2 100644 --- a/net/minecraft/world/entity/monster/piglin/Piglin.java +++ b/net/minecraft/world/entity/monster/piglin/Piglin.java @@ -153,6 +153,14 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento @@ -1785,7 +1785,7 @@ index 8a7c6326e056772fb89ca73b20cc1d9d1a029db9..c44fd14350b2504fc38ae22a61029d5c protected void addAdditionalSaveData(ValueOutput output) { super.addAdditionalSaveData(output); diff --git a/net/minecraft/world/entity/monster/piglin/PiglinBrute.java b/net/minecraft/world/entity/monster/piglin/PiglinBrute.java -index 4c8e49ba064241ec7ac505fa6f5df6d7f9c009b6..f52aba35ee7e202074cda8fb4dfd6a7d9ded1f09 100644 +index e1b1a909c7e92c5fa5e8f9c155bc57290ef6667b..31e38737806098795de0e87fbcaf60d4ab83ea6e 100644 --- a/net/minecraft/world/entity/monster/piglin/PiglinBrute.java +++ b/net/minecraft/world/entity/monster/piglin/PiglinBrute.java @@ -82,6 +82,14 @@ public class PiglinBrute extends AbstractPiglin { @@ -1804,7 +1804,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 cf92712dbe0eee7296bd641e1acaf9000fca9189..aedcc54dcc370c00c1d7349e3a17358da5d6ca1d 100644 +index 5f982512eb04cbfff21e270026046a384bb01537..05d748a7de077694b1035d3e73f35f1f98419902 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 @@ -1823,10 +1823,10 @@ index cf92712dbe0eee7296bd641e1acaf9000fca9189..aedcc54dcc370c00c1d7349e3a17358d 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 10f2b2f96418b059c7f6b43e1f060b0ccb03362f..0eeda11b37cd17122183d5e22d02d9cd61f2b4e5 100644 +index 5372f9cef4667a11b4e4447b1bacd7c232b6b0ad..b06ea793e0008c68d85d8112415fbc011131984d 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 +@@ -84,6 +84,13 @@ public class WanderingTrader extends AbstractVillager implements Consumable.Over } // Purpur end - Ridables diff --git a/purpur-server/minecraft-patches/features/0003-Barrels-and-enderchests-6-rows.patch b/purpur-server/minecraft-patches/features/0003-Barrels-and-enderchests-6-rows.patch index d0c0d8e47..745776b8c 100644 --- a/purpur-server/minecraft-patches/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 b99b09118707ab94406fc0472420449e7e88f2ac..042861f45c7ee423614122387ac652d60dfc2852 100644 +index 1d6f77ade1456fd4ffc425e0c75ea98e86be7a42..72d24ebbbcd7d6db849190ca646ecdaf1053d0bb 100644 --- a/net/minecraft/server/players/PlayerList.java +++ b/net/minecraft/server/players/PlayerList.java -@@ -931,6 +931,27 @@ public abstract class PlayerList { +@@ -929,6 +929,27 @@ public abstract class PlayerList { player.getBukkitEntity().recalculatePermissions(); // CraftBukkit this.server.getCommands().sendCommands(player); } // Paper - Add sendOpLevel API @@ -37,7 +37,7 @@ index b99b09118707ab94406fc0472420449e7e88f2ac..042861f45c7ee423614122387ac652d6 // 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 3c1641a906f301dbfb0f30a597479fb727f4639c..76d84cb829a7f9b88689986d04497fbfd9d65b87 100644 +index 2c0b158c6e666941a073295e9b112f64ad5b6d90..21e0bd539188352c9db551c96af37a6a87a089d2 100644 --- a/net/minecraft/world/entity/player/Player.java +++ b/net/minecraft/world/entity/player/Player.java @@ -182,6 +182,7 @@ public abstract class Player extends Avatar implements ContainerUser { @@ -49,7 +49,7 @@ index 3c1641a906f301dbfb0f30a597479fb727f4639c..76d84cb829a7f9b88689986d04497fbf // CraftBukkit start public boolean fauxSleeping; diff --git a/net/minecraft/world/inventory/ChestMenu.java b/net/minecraft/world/inventory/ChestMenu.java -index 0fffa384f928ab84451331380968fb4650eafe26..0399092c9f7a43ac100c11505176ade6d95a39da 100644 +index 1fb3a34ea872dec73658fac59743e46ef8db5151..4c3b8d7ba777916ffc5ad0feccffbc7634bffe8d 100644 --- a/net/minecraft/world/inventory/ChestMenu.java +++ b/net/minecraft/world/inventory/ChestMenu.java @@ -66,10 +66,30 @@ public class ChestMenu extends AbstractContainerMenu { @@ -108,7 +108,7 @@ index 8cf089874a75735be690ab72a01264bac5ff793d..611f78f93b70674b53c025d9151dacb5 this.activeChest = enderChestBlockEntity; } diff --git a/net/minecraft/world/level/block/EnderChestBlock.java b/net/minecraft/world/level/block/EnderChestBlock.java -index 1518e035c4b6fdfc68b77fc42b043dd27f680767..a7b20c0781b0372a36e67c7b5a3eae90476f83e0 100644 +index 4fe246e457bd9befcdcb6e2301bd55e949322d6f..5189125f4a66590b7842d19cd940de659d24c6a4 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 diff --git a/purpur-server/minecraft-patches/features/0007-Villagers-follow-emerald-blocks.patch b/purpur-server/minecraft-patches/features/0007-Villagers-follow-emerald-blocks.patch index 045cd3ad5..0f1a4ce47 100644 --- a/purpur-server/minecraft-patches/features/0007-Villagers-follow-emerald-blocks.patch +++ b/purpur-server/minecraft-patches/features/0007-Villagers-follow-emerald-blocks.patch @@ -5,7 +5,7 @@ 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 c23d6edeaca324bcfd60c6e96ec4038f6ef595a9..9251693b3caa2d77b093064b6599db1078cd06d0 100644 +index d9aefe5777fa545d67621bc1ce2ef6a11ca9b27c..48be4530b25d273032ff1a055406c7cca928d678 100644 --- a/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java +++ b/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java @@ -167,7 +167,7 @@ public class DefaultAttributes { @@ -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 cf4703cb909aa5906fdd689082208ea4dd77fc0f..8eceba09d1a410aaf359c71a2a0e5d44471e67b6 100644 +index 6bb17ecbd93f6ced5436cf75f3695f44eedd4bd9..e60387c4ef2aa0fc35a559d75b1a7c1539dda57b 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 cf4703cb909aa5906fdd689082208ea4dd77fc0f..8eceba09d1a410aaf359c71a2a0e5d44 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 b5dc02822ce6a82eb69fd7341c317fb1f7ee0a7f..4b076b9eeeb3614df3a024f16fecb287bed72ec7 100644 +index 05d748a7de077694b1035d3e73f35f1f98419902..b7b290e9870f8f51af7e44f71b1e04ce9c552626 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,10 +72,10 @@ index b5dc02822ce6a82eb69fd7341c317fb1f7ee0a7f..4b076b9eeeb3614df3a024f16fecb287 public boolean assignProfessionWhenSpawned() { diff --git a/net/minecraft/world/entity/npc/WanderingTrader.java b/net/minecraft/world/entity/npc/WanderingTrader.java -index 0eeda11b37cd17122183d5e22d02d9cd61f2b4e5..e9a98a7009555128cb5118093add3fb331a7d485 100644 +index b06ea793e0008c68d85d8112415fbc011131984d..e5a6cc63d29be742be039053c39f983ed9c6a1e1 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 +@@ -88,9 +88,16 @@ public class WanderingTrader extends AbstractVillager implements Consumable.Over @Override public void initAttributes() { this.getAttribute(net.minecraft.world.entity.ai.attributes.Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.wanderingTraderMaxHealth); @@ -92,7 +92,7 @@ index 0eeda11b37cd17122183d5e22d02d9cd61f2b4e5..e9a98a7009555128cb5118093add3fb3 @Override protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); -@@ -125,6 +132,7 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill +@@ -125,6 +132,7 @@ public class WanderingTrader extends AbstractVillager implements Consumable.Over this.goalSelector.addGoal(1, new PanicGoal(this, 0.5)); this.goalSelector.addGoal(1, new LookAtTradingPlayerGoal(this)); this.goalSelector.addGoal(2, new WanderingTrader.WanderToPositionGoal(this, 2.0, 0.35)); diff --git a/purpur-server/minecraft-patches/features/0008-Implement-elytra-settings.patch b/purpur-server/minecraft-patches/features/0008-Implement-elytra-settings.patch index 9acf652d8..642c0b6be 100644 --- a/purpur-server/minecraft-patches/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 41d0bab1a046fdfd1a266883e2b522cf63b87157..f48c543287a99d4281de4085e7a65f128bd2dc4a 100644 +index be657ca79feed6a39fa5ca173d875e6678faf27e..01b7bdf66a2b52d204257e497cfccc11a20ce4b0 100644 --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java -@@ -3744,7 +3744,18 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin +@@ -3750,7 +3750,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,7 +51,7 @@ 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 2d9fbd3173df397e7debd9c08d4c8c5e760246e6..358d69bdca0aa46d1952d3ef9bf9b65dc39a3338 100644 +index b367b94ba6977b94c7f46c9f02ed6c3fc5284185..e4bcd4a3cbbc8942d52e5f3c7a4fb1572fdef91c 100644 --- a/net/minecraft/world/item/ItemStack.java +++ b/net/minecraft/world/item/ItemStack.java @@ -697,6 +697,14 @@ public final class ItemStack implements DataComponentHolder { diff --git a/purpur-server/minecraft-patches/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 index 35507aff1..e4ecf9647 100644 --- a/purpur-server/minecraft-patches/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 @@ -5,7 +5,7 @@ Subject: [PATCH] Phantoms attracted to crystals and crystals shoot phantoms diff --git a/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java b/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java -index 5bff703ae4f95091620dec5347246d7c0cbe5d5e..220a828717e1933a44c5282b56713ba0053d2440 100644 +index 9503ec9d44a6c0811639b7d0cf504d32fefff58d..ab878a0f789fa0dc3713eedac1bbcebcfc1a7fa5 100644 --- a/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java +++ b/net/minecraft/world/entity/boss/enderdragon/EndCrystal.java @@ -27,6 +27,12 @@ public class EndCrystal extends Entity { @@ -19,8 +19,8 @@ index 5bff703ae4f95091620dec5347246d7c0cbe5d5e..220a828717e1933a44c5282b56713ba0 + private int idleCooldown = 0; + // Purpur end - Phantoms attracted to crystals and crystals shoot phantoms - public EndCrystal(EntityType entityType, Level level) { - super(entityType, level); + public EndCrystal(EntityType type, Level level) { + super(type, level); @@ -95,6 +101,49 @@ public class EndCrystal extends Entity { // Paper end - Fix invulnerable end crystals if (this.level().purpurConfig.endCrystalCramming > 0 && this.level().getEntitiesOfClass(EndCrystal.class, getBoundingBox()).size() > this.level().purpurConfig.endCrystalCramming) this.hurt(this.damageSources().cramming(), 6.0F); // Purpur - End Crystal Cramming @@ -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 958f0c86986a155f56d3995a87882f83df66043f..3e0df2669e567094ad52ff8c59037e3fb5c96f30 100644 +index ba9368c601f0b720cc665b96f392be1370fb9556..81f7223d49eac01899c877ba7e47515c17269151 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 { diff --git a/purpur-server/minecraft-patches/features/0011-Phantoms-burn-in-light.patch b/purpur-server/minecraft-patches/features/0011-Phantoms-burn-in-light.patch index b07d16549..2c452657f 100644 --- a/purpur-server/minecraft-patches/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 3e0df2669e567094ad52ff8c59037e3fb5c96f30..bf2330068d43f52a9a21d73180ef5a83697444ea 100644 +index 81f7223d49eac01899c877ba7e47515c17269151..42089b34a1a1927247953b54cdc3300e1b600a90 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 { @@ -14,8 +14,8 @@ index 3e0df2669e567094ad52ff8c59037e3fb5c96f30..bf2330068d43f52a9a21d73180ef5a83 // Paper end + private static final net.minecraft.world.item.crafting.Ingredient TORCH = net.minecraft.world.item.crafting.Ingredient.of(net.minecraft.world.item.Items.TORCH, net.minecraft.world.item.Items.SOUL_TORCH); // Purpur - Phantoms burn in light - public Phantom(EntityType entityType, Level level) { - super(entityType, level); + public Phantom(EntityType type, Level level) { + super(type, level); @@ -238,7 +239,11 @@ public class Phantom extends Mob implements Enemy { @Override diff --git a/purpur-server/minecraft-patches/features/0012-Make-entity-breeding-times-configurable.patch b/purpur-server/minecraft-patches/features/0012-Make-entity-breeding-times-configurable.patch index 4cd6b2066..b6dbc33e2 100644 --- a/purpur-server/minecraft-patches/features/0012-Make-entity-breeding-times-configurable.patch +++ b/purpur-server/minecraft-patches/features/0012-Make-entity-breeding-times-configurable.patch @@ -22,7 +22,7 @@ index f673a7e78729edf13f094d547a0b995ea9ae7146..0fa52865c293e74c9e5f3d1fd93a0e24 // 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 834a7d6b0a332c1c3f32ab8797fe1d3cb45159c1..8405cbe7754b916e3d3a39318685fb91af5edce2 100644 +index 3c77ce7861085f076bbdfb430af095420e7a12f5..643d40772770f0ebed0170bfed29e739f521d46d 100644 --- a/net/minecraft/world/entity/animal/Animal.java +++ b/net/minecraft/world/entity/animal/Animal.java @@ -41,6 +41,7 @@ public abstract class Animal extends AgeableMob { @@ -31,8 +31,8 @@ index 834a7d6b0a332c1c3f32ab8797fe1d3cb45159c1..8405cbe7754b916e3d3a39318685fb91 public @Nullable ItemStack breedItem; // CraftBukkit - Add breedItem variable + public abstract int getPurpurBreedTime(); // Purpur - Make entity breeding times configurable - protected Animal(EntityType entityType, Level level) { - super(entityType, level); + protected Animal(EntityType type, Level level) { + super(type, level); @@ -267,8 +268,10 @@ public abstract class Animal extends AgeableMob { player.awardStat(Stats.ANIMALS_BRED); CriteriaTriggers.BRED_ANIMALS.trigger(player, this, animal, baby); @@ -47,10 +47,10 @@ index 834a7d6b0a332c1c3f32ab8797fe1d3cb45159c1..8405cbe7754b916e3d3a39318685fb91 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 0238bbbd85100dd107a11c00fd19d2250766b11e..a5e0edd6da8675643f3a4d63199e8cd865a6d836 100644 +index 30f25727b60d3d846956b878dc53542669de6203..025ac8b3088ad1e45d10094c7534375a917b3a73 100644 --- a/net/minecraft/world/entity/animal/Bee.java +++ b/net/minecraft/world/entity/animal/Bee.java -@@ -483,6 +483,13 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -481,6 +481,13 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { } // Purpur end - Configurable entity base attributes @@ -65,7 +65,7 @@ index 0238bbbd85100dd107a11c00fd19d2250766b11e..a5e0edd6da8675643f3a4d63199e8cd8 public int getRemainingPersistentAngerTime() { return this.entityData.get(DATA_REMAINING_ANGER_TIME); diff --git a/net/minecraft/world/entity/animal/Cat.java b/net/minecraft/world/entity/animal/Cat.java -index d429beb03da8b499f19c3ed721b110d916849698..5e6a66c1a3532d39dae82eaeb2428605536e2155 100644 +index 10365c8a63bfbefa49d243d0e51a79b7a2052238..2411e1a9e98f8db63e326b4bfbe759084e938431 100644 --- a/net/minecraft/world/entity/animal/Cat.java +++ b/net/minecraft/world/entity/animal/Cat.java @@ -125,6 +125,13 @@ public class Cat extends TamableAnimal { @@ -83,7 +83,7 @@ index d429beb03da8b499f19c3ed721b110d916849698..5e6a66c1a3532d39dae82eaeb2428605 protected void registerGoals() { this.temptGoal = new Cat.CatTemptGoal(this, 0.6, stack -> stack.is(ItemTags.CAT_FOOD), true); diff --git a/net/minecraft/world/entity/animal/Chicken.java b/net/minecraft/world/entity/animal/Chicken.java -index 6f6d99c075b3e402742e3c7401dea366f2d871b6..e4702a5a89147bd83fa73a969fab7077ddd623f6 100644 +index b5d3d5fc666d04bc18ca5157a3aacc639c2537c8..b65abf395b3d3c10dc20604b670e44c183f5131b 100644 --- a/net/minecraft/world/entity/animal/Chicken.java +++ b/net/minecraft/world/entity/animal/Chicken.java @@ -102,6 +102,13 @@ public class Chicken extends Animal { @@ -101,7 +101,7 @@ index 6f6d99c075b3e402742e3c7401dea366f2d871b6..e4702a5a89147bd83fa73a969fab7077 protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/net/minecraft/world/entity/animal/Cow.java b/net/minecraft/world/entity/animal/Cow.java -index 9dbc5f7b3896acb199577afa85451da38f2d2a01..753ed26cc6bfc8276d4405091b78b0e50182b84a 100644 +index e7100834ce813e9814139c6d6e957fce15861ab7..298cbc74a7d26de1cd0fb356ce9e802c0cc3a1ca 100644 --- a/net/minecraft/world/entity/animal/Cow.java +++ b/net/minecraft/world/entity/animal/Cow.java @@ -54,6 +54,13 @@ public class Cow extends AbstractCow { @@ -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 50c8030a9ac6d1fc465cdf6ffbc88f85933405b0..8066bdf7c3b8ea37c9649a6f236fd8531b33f951 100644 +index ce46a3ff3a24666736211221fa9c5e69b8146be8..0fd04235d75a961465e44defbab9d116bcdd3f4a 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,7 +150,7 @@ index 50c8030a9ac6d1fc465cdf6ffbc88f85933405b0..8066bdf7c3b8ea37c9649a6f236fd853 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 597250765504186f7e01b3b88c7428258938afb3..95dd6d0aa45330fb09e430d920ab92411ea8926e 100644 +index c5a126718c93d01376b73eb1337cfa63d9acd99e..5f7ab269e406e6d6912a58b3b48123d6c4da282c 100644 --- a/net/minecraft/world/entity/animal/HappyGhast.java +++ b/net/minecraft/world/entity/animal/HappyGhast.java @@ -145,6 +145,13 @@ public class HappyGhast extends Animal { @@ -168,7 +168,7 @@ index 597250765504186f7e01b3b88c7428258938afb3..95dd6d0aa45330fb09e430d920ab9241 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 eede8c36b351eb7bd555a0e6e362647e11dbeb2d..5bca000fc9b8ba992e5285ef34b96b5fbcaae0da 100644 +index 743faa77525d68181ee38415399bc6078f9360f8..6cbf93991ee375d2051128721a409a3a7a9064e8 100644 --- a/net/minecraft/world/entity/animal/MushroomCow.java +++ b/net/minecraft/world/entity/animal/MushroomCow.java @@ -87,6 +87,13 @@ public class MushroomCow extends AbstractCow implements Shearable { @@ -186,7 +186,7 @@ index eede8c36b351eb7bd555a0e6e362647e11dbeb2d..5bca000fc9b8ba992e5285ef34b96b5f 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 9f3ab67cf17c4f66da8bec0c9b818025ef303040..bc81c68fda213f3d64be5f480ae87264c581a52a 100644 +index 751aa4fea84db8e385001633df0c0d18ef6fde3a..c6f8e978df2ff28c0da243e44d26e33dacf221e5 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 9f3ab67cf17c4f66da8bec0c9b818025ef303040..bc81c68fda213f3d64be5f480ae87264 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 b31e2ef8a498fe33107a5c4ee2b4e056a44027cc..83110d64ab7fd9b30a9fee1c5240c3de11c2514a 100644 +index c74f2a95a473464be3497ea39e366564d3f74e66..09e64eda71bfc1d55ec9fa37c6241c1d4cdc5842 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 b31e2ef8a498fe33107a5c4ee2b4e056a44027cc..83110d64ab7fd9b30a9fee1c5240c3de 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 24f7e486dec1714d917342887afaf775ef6300d5..35afe8dc9fb3ad6e9103f4fb60742ad70d933f85 100644 +index debda7f54b05831d16014fb271b1a996822fecb5..eeccbee1f8e11862813abf0ed0d0f03bf28b376f 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 24f7e486dec1714d917342887afaf775ef6300d5..35afe8dc9fb3ad6e9103f4fb60742ad7 @Override public SpawnGroupData finalizeSpawn( diff --git a/net/minecraft/world/entity/animal/Pig.java b/net/minecraft/world/entity/animal/Pig.java -index 39f6a3f3ea5f7e51580b7cbf9bbfd4a04368a380..50d20169b0a8ccc78e8573d26663e800f70a9f66 100644 +index 8a8c796377254d47e68d0d8b1c9bdac7d4b99360..5300c3ae50633aa513c25384c1a2084701921cb9 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 39f6a3f3ea5f7e51580b7cbf9bbfd4a04368a380..50d20169b0a8ccc78e8573d26663e800 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 75eb4a6dd43346622d6c528aa6e66d251167d3ac..63fae10cea012f6f00a52d375e39b64538f88208 100644 +index 2cf417f3bcf338a3edc4a2f71d8a700aca2e52dc..884137b428a1fe69bb61b9ae05b652357daecc27 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 { @@ -274,9 +274,9 @@ index 75eb4a6dd43346622d6c528aa6e66d251167d3ac..63fae10cea012f6f00a52d375e39b645 + @Nullable @Override - public AgeableMob getBreedOffspring(ServerLevel level, AgeableMob otherParent) { + public AgeableMob getBreedOffspring(ServerLevel level, AgeableMob partner) { diff --git a/net/minecraft/world/entity/animal/Rabbit.java b/net/minecraft/world/entity/animal/Rabbit.java -index b644b85f2509f584770dee11677e5bfeef4a46a2..ec2620726f84a59312b03044b181ca436122d9bb 100644 +index 1b29d2a49350ff557e09b1297b3825f2cc28bad3..318729fdaa9c6dc7ee480618804a19fb29b6e76d 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 b644b85f2509f584770dee11677e5bfeef4a46a2..ec2620726f84a59312b03044b181ca43 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 b9dd8a359711a1993b515fda4b81e61d28a4da49..966f21d90996a9c162e3f60ff53edb53507645b3 100644 +index 88bd025f491ec17884007cc5c1b57c64461d2901..38b6678cbbce86e62efe08ece6634b1a5895dd84 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 b9dd8a359711a1993b515fda4b81e61d28a4da49..966f21d90996a9c162e3f60ff53edb53 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 c77284ba3dc3c2eb13ba97bbdcdea7c4a864c195..33e678dca2a5f50eadcf6719822190cedf5265dd 100644 +index 2343f4fcca96f4887c6fb00e8fdc43b959aba69e..cee8103cf9406600930f34b4801748db0e2fb8ed 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,7 +343,7 @@ index c77284ba3dc3c2eb13ba97bbdcdea7c4a864c195..33e678dca2a5f50eadcf6719822190ce 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 9bec0aa8cf669d68f9cdb87621024ac4dfe217c9..a56ff850de466a592855a9bf2bc395c2e4b97c17 100644 +index 330caf84f0a8e0edff764d4bd34b85b54b9f057f..277e955eabed07bdc50531dfe182de8cb05e56c2 100644 --- a/net/minecraft/world/entity/animal/axolotl/Axolotl.java +++ b/net/minecraft/world/entity/animal/axolotl/Axolotl.java @@ -146,6 +146,13 @@ public class Axolotl extends Animal implements Bucketable { @@ -361,7 +361,7 @@ index 9bec0aa8cf669d68f9cdb87621024ac4dfe217c9..a56ff850de466a592855a9bf2bc395c2 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 3a794ff3d68c86b4e5ef93ff8f5cedfa07d22f99..bb750bcc35a3dd75c112dea445595ab27cc15fd5 100644 +index 78df0eb0a0b6765406bd0dc041a02b099d86dd60..cc71c575a8fb62c41198c6e1f27bd0e88380f5bc 100644 --- a/net/minecraft/world/entity/animal/camel/Camel.java +++ b/net/minecraft/world/entity/animal/camel/Camel.java @@ -97,6 +97,13 @@ public class Camel extends AbstractHorse { @@ -379,7 +379,7 @@ index 3a794ff3d68c86b4e5ef93ff8f5cedfa07d22f99..bb750bcc35a3dd75c112dea445595ab2 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 054fb0c62a827e708e2195c4d4991e24df2eca78..295a907236c2f0ad4038a86edef45374da906d98 100644 +index 4979ae6dc8f6c2361b443b8bbe90738e4a199200..78863bd593acaa46f33a49fadbd0cdb025074c11 100644 --- a/net/minecraft/world/entity/animal/frog/Frog.java +++ b/net/minecraft/world/entity/animal/frog/Frog.java @@ -164,6 +164,13 @@ public class Frog extends Animal { @@ -397,7 +397,7 @@ index 054fb0c62a827e708e2195c4d4991e24df2eca78..295a907236c2f0ad4038a86edef45374 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 330fe06b0b1d4c25c69acde22c2e9c00e0756a52..52d35093b9fc84e27b4c4e62883a7e581e8c0f5b 100644 +index 3f264db00d9312cc1e8bfba8da0c829774ba00aa..673b90e3af9a9fdc03a4cbda9702e49def025d29 100644 --- a/net/minecraft/world/entity/animal/goat/Goat.java +++ b/net/minecraft/world/entity/animal/goat/Goat.java @@ -131,6 +131,13 @@ public class Goat extends Animal { @@ -415,7 +415,7 @@ index 330fe06b0b1d4c25c69acde22c2e9c00e0756a52..52d35093b9fc84e27b4c4e62883a7e58 protected Brain.Provider brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); diff --git a/net/minecraft/world/entity/animal/horse/Donkey.java b/net/minecraft/world/entity/animal/horse/Donkey.java -index 3aa12702cd1f4ef160180bc6ba64a6566cbddc9d..9e1100d672bfb712854d23203d0b730b8cc78a3d 100644 +index 65470905a29f1ae0ea7ac1d29ee108adcbc499c7..293d6059bc5e50b66b23e8e2e1d759e61cb26999 100644 --- a/net/minecraft/world/entity/animal/horse/Donkey.java +++ b/net/minecraft/world/entity/animal/horse/Donkey.java @@ -40,6 +40,13 @@ public class Donkey extends AbstractChestedHorse { @@ -433,7 +433,7 @@ index 3aa12702cd1f4ef160180bc6ba64a6566cbddc9d..9e1100d672bfb712854d23203d0b730b public SoundEvent getAmbientSound() { return SoundEvents.DONKEY_AMBIENT; diff --git a/net/minecraft/world/entity/animal/horse/Horse.java b/net/minecraft/world/entity/animal/horse/Horse.java -index 53c0eac62018a0d88e30b8c13de94216ff829cd8..3678c767818abb9e4180c2ade378ca09761ad784 100644 +index 78b68881357f1bc1111478bb7c9e4f1ba55e055e..513856b5047842edd501eb6c23c13e3bf10d7249 100644 --- a/net/minecraft/world/entity/animal/horse/Horse.java +++ b/net/minecraft/world/entity/animal/horse/Horse.java @@ -71,6 +71,13 @@ public class Horse extends AbstractHorse { @@ -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 fb2b45b85d9f8ae5546573a31cf0d5a39dad149c..d6ae23d48dacb3f445465daf755e6fe7ad8c9c70 100644 +index d1f1f30486ea5c4785e5c4c0104fa31a2e27521a..df3fd52ed0bc794919ff20c4eb8c561ec2b5ad8f 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 { @@ -469,7 +469,7 @@ index fb2b45b85d9f8ae5546573a31cf0d5a39dad149c..d6ae23d48dacb3f445465daf755e6fe7 return false; } diff --git a/net/minecraft/world/entity/animal/horse/Mule.java b/net/minecraft/world/entity/animal/horse/Mule.java -index 0107bb5fc029c5390d73e9a4cd08c13838a2ded5..fe2570ceb96d39ff6598a67a4ac4b4707eb28656 100644 +index dc3723c5a0bca9e1023629657f668c7e5f6df4a4..5e6a9467d15e551ab2c8b3e42abd096a85e36037 100644 --- a/net/minecraft/world/entity/animal/horse/Mule.java +++ b/net/minecraft/world/entity/animal/horse/Mule.java @@ -39,6 +39,13 @@ public class Mule extends AbstractChestedHorse { @@ -487,7 +487,7 @@ index 0107bb5fc029c5390d73e9a4cd08c13838a2ded5..fe2570ceb96d39ff6598a67a4ac4b470 public SoundEvent getAmbientSound() { return SoundEvents.MULE_AMBIENT; diff --git a/net/minecraft/world/entity/animal/horse/SkeletonHorse.java b/net/minecraft/world/entity/animal/horse/SkeletonHorse.java -index a7bcc0ff10e429ebfe91173c392e9a0c07903289..042b73f0807438327ebf4a2fd3a9d54d52159511 100644 +index 557e06b9002217b7ba5a07399bd71491cb0236c6..024591d5ffd396391864554e7b532910d465c30a 100644 --- a/net/minecraft/world/entity/animal/horse/SkeletonHorse.java +++ b/net/minecraft/world/entity/animal/horse/SkeletonHorse.java @@ -66,6 +66,13 @@ public class SkeletonHorse extends AbstractHorse { @@ -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 db07a476fdaa1cfde2b44be77cdc5a17a17bd898..09769f47dc2849ee9eeb60b3c4edb7536a5cf87d 100644 +index a566336bb088286a29eeeca1703addc98922f6e6..8b63470177d60d79fe0b774a301d36701026a803 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 { @@ -523,7 +523,7 @@ index db07a476fdaa1cfde2b44be77cdc5a17a17bd898..09769f47dc2849ee9eeb60b3c4edb753 public boolean isTraderLlama() { return true; diff --git a/net/minecraft/world/entity/animal/horse/ZombieHorse.java b/net/minecraft/world/entity/animal/horse/ZombieHorse.java -index 3d597bd355b6c918ea1bf4b7d537ad4f76e218d2..69b9ae449e58f13bf0950fdfe3f89742af89956e 100644 +index 6684f5dfb7dec101bad15b7ede3d9fd377aacd45..0d6d470b8680aed64d2b208b2ed9b037c96563d9 100644 --- a/net/minecraft/world/entity/animal/horse/ZombieHorse.java +++ b/net/minecraft/world/entity/animal/horse/ZombieHorse.java @@ -62,6 +62,13 @@ public class ZombieHorse extends AbstractHorse { @@ -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 a36ce4568ae173edaeab04b580c88c5389487bd5..eca2b9e1b92ba626eb6203dbc5678976f43bdc29 100644 +index 0e371655c8a500bad69626475222f9e726013c02..e5d495c12e2cd5a215f5b908ad65f6366eb47808 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,7 +559,7 @@ index a36ce4568ae173edaeab04b580c88c5389487bd5..eca2b9e1b92ba626eb6203dbc5678976 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 04c80778f9ce75e337c6c97e8fe6c47f275a558c..93dc1c39d1d61a0f3c2b84e239dc083ee0abec65 100644 +index cd6a5173e2c6d49c7df9baae464b391ea1fdd620..d7e61ce6e2b77817f4eca913f2c319096e7f244f 100644 --- a/net/minecraft/world/entity/animal/sniffer/Sniffer.java +++ b/net/minecraft/world/entity/animal/sniffer/Sniffer.java @@ -113,6 +113,13 @@ public class Sniffer extends Animal { @@ -577,7 +577,7 @@ index 04c80778f9ce75e337c6c97e8fe6c47f275a558c..93dc1c39d1d61a0f3c2b84e239dc083e 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 70753293961f73f917973c35e1d3fb81b836f1f8..c8966878b861ba8ecf1be1ca830742d2b4e76864 100644 +index 56db9816b52aed4facc80c95ec664cd98c6daca2..fc9b895b69385b04d56d071cbd498e61db6e6cb4 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 70753293961f73f917973c35e1d3fb81b836f1f8..c8966878b861ba8ecf1be1ca830742d2 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 255d4d0cd8f48bf09232cd0fecb87f430e68084a..eb33b66fa3bc705552b6abf2d8e941e84cdda60e 100644 +index 5d41885ceb7145a516a398da0d7553faeb386710..6760c826cf72cc704f54ea0e3d6aaffde4ac22c4 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,7 +613,7 @@ index 255d4d0cd8f48bf09232cd0fecb87f430e68084a..eb33b66fa3bc705552b6abf2d8e941e8 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 c74c6409ce61f9d4d728b6ce6693bb7ba665e474..b19717af413f739abf632050409db25e2e85e0c6 100644 +index 1062df067d6b98ffba27864450d8a867446aae79..2de148c874feeff23da144037562ded852e48a04 100644 --- a/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/net/minecraft/world/entity/monster/hoglin/Hoglin.java @@ -120,6 +120,13 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { diff --git a/purpur-server/minecraft-patches/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 index 00bccf179..9b475295e 100644 --- a/purpur-server/minecraft-patches/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 @@ -8,7 +8,7 @@ farm Nether Wart. Reimplemented based on a feature of the carpet-extra mod. diff --git a/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java b/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java -index de89e45ecd4ac4c6db8b74bbe3dd6b4a7cf21671..f15e4cfd8c0ac5e08779dbe6b9aa40bfe9ce4d8f 100644 +index ed286786bb8b4eee335ad3a601ce3713df36f5a9..7776ad5d87ee8aadc9fcb36fbce62fe868754942 100644 --- a/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java +++ b/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java @@ -32,6 +32,7 @@ public class HarvestFarmland extends Behavior { @@ -32,9 +32,9 @@ index de89e45ecd4ac4c6db8b74bbe3dd6b4a7cf21671..f15e4cfd8c0ac5e08779dbe6b9aa40bf this.validFarmlandAroundVillager.clear(); @@ -83,6 +85,7 @@ public class HarvestFarmland extends Behavior { - BlockState blockState = serverLevel.getBlockState(pos); + BlockState blockState = level.getBlockState(pos); Block block = blockState.getBlock(); - Block block1 = serverLevel.getBlockState(pos.below()).getBlock(); + Block block1 = level.getBlockState(pos.below()).getBlock(); + if (this.clericWartFarmer) return block == net.minecraft.world.level.block.Blocks.NETHER_WART && blockState.getValue(net.minecraft.world.level.block.NetherWartBlock.AGE) == 3 || blockState.isAir() && block1 == net.minecraft.world.level.block.Blocks.SOUL_SAND; // Purpur - Option for Villager Clerics to farm Nether Wart return block instanceof CropBlock && ((CropBlock)block).isMaxAge(blockState) || blockState.isAir() && block1 instanceof FarmBlock; } @@ -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 7db0456e6cd88c30ff8849644e3ea8b599ca325d..9f8fd64a3812e6d6bfefb21dd793aae9ad2bcd94 100644 +index b7b290e9870f8f51af7e44f71b1e04ce9c552626..33af111898df4e10367e6ef0d01eaf376bfc5819 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/features/0015-Add-mobGriefing-override-to-everything-affected.patch b/purpur-server/minecraft-patches/features/0015-Add-mobGriefing-override-to-everything-affected.patch index 97c86da4f..d022ca456 100644 --- a/purpur-server/minecraft-patches/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 f48c543287a99d4281de4085e7a65f128bd2dc4a..7c65124b4c10166d57ac3c0e8435be06bf05efef 100644 +index 01b7bdf66a2b52d204257e497cfccc11a20ce4b0..ab3ddd1c52b561c56ee240ee68f5e5aca706b744 100644 --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java -@@ -1943,7 +1943,7 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin +@@ -1949,7 +1949,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,7 +18,7 @@ index f48c543287a99d4281de4085e7a65f128bd2dc4a..7c65124b4c10166d57ac3c0e8435be06 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 2bef2cd10447f41d5fc4c37eb574ce32fc2386ab..8f58641132231f450d0fb0c1fa61559c6cef8dcf 100644 +index 996e9e098ed510cdadc82e4f133b6aec509040d3..e4aaa451129d0ed11d855b53aae0c0279b899479 100644 --- a/net/minecraft/world/entity/Mob.java +++ b/net/minecraft/world/entity/Mob.java @@ -554,7 +554,7 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab @@ -31,7 +31,7 @@ index 2bef2cd10447f41d5fc4c37eb574ce32fc2386ab..8f58641132231f450d0fb0c1fa61559c for (ItemEntity itemEntity : this.level() diff --git a/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java b/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java -index f15e4cfd8c0ac5e08779dbe6b9aa40bfe9ce4d8f..ec03365dc786596521d280ea4d6948c651ee8deb 100644 +index 7776ad5d87ee8aadc9fcb36fbce62fe868754942..da974278e763df239f834c1d3653919d37787d42 100644 --- a/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java +++ b/net/minecraft/world/entity/ai/behavior/HarvestFarmland.java @@ -49,7 +49,7 @@ public class HarvestFarmland extends Behavior { @@ -92,7 +92,7 @@ index 962c0b327a46cf0c58904466d3bcb608f474c329..72cc1d2cc76dd564b7fd5c797e8e784b } 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 8066bdf7c3b8ea37c9649a6f236fd8531b33f951..cb0cb2b1701a9b17557cb6d97090db3743200e4c 100644 +index 0fd04235d75a961465e44defbab9d116bcdd3f4a..51e28983b67edcd744f38aba38c704dfd2ffff6e 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 8066bdf7c3b8ea37c9649a6f236fd8531b33f951..cb0cb2b1701a9b17557cb6d97090db37 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 ec2620726f84a59312b03044b181ca436122d9bb..a2ba60d8858bb595319cce8e97c91638701176f9 100644 +index 318729fdaa9c6dc7ee480618804a19fb29b6e76d..5e194a54a3a8d350c08edcba312e95b46db6c300 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 ec2620726f84a59312b03044b181ca436122d9bb..a2ba60d8858bb595319cce8e97c91638 } diff --git a/net/minecraft/world/entity/animal/SnowGolem.java b/net/minecraft/world/entity/animal/SnowGolem.java -index 3204145fc93bbeaad203f845edb984895a6ff494..405710ff3bb9344041449711c0b8311b00e75728 100644 +index d6f2a04cf04090e3cb68f5111d47bff9f1243568..20f73d895bc55581c62283825a6d5296150ac707 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 3204145fc93bbeaad203f845edb984895a6ff494..405710ff3bb9344041449711c0b8311b } diff --git a/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -index 00ea1b2b62e422f8420dcd8a7fdf186474695ac7..51115b67b9236b8ef3f89907fea60b5d448edde7 100644 +index 81f73a5b400a346ee86285bf4ca6c846c0c4b87e..1f9db9786995744c5ca5d97d8cf46fdd69aa8aa5 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 00ea1b2b62e422f8420dcd8a7fdf186474695ac7..51115b67b9236b8ef3f89907fea60b5d //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 3023c8e5b16b54a14abeb832f0a82456fa999707..b65af78ece66a60e36cc7aad1ad3cd10445223fa 100644 +index 8e5e364d297a3eb55b67ce7081ec7548cbf7f3a6..f6af57f402847e0f9af6a00b387d8a4b3e4d2afe 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,7 +157,7 @@ index 3023c8e5b16b54a14abeb832f0a82456fa999707..b65af78ece66a60e36cc7aad1ad3cd10 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 73e3b50ffa544f29267413c88bcf21af71d1ff4f..9a1271771008089a5b08792bfd4cdc18a4458469 100644 +index b8fd334b9dd704d5d4502a6e051db09cced24f59..e6304680a8f2e9fb5fdcfd166471fd3355fb643c 100644 --- a/net/minecraft/world/entity/monster/EnderMan.java +++ b/net/minecraft/world/entity/monster/EnderMan.java @@ -513,7 +513,7 @@ public class EnderMan extends Monster implements NeutralMob { @@ -179,7 +179,7 @@ index 73e3b50ffa544f29267413c88bcf21af71d1ff4f..9a1271771008089a5b08792bfd4cdc18 } diff --git a/net/minecraft/world/entity/monster/Evoker.java b/net/minecraft/world/entity/monster/Evoker.java -index e8aac93cffa3a9d4105c03c1aeb4d571ee0eba6c..4d1d746e39d136243dc620c89b29daf80dc62230 100644 +index a5243b7969fec5d60b94368caf5e962c348c4135..24d104036902b8aaf79325e33d3063ccea29e13e 100644 --- a/net/minecraft/world/entity/monster/Evoker.java +++ b/net/minecraft/world/entity/monster/Evoker.java @@ -306,7 +306,7 @@ public class Evoker extends SpellcasterIllager { @@ -192,7 +192,7 @@ index e8aac93cffa3a9d4105c03c1aeb4d571ee0eba6c..4d1d746e39d136243dc620c89b29daf8 } else { List nearbyEntities = serverLevel.getNearbyEntities( diff --git a/net/minecraft/world/entity/monster/Ravager.java b/net/minecraft/world/entity/monster/Ravager.java -index 9e7b07f353fb8f0650b8805014c371368eaabcd5..23b6d3c9746e1ee641d8b19ec50805cb271a9cc9 100644 +index f43125ca7d52170a1ca2a54a5b2758794f25fbd1..a1fb74b51f51c045eed0fe09eceafa6d533babe2 100644 --- a/net/minecraft/world/entity/monster/Ravager.java +++ b/net/minecraft/world/entity/monster/Ravager.java @@ -179,7 +179,7 @@ public class Ravager extends Raider { @@ -205,7 +205,7 @@ index 9e7b07f353fb8f0650b8805014c371368eaabcd5..23b6d3c9746e1ee641d8b19ec50805cb AABB aabb = this.getBoundingBox().inflate(0.2); diff --git a/net/minecraft/world/entity/monster/Silverfish.java b/net/minecraft/world/entity/monster/Silverfish.java -index c200d57841304ba0d7a76fdd9a440fe9f2b25136..6f4aaeb645d9638764c3516d2f1501661ac56170 100644 +index 23722456ce82dcc6b571b96e5c9b0d70005f9c2e..97662c39001b4433601f46ef83f28c0ee916c02a 100644 --- a/net/minecraft/world/entity/monster/Silverfish.java +++ b/net/minecraft/world/entity/monster/Silverfish.java @@ -170,7 +170,7 @@ public class Silverfish extends Monster { @@ -227,7 +227,7 @@ 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 c44fd14350b2504fc38ae22a61029d5c44b60918..1d9dc37055a2a9f41945b39812e1be15a8eb57e5 100644 +index 19211c0d78113da7827a071fd510b4f36e63a9f2..4e1a7b6caf8c0a3721a3a799261d7b63301c3b29 100644 --- a/net/minecraft/world/entity/monster/piglin/Piglin.java +++ b/net/minecraft/world/entity/monster/piglin/Piglin.java @@ -438,7 +438,7 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento @@ -240,13 +240,13 @@ index c44fd14350b2504fc38ae22a61029d5c44b60918..1d9dc37055a2a9f41945b39812e1be15 protected boolean canReplaceCurrentItem(ItemStack candidate) { diff --git a/net/minecraft/world/entity/projectile/LargeFireball.java b/net/minecraft/world/entity/projectile/LargeFireball.java -index dd0ec97ea4561d2dccf735580faf0d65d6ac4b0d..779879f8d678a5e45e2752e6e033cc350acac89b 100644 +index b782957c118313fcaa80d127291e5b6d614da98a..f92ea082aca3aa75839e8ce0001b0f272d3235ce 100644 --- a/net/minecraft/world/entity/projectile/LargeFireball.java +++ b/net/minecraft/world/entity/projectile/LargeFireball.java @@ -20,20 +20,20 @@ public class LargeFireball extends Fireball { - public LargeFireball(EntityType entityType, Level level) { - super(entityType, level); + public LargeFireball(EntityType type, Level level) { + super(type, level); - this.isIncendiary = (level instanceof ServerLevel serverLevel) && serverLevel.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING); // CraftBukkit + this.isIncendiary = (level instanceof ServerLevel serverLevel) && serverLevel.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING, serverLevel.purpurConfig.fireballsMobGriefingOverride); // CraftBukkit // Purpur - Add mobGriefing override to everything affected } @@ -268,7 +268,7 @@ 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 d538b1df2b07abd1c4257726891238696bf7a718..c0e83bbdcf3662bed498e0fe5a78d2b25c22a94e 100644 +index cdb73cab0a64f51d65a7420fdac44455c6c77a48..74f5478c9eb8d0a01a7634980b6003198b8ea50c 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 { @@ -281,7 +281,7 @@ index d538b1df2b07abd1c4257726891238696bf7a718..c0e83bbdcf3662bed498e0fe5a78d2b2 public boolean mayBreak(ServerLevel level) { diff --git a/net/minecraft/world/entity/projectile/SmallFireball.java b/net/minecraft/world/entity/projectile/SmallFireball.java -index d0d54c67542544fd412d191bd4d4a83a1a629078..5f3b0435e4d1fbf27937887d0ef80c93fff87016 100644 +index 78b1fb603fb33700229dc3ce93cd6e316eb95140..9471f4198f9e20de765552bf6a22ca448e669c94 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 { @@ -294,7 +294,7 @@ index d0d54c67542544fd412d191bd4d4a83a1a629078..5f3b0435e4d1fbf27937887d0ef80c93 // CraftBukkit end } diff --git a/net/minecraft/world/entity/raid/Raider.java b/net/minecraft/world/entity/raid/Raider.java -index a495789b2d21fa9a24d5dca4ecfa196ddce49466..2254493c889b8967011c09dc448ba375d82e2035 100644 +index 8d8315edfb69b062ed5e3d957f4043ec411dd5d7..4d72b60489e9c684905ca251ead011aaa8ce1cdd 100644 --- a/net/minecraft/world/entity/raid/Raider.java +++ b/net/minecraft/world/entity/raid/Raider.java @@ -401,7 +401,7 @@ public abstract class Raider extends PatrollingMonster { @@ -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 9a7a98c0928e1b6816b5a879fd2f9d43a9fb6304..225caea92f90d2468f08b7a6603ed7fc0bfd65b6 100644 +index c6e9dac65474cc9c8a1200756b5be45c22fe1637..22c558f6ed1d2593b7bd1505730cd25c804c5eda 100644 --- a/net/minecraft/world/level/GameRules.java +++ b/net/minecraft/world/level/GameRules.java -@@ -367,6 +367,13 @@ public class GameRules { +@@ -365,6 +365,13 @@ public class GameRules { this.getRule(key).setFrom(rule, level); // CraftBukkit - per-world } @@ -325,12 +325,12 @@ index 9a7a98c0928e1b6816b5a879fd2f9d43a9fb6304..225caea92f90d2468f08b7a6603ed7fc return this.getRule(key).get(); } diff --git a/net/minecraft/world/level/block/CropBlock.java b/net/minecraft/world/level/block/CropBlock.java -index 5f6b423dd1dabf9bd3dec551f4bd86a44f6c120d..6f0544b2c77c6555f2d376cbe6190f54646c91d8 100644 +index 4d7e01fea4bac6cf71cbca3deae632df0f738497..c5cbaa9ece0d304503998a4bca5e3527e0ea0601 100644 --- a/net/minecraft/world/level/block/CropBlock.java +++ b/net/minecraft/world/level/block/CropBlock.java @@ -169,7 +169,7 @@ public class CropBlock extends VegetationBlock implements BonemealableBlock { @Override - protected void entityInside(BlockState state, Level level, BlockPos pos, Entity entity, InsideBlockEffectApplier effectApplier, boolean flag) { + protected void entityInside(BlockState state, Level level, BlockPos pos, Entity entity, InsideBlockEffectApplier effectApplier, boolean pastEdges) { if (!new io.papermc.paper.event.entity.EntityInsideBlockEvent(entity.getBukkitEntity(), org.bukkit.craftbukkit.block.CraftBlock.at(level, pos)).callEvent()) { return; } // Paper - Add EntityInsideBlockEvent - if (level instanceof ServerLevel serverLevel && entity instanceof Ravager && serverLevel.purpurConfig.ravagerGriefableBlocks.contains(serverLevel.getBlockState(pos).getBlock()) && org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.AIR.defaultBlockState(), !serverLevel.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING))) { // CraftBukkit // Purpur - Configurable ravager griefable blocks list + if (level instanceof ServerLevel serverLevel && entity instanceof Ravager && serverLevel.purpurConfig.ravagerGriefableBlocks.contains(serverLevel.getBlockState(pos).getBlock()) && org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.AIR.defaultBlockState(), !serverLevel.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING, serverLevel.purpurConfig.ravagerMobGriefingOverride))) { // CraftBukkit // Purpur - Configurable ravager griefable blocks list // Purpur - Add mobGriefing override to everything affected @@ -351,7 +351,7 @@ 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 c6dc40b72c7bd6e0e65262fc4eb5573caa635bd3..7e1129eaf50ea43872b2b7eb4278e7ee3c858594 100644 +index cfc0fda316d14c178a663dbbd4e19f1469519f0f..99abf0f4e73cbfe916901dfc9081fec6e437c758 100644 --- a/net/minecraft/world/level/block/PowderSnowBlock.java +++ b/net/minecraft/world/level/block/PowderSnowBlock.java @@ -96,7 +96,7 @@ public class PowderSnowBlock extends Block implements BucketPickup { @@ -364,7 +364,7 @@ index c6dc40b72c7bd6e0e65262fc4eb5573caa635bd3..7e1129eaf50ea43872b2b7eb4278e7ee } // CraftBukkit end diff --git a/net/minecraft/world/level/block/TurtleEggBlock.java b/net/minecraft/world/level/block/TurtleEggBlock.java -index 00554972f51d1758f0d81364bdc13901fcdb1052..91e43cbb8bf5faf2677b170f6884fb2b4e74ca86 100644 +index 7be238baf5373296fa5192704969307146e2dfa4..0d8d9b560eadce88f0b334270767ee1d53c7cf79 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/features/0016-Add-EntityTeleportHinderedEvent.patch b/purpur-server/minecraft-patches/features/0016-Add-EntityTeleportHinderedEvent.patch index 55e0b1823..de35d1b4b 100644 --- a/purpur-server/minecraft-patches/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 b52fef8f15fe4789be161ae6c22f0f27ac6a27fc..294ac7dbdd4c3ab80af3de2dc15ce8f5e18851dc 100644 +index 6161cd82dade8b4119ab0b8ba84451d592ce5858..5830b9a57786c6b0ab50a47aa68e960a580a31f6 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,11 +35,11 @@ index b52fef8f15fe4789be161ae6c22f0f27ac6a27fc..294ac7dbdd4c3ab80af3de2dc15ce8f5 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 c001b94efb4b5077c97ace11920a4c1b81e03848..b42203825222fb252f8bdd9d98c5e23bb37505db 100644 +index 20c34b4601979e9a36e500da2143e446eeef098e..8b44e7e98085dc75ba631922ae4d14d6cfc5565c 100644 --- a/net/minecraft/world/level/block/EndPortalBlock.java +++ b/net/minecraft/world/level/block/EndPortalBlock.java @@ -61,6 +61,13 @@ public class EndPortalBlock extends BaseEntityBlock implements Portal { - protected void entityInside(BlockState state, Level level, BlockPos pos, Entity entity, InsideBlockEffectApplier effectApplier, boolean flag) { + protected void entityInside(BlockState state, Level level, BlockPos pos, Entity entity, InsideBlockEffectApplier effectApplier, boolean pastEdges) { 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)) { + // Purpur start - Add EntityTeleportHinderedEvent @@ -53,11 +53,11 @@ index c001b94efb4b5077c97ace11920a4c1b81e03848..b42203825222fb252f8bdd9d98c5e23b 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 807cc0d489b752c71f4e4ba03622af2815859282..774dc449eae37c13fb4c3160409300f947282cd5 100644 +index da01114a89d62c80550272987d2df26daa661d65..e72d3f2776369a39b7429dc6a8aee9d05b5349ff 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 { - protected void entityInside(BlockState state, Level level, BlockPos pos, Entity entity, InsideBlockEffectApplier effectApplier, boolean flag) { + protected void entityInside(BlockState state, Level level, BlockPos pos, Entity entity, InsideBlockEffectApplier effectApplier, boolean pastEdges) { 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)) { + // Purpur start - Add EntityTeleportHinderedEvent diff --git a/purpur-server/minecraft-patches/features/0017-Toggle-for-water-sensitive-mob-damage.patch b/purpur-server/minecraft-patches/features/0017-Toggle-for-water-sensitive-mob-damage.patch index 85d965b7b..90606d404 100644 --- a/purpur-server/minecraft-patches/features/0017-Toggle-for-water-sensitive-mob-damage.patch +++ b/purpur-server/minecraft-patches/features/0017-Toggle-for-water-sensitive-mob-damage.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Toggle for water sensitive mob damage diff --git a/net/minecraft/world/entity/GlowSquid.java b/net/minecraft/world/entity/GlowSquid.java -index 1896f91e10a5e17332836d5354813a18a4dfe6dc..1c446cec71aa163374ab9832c961a6b4c3fc534b 100644 +index cbb7e0591dc761d0566ac99dc6e5697b3ba4eeda..a10a1e26d0260968c6becd1e9d68436071da8411 100644 --- a/net/minecraft/world/entity/GlowSquid.java +++ b/net/minecraft/world/entity/GlowSquid.java @@ -54,6 +54,13 @@ public class GlowSquid extends Squid { @@ -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 c5d2997629db6da1bb883e9b778d9da34e57430f..7b6caaeb34c297f22206d0da0293a56594654657 100644 +index 947619d07ef381ab79774b3f6cdc4c2454b632cb..9dd4d9a10df973fbf4e4fc63a8a7b7041f21ede4 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,7 +41,7 @@ index c5d2997629db6da1bb883e9b778d9da34e57430f..7b6caaeb34c297f22206d0da0293a565 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 68fecbd75d0243706f052f6f4cd654cf411a0782..980d3255d6dc7913fdb5437dafb702c2eff5d56f 100644 +index 025ac8b3088ad1e45d10094c7534375a917b3a73..234f02e0b75c6b9a8f52c440c680b539ee783f91 100644 --- a/net/minecraft/world/entity/animal/Bee.java +++ b/net/minecraft/world/entity/animal/Bee.java @@ -184,7 +184,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { @@ -53,7 +53,7 @@ index 68fecbd75d0243706f052f6f4cd654cf411a0782..980d3255d6dc7913fdb5437dafb702c2 this.setPathfindingMalus(PathType.WATER_BORDER, 16.0F); this.setPathfindingMalus(PathType.COCOA, -1.0F); this.setPathfindingMalus(PathType.FENCE, -1.0F); -@@ -490,6 +490,13 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -488,6 +488,13 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { } // Purpur end - Make entity breeding times configurable @@ -68,7 +68,7 @@ index 68fecbd75d0243706f052f6f4cd654cf411a0782..980d3255d6dc7913fdb5437dafb702c2 public int getRemainingPersistentAngerTime() { return this.entityData.get(DATA_REMAINING_ANGER_TIME); diff --git a/net/minecraft/world/entity/animal/Cat.java b/net/minecraft/world/entity/animal/Cat.java -index 5e6a66c1a3532d39dae82eaeb2428605536e2155..41f303078b2e1f0460215fbfe27ff06fd5783c35 100644 +index 2411e1a9e98f8db63e326b4bfbe759084e938431..842c03df5a4ee67192f2850b89be45648024fd17 100644 --- a/net/minecraft/world/entity/animal/Cat.java +++ b/net/minecraft/world/entity/animal/Cat.java @@ -132,6 +132,13 @@ public class Cat extends TamableAnimal { @@ -86,7 +86,7 @@ index 5e6a66c1a3532d39dae82eaeb2428605536e2155..41f303078b2e1f0460215fbfe27ff06f protected void registerGoals() { this.temptGoal = new Cat.CatTemptGoal(this, 0.6, stack -> stack.is(ItemTags.CAT_FOOD), true); diff --git a/net/minecraft/world/entity/animal/Chicken.java b/net/minecraft/world/entity/animal/Chicken.java -index e4702a5a89147bd83fa73a969fab7077ddd623f6..58f7690a05febac5c57ba7ea2aff93b7d94a4291 100644 +index b65abf395b3d3c10dc20604b670e44c183f5131b..dde117db5952784e385f242d388b062d0fa1d49d 100644 --- a/net/minecraft/world/entity/animal/Chicken.java +++ b/net/minecraft/world/entity/animal/Chicken.java @@ -109,6 +109,13 @@ public class Chicken extends Animal { @@ -104,7 +104,7 @@ index e4702a5a89147bd83fa73a969fab7077ddd623f6..58f7690a05febac5c57ba7ea2aff93b7 protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/net/minecraft/world/entity/animal/Cod.java b/net/minecraft/world/entity/animal/Cod.java -index ed52fbbf93e7a238d0f45981f8629ba8613bf3d4..6128ed595cb97cc11c1a0e1e1673b3af8e428fb8 100644 +index 9b9a237a20d8e39ac11a39a4d5782084f97ea674..f8fbba4ae8b0ecf9aec33f60b908a88fa2933713 100644 --- a/net/minecraft/world/entity/animal/Cod.java +++ b/net/minecraft/world/entity/animal/Cod.java @@ -32,6 +32,13 @@ public class Cod extends AbstractSchoolingFish { @@ -122,7 +122,7 @@ index ed52fbbf93e7a238d0f45981f8629ba8613bf3d4..6128ed595cb97cc11c1a0e1e1673b3af public ItemStack getBucketItemStack() { return new ItemStack(Items.COD_BUCKET); diff --git a/net/minecraft/world/entity/animal/Cow.java b/net/minecraft/world/entity/animal/Cow.java -index 753ed26cc6bfc8276d4405091b78b0e50182b84a..d584ffe3cc8dfb5fd4ce352b1da18af6a143d575 100644 +index 298cbc74a7d26de1cd0fb356ce9e802c0cc3a1ca..a71b6c8a0c48d9c7121e7d29cff6d388cb2df09f 100644 --- a/net/minecraft/world/entity/animal/Cow.java +++ b/net/minecraft/world/entity/animal/Cow.java @@ -61,6 +61,13 @@ public class Cow extends AbstractCow { @@ -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 03313754022b5ec682efef68e5d56a59ee2e8b92..e6df7495a8c4e36ec7d0921a7dcccc16a9cb7916 100644 +index 71147da158f389207c032bc8e952ddb677e6d0ee..aaeb8a787158171920993719afcacc58ffd0f5a2 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 03313754022b5ec682efef68e5d56a59ee2e8b92..e6df7495a8c4e36ec7d0921a7dcccc16 @Override public SpawnGroupData finalizeSpawn( diff --git a/net/minecraft/world/entity/animal/Fox.java b/net/minecraft/world/entity/animal/Fox.java -index cb0cb2b1701a9b17557cb6d97090db3743200e4c..15e5ebdf0446ccf4e380fe910a288d3bbf048549 100644 +index 51e28983b67edcd744f38aba38c704dfd2ffff6e..22058c67eff5204202b71d2df9db3e59c2e5f916 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,7 +176,7 @@ index cb0cb2b1701a9b17557cb6d97090db3743200e4c..15e5ebdf0446ccf4e380fe910a288d3b 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 95dd6d0aa45330fb09e430d920ab92411ea8926e..f15dcbd16f910f191f1e4ce8bda857476cc94fee 100644 +index 5f7ab269e406e6d6912a58b3b48123d6c4da282c..dbc01564e23e7785e85b16f100925d36496ef51c 100644 --- a/net/minecraft/world/entity/animal/HappyGhast.java +++ b/net/minecraft/world/entity/animal/HappyGhast.java @@ -152,6 +152,13 @@ public class HappyGhast extends Animal { @@ -194,7 +194,7 @@ index 95dd6d0aa45330fb09e430d920ab92411ea8926e..f15dcbd16f910f191f1e4ce8bda85747 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 1148a5dcd5eef8e961df5388dbdd49769508007d..e58fb3cbb71693d8556bace35d6e57ea9e455d80 100644 +index 89799cb1545b29ff10c25096e5ec7ba12af74eb1..4a7c6dedb23ac1057eda80de4a2cd54fe3e6f76f 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,7 +212,7 @@ index 1148a5dcd5eef8e961df5388dbdd49769508007d..e58fb3cbb71693d8556bace35d6e57ea 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 5bca000fc9b8ba992e5285ef34b96b5fbcaae0da..270563334fcb1b2124e5721ce0d443ac8d712080 100644 +index 6cbf93991ee375d2051128721a409a3a7a9064e8..ddd763cc38e8c624db7ef207f244961bda0b5ae1 100644 --- a/net/minecraft/world/entity/animal/MushroomCow.java +++ b/net/minecraft/world/entity/animal/MushroomCow.java @@ -94,6 +94,13 @@ public class MushroomCow extends AbstractCow implements Shearable { @@ -230,7 +230,7 @@ index 5bca000fc9b8ba992e5285ef34b96b5fbcaae0da..270563334fcb1b2124e5721ce0d443ac 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 bc81c68fda213f3d64be5f480ae87264c581a52a..4810b6cd45d27da3c601d1eb4d3377572f1a61dc 100644 +index c6f8e978df2ff28c0da243e44d26e33dacf221e5..125d324832623bb52ac1afd197862876a0f5f928 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 bc81c68fda213f3d64be5f480ae87264c581a52a..4810b6cd45d27da3c601d1eb4d337757 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 83110d64ab7fd9b30a9fee1c5240c3de11c2514a..5fde42f9e86adc5872a10eb864a38f5bae171c10 100644 +index 09e64eda71bfc1d55ec9fa37c6241c1d4cdc5842..36ec50791543c4eabf7158aa8d6ba272b14f6cd6 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 83110d64ab7fd9b30a9fee1c5240c3de11c2514a..5fde42f9e86adc5872a10eb864a38f5b 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 35afe8dc9fb3ad6e9103f4fb60742ad70d933f85..861739ca43e0212ab9ad4037693b729bd69fbb0b 100644 +index eeccbee1f8e11862813abf0ed0d0f03bf28b376f..f5c98b277984249ec077c5742854a3cb444eb68c 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 35afe8dc9fb3ad6e9103f4fb60742ad70d933f85..861739ca43e0212ab9ad4037693b729b @Override public SpawnGroupData finalizeSpawn( diff --git a/net/minecraft/world/entity/animal/Pig.java b/net/minecraft/world/entity/animal/Pig.java -index 50d20169b0a8ccc78e8573d26663e800f70a9f66..5ea66e3eb813c961d4275657a69300bc3953b1bc 100644 +index 5300c3ae50633aa513c25384c1a2084701921cb9..719317c3cd5fc0202ef5deb150e0304191b121b8 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 50d20169b0a8ccc78e8573d26663e800f70a9f66..5ea66e3eb813c961d4275657a69300bc 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 63fae10cea012f6f00a52d375e39b64538f88208..e69acaf3e99e298535ba9a39a6389f4ca5d304aa 100644 +index 884137b428a1fe69bb61b9ae05b652357daecc27..eda9e5965a6ff244288215188de8e05ebcb61f14 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 { @@ -318,9 +318,9 @@ index 63fae10cea012f6f00a52d375e39b64538f88208..e69acaf3e99e298535ba9a39a6389f4c + @Nullable @Override - public AgeableMob getBreedOffspring(ServerLevel level, AgeableMob otherParent) { + public AgeableMob getBreedOffspring(ServerLevel level, AgeableMob partner) { diff --git a/net/minecraft/world/entity/animal/Pufferfish.java b/net/minecraft/world/entity/animal/Pufferfish.java -index 9c9e0fb36d7a2e4f644314008c8dc6bdbeb42bcf..d91560b021775dd29f1f099f4a9df8af0e7b8d4c 100644 +index 8b895308ee7639396983c73dc4c2572c957df027..49f1d08239e92aa4e8f18ee8054c13e54089ed82 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 9c9e0fb36d7a2e4f644314008c8dc6bdbeb42bcf..d91560b021775dd29f1f099f4a9df8af 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 a2ba60d8858bb595319cce8e97c91638701176f9..f773595560a59724c13a0f9e9cbe0a4d5b442313 100644 +index 5e194a54a3a8d350c08edcba312e95b46db6c300..fb773ac6f450f6632fd7af3d0c44af57075fdcce 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 { @@ -356,7 +356,7 @@ index a2ba60d8858bb595319cce8e97c91638701176f9..f773595560a59724c13a0f9e9cbe0a4d public void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/net/minecraft/world/entity/animal/Salmon.java b/net/minecraft/world/entity/animal/Salmon.java -index e426b3280b519a3cd727b200794324361c62b67e..3c517936aee31fcf246787c033688870a2349e55 100644 +index e5790db0472fa97471b828cf6d817697389c3a8c..b9641e307d669ba20428843575a6bb39065df034 100644 --- a/net/minecraft/world/entity/animal/Salmon.java +++ b/net/minecraft/world/entity/animal/Salmon.java @@ -58,6 +58,13 @@ public class Salmon extends AbstractSchoolingFish { @@ -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 405710ff3bb9344041449711c0b8311b00e75728..448946f352e394b4c5e84914c583c26c0bd390c3 100644 +index 20f73d895bc55581c62283825a6d5296150ac707..6cb6ff86e3fd7b9dd2929669dc1b0d339af9a95a 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 405710ff3bb9344041449711c0b8311b00e75728..448946f352e394b4c5e84914c583c26c @Override diff --git a/net/minecraft/world/entity/animal/Squid.java b/net/minecraft/world/entity/animal/Squid.java -index 559a483e39f9da5c6c1131b5af61b594b5d3e7e8..c752eec4ed181eb4fa5c8b382764f2f544719f23 100644 +index ad2be25e45b350c7d971cd750245dbfa2b27ccb5..38a2d3f1344a8a826ceca645279779beb3a4dde7 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 { @@ -405,7 +405,7 @@ index 559a483e39f9da5c6c1131b5af61b594b5d3e7e8..c752eec4ed181eb4fa5c8b382764f2f5 protected void registerGoals() { this.goalSelector.addGoal(0, new Squid.SquidRandomMovementGoal(this)); diff --git a/net/minecraft/world/entity/animal/TropicalFish.java b/net/minecraft/world/entity/animal/TropicalFish.java -index c102db5ffdfc7dcb0ec7e59fb031fe6afcdd8237..4510798913f94474b16ab6cbfa32dc0fdf0a226a 100644 +index 95368fd534c77e7d89ed6219f1f3948c428c256c..22a75b6b1e6f130027e39051f04267fb436ae6de 100644 --- a/net/minecraft/world/entity/animal/TropicalFish.java +++ b/net/minecraft/world/entity/animal/TropicalFish.java @@ -96,6 +96,13 @@ public class TropicalFish extends AbstractSchoolingFish { @@ -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 966f21d90996a9c162e3f60ff53edb53507645b3..6a52e549257582d09af824f4067c91130f35cf8a 100644 +index 38b6678cbbce86e62efe08ece6634b1a5895dd84..e9b19fe300f9d5caebe8603d0347eae834408809 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,7 +441,7 @@ index 966f21d90996a9c162e3f60ff53edb53507645b3..6a52e549257582d09af824f4067c9113 this.homePos = homePos; } diff --git a/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/net/minecraft/world/entity/animal/axolotl/Axolotl.java -index a6145a24bffc1f56406cb9e57b15631ba82afe6a..4932668448a7346758983b647f4e508061297ba2 100644 +index 277e955eabed07bdc50531dfe182de8cb05e56c2..c32a5f348e41d6ff733331b85baf32da839083fe 100644 --- a/net/minecraft/world/entity/animal/axolotl/Axolotl.java +++ b/net/minecraft/world/entity/animal/axolotl/Axolotl.java @@ -153,6 +153,13 @@ public class Axolotl extends Animal implements Bucketable { @@ -459,7 +459,7 @@ index a6145a24bffc1f56406cb9e57b15631ba82afe6a..4932668448a7346758983b647f4e5080 public float getWalkTargetValue(BlockPos pos, LevelReader level) { return 0.0F; diff --git a/net/minecraft/world/entity/animal/coppergolem/CopperGolem.java b/net/minecraft/world/entity/animal/coppergolem/CopperGolem.java -index 0597de19bcb1dc21cc7d07bb9b69dfb6967bba6f..19d02efdd82f370d0edc62abdbb7be3a062f8706 100644 +index e50f9c7113063ce0c8696e06a3ca6ab768adc4af..5095ddcf1a2a4d4f5cff6dbaeec39a4e6e0d1d92 100644 --- a/net/minecraft/world/entity/animal/coppergolem/CopperGolem.java +++ b/net/minecraft/world/entity/animal/coppergolem/CopperGolem.java @@ -141,6 +141,13 @@ public class CopperGolem extends AbstractGolem implements ContainerUser, Shearab @@ -477,7 +477,7 @@ index 0597de19bcb1dc21cc7d07bb9b69dfb6967bba6f..19d02efdd82f370d0edc62abdbb7be3a return Mob.createMobAttributes().add(Attributes.MOVEMENT_SPEED, 0.2F).add(Attributes.STEP_HEIGHT, 1.0).add(Attributes.MAX_HEALTH, 12.0); } diff --git a/net/minecraft/world/entity/animal/goat/Goat.java b/net/minecraft/world/entity/animal/goat/Goat.java -index 0ec325f198d877057a9b497e667d1f3be40e683e..4e93554170d9c91a7d704b161b91ca28b19be73b 100644 +index 673b90e3af9a9fdc03a4cbda9702e49def025d29..b048ca99370c65446855e3867eeb29ddb6ad51f6 100644 --- a/net/minecraft/world/entity/animal/goat/Goat.java +++ b/net/minecraft/world/entity/animal/goat/Goat.java @@ -138,6 +138,13 @@ public class Goat extends Animal { @@ -495,7 +495,7 @@ index 0ec325f198d877057a9b497e667d1f3be40e683e..4e93554170d9c91a7d704b161b91ca28 protected Brain.Provider brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); diff --git a/net/minecraft/world/entity/animal/horse/Donkey.java b/net/minecraft/world/entity/animal/horse/Donkey.java -index 9e1100d672bfb712854d23203d0b730b8cc78a3d..9b17b1acf63fddb5f5b6cdf95283ae8f619a8120 100644 +index 293d6059bc5e50b66b23e8e2e1d759e61cb26999..322ff19885fc2a982bc3c4bd7b5588cd2974e425 100644 --- a/net/minecraft/world/entity/animal/horse/Donkey.java +++ b/net/minecraft/world/entity/animal/horse/Donkey.java @@ -47,6 +47,13 @@ public class Donkey extends AbstractChestedHorse { @@ -513,7 +513,7 @@ index 9e1100d672bfb712854d23203d0b730b8cc78a3d..9b17b1acf63fddb5f5b6cdf95283ae8f public SoundEvent getAmbientSound() { return SoundEvents.DONKEY_AMBIENT; diff --git a/net/minecraft/world/entity/animal/horse/Horse.java b/net/minecraft/world/entity/animal/horse/Horse.java -index 3678c767818abb9e4180c2ade378ca09761ad784..2928159447a87ea8cc945e73e2e81ad1dbe13680 100644 +index 513856b5047842edd501eb6c23c13e3bf10d7249..4d8c6eac4d276dac7859bed1a1c83d45f1858b64 100644 --- a/net/minecraft/world/entity/animal/horse/Horse.java +++ b/net/minecraft/world/entity/animal/horse/Horse.java @@ -78,6 +78,13 @@ public class Horse extends AbstractHorse { @@ -531,7 +531,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 d6ae23d48dacb3f445465daf755e6fe7ad8c9c70..9a16450170734e4c47bbc91d764b889765e473f0 100644 +index df3fd52ed0bc794919ff20c4eb8c561ec2b5ad8f..32ceec4a08010a2febaac47b6288673cbc71ac90 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 { @@ -549,7 +549,7 @@ index d6ae23d48dacb3f445465daf755e6fe7ad8c9c70..9a16450170734e4c47bbc91d764b8897 return false; } diff --git a/net/minecraft/world/entity/animal/horse/Mule.java b/net/minecraft/world/entity/animal/horse/Mule.java -index fe2570ceb96d39ff6598a67a4ac4b4707eb28656..14a17d4b33b276f28e45ce06de06793a73a50916 100644 +index 5e6a9467d15e551ab2c8b3e42abd096a85e36037..b1c320210e3116249043ef91feb621e1af5afabf 100644 --- a/net/minecraft/world/entity/animal/horse/Mule.java +++ b/net/minecraft/world/entity/animal/horse/Mule.java @@ -46,6 +46,13 @@ public class Mule extends AbstractChestedHorse { @@ -567,7 +567,7 @@ index fe2570ceb96d39ff6598a67a4ac4b4707eb28656..14a17d4b33b276f28e45ce06de06793a public SoundEvent getAmbientSound() { return SoundEvents.MULE_AMBIENT; diff --git a/net/minecraft/world/entity/animal/horse/SkeletonHorse.java b/net/minecraft/world/entity/animal/horse/SkeletonHorse.java -index 042b73f0807438327ebf4a2fd3a9d54d52159511..cff709a28830a842a499f7dfe3b8bc0b703c9af4 100644 +index 024591d5ffd396391864554e7b532910d465c30a..9cd58494f090dd0d16787b3d739cbaa8bcd92370 100644 --- a/net/minecraft/world/entity/animal/horse/SkeletonHorse.java +++ b/net/minecraft/world/entity/animal/horse/SkeletonHorse.java @@ -73,6 +73,13 @@ public class SkeletonHorse extends AbstractHorse { @@ -585,7 +585,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 09769f47dc2849ee9eeb60b3c4edb7536a5cf87d..3222b0439a4c3cabab8f5648b71df2c215e335ff 100644 +index 8b63470177d60d79fe0b774a301d36701026a803..204dfdeb5c3bb650dbd6c990c6a2e1e4d14b8c77 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 09769f47dc2849ee9eeb60b3c4edb7536a5cf87d..3222b0439a4c3cabab8f5648b71df2c2 public boolean isTraderLlama() { return true; diff --git a/net/minecraft/world/entity/animal/horse/ZombieHorse.java b/net/minecraft/world/entity/animal/horse/ZombieHorse.java -index 69b9ae449e58f13bf0950fdfe3f89742af89956e..e78fac0a5e37d53afbc200f015adab60b3bfc9da 100644 +index 0d6d470b8680aed64d2b208b2ed9b037c96563d9..fd8a512910c886af1ae4e66edbf7f8d6fe0bc4f3 100644 --- a/net/minecraft/world/entity/animal/horse/ZombieHorse.java +++ b/net/minecraft/world/entity/animal/horse/ZombieHorse.java @@ -69,6 +69,13 @@ public class ZombieHorse extends AbstractHorse { @@ -621,7 +621,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 eca2b9e1b92ba626eb6203dbc5678976f43bdc29..fe5bbf00e02efa8ff71014d2b334ad1f6cd4052f 100644 +index e5d495c12e2cd5a215f5b908ad65f6366eb47808..e204b349615be98ea9a143ca2bb73a3a0a32baa4 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 { @@ -639,7 +639,7 @@ index eca2b9e1b92ba626eb6203dbc5678976f43bdc29..fe5bbf00e02efa8ff71014d2b334ad1f 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 c8966878b861ba8ecf1be1ca830742d2b4e76864..9c76157edc1ee7a15498e8759b5c2f71be3b0b51 100644 +index fc9b895b69385b04d56d071cbd498e61db6e6cb4..4b1c93cf2e17ae85d3b34a49c15e2926d8d1c81a 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 { @@ -657,7 +657,7 @@ index c8966878b861ba8ecf1be1ca830742d2b4e76864..9c76157edc1ee7a15498e8759b5c2f71 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 51115b67b9236b8ef3f89907fea60b5d448edde7..52a84b1d354201fc6496dd937be091c1750eba33 100644 +index 1f9db9786995744c5ca5d97d8cf46fdd69aa8aa5..a3fe470ee11475c90462c50d54bfb27658a9536f 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 { @@ -675,7 +675,7 @@ index 51115b67b9236b8ef3f89907fea60b5d448edde7..52a84b1d354201fc6496dd937be091c1 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 b65af78ece66a60e36cc7aad1ad3cd10445223fa..d38a004d1192e967dfc82d858257fbfc4586df37 100644 +index f6af57f402847e0f9af6a00b387d8a4b3e4d2afe..37919a338630efeb87accb7e0a7d86fddc03e858 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 { @@ -693,12 +693,12 @@ index b65af78ece66a60e36cc7aad1ad3cd10445223fa..d38a004d1192e967dfc82d858257fbfc 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 14e2fe8d0d21464c946af9949ba3a77e31f22d23..e43d6fabcaffca05ee93878ee28ac9df0bb5789f 100644 +index 8621ab150da50116260cd76821c02109cd32e351..e940633d5140bb19623cef9cc9d6acdae77ed392 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 { - public Blaze(EntityType entityType, Level level) { - super(entityType, level); + public Blaze(EntityType type, Level level) { + super(type, level); this.moveControl = new org.purpurmc.purpur.controller.FlyingWithSpacebarMoveControllerWASD(this, 0.3F); // Purpur - Ridables - this.setPathfindingMalus(PathType.WATER, -1.0F); + if (isSensitiveToWater()) this.setPathfindingMalus(PathType.WATER, -1.0F); // Purpur - Toggle for water sensitive mob damage @@ -715,7 +715,7 @@ index 14e2fe8d0d21464c946af9949ba3a77e31f22d23..e43d6fabcaffca05ee93878ee28ac9df @Override diff --git a/net/minecraft/world/entity/monster/CaveSpider.java b/net/minecraft/world/entity/monster/CaveSpider.java -index 64eecd8d1acd318743800c1daa77cd97097a0f7c..420fe0d01d0b173a6a541f77e1aaca3f3bb565e7 100644 +index ca8e92447eb5f58e2bd855ac6fa1d580425218f9..239d855df83083e0eb875c430a165427f3a143de 100644 --- a/net/minecraft/world/entity/monster/CaveSpider.java +++ b/net/minecraft/world/entity/monster/CaveSpider.java @@ -51,6 +51,13 @@ public class CaveSpider extends Spider { @@ -730,10 +730,10 @@ index 64eecd8d1acd318743800c1daa77cd97097a0f7c..420fe0d01d0b173a6a541f77e1aaca3f + // Purpur end - Toggle for water sensitive mob damage + @Override - public boolean doHurtTarget(ServerLevel level, Entity source) { - if (super.doHurtTarget(level, source)) { + public boolean doHurtTarget(ServerLevel level, Entity target) { + if (super.doHurtTarget(level, target)) { diff --git a/net/minecraft/world/entity/monster/Creeper.java b/net/minecraft/world/entity/monster/Creeper.java -index b7d33384ca236a902a7aa2004b16d545e5a58c9e..099ece4b4d0996fc26a5d42f81a42fcc63f22506 100644 +index 6259636b9856be5b03af83ee515e70cbf1eb51d8..719c752270c3f1b2496184df0eb728e3c934a3d5 100644 --- a/net/minecraft/world/entity/monster/Creeper.java +++ b/net/minecraft/world/entity/monster/Creeper.java @@ -266,6 +266,13 @@ public class Creeper extends Monster { @@ -751,7 +751,7 @@ index b7d33384ca236a902a7aa2004b16d545e5a58c9e..099ece4b4d0996fc26a5d42f81a42fcc 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 ee13dd20af2730f3051f77fb0e73ce5c8253bd4a..33c45250277b2383f4ef1d740898ba02f22bcb26 100644 +index af8c33c6d8ecbc7c3d8a33fc740adc26a43c08b3..6beaed7f1ce39bef190cfa7e1addc28b929c0747 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,7 +769,7 @@ index ee13dd20af2730f3051f77fb0e73ce5c8253bd4a..33c45250277b2383f4ef1d740898ba02 protected void addBehaviourGoals() { this.goalSelector.addGoal(1, new Drowned.DrownedGoToWaterGoal(this, 1.0)); diff --git a/net/minecraft/world/entity/monster/ElderGuardian.java b/net/minecraft/world/entity/monster/ElderGuardian.java -index 7ebc7224d3db38cc5137112d5a74999f6e23b8d5..287b6fea404d4f1f121219f92918dc2d1c0ac780 100644 +index 57fb334f670d35aa181b13e12fa2c5f36da1dda6..1ea323a17440abbe36c9528e80e169816267005b 100644 --- a/net/minecraft/world/entity/monster/ElderGuardian.java +++ b/net/minecraft/world/entity/monster/ElderGuardian.java @@ -51,6 +51,13 @@ public class ElderGuardian extends Guardian { @@ -787,13 +787,13 @@ 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 9a1271771008089a5b08792bfd4cdc18a4458469..122c68cd0ad5a308600d7bbde15d246131d28546 100644 +index e6304680a8f2e9fb5fdcfd166471fd3355fb643c..09cce24dcc6a57f02c020c7e035e7940ddf9a962 100644 --- a/net/minecraft/world/entity/monster/EnderMan.java +++ b/net/minecraft/world/entity/monster/EnderMan.java @@ -87,7 +87,7 @@ public class EnderMan extends Monster implements NeutralMob { - public EnderMan(EntityType entityType, Level level) { - super(entityType, level); + public EnderMan(EntityType type, Level level) { + super(type, level); - this.setPathfindingMalus(PathType.WATER, -1.0F); + if (isSensitiveToWater()) this.setPathfindingMalus(PathType.WATER, -1.0F); // Purpur - Toggle for water sensitive mob damage } @@ -809,7 +809,7 @@ index 9a1271771008089a5b08792bfd4cdc18a4458469..122c68cd0ad5a308600d7bbde15d2461 @Override diff --git a/net/minecraft/world/entity/monster/Endermite.java b/net/minecraft/world/entity/monster/Endermite.java -index 7e6cebeff52bb9252d55a191179b9bb82f4405bb..a1e848405acfa412d0555f051f4a2f28d933652c 100644 +index c6ae00f6ab83743b9ce43d9e55f04ba23b0de0f1..c79c689cb99ad2a6cab88cf8b583ff0f9e91b115 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 7e6cebeff52bb9252d55a191179b9bb82f4405bb..a1e848405acfa412d0555f051f4a2f28 protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/net/minecraft/world/entity/monster/Evoker.java b/net/minecraft/world/entity/monster/Evoker.java -index 4d1d746e39d136243dc620c89b29daf80dc62230..d77e3b0f36ec4a262ff375d9e2da912553a344f8 100644 +index 24d104036902b8aaf79325e33d3063ccea29e13e..9015643b47e2d20a5c75c5f4bf2ec66399d4a2e5 100644 --- a/net/minecraft/world/entity/monster/Evoker.java +++ b/net/minecraft/world/entity/monster/Evoker.java @@ -73,6 +73,13 @@ public class Evoker extends SpellcasterIllager { @@ -845,7 +845,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 bcd602714104043e67ed67446ea47dda33761e31..2ad7a35efbae5c4697413a48ff28a4c6f3c94a35 100644 +index fdbf14ff7e62d8db023b3d3bdf4ae685b5f085a8..f87e4b960fad01ceb62dc4c80ab80aaad5c7a986 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 bcd602714104043e67ed67446ea47dda33761e31..2ad7a35efbae5c4697413a48ff28a4c6 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/Giant.java b/net/minecraft/world/entity/monster/Giant.java -index f5565d314ded2145219debc446c7ddcb93b660e9..ccc2f7906c322a5406467986565074cbddf6cbe0 100644 +index e6fb01e4e2146d6c6971d80af0f101d20c03950a..2204c729ce42e89a0b42b365e0060098afcf68f9 100644 --- a/net/minecraft/world/entity/monster/Giant.java +++ b/net/minecraft/world/entity/monster/Giant.java @@ -62,6 +62,13 @@ public class Giant extends Monster { @@ -881,7 +881,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 1106f170bbfd8ea5446246c9778039742356a222..0af004e822b6f474b8119626c542bd822bb21e45 100644 +index c59f2dd8661d7a6bd35aaa1933a60a47f795bdd1..68eb628b5019c60df9f8bdfc7d47a6e68913fbd4 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 { @@ -899,7 +899,7 @@ index 1106f170bbfd8ea5446246c9778039742356a222..0af004e822b6f474b8119626c542bd82 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 557b2d684936c15299d7082a92ec8b08e7fab9a5..d25baa1e1b03b38219c8851c1552f342543ba884 100644 +index c3f582260bce068a887b3211b7add009efe18bd1..b43f65cf25ac1a7b753cc0c879e42fcb6508376a 100644 --- a/net/minecraft/world/entity/monster/Husk.java +++ b/net/minecraft/world/entity/monster/Husk.java @@ -66,6 +66,13 @@ public class Husk extends Zombie { @@ -917,7 +917,7 @@ index 557b2d684936c15299d7082a92ec8b08e7fab9a5..d25baa1e1b03b38219c8851c1552f342 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 753532aad0973230e1c7f4102ac55b243355c61e..ac31cd022f079561ca90ceb2a1c28a126efd255a 100644 +index b6872c94d769346ed2a8bb2406fc2b39ef64a67c..ee5e0b20f65a5f7d7dc2cf8fea2eff56f8f56a41 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 753532aad0973230e1c7f4102ac55b243355c61e..ac31cd022f079561ca90ceb2a1c28a12 protected void registerGoals() { super.registerGoals(); diff --git a/net/minecraft/world/entity/monster/MagmaCube.java b/net/minecraft/world/entity/monster/MagmaCube.java -index bb1364c4a220cc93f7ac01cbaa617561de4cd2e3..da90b7dc79aa6d01e88c1250fff662ba1b001dc3 100644 +index f39611741c4dacec2b1ad2d25ca9b7d47c188049..a5ca7a2f301cc8ae5878e583c2cf8aeef2085982 100644 --- a/net/minecraft/world/entity/monster/MagmaCube.java +++ b/net/minecraft/world/entity/monster/MagmaCube.java @@ -68,6 +68,13 @@ public class MagmaCube extends Slime { @@ -953,7 +953,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 bf2330068d43f52a9a21d73180ef5a83697444ea..e0193db5ce783b4ab2b8afaeaeffde8ac8bc8a71 100644 +index 42089b34a1a1927247953b54cdc3300e1b600a90..b4ff8b2f5fecffe808788014e0903b7238849172 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 { @@ -971,7 +971,7 @@ index bf2330068d43f52a9a21d73180ef5a83697444ea..e0193db5ce783b4ab2b8afaeaeffde8a public boolean isFlapping() { return (this.getUniqueFlapTickOffset() + this.tickCount) % TICKS_PER_FLAP == 0; diff --git a/net/minecraft/world/entity/monster/Pillager.java b/net/minecraft/world/entity/monster/Pillager.java -index bcc20f9642e9d20cf18bb5f8e63daa277154be1a..faaf42a029b1a0423c5e10ee3e17e4ba0e70be02 100644 +index 748233be6bdfd735aa3ccc02a7ba21a45603ffa4..1aa2f744b0d875fb874cf23a0601fee48ead66c2 100644 --- a/net/minecraft/world/entity/monster/Pillager.java +++ b/net/minecraft/world/entity/monster/Pillager.java @@ -89,6 +89,13 @@ public class Pillager extends AbstractIllager implements CrossbowAttackMob, Inve @@ -989,7 +989,7 @@ index bcc20f9642e9d20cf18bb5f8e63daa277154be1a..faaf42a029b1a0423c5e10ee3e17e4ba protected void registerGoals() { super.registerGoals(); diff --git a/net/minecraft/world/entity/monster/Ravager.java b/net/minecraft/world/entity/monster/Ravager.java -index 23b6d3c9746e1ee641d8b19ec50805cb271a9cc9..d75df6de50f9830efeea826d0ebdac17f56d4c4b 100644 +index a1fb74b51f51c045eed0fe09eceafa6d533babe2..5d7f6825d7bff413cac0fbf3a1d613bccd5102d6 100644 --- a/net/minecraft/world/entity/monster/Ravager.java +++ b/net/minecraft/world/entity/monster/Ravager.java @@ -101,6 +101,13 @@ public class Ravager extends Raider { @@ -1007,7 +1007,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 dac39e2c1ed4422b466effb0acc9267454bdc2fb..219ae068c4c17b38424af39b0c08d9e1e35fb00d 100644 +index 3909804ba8f9e220260efe6255ff2b298a4448db..21b28d1ba59656b123aef95a7e18075dae9bc236 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,7 +1025,7 @@ index dac39e2c1ed4422b466effb0acc9267454bdc2fb..219ae068c4c17b38424af39b0c08d9e1 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/Silverfish.java b/net/minecraft/world/entity/monster/Silverfish.java -index 6f4aaeb645d9638764c3516d2f1501661ac56170..51714029d4ea5033014dcefd25f74cc0c9a72dbd 100644 +index 97662c39001b4433601f46ef83f28c0ee916c02a..190312706c2e69bb0cf6e402e8e3ad7dd64b7b98 100644 --- a/net/minecraft/world/entity/monster/Silverfish.java +++ b/net/minecraft/world/entity/monster/Silverfish.java @@ -66,6 +66,13 @@ public class Silverfish extends Monster { @@ -1043,7 +1043,7 @@ 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 dc9a946b102e93a024130967b1eb1d5e78070b4d..4c625007fdfc7525036ec0c761400b07facbb43a 100644 +index 8d1f83ba8042435a0dc1e6e1fb9873173efe277d..1ae787edeb2011afb373fb44702f8a5150ee95b1 100644 --- a/net/minecraft/world/entity/monster/Skeleton.java +++ b/net/minecraft/world/entity/monster/Skeleton.java @@ -49,6 +49,13 @@ public class Skeleton extends AbstractSkeleton { @@ -1061,7 +1061,7 @@ index dc9a946b102e93a024130967b1eb1d5e78070b4d..4c625007fdfc7525036ec0c761400b07 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 6f6b6c47d003271a54fee53723cd09d435431be1..75a82b32c0efc1403dc9c875012739a417443c27 100644 +index beb504f9a5de48d9631585648a98cd3d2d682d76..f6e0ec18150f91d42f9a5b2f45e5a6e80c4ea031 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 { @@ -1079,7 +1079,7 @@ index 6f6b6c47d003271a54fee53723cd09d435431be1..75a82b32c0efc1403dc9c875012739a4 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 853752e66b2b9299b20d4a66dc73cf0db839d9e3..ed343a806be211299f03c46ed2214caed552f149 100644 +index 580047cd6a803ffdf6a1887d32731ddfd23316b9..5fa082b5a04d152c72f6053ca6bc4598899ca30c 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 853752e66b2b9299b20d4a66dc73cf0db839d9e3..ed343a806be211299f03c46ed2214cae protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/net/minecraft/world/entity/monster/Stray.java b/net/minecraft/world/entity/monster/Stray.java -index b5465b552c5aea7603a54cfdeafe451bfaf38bf2..e4ae604d4d0756edc9418634d9958338997c8203 100644 +index 1be523e22b2fa0f9546eb272f3f68a896a0575c9..1d99432da3df434394a746f0bf4d5cc62c90dcba 100644 --- a/net/minecraft/world/entity/monster/Stray.java +++ b/net/minecraft/world/entity/monster/Stray.java @@ -46,6 +46,13 @@ public class Stray extends AbstractSkeleton { @@ -1115,12 +1115,12 @@ 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 eb33b66fa3bc705552b6abf2d8e941e84cdda60e..d64ece808045016679b74c315ffd54b10eea47b9 100644 +index 6760c826cf72cc704f54ea0e3d6aaffde4ac22c4..1004aaf885268d08e68e5d2465fae2b5566a4eff 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 { - public Strider(EntityType entityType, Level level) { - super(entityType, level); + public Strider(EntityType type, Level level) { + super(type, level); this.blocksBuilding = true; - this.setPathfindingMalus(PathType.WATER, -1.0F); + if (isSensitiveToWater()) this.setPathfindingMalus(PathType.WATER, -1.0F); // Purpur - Toggle for water sensitive mob damage @@ -1137,7 +1137,7 @@ index eb33b66fa3bc705552b6abf2d8e941e84cdda60e..d64ece808045016679b74c315ffd54b1 @Override diff --git a/net/minecraft/world/entity/monster/Vex.java b/net/minecraft/world/entity/monster/Vex.java -index a8d3d1aaaa62781824f3b3422030c87de884793d..39f7c6ab8aa0fb0e1b472205f4849b3b10c74d81 100644 +index 7fddf0a36b1c4a3f7fbab8b0319e00281e8acd90..75681ed441e5cbb4c01a433f9757795089af234b 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 a8d3d1aaaa62781824f3b3422030c87de884793d..39f7c6ab8aa0fb0e1b472205f4849b3b public boolean isFlapping() { return this.tickCount % TICKS_PER_FLAP == 0; diff --git a/net/minecraft/world/entity/monster/Vindicator.java b/net/minecraft/world/entity/monster/Vindicator.java -index 1f66c8d5194ee5b3794ea86a951ae553aa375422..28fc1cd1e8721e2a87b5aa610d27afa8df3f4074 100644 +index fdaf024a27825844105ef62baddf30e3b4412d28..33452593731c53f404059271b3fbb0407d75517c 100644 --- a/net/minecraft/world/entity/monster/Vindicator.java +++ b/net/minecraft/world/entity/monster/Vindicator.java @@ -81,6 +81,13 @@ public class Vindicator extends AbstractIllager { @@ -1173,7 +1173,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 620d529c0cf71e0c19b9ed6a02d173218a38abd4..5d32cbb46b5ac9833a2a16e828b7d1915a08f3f1 100644 +index 60a6d8880e6d0009cfd136599ca6f1c1b07adc42..cafdebd0fa9a7458e5adaf109b3ebd4beed7a1ef 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 { @@ -1191,7 +1191,7 @@ index 620d529c0cf71e0c19b9ed6a02d173218a38abd4..5d32cbb46b5ac9833a2a16e828b7d191 protected void registerGoals() { super.registerGoals(); diff --git a/net/minecraft/world/entity/monster/WitherSkeleton.java b/net/minecraft/world/entity/monster/WitherSkeleton.java -index 96dc17a43c258fec424954606a7a43d490e870d6..29a2d1b25c8f04691d4e34fcb3256a4f0144829d 100644 +index 4d4e04d9fb5b68897ffa6f299bd2009bb397da3d..778779c79c56e2ca438ecbb82fbb16d70d312524 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 { @@ -1209,7 +1209,7 @@ index 96dc17a43c258fec424954606a7a43d490e870d6..29a2d1b25c8f04691d4e34fcb3256a4f 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 f1d42c8ee4a23ba3485477632b51dd9bcf9db926..5ed357158eccc48b2d1e25e06c35b7436086e7c5 100644 +index 5e52eab9a78db8a5652bdee7127d75921f641ab9..67998321b2c47d4aaf027c5fd17cb6d01e105b6f 100644 --- a/net/minecraft/world/entity/monster/Zoglin.java +++ b/net/minecraft/world/entity/monster/Zoglin.java @@ -111,6 +111,13 @@ public class Zoglin extends Monster implements HoglinBase { @@ -1227,7 +1227,7 @@ index f1d42c8ee4a23ba3485477632b51dd9bcf9db926..5ed357158eccc48b2d1e25e06c35b743 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 73b6ffd6a1f27a5d49125b51d3396df5d84493f6..452fcb94b5d31e04bf3c96bd1b07ff9b54101595 100644 +index 787efb0297b675e18c2e237126c849ec98eeab5b..336588a6bc2e95a02656c98aa58865ef4d90a8d5 100644 --- a/net/minecraft/world/entity/monster/Zombie.java +++ b/net/minecraft/world/entity/monster/Zombie.java @@ -141,6 +141,13 @@ public class Zombie extends Monster { @@ -1245,7 +1245,7 @@ index 73b6ffd6a1f27a5d49125b51d3396df5d84493f6..452fcb94b5d31e04bf3c96bd1b07ff9b 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 1d01131dae3900280d5c9ce9899f4afa09acfd46..31d8feaf5e2b84bee72796fd96502a862e573f52 100644 +index fa11f0fc2b036032fde14cc1a64df693eed1a017..1693fbcd47cc06409ac1849475feda7b5c4e437a 100644 --- a/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/net/minecraft/world/entity/monster/ZombieVillager.java @@ -119,6 +119,13 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { @@ -1263,7 +1263,7 @@ index 1d01131dae3900280d5c9ce9899f4afa09acfd46..31d8feaf5e2b84bee72796fd96502a86 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 325d0f32fd8824dc1c7067eb9c303bdfc122c706..3e262c6919287ad981b1d36b7f96dd14cae8e190 100644 +index 8e226a6a732efee42ecf492676089ecf0b2d785a..d43e4d29a75dd66551eb432ceec1cc3fda738364 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 { @@ -1281,7 +1281,7 @@ index 325d0f32fd8824dc1c7067eb9c303bdfc122c706..3e262c6919287ad981b1d36b7f96dd14 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 05cfdeb5afaad609ae873bb31ca411c4d6759a3f..a98de218d58361cce3f0cde21fbffbe9c1584701 100644 +index 2de148c874feeff23da144037562ded852e48a04..660d1f56cc74bc2a8764094d16772aace1234c15 100644 --- a/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/net/minecraft/world/entity/monster/hoglin/Hoglin.java @@ -127,6 +127,13 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { @@ -1299,7 +1299,7 @@ index 05cfdeb5afaad609ae873bb31ca411c4d6759a3f..a98de218d58361cce3f0cde21fbffbe9 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 1d9dc37055a2a9f41945b39812e1be15a8eb57e5..6eb4a5d752835110b7ff7c817bb31f027074c6db 100644 +index 4e1a7b6caf8c0a3721a3a799261d7b63301c3b29..5bf58287dad04c96459982d55b5ac00646e37d53 100644 --- a/net/minecraft/world/entity/monster/piglin/Piglin.java +++ b/net/minecraft/world/entity/monster/piglin/Piglin.java @@ -161,6 +161,13 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento @@ -1317,7 +1317,7 @@ index 1d9dc37055a2a9f41945b39812e1be15a8eb57e5..6eb4a5d752835110b7ff7c817bb31f02 protected void addAdditionalSaveData(ValueOutput output) { super.addAdditionalSaveData(output); diff --git a/net/minecraft/world/entity/monster/piglin/PiglinBrute.java b/net/minecraft/world/entity/monster/piglin/PiglinBrute.java -index f52aba35ee7e202074cda8fb4dfd6a7d9ded1f09..f4893cc54d7f144025da0057beedb3a974c80dc1 100644 +index 31e38737806098795de0e87fbcaf60d4ab83ea6e..e988a65cbd1f71f488fa8221ef11b6b1a05dc554 100644 --- a/net/minecraft/world/entity/monster/piglin/PiglinBrute.java +++ b/net/minecraft/world/entity/monster/piglin/PiglinBrute.java @@ -90,6 +90,13 @@ public class PiglinBrute extends AbstractPiglin { @@ -1335,7 +1335,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 9f8fd64a3812e6d6bfefb21dd793aae9ad2bcd94..08f6c4ca51177290bc80103d8ebd7087c41be954 100644 +index 33af111898df4e10367e6ef0d01eaf376bfc5819..810494826a7b600941f3087f114064e157ba88e6 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 @@ -1353,10 +1353,10 @@ index 9f8fd64a3812e6d6bfefb21dd793aae9ad2bcd94..08f6c4ca51177290bc80103d8ebd7087 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 e9a98a7009555128cb5118093add3fb331a7d485..a23b8788db33625df43940a26de8dffdb91d5d2d 100644 +index e5a6cc63d29be742be039053c39f983ed9c6a1e1..6e5f5711b729b41f5221fb7e7d0c8dad57f790ca 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 +@@ -98,6 +98,13 @@ public class WanderingTrader extends AbstractVillager implements Consumable.Over } // Purpur end - Villagers follow emerald blocks diff --git a/purpur-server/minecraft-patches/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 index de8862595..f1861171f 100644 --- a/purpur-server/minecraft-patches/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,7 +6,7 @@ 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 ef77be60df1cf44088e684c21dbcaf3032bb3ad6..92292ae5a313e85a3238427e7ab19c73e31f0ecb 100644 +index 75039c43a1f7d6f22fdebd1bac56a028354d1527..906848dce743c66b18899c21d408d28ad6dc642c 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java @@ -544,6 +544,24 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name @@ -31,11 +31,11 @@ index ef77be60df1cf44088e684c21dbcaf3032bb3ad6..92292ae5a313e85a3238427e7ab19c73 + } + // Purpur end - copied from Mob - API for any mob to burn daylight + - public Entity(EntityType entityType, Level level) { - this.type = entityType; + public Entity(EntityType type, Level level) { + this.type = type; this.level = level; diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java -index 7c65124b4c10166d57ac3c0e8435be06bf05efef..6eb4efd8220be4a06ae3306595b64a94f23538c3 100644 +index ab3ddd1c52b561c56ee240ee68f5e5aca706b744..7dd9e6ecb2d68a98e3c4980638098cfc3ee82633 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 @@ -45,7 +45,7 @@ index 7c65124b4c10166d57ac3c0e8435be06bf05efef..6eb4efd8220be4a06ae3306595b64a94 + protected boolean shouldBurnInDay = false; public boolean shouldBurnInDay() { return this.shouldBurnInDay; } public void setShouldBurnInDay(boolean shouldBurnInDay) { this.shouldBurnInDay = shouldBurnInDay; } // Purpur - API for any mob to burn daylight // CraftBukkit end - protected LivingEntity(EntityType entityType, Level level) { + protected LivingEntity(EntityType type, Level level) { @@ -795,6 +796,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)); @@ -62,7 +62,7 @@ index 7c65124b4c10166d57ac3c0e8435be06bf05efef..6eb4efd8220be4a06ae3306595b64a94 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"); -@@ -3711,6 +3714,32 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin +@@ -3717,6 +3720,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,7 +96,7 @@ index 7c65124b4c10166d57ac3c0e8435be06bf05efef..6eb4efd8220be4a06ae3306595b64a94 protected void applyInput() { diff --git a/net/minecraft/world/entity/Mob.java b/net/minecraft/world/entity/Mob.java -index 8f58641132231f450d0fb0c1fa61559c6cef8dcf..b9659c11204f632f42bc776453fcf5ce1eb09073 100644 +index e4aaa451129d0ed11d855b53aae0c0279b899479..19ce70712cb651f2cf086a0b490ef9008dbc4ce0 100644 --- a/net/minecraft/world/entity/Mob.java +++ b/net/minecraft/world/entity/Mob.java @@ -1589,19 +1589,8 @@ public abstract class Mob extends LivingEntity implements EquipmentUser, Leashab @@ -122,7 +122,7 @@ index 8f58641132231f450d0fb0c1fa61559c6cef8dcf..b9659c11204f632f42bc776453fcf5ce @Override diff --git a/net/minecraft/world/entity/monster/AbstractSkeleton.java b/net/minecraft/world/entity/monster/AbstractSkeleton.java -index 2ef478b287e1240dd172235f7cabf31f60456a8a..b228c29e550d77f62ac53df9f32efe1a31c9f933 100644 +index 7e43dd4b44335989127cc1b6e2c59d771876887a..14730f53561dec218b0fa6648c8de2b2157165fc 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 @@ -132,8 +132,8 @@ index 2ef478b287e1240dd172235f7cabf31f60456a8a..b228c29e550d77f62ac53df9f32efe1a - private boolean shouldBurnInDay = true; // Paper - shouldBurnInDay API + //private boolean shouldBurnInDay = true; // Paper - shouldBurnInDay API // Purpur - moved to LivingEntity; keep methods for ABI compatibility - API for any mob to burn daylight - protected AbstractSkeleton(EntityType entityType, Level level) { - super(entityType, level); + protected AbstractSkeleton(EntityType type, Level level) { + super(type, level); this.reassessWeaponGoal(); + this.setShouldBurnInDay(true); // Purpur - API for any mob to burn daylight } @@ -186,13 +186,13 @@ index 2ef478b287e1240dd172235f7cabf31f60456a8a..b228c29e550d77f62ac53df9f32efe1a // Paper end - shouldBurnInDay API diff --git a/net/minecraft/world/entity/monster/Husk.java b/net/minecraft/world/entity/monster/Husk.java -index d25baa1e1b03b38219c8851c1552f342543ba884..f8f27c7e5be15d6b7684159c193167837270d96b 100644 +index b43f65cf25ac1a7b753cc0c879e42fcb6508376a..938c8e0708df47299a627b1c7f56793035dd219c 100644 --- a/net/minecraft/world/entity/monster/Husk.java +++ b/net/minecraft/world/entity/monster/Husk.java @@ -18,6 +18,7 @@ import net.minecraft.world.level.ServerLevelAccessor; public class Husk extends Zombie { - public Husk(EntityType entityType, Level level) { - super(entityType, level); + public Husk(EntityType type, Level level) { + super(type, level); + this.setShouldBurnInDay(false); // Purpur - API for any mob to burn daylight } @@ -207,7 +207,7 @@ index d25baa1e1b03b38219c8851c1552f342543ba884..f8f27c7e5be15d6b7684159c19316783 @Override diff --git a/net/minecraft/world/entity/monster/Phantom.java b/net/minecraft/world/entity/monster/Phantom.java -index e0193db5ce783b4ab2b8afaeaeffde8ac8bc8a71..aa292ec60655cc9419da2a744c8cb841ddbc40e1 100644 +index b4ff8b2f5fecffe808788014e0903b7238849172..c7d52c623d8616209ab742b69838beed156d80de 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 { @@ -280,7 +280,7 @@ index e0193db5ce783b4ab2b8afaeaeffde8ac8bc8a71..aa292ec60655cc9419da2a744c8cb841 } diff --git a/net/minecraft/world/entity/monster/Zombie.java b/net/minecraft/world/entity/monster/Zombie.java -index 452fcb94b5d31e04bf3c96bd1b07ff9b54101595..6e3ae67dbb9a60177f26d075d42aacce580ff956 100644 +index 336588a6bc2e95a02656c98aa58865ef4d90a8d5..00e9383ad8251da600c84885c439a207c256c22a 100644 --- a/net/minecraft/world/entity/monster/Zombie.java +++ b/net/minecraft/world/entity/monster/Zombie.java @@ -91,11 +91,12 @@ public class Zombie extends Monster { @@ -290,9 +290,9 @@ index 452fcb94b5d31e04bf3c96bd1b07ff9b54101595..6e3ae67dbb9a60177f26d075d42aacce - private boolean shouldBurnInDay = true; // Paper - Add more Zombie API + //private boolean shouldBurnInDay = true; // Paper - Add more Zombie API // Purpur - implemented in LivingEntity - API for any mob to burn daylight - public Zombie(EntityType entityType, Level level) { - super(entityType, level); - this.breakDoorGoal = new BreakDoorGoal(this, com.google.common.base.Predicates.in(level.paperConfig().entities.behavior.doorBreakingDifficulty.getOrDefault(entityType, level.paperConfig().entities.behavior.doorBreakingDifficulty.get(EntityType.ZOMBIE)))); // Paper - Configurable door breaking difficulty + public Zombie(EntityType type, Level level) { + super(type, level); + this.breakDoorGoal = new BreakDoorGoal(this, com.google.common.base.Predicates.in(level.paperConfig().entities.behavior.doorBreakingDifficulty.getOrDefault(type, level.paperConfig().entities.behavior.doorBreakingDifficulty.get(EntityType.ZOMBIE)))); // Paper - Configurable door breaking difficulty + this.setShouldBurnInDay(true); // Purpur - API for any mob to burn daylight } diff --git a/purpur-server/minecraft-patches/features/0019-Cows-naturally-aggressive-to-players-chance.patch b/purpur-server/minecraft-patches/features/0019-Cows-naturally-aggressive-to-players-chance.patch index 3a4f4b3b9..05705aa3c 100644 --- a/purpur-server/minecraft-patches/features/0019-Cows-naturally-aggressive-to-players-chance.patch +++ b/purpur-server/minecraft-patches/features/0019-Cows-naturally-aggressive-to-players-chance.patch @@ -5,7 +5,7 @@ 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 9251693b3caa2d77b093064b6599db1078cd06d0..99458462d99f0b503ccb55444f4930515c7c641c 100644 +index 48be4530b25d273032ff1a055406c7cca928d678..65f48ced39fe3bffaea34b1f8d83374bfd5cc1c8 100644 --- a/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java +++ b/net/minecraft/world/entity/ai/attributes/DefaultAttributes.java @@ -131,7 +131,7 @@ public class DefaultAttributes { @@ -18,7 +18,7 @@ index 9251693b3caa2d77b093064b6599db1078cd06d0..99458462d99f0b503ccb55444f493051 .put(EntityType.OCELOT, Ocelot.createAttributes().build()) .put(EntityType.PANDA, Panda.createAttributes().build()) diff --git a/net/minecraft/world/entity/animal/Cow.java b/net/minecraft/world/entity/animal/Cow.java -index d584ffe3cc8dfb5fd4ce352b1da18af6a143d575..09ee10a17e15431a2937cf753e670dc000a2e36f 100644 +index a71b6c8a0c48d9c7121e7d29cff6d388cb2df09f..150ba89fee07dcb67550165597203f572d901f04 100644 --- a/net/minecraft/world/entity/animal/Cow.java +++ b/net/minecraft/world/entity/animal/Cow.java @@ -23,6 +23,8 @@ import net.minecraft.world.level.storage.ValueInput; @@ -29,7 +29,7 @@ index d584ffe3cc8dfb5fd4ce352b1da18af6a143d575..09ee10a17e15431a2937cf753e670dc0 + private static final EntityDataAccessor> DATA_VARIANT_ID = SynchedEntityData.defineId(Cow.class, EntityDataSerializers.COW_VARIANT); - public Cow(EntityType entityType, Level level) { + public Cow(EntityType type, Level level) { @@ -49,8 +51,9 @@ public class Cow extends AbstractCow { // Purpur start - Configurable entity base attributes @Override diff --git a/purpur-server/minecraft-patches/features/0020-Mobs-always-drop-experience.patch b/purpur-server/minecraft-patches/features/0020-Mobs-always-drop-experience.patch index 7b7efa43c..5d2ff9efa 100644 --- a/purpur-server/minecraft-patches/features/0020-Mobs-always-drop-experience.patch +++ b/purpur-server/minecraft-patches/features/0020-Mobs-always-drop-experience.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Mobs always drop experience diff --git a/net/minecraft/world/entity/GlowSquid.java b/net/minecraft/world/entity/GlowSquid.java -index 1c446cec71aa163374ab9832c961a6b4c3fc534b..86a694b94045b47f6e98c480645f75738b8a052c 100644 +index a10a1e26d0260968c6becd1e9d68436071da8411..0a29ed8b1347ce7c854bb787e0d003ffdcf44830 100644 --- a/net/minecraft/world/entity/GlowSquid.java +++ b/net/minecraft/world/entity/GlowSquid.java @@ -61,6 +61,13 @@ public class GlowSquid extends Squid { @@ -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 7b6caaeb34c297f22206d0da0293a56594654657..6ef5a4804032945c7ededa2eee1ae0ae4417019b 100644 +index 9dd4d9a10df973fbf4e4fc63a8a7b7041f21ede4..a764dec7a349273b31a994c38e2c7374c6a1adb6 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 7b6caaeb34c297f22206d0da0293a56594654657..6ef5a4804032945c7ededa2eee1ae0ae 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 980d3255d6dc7913fdb5437dafb702c2eff5d56f..a520052f0feae97c5ed8eb4af4fb48cdf56d6550 100644 +index 234f02e0b75c6b9a8f52c440c680b539ee783f91..968ec5a7188cc4e4a60956e12e44c4b746cf78d1 100644 --- a/net/minecraft/world/entity/animal/Bee.java +++ b/net/minecraft/world/entity/animal/Bee.java -@@ -497,6 +497,13 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -495,6 +495,13 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { } // Purpur end - Toggle for water sensitive mob damage @@ -59,7 +59,7 @@ index 980d3255d6dc7913fdb5437dafb702c2eff5d56f..a520052f0feae97c5ed8eb4af4fb48cd public int getRemainingPersistentAngerTime() { return this.entityData.get(DATA_REMAINING_ANGER_TIME); diff --git a/net/minecraft/world/entity/animal/Cat.java b/net/minecraft/world/entity/animal/Cat.java -index 41f303078b2e1f0460215fbfe27ff06fd5783c35..09d518a59fe93afbeacb2d41a0c9d287f4a74443 100644 +index 842c03df5a4ee67192f2850b89be45648024fd17..aff91b88efcb2e089d5d0faebb4fc8cb8a48accd 100644 --- a/net/minecraft/world/entity/animal/Cat.java +++ b/net/minecraft/world/entity/animal/Cat.java @@ -139,6 +139,13 @@ public class Cat extends TamableAnimal { @@ -77,7 +77,7 @@ index 41f303078b2e1f0460215fbfe27ff06fd5783c35..09d518a59fe93afbeacb2d41a0c9d287 protected void registerGoals() { this.temptGoal = new Cat.CatTemptGoal(this, 0.6, stack -> stack.is(ItemTags.CAT_FOOD), true); diff --git a/net/minecraft/world/entity/animal/Chicken.java b/net/minecraft/world/entity/animal/Chicken.java -index 58f7690a05febac5c57ba7ea2aff93b7d94a4291..eaf913805195a580e3aa816dc28053abb9bdc246 100644 +index dde117db5952784e385f242d388b062d0fa1d49d..c36d35bcef9eee3da3371fc3c06f3fca124c3d80 100644 --- a/net/minecraft/world/entity/animal/Chicken.java +++ b/net/minecraft/world/entity/animal/Chicken.java @@ -116,6 +116,13 @@ public class Chicken extends Animal { @@ -95,7 +95,7 @@ index 58f7690a05febac5c57ba7ea2aff93b7d94a4291..eaf913805195a580e3aa816dc28053ab protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); diff --git a/net/minecraft/world/entity/animal/Cod.java b/net/minecraft/world/entity/animal/Cod.java -index 6128ed595cb97cc11c1a0e1e1673b3af8e428fb8..7e08573cba6efcd78fcce37bccc2923f374f3c44 100644 +index f8fbba4ae8b0ecf9aec33f60b908a88fa2933713..50ebeabf494eab43b10394fa2fff312912df99b2 100644 --- a/net/minecraft/world/entity/animal/Cod.java +++ b/net/minecraft/world/entity/animal/Cod.java @@ -39,6 +39,13 @@ public class Cod extends AbstractSchoolingFish { @@ -113,7 +113,7 @@ index 6128ed595cb97cc11c1a0e1e1673b3af8e428fb8..7e08573cba6efcd78fcce37bccc2923f public ItemStack getBucketItemStack() { return new ItemStack(Items.COD_BUCKET); diff --git a/net/minecraft/world/entity/animal/Cow.java b/net/minecraft/world/entity/animal/Cow.java -index 09ee10a17e15431a2937cf753e670dc000a2e36f..b2fa170b14bc3037e5c143d320d0a1ef24738f1c 100644 +index 150ba89fee07dcb67550165597203f572d901f04..c3d225f555b44d73196a3c34ca0b3a0c19434be5 100644 --- a/net/minecraft/world/entity/animal/Cow.java +++ b/net/minecraft/world/entity/animal/Cow.java @@ -71,6 +71,13 @@ public class Cow extends AbstractCow { @@ -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 e6df7495a8c4e36ec7d0921a7dcccc16a9cb7916..39c31dcce4df2b5fddf69bf20e2d81b25ed8e469 100644 +index aaeb8a787158171920993719afcacc58ffd0f5a2..c790233d6f254a77a42ec5628441345a506c37b0 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 e6df7495a8c4e36ec7d0921a7dcccc16a9cb7916..39c31dcce4df2b5fddf69bf20e2d81b2 @Override public SpawnGroupData finalizeSpawn( diff --git a/net/minecraft/world/entity/animal/Fox.java b/net/minecraft/world/entity/animal/Fox.java -index 15e5ebdf0446ccf4e380fe910a288d3bbf048549..0602c7fc5b5f4c895dcb9fc55fd2f079617c1483 100644 +index 22058c67eff5204202b71d2df9db3e59c2e5f916..a78af2629a9df93ea17b21c05f3d688692250920 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,7 +167,7 @@ index 15e5ebdf0446ccf4e380fe910a288d3bbf048549..0602c7fc5b5f4c895dcb9fc55fd2f079 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 f15dcbd16f910f191f1e4ce8bda857476cc94fee..5b08703e27a9e92fb4bcd019661b1407078c24e1 100644 +index dbc01564e23e7785e85b16f100925d36496ef51c..e85f17f362548f13a414a41f711900add788b2f7 100644 --- a/net/minecraft/world/entity/animal/HappyGhast.java +++ b/net/minecraft/world/entity/animal/HappyGhast.java @@ -159,6 +159,13 @@ public class HappyGhast extends Animal { @@ -185,7 +185,7 @@ index f15dcbd16f910f191f1e4ce8bda857476cc94fee..5b08703e27a9e92fb4bcd019661b1407 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 e58fb3cbb71693d8556bace35d6e57ea9e455d80..a0c3ef5ca2fccc0719b5d70e1610aa0fbf921b0c 100644 +index 4a7c6dedb23ac1057eda80de4a2cd54fe3e6f76f..1c96cd8e369507dfedd7d3495861e0e270ad0cd6 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,7 +203,7 @@ index e58fb3cbb71693d8556bace35d6e57ea9e455d80..a0c3ef5ca2fccc0719b5d70e1610aa0f 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 270563334fcb1b2124e5721ce0d443ac8d712080..d08c79943993014d2a266b66ce79e30f6d7a321f 100644 +index ddd763cc38e8c624db7ef207f244961bda0b5ae1..3b18ea446cc7e19295a9fa37b74c3a02be421e55 100644 --- a/net/minecraft/world/entity/animal/MushroomCow.java +++ b/net/minecraft/world/entity/animal/MushroomCow.java @@ -101,6 +101,13 @@ public class MushroomCow extends AbstractCow implements Shearable { @@ -221,7 +221,7 @@ index 270563334fcb1b2124e5721ce0d443ac8d712080..d08c79943993014d2a266b66ce79e30f 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 4810b6cd45d27da3c601d1eb4d3377572f1a61dc..13f0e2910e232f115ecb2496de2192617fd334e5 100644 +index 125d324832623bb52ac1afd197862876a0f5f928..72cbb5bf9023272f6e169a2956d2035706dd8a57 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 4810b6cd45d27da3c601d1eb4d3377572f1a61dc..13f0e2910e232f115ecb2496de219261 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 5fde42f9e86adc5872a10eb864a38f5bae171c10..580ded94fbb6ba861259fd92c174d0aab879b3ab 100644 +index 36ec50791543c4eabf7158aa8d6ba272b14f6cd6..c97ec93732d10197ee978477dc07c097d45bbe15 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 5fde42f9e86adc5872a10eb864a38f5bae171c10..580ded94fbb6ba861259fd92c174d0aa 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 861739ca43e0212ab9ad4037693b729bd69fbb0b..fa00f9fab8a5f4226e2e4b061239537303ff73e0 100644 +index f5c98b277984249ec077c5742854a3cb444eb68c..17d3814887adbc62d7a2f6eccc6e05e61b30bb29 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 861739ca43e0212ab9ad4037693b729bd69fbb0b..fa00f9fab8a5f4226e2e4b0612395373 @Override public SpawnGroupData finalizeSpawn( diff --git a/net/minecraft/world/entity/animal/Pig.java b/net/minecraft/world/entity/animal/Pig.java -index 5ea66e3eb813c961d4275657a69300bc3953b1bc..9a68ee7b31cf050af007c1a58cf4fd01771cd8ff 100644 +index 719317c3cd5fc0202ef5deb150e0304191b121b8..2b9342497a408248f24682f547d93125ce268d86 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 5ea66e3eb813c961d4275657a69300bc3953b1bc..9a68ee7b31cf050af007c1a58cf4fd01 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 e69acaf3e99e298535ba9a39a6389f4ca5d304aa..de0d6239686fda715d2c5f3e34ce77edcf803800 100644 +index eda9e5965a6ff244288215188de8e05ebcb61f14..9ac8beb6075502e3b18064429cb71c5d5b1d8831 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 { @@ -309,9 +309,9 @@ index e69acaf3e99e298535ba9a39a6389f4ca5d304aa..de0d6239686fda715d2c5f3e34ce77ed + @Nullable @Override - public AgeableMob getBreedOffspring(ServerLevel level, AgeableMob otherParent) { + public AgeableMob getBreedOffspring(ServerLevel level, AgeableMob partner) { diff --git a/net/minecraft/world/entity/animal/Pufferfish.java b/net/minecraft/world/entity/animal/Pufferfish.java -index d91560b021775dd29f1f099f4a9df8af0e7b8d4c..1ed4e7b13c7a578fbfdbf75740f79fadad3f6d2f 100644 +index 49f1d08239e92aa4e8f18ee8054c13e54089ed82..6775cb8d78aaa7007077277b272825b7410877d4 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 d91560b021775dd29f1f099f4a9df8af0e7b8d4c..1ed4e7b13c7a578fbfdbf75740f79fad 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 f773595560a59724c13a0f9e9cbe0a4d5b442313..44dc38b94c311a791fadb073200fe04510f5123e 100644 +index fb773ac6f450f6632fd7af3d0c44af57075fdcce..f91e63d9bd382bf2ef76766def08342a91eae29c 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 { @@ -347,7 +347,7 @@ index f773595560a59724c13a0f9e9cbe0a4d5b442313..44dc38b94c311a791fadb073200fe045 public void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/net/minecraft/world/entity/animal/Salmon.java b/net/minecraft/world/entity/animal/Salmon.java -index 3c517936aee31fcf246787c033688870a2349e55..d2679beaa3be6de36227c5b66609e0df393c4376 100644 +index b9641e307d669ba20428843575a6bb39065df034..db3610b7a95effd9ad6fc782d254b9e2a4eb434f 100644 --- a/net/minecraft/world/entity/animal/Salmon.java +++ b/net/minecraft/world/entity/animal/Salmon.java @@ -65,6 +65,13 @@ public class Salmon extends AbstractSchoolingFish { @@ -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 448946f352e394b4c5e84914c583c26c0bd390c3..efba95b3d833f2393ae846af1b27d10ef75550af 100644 +index 6cb6ff86e3fd7b9dd2929669dc1b0d339af9a95a..03071650204193f1130e8e17f280ae6ad2cfad38 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 448946f352e394b4c5e84914c583c26c0bd390c3..efba95b3d833f2393ae846af1b27d10e 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 c752eec4ed181eb4fa5c8b382764f2f544719f23..19f176976218db6207b7cdd8aacd370b83cfd536 100644 +index 38a2d3f1344a8a826ceca645279779beb3a4dde7..7126ee1e2c950d37ec33204da1b6910bcb6e9e30 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 { @@ -401,7 +401,7 @@ index c752eec4ed181eb4fa5c8b382764f2f544719f23..19f176976218db6207b7cdd8aacd370b protected void registerGoals() { this.goalSelector.addGoal(0, new Squid.SquidRandomMovementGoal(this)); diff --git a/net/minecraft/world/entity/animal/TropicalFish.java b/net/minecraft/world/entity/animal/TropicalFish.java -index 4510798913f94474b16ab6cbfa32dc0fdf0a226a..8d1fa86c6f4881c05f11fa80018b8de7f4920006 100644 +index 22a75b6b1e6f130027e39051f04267fb436ae6de..64682d4cadcc15d6308f535591d130cfda244807 100644 --- a/net/minecraft/world/entity/animal/TropicalFish.java +++ b/net/minecraft/world/entity/animal/TropicalFish.java @@ -103,6 +103,13 @@ public class TropicalFish extends AbstractSchoolingFish { @@ -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 6a52e549257582d09af824f4067c91130f35cf8a..bb2f87ee973ad4163a7d130d607e6efa4cefdd92 100644 +index e9b19fe300f9d5caebe8603d0347eae834408809..22401f6b05ab371568f76eb64af28bd762c21ce8 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,7 +437,7 @@ index 6a52e549257582d09af824f4067c91130f35cf8a..bb2f87ee973ad4163a7d130d607e6efa this.homePos = homePos; } diff --git a/net/minecraft/world/entity/animal/axolotl/Axolotl.java b/net/minecraft/world/entity/animal/axolotl/Axolotl.java -index 4932668448a7346758983b647f4e508061297ba2..08fb591e860b7b2b93b42bfc7a91d63999567dc6 100644 +index c32a5f348e41d6ff733331b85baf32da839083fe..3cc8ee115e889ced4457596b9c5fce438157e980 100644 --- a/net/minecraft/world/entity/animal/axolotl/Axolotl.java +++ b/net/minecraft/world/entity/animal/axolotl/Axolotl.java @@ -160,6 +160,13 @@ public class Axolotl extends Animal implements Bucketable { @@ -455,7 +455,7 @@ index 4932668448a7346758983b647f4e508061297ba2..08fb591e860b7b2b93b42bfc7a91d639 public float getWalkTargetValue(BlockPos pos, LevelReader level) { return 0.0F; diff --git a/net/minecraft/world/entity/animal/coppergolem/CopperGolem.java b/net/minecraft/world/entity/animal/coppergolem/CopperGolem.java -index 19d02efdd82f370d0edc62abdbb7be3a062f8706..eb1074a39d7d1ec8ecf7f2345e5402ef092cf9b1 100644 +index 5095ddcf1a2a4d4f5cff6dbaeec39a4e6e0d1d92..088b2cf28f56d60167b03bcce5fbd2c47fa2de9a 100644 --- a/net/minecraft/world/entity/animal/coppergolem/CopperGolem.java +++ b/net/minecraft/world/entity/animal/coppergolem/CopperGolem.java @@ -148,6 +148,13 @@ public class CopperGolem extends AbstractGolem implements ContainerUser, Shearab @@ -473,7 +473,7 @@ index 19d02efdd82f370d0edc62abdbb7be3a062f8706..eb1074a39d7d1ec8ecf7f2345e5402ef return Mob.createMobAttributes().add(Attributes.MOVEMENT_SPEED, 0.2F).add(Attributes.STEP_HEIGHT, 1.0).add(Attributes.MAX_HEALTH, 12.0); } diff --git a/net/minecraft/world/entity/animal/goat/Goat.java b/net/minecraft/world/entity/animal/goat/Goat.java -index 4e93554170d9c91a7d704b161b91ca28b19be73b..99980c9a69b51f81a9cd4429d59fab9497d79656 100644 +index b048ca99370c65446855e3867eeb29ddb6ad51f6..6b6461a61a1738d64220f571b8cf7b46605327c0 100644 --- a/net/minecraft/world/entity/animal/goat/Goat.java +++ b/net/minecraft/world/entity/animal/goat/Goat.java @@ -145,6 +145,13 @@ public class Goat extends Animal { @@ -491,7 +491,7 @@ index 4e93554170d9c91a7d704b161b91ca28b19be73b..99980c9a69b51f81a9cd4429d59fab94 protected Brain.Provider brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); diff --git a/net/minecraft/world/entity/animal/horse/Donkey.java b/net/minecraft/world/entity/animal/horse/Donkey.java -index 9b17b1acf63fddb5f5b6cdf95283ae8f619a8120..0783d41a6c4622b03d9d368c1af949af1292dcb7 100644 +index 322ff19885fc2a982bc3c4bd7b5588cd2974e425..2e44d50b3a8b3e69602f96d45474d823403547c8 100644 --- a/net/minecraft/world/entity/animal/horse/Donkey.java +++ b/net/minecraft/world/entity/animal/horse/Donkey.java @@ -54,6 +54,13 @@ public class Donkey extends AbstractChestedHorse { @@ -509,7 +509,7 @@ index 9b17b1acf63fddb5f5b6cdf95283ae8f619a8120..0783d41a6c4622b03d9d368c1af949af public SoundEvent getAmbientSound() { return SoundEvents.DONKEY_AMBIENT; diff --git a/net/minecraft/world/entity/animal/horse/Horse.java b/net/minecraft/world/entity/animal/horse/Horse.java -index 2928159447a87ea8cc945e73e2e81ad1dbe13680..f1080a40f759b30b921b88b4f6edd35f4795406f 100644 +index 4d8c6eac4d276dac7859bed1a1c83d45f1858b64..e437557688c9726222840c8a2dc94a2b40380b53 100644 --- a/net/minecraft/world/entity/animal/horse/Horse.java +++ b/net/minecraft/world/entity/animal/horse/Horse.java @@ -85,6 +85,13 @@ public class Horse extends AbstractHorse { @@ -527,7 +527,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 9a16450170734e4c47bbc91d764b889765e473f0..e4f261e14bf57d6c50cf7c012707f1265fcf9f61 100644 +index 32ceec4a08010a2febaac47b6288673cbc71ac90..cd231252ad71334578943325d5f14982af778849 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 { @@ -545,7 +545,7 @@ index 9a16450170734e4c47bbc91d764b889765e473f0..e4f261e14bf57d6c50cf7c012707f126 return false; } diff --git a/net/minecraft/world/entity/animal/horse/Mule.java b/net/minecraft/world/entity/animal/horse/Mule.java -index 14a17d4b33b276f28e45ce06de06793a73a50916..6e0b1c83a6a03d12296e0e3b2c805b64d8378abd 100644 +index b1c320210e3116249043ef91feb621e1af5afabf..b7ff4f9838581479e773b03922f57f529b1e2ee9 100644 --- a/net/minecraft/world/entity/animal/horse/Mule.java +++ b/net/minecraft/world/entity/animal/horse/Mule.java @@ -53,6 +53,13 @@ public class Mule extends AbstractChestedHorse { @@ -563,7 +563,7 @@ index 14a17d4b33b276f28e45ce06de06793a73a50916..6e0b1c83a6a03d12296e0e3b2c805b64 public SoundEvent getAmbientSound() { return SoundEvents.MULE_AMBIENT; diff --git a/net/minecraft/world/entity/animal/horse/SkeletonHorse.java b/net/minecraft/world/entity/animal/horse/SkeletonHorse.java -index cff709a28830a842a499f7dfe3b8bc0b703c9af4..f6ab6ecc10486694d77905239a82bda4dec94936 100644 +index 9cd58494f090dd0d16787b3d739cbaa8bcd92370..986746435e837dd1de8ee86f7dcd796ef095d73b 100644 --- a/net/minecraft/world/entity/animal/horse/SkeletonHorse.java +++ b/net/minecraft/world/entity/animal/horse/SkeletonHorse.java @@ -80,6 +80,13 @@ public class SkeletonHorse extends AbstractHorse { @@ -581,7 +581,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 3222b0439a4c3cabab8f5648b71df2c215e335ff..61775beaba90ed3b43f5de62c96fe7bf81fc92e4 100644 +index 204dfdeb5c3bb650dbd6c990c6a2e1e4d14b8c77..be8b7e4f449183ce20138ffbdd0c856859455ce8 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 3222b0439a4c3cabab8f5648b71df2c215e335ff..61775beaba90ed3b43f5de62c96fe7bf public boolean isTraderLlama() { return true; diff --git a/net/minecraft/world/entity/animal/horse/ZombieHorse.java b/net/minecraft/world/entity/animal/horse/ZombieHorse.java -index e78fac0a5e37d53afbc200f015adab60b3bfc9da..e59172ea2fafbab673dc3e9bdc25055f3d8f85ee 100644 +index fd8a512910c886af1ae4e66edbf7f8d6fe0bc4f3..384bb954ea633c8e8ac239539925948b9dde6168 100644 --- a/net/minecraft/world/entity/animal/horse/ZombieHorse.java +++ b/net/minecraft/world/entity/animal/horse/ZombieHorse.java @@ -76,6 +76,13 @@ public class ZombieHorse extends AbstractHorse { @@ -617,7 +617,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 fe5bbf00e02efa8ff71014d2b334ad1f6cd4052f..5924a195de35d5fed84ef7175f7c69610eeafd38 100644 +index e204b349615be98ea9a143ca2bb73a3a0a32baa4..21d66dd46650afae2091e236dfec760c096c34f8 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 { @@ -635,7 +635,7 @@ index fe5bbf00e02efa8ff71014d2b334ad1f6cd4052f..5924a195de35d5fed84ef7175f7c6961 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 9c76157edc1ee7a15498e8759b5c2f71be3b0b51..b3f3959e5da61460a5c29b6a75af32e3459f3528 100644 +index 4b1c93cf2e17ae85d3b34a49c15e2926d8d1c81a..353507a7483afd6428fb10c461ff5c4162a97704 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 { @@ -653,7 +653,7 @@ index 9c76157edc1ee7a15498e8759b5c2f71be3b0b51..b3f3959e5da61460a5c29b6a75af32e3 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 d38a004d1192e967dfc82d858257fbfc4586df37..5b4d8bafaa7c03a40d02d84449a20cd0f7682afd 100644 +index 37919a338630efeb87accb7e0a7d86fddc03e858..b2c0dc521f46fe3aaf82c70626917af4141a6615 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 { @@ -671,7 +671,7 @@ index d38a004d1192e967dfc82d858257fbfc4586df37..5b4d8bafaa7c03a40d02d84449a20cd0 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 e43d6fabcaffca05ee93878ee28ac9df0bb5789f..26bef7ee1c68c75c77b7c72d8c08ce3b3c2efb98 100644 +index e940633d5140bb19623cef9cc9d6acdae77ed392..354a4a10cce3fc3b7611ad99c0c7ed7d34f87b15 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,7 +689,7 @@ index e43d6fabcaffca05ee93878ee28ac9df0bb5789f..26bef7ee1c68c75c77b7c72d8c08ce3b 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/CaveSpider.java b/net/minecraft/world/entity/monster/CaveSpider.java -index 420fe0d01d0b173a6a541f77e1aaca3f3bb565e7..7eca4b751d900c6d6ee34993c3e2368127d19e03 100644 +index 239d855df83083e0eb875c430a165427f3a143de..994429d657e3f40b43b2c744112658e510be156c 100644 --- a/net/minecraft/world/entity/monster/CaveSpider.java +++ b/net/minecraft/world/entity/monster/CaveSpider.java @@ -58,6 +58,13 @@ public class CaveSpider extends Spider { @@ -704,10 +704,10 @@ index 420fe0d01d0b173a6a541f77e1aaca3f3bb565e7..7eca4b751d900c6d6ee34993c3e23681 + // Purpur end - Mobs always drop experience + @Override - public boolean doHurtTarget(ServerLevel level, Entity source) { - if (super.doHurtTarget(level, source)) { + public boolean doHurtTarget(ServerLevel level, Entity target) { + if (super.doHurtTarget(level, target)) { diff --git a/net/minecraft/world/entity/monster/Creeper.java b/net/minecraft/world/entity/monster/Creeper.java -index 099ece4b4d0996fc26a5d42f81a42fcc63f22506..b68025d5c5e2727026bb792663d026f1be5a2ea2 100644 +index 719c752270c3f1b2496184df0eb728e3c934a3d5..ff85af8c6f8a64e8472377decf47ab667f68a3f0 100644 --- a/net/minecraft/world/entity/monster/Creeper.java +++ b/net/minecraft/world/entity/monster/Creeper.java @@ -273,6 +273,13 @@ public class Creeper extends Monster { @@ -725,7 +725,7 @@ index 099ece4b4d0996fc26a5d42f81a42fcc63f22506..b68025d5c5e2727026bb792663d026f1 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 33c45250277b2383f4ef1d740898ba02f22bcb26..592b4f139a184f0522e350f5b83777b235eb243c 100644 +index 6beaed7f1ce39bef190cfa7e1addc28b929c0747..5a947d7fbf1a08011d87f71b96a8f221130fb583 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,7 +743,7 @@ index 33c45250277b2383f4ef1d740898ba02f22bcb26..592b4f139a184f0522e350f5b83777b2 protected void addBehaviourGoals() { this.goalSelector.addGoal(1, new Drowned.DrownedGoToWaterGoal(this, 1.0)); diff --git a/net/minecraft/world/entity/monster/ElderGuardian.java b/net/minecraft/world/entity/monster/ElderGuardian.java -index 287b6fea404d4f1f121219f92918dc2d1c0ac780..ab1c050ff326a072e817a05958b8f4ec803af063 100644 +index 1ea323a17440abbe36c9528e80e169816267005b..abb7496c293175828fde54ae2b4991aa3ff6b30f 100644 --- a/net/minecraft/world/entity/monster/ElderGuardian.java +++ b/net/minecraft/world/entity/monster/ElderGuardian.java @@ -58,6 +58,13 @@ public class ElderGuardian extends Guardian { @@ -761,7 +761,7 @@ 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 122c68cd0ad5a308600d7bbde15d246131d28546..bf5fedd1dc7eea2a36edfb1420efe207ac409085 100644 +index 09cce24dcc6a57f02c020c7e035e7940ddf9a962..e4d6610c43a019e9e1e296703e80eecc4ffdd36c 100644 --- a/net/minecraft/world/entity/monster/EnderMan.java +++ b/net/minecraft/world/entity/monster/EnderMan.java @@ -115,6 +115,13 @@ public class EnderMan extends Monster implements NeutralMob { @@ -779,7 +779,7 @@ index 122c68cd0ad5a308600d7bbde15d246131d28546..bf5fedd1dc7eea2a36edfb1420efe207 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 a1e848405acfa412d0555f051f4a2f28d933652c..3b3855a74c62c6d513e07221ae45b1cbfb1a3c2f 100644 +index c79c689cb99ad2a6cab88cf8b583ff0f9e91b115..4a778ad22f92e3fd95665a9b40ae932b427bac16 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 a1e848405acfa412d0555f051f4a2f28d933652c..3b3855a74c62c6d513e07221ae45b1cb protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/net/minecraft/world/entity/monster/Evoker.java b/net/minecraft/world/entity/monster/Evoker.java -index d77e3b0f36ec4a262ff375d9e2da912553a344f8..5c1992a7fd5d7c5fe23ebfad35a828263d0ff93c 100644 +index 9015643b47e2d20a5c75c5f4bf2ec66399d4a2e5..274a40f0edc4d928570cf75ee1c51d1d03dabb2f 100644 --- a/net/minecraft/world/entity/monster/Evoker.java +++ b/net/minecraft/world/entity/monster/Evoker.java @@ -80,6 +80,13 @@ public class Evoker extends SpellcasterIllager { @@ -815,7 +815,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 2ad7a35efbae5c4697413a48ff28a4c6f3c94a35..ce7cd858e724f17d14e31516127a4c88874f3de8 100644 +index f87e4b960fad01ceb62dc4c80ab80aaad5c7a986..2b3b893c6fa05727df0f24cac67f97cb890054fe 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 2ad7a35efbae5c4697413a48ff28a4c6f3c94a35..ce7cd858e724f17d14e31516127a4c88 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/Giant.java b/net/minecraft/world/entity/monster/Giant.java -index ccc2f7906c322a5406467986565074cbddf6cbe0..f4ec41a74b13be98f3ac78521fdd357842bc9ebd 100644 +index 2204c729ce42e89a0b42b365e0060098afcf68f9..b7edb5db6621e982a6a529c5319ba68a07d2f6f0 100644 --- a/net/minecraft/world/entity/monster/Giant.java +++ b/net/minecraft/world/entity/monster/Giant.java @@ -69,6 +69,13 @@ public class Giant extends Monster { @@ -851,7 +851,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 0af004e822b6f474b8119626c542bd822bb21e45..fdb866927740f41c411914ab67ce77316937e3e2 100644 +index 68eb628b5019c60df9f8bdfc7d47a6e68913fbd4..24f7af91a59d4e8975cf8aece3a934aa927972e9 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 { @@ -869,7 +869,7 @@ index 0af004e822b6f474b8119626c542bd822bb21e45..fdb866927740f41c411914ab67ce7731 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 f8f27c7e5be15d6b7684159c193167837270d96b..f2c55aa23ec647af6907b349b937c98fffd95523 100644 +index 938c8e0708df47299a627b1c7f56793035dd219c..0bc9c1b235cd5ac771c7b0f200abe4fde38b7858 100644 --- a/net/minecraft/world/entity/monster/Husk.java +++ b/net/minecraft/world/entity/monster/Husk.java @@ -74,6 +74,13 @@ public class Husk extends Zombie { @@ -887,7 +887,7 @@ index f8f27c7e5be15d6b7684159c193167837270d96b..f2c55aa23ec647af6907b349b937c98f 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 ac31cd022f079561ca90ceb2a1c28a126efd255a..2b7ea7db4153c084d5f1edd9e3555c59ea3bed12 100644 +index ee5e0b20f65a5f7d7dc2cf8fea2eff56f8f56a41..e34c37a9a2eacc97f44fcb6d911cf215b07414a2 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 ac31cd022f079561ca90ceb2a1c28a126efd255a..2b7ea7db4153c084d5f1edd9e3555c59 protected void registerGoals() { super.registerGoals(); diff --git a/net/minecraft/world/entity/monster/MagmaCube.java b/net/minecraft/world/entity/monster/MagmaCube.java -index da90b7dc79aa6d01e88c1250fff662ba1b001dc3..7ef0f84d4c449a8991683ca66d7b16ca21ef4cdf 100644 +index a5ca7a2f301cc8ae5878e583c2cf8aeef2085982..da80b17668e4268f02999f553e0e829f8fbb0d10 100644 --- a/net/minecraft/world/entity/monster/MagmaCube.java +++ b/net/minecraft/world/entity/monster/MagmaCube.java @@ -75,6 +75,13 @@ public class MagmaCube extends Slime { @@ -923,7 +923,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 aa292ec60655cc9419da2a744c8cb841ddbc40e1..db1ce88d5289aa8432bafce099e3c73230681f76 100644 +index c7d52c623d8616209ab742b69838beed156d80de..628fc869f5b4c33dfb2daf1e35db7c5df8aa28fd 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 { @@ -941,7 +941,7 @@ index aa292ec60655cc9419da2a744c8cb841ddbc40e1..db1ce88d5289aa8432bafce099e3c732 public boolean isFlapping() { return (this.getUniqueFlapTickOffset() + this.tickCount) % TICKS_PER_FLAP == 0; diff --git a/net/minecraft/world/entity/monster/Pillager.java b/net/minecraft/world/entity/monster/Pillager.java -index faaf42a029b1a0423c5e10ee3e17e4ba0e70be02..2ed473468032bb6edbd03882b5f5405b90a2f0f4 100644 +index 1aa2f744b0d875fb874cf23a0601fee48ead66c2..8bc07bbf713ebd3afc8c0e62c92b5e11fb424307 100644 --- a/net/minecraft/world/entity/monster/Pillager.java +++ b/net/minecraft/world/entity/monster/Pillager.java @@ -96,6 +96,13 @@ public class Pillager extends AbstractIllager implements CrossbowAttackMob, Inve @@ -959,7 +959,7 @@ index faaf42a029b1a0423c5e10ee3e17e4ba0e70be02..2ed473468032bb6edbd03882b5f5405b protected void registerGoals() { super.registerGoals(); diff --git a/net/minecraft/world/entity/monster/Ravager.java b/net/minecraft/world/entity/monster/Ravager.java -index d75df6de50f9830efeea826d0ebdac17f56d4c4b..2b85cedf235e673d6030c2a649abf60b5792b242 100644 +index 5d7f6825d7bff413cac0fbf3a1d613bccd5102d6..7e137ae1bf2d2c0eae37a5ea857d4ea51d4044b7 100644 --- a/net/minecraft/world/entity/monster/Ravager.java +++ b/net/minecraft/world/entity/monster/Ravager.java @@ -108,6 +108,13 @@ public class Ravager extends Raider { @@ -977,7 +977,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 219ae068c4c17b38424af39b0c08d9e1e35fb00d..ae95ee80a8846c7daefb240f1e22aebd772a6ee9 100644 +index 21b28d1ba59656b123aef95a7e18075dae9bc236..99589855c69e76ecdfa9bb21b62e59f175b24375 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,7 +995,7 @@ index 219ae068c4c17b38424af39b0c08d9e1e35fb00d..ae95ee80a8846c7daefb240f1e22aebd 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/Silverfish.java b/net/minecraft/world/entity/monster/Silverfish.java -index 51714029d4ea5033014dcefd25f74cc0c9a72dbd..bcae390578519fef362a126fbcf2b5cfd18c3dc4 100644 +index 190312706c2e69bb0cf6e402e8e3ad7dd64b7b98..929ebc003b0dd7bea252e905fb9fa671dc54a252 100644 --- a/net/minecraft/world/entity/monster/Silverfish.java +++ b/net/minecraft/world/entity/monster/Silverfish.java @@ -73,6 +73,13 @@ public class Silverfish extends Monster { @@ -1013,7 +1013,7 @@ 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 4c625007fdfc7525036ec0c761400b07facbb43a..44260780b36e5a20314ba4622c2a877f60df78c5 100644 +index 1ae787edeb2011afb373fb44702f8a5150ee95b1..717e34cbca2e70d80c2c9e2921d9a53cac1b3f8f 100644 --- a/net/minecraft/world/entity/monster/Skeleton.java +++ b/net/minecraft/world/entity/monster/Skeleton.java @@ -56,6 +56,13 @@ public class Skeleton extends AbstractSkeleton { @@ -1031,7 +1031,7 @@ index 4c625007fdfc7525036ec0c761400b07facbb43a..44260780b36e5a20314ba4622c2a877f 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 75a82b32c0efc1403dc9c875012739a417443c27..970105d598964194e167ad243f6e2fc2a19fba08 100644 +index f6e0ec18150f91d42f9a5b2f45e5a6e80c4ea031..97d15b759d65e32df4d780ec4850b986fcaf6ead 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 { @@ -1049,7 +1049,7 @@ index 75a82b32c0efc1403dc9c875012739a417443c27..970105d598964194e167ad243f6e2fc2 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 ed343a806be211299f03c46ed2214caed552f149..9af8dc2e82491ef27f9b99feddb96df2cabbcf07 100644 +index 5fa082b5a04d152c72f6053ca6bc4598899ca30c..ae72caa023d3df03b3458baf784dfade9e0b4ecb 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 ed343a806be211299f03c46ed2214caed552f149..9af8dc2e82491ef27f9b99feddb96df2 protected void registerGoals() { this.goalSelector.addGoal(1, new FloatGoal(this)); diff --git a/net/minecraft/world/entity/monster/Stray.java b/net/minecraft/world/entity/monster/Stray.java -index e4ae604d4d0756edc9418634d9958338997c8203..e69a5c552d2f57bc373cb2b89690a7dd9c2faefc 100644 +index 1d99432da3df434394a746f0bf4d5cc62c90dcba..dff140efcc082d828b26f4f0cbb7084a414d9faf 100644 --- a/net/minecraft/world/entity/monster/Stray.java +++ b/net/minecraft/world/entity/monster/Stray.java @@ -53,6 +53,13 @@ public class Stray extends AbstractSkeleton { @@ -1085,7 +1085,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 d64ece808045016679b74c315ffd54b10eea47b9..592095f4c78866c53745786a615f1681dcaf6bf6 100644 +index 1004aaf885268d08e68e5d2465fae2b5566a4eff..da7644dd2b9e86ec8947250ff998fb554e881161 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 { @@ -1103,7 +1103,7 @@ index d64ece808045016679b74c315ffd54b10eea47b9..592095f4c78866c53745786a615f1681 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 39f7c6ab8aa0fb0e1b472205f4849b3b10c74d81..9ecbecb2a5feed3e4cbb09c07e2c5b66f0a1c7c6 100644 +index 75681ed441e5cbb4c01a433f9757795089af234b..39d164dbc8aac355987c1725411395919ce1685f 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 39f7c6ab8aa0fb0e1b472205f4849b3b10c74d81..9ecbecb2a5feed3e4cbb09c07e2c5b66 public boolean isFlapping() { return this.tickCount % TICKS_PER_FLAP == 0; diff --git a/net/minecraft/world/entity/monster/Vindicator.java b/net/minecraft/world/entity/monster/Vindicator.java -index 28fc1cd1e8721e2a87b5aa610d27afa8df3f4074..7f70b2387842f65da4632f1a27669a02d4e0402d 100644 +index 33452593731c53f404059271b3fbb0407d75517c..e209b0ad1fa95d01387671b7dad4a347bb12ed4c 100644 --- a/net/minecraft/world/entity/monster/Vindicator.java +++ b/net/minecraft/world/entity/monster/Vindicator.java @@ -88,6 +88,13 @@ public class Vindicator extends AbstractIllager { @@ -1139,7 +1139,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 5d32cbb46b5ac9833a2a16e828b7d1915a08f3f1..1abfaf4bbb26dafc506ddf2d5449ba009364bd76 100644 +index cafdebd0fa9a7458e5adaf109b3ebd4beed7a1ef..76e051fee759ce86b3d410c250ebee31a678f459 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 { @@ -1157,7 +1157,7 @@ index 5d32cbb46b5ac9833a2a16e828b7d1915a08f3f1..1abfaf4bbb26dafc506ddf2d5449ba00 protected void registerGoals() { super.registerGoals(); diff --git a/net/minecraft/world/entity/monster/WitherSkeleton.java b/net/minecraft/world/entity/monster/WitherSkeleton.java -index 29a2d1b25c8f04691d4e34fcb3256a4f0144829d..80705c379e6bc41c6b6e4e75e6168aef17c8acf1 100644 +index 778779c79c56e2ca438ecbb82fbb16d70d312524..51e2078912991266f2dac79775b1d5701e85fe79 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 { @@ -1175,7 +1175,7 @@ index 29a2d1b25c8f04691d4e34fcb3256a4f0144829d..80705c379e6bc41c6b6e4e75e6168aef 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 5ed357158eccc48b2d1e25e06c35b7436086e7c5..e0ee4f71786dce5690cf75bb55def05c8608c8d2 100644 +index 67998321b2c47d4aaf027c5fd17cb6d01e105b6f..2632dd89d2f5661137e2c09b8cd426fc40599f69 100644 --- a/net/minecraft/world/entity/monster/Zoglin.java +++ b/net/minecraft/world/entity/monster/Zoglin.java @@ -118,6 +118,13 @@ public class Zoglin extends Monster implements HoglinBase { @@ -1193,7 +1193,7 @@ index 5ed357158eccc48b2d1e25e06c35b7436086e7c5..e0ee4f71786dce5690cf75bb55def05c 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 6e3ae67dbb9a60177f26d075d42aacce580ff956..63b29933e262115062a082dcaed0d16146a181bd 100644 +index 00e9383ad8251da600c84885c439a207c256c22a..7e13f2958f3935077fe25570567d2576f435028c 100644 --- a/net/minecraft/world/entity/monster/Zombie.java +++ b/net/minecraft/world/entity/monster/Zombie.java @@ -149,6 +149,13 @@ public class Zombie extends Monster { @@ -1211,7 +1211,7 @@ index 6e3ae67dbb9a60177f26d075d42aacce580ff956..63b29933e262115062a082dcaed0d161 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 31d8feaf5e2b84bee72796fd96502a862e573f52..f21f2c45edb5dc51154649b4406601c3c9840dfd 100644 +index 1693fbcd47cc06409ac1849475feda7b5c4e437a..ee6ce9ccace1f602772542670d02bb5a4c8a4766 100644 --- a/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/net/minecraft/world/entity/monster/ZombieVillager.java @@ -126,6 +126,13 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { @@ -1229,7 +1229,7 @@ index 31d8feaf5e2b84bee72796fd96502a862e573f52..f21f2c45edb5dc51154649b4406601c3 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 3e262c6919287ad981b1d36b7f96dd14cae8e190..1955ea6cff628234342989249de6efd1180b0999 100644 +index d43e4d29a75dd66551eb432ceec1cc3fda738364..9ee3fcc538be14f2eea8ed97eeec93b05a9cb4f2 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 { @@ -1247,7 +1247,7 @@ index 3e262c6919287ad981b1d36b7f96dd14cae8e190..1955ea6cff628234342989249de6efd1 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 a98de218d58361cce3f0cde21fbffbe9c1584701..08c3372555d098b62465437798bf6cbd08e73ec5 100644 +index 660d1f56cc74bc2a8764094d16772aace1234c15..c5f7213b91d7a533ff56e4789514b47adb791777 100644 --- a/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/net/minecraft/world/entity/monster/hoglin/Hoglin.java @@ -134,6 +134,13 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { @@ -1265,7 +1265,7 @@ index a98de218d58361cce3f0cde21fbffbe9c1584701..08c3372555d098b62465437798bf6cbd 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 6eb4a5d752835110b7ff7c817bb31f027074c6db..000391f95bf2881765c304aecb013eb313d55ba1 100644 +index 5bf58287dad04c96459982d55b5ac00646e37d53..dee71746e90f8a81e29ee35c3438219172509d6b 100644 --- a/net/minecraft/world/entity/monster/piglin/Piglin.java +++ b/net/minecraft/world/entity/monster/piglin/Piglin.java @@ -168,6 +168,13 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento @@ -1283,7 +1283,7 @@ index 6eb4a5d752835110b7ff7c817bb31f027074c6db..000391f95bf2881765c304aecb013eb3 protected void addAdditionalSaveData(ValueOutput output) { super.addAdditionalSaveData(output); diff --git a/net/minecraft/world/entity/monster/piglin/PiglinBrute.java b/net/minecraft/world/entity/monster/piglin/PiglinBrute.java -index f4893cc54d7f144025da0057beedb3a974c80dc1..70ee15527fa6f30783d6a58bb767b18124f25c53 100644 +index e988a65cbd1f71f488fa8221ef11b6b1a05dc554..ebe1b4e0b841906684561151919a5b3f6e206b60 100644 --- a/net/minecraft/world/entity/monster/piglin/PiglinBrute.java +++ b/net/minecraft/world/entity/monster/piglin/PiglinBrute.java @@ -97,6 +97,13 @@ public class PiglinBrute extends AbstractPiglin { @@ -1301,7 +1301,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 08f6c4ca51177290bc80103d8ebd7087c41be954..dda4563b0f0d6f0d1a0ccd64a4ec787bf27abf2d 100644 +index 810494826a7b600941f3087f114064e157ba88e6..0ab9ac120703285baa563391653323c17d05b20b 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 @@ -1319,10 +1319,10 @@ index 08f6c4ca51177290bc80103d8ebd7087c41be954..dda4563b0f0d6f0d1a0ccd64a4ec787b 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 a23b8788db33625df43940a26de8dffdb91d5d2d..1b86f903a1ef71465635ea04ed34832bf59ff6b5 100644 +index 6e5f5711b729b41f5221fb7e7d0c8dad57f790ca..75d8e6d3e89959785fb2c187ec804bb53dba72d1 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 +@@ -105,6 +105,13 @@ public class WanderingTrader extends AbstractVillager implements Consumable.Over } // Purpur end - Toggle for water sensitive mob damage diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/gametest/framework/TestCommand.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/gametest/framework/TestCommand.java.patch index 8b3c66a9b..c9f48d7e7 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/gametest/framework/TestCommand.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/gametest/framework/TestCommand.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/gametest/framework/TestCommand.java +++ b/net/minecraft/gametest/framework/TestCommand.java -@@ -452,7 +_,7 @@ +@@ -443,7 +_,7 @@ ) ) ); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/network/Connection.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/network/Connection.java.patch index 6b808c0fd..a205f1711 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/network/Connection.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/network/Connection.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/network/Connection.java +++ b/net/minecraft/network/Connection.java -@@ -580,11 +_,20 @@ +@@ -578,11 +_,20 @@ private static final int MAX_PER_TICK = io.papermc.paper.configuration.GlobalConfiguration.get().misc.maxJoinsPerTick; // Paper - Buffer joins to world private static int joinAttemptsThisTick; // Paper - Buffer joins to world private static int currTick; // Paper - Buffer joins to world diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/MinecraftServer.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/MinecraftServer.java.patch index 3f4f05a12..697b829bb 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/MinecraftServer.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/MinecraftServer.java.patch @@ -17,15 +17,15 @@ // Paper start - improve tick loop public final ca.spottedleaf.moonrise.common.time.TickData tickTimes1s = new ca.spottedleaf.moonrise.common.time.TickData(java.util.concurrent.TimeUnit.SECONDS.toNanos(1L)); public final ca.spottedleaf.moonrise.common.time.TickData tickTimes5s = new ca.spottedleaf.moonrise.common.time.TickData(java.util.concurrent.TimeUnit.SECONDS.toNanos(5L)); -@@ -353,6 +_,7 @@ - final long now = System.nanoTime(); +@@ -370,6 +_,7 @@ + public double[] computeTPS() { final long interval = this.tickRateManager().nanosecondsPerTick(); return new double[] { -+ getTPS(this.tickTimes5s, now, interval), // Purpur - Add 5 second tps average in /tps - getTPS(this.tickTimes1m, now, interval), - getTPS(this.tickTimes5m, now, interval), - getTPS(this.tickTimes15m, now, interval) -@@ -993,6 +_,15 @@ ++ getTPS(this.tickTimes5s, interval), // Purpur - Add 5 second tps average in /tps + getTPS(this.tickTimes1m, interval), + getTPS(this.tickTimes5m, interval), + getTPS(this.tickTimes15m, interval) +@@ -1012,6 +_,15 @@ LOGGER.info("Stopping server"); Commands.COMMAND_SENDING_POOL.shutdownNow(); // Paper - Perf: Async command map building; Shutdown and don't bother finishing @@ -41,7 +41,7 @@ // CraftBukkit start if (this.server != null) { this.server.spark.disable(); // Paper - spark -@@ -1091,6 +_,8 @@ +@@ -1110,6 +_,8 @@ this.safeShutdown(waitForShutdown, false); } public void safeShutdown(boolean waitForShutdown, boolean isRestarting) { @@ -50,7 +50,7 @@ this.isRestarting = isRestarting; this.hasLoggedStop = true; // Paper - Debugging if (isDebugging()) io.papermc.paper.util.TraceUtil.dumpTraceForThread("Server stopped"); // Paper - Debugging -@@ -1274,6 +_,16 @@ +@@ -1293,6 +_,16 @@ } // Paper end - Add onboarding message for initial server start @@ -67,7 +67,7 @@ while (this.running) { final long tickStart = System.nanoTime(); // Paper - improve tick loop long l; // Paper - improve tick loop - diff on change, expect this to be tick interval -@@ -1287,8 +_,10 @@ +@@ -1306,8 +_,10 @@ final long ticksBehind = Math.max(1L, this.tickSchedule.getPeriodsAhead(l, tickStart)); final long catchup = (long)Math.max( 1, @@ -79,7 +79,7 @@ // adjust ticksBehind so that it is not greater-than catchup if (ticksBehind > catchup) { -@@ -1759,7 +_,7 @@ +@@ -1778,7 +_,7 @@ long worldTime = level.getGameTime(); final ClientboundSetTimePacket worldPacket = new ClientboundSetTimePacket(worldTime, dayTime, doDaylight); for (Player entityhuman : level.players()) { @@ -88,7 +88,7 @@ continue; } ServerPlayer entityplayer = (ServerPlayer) entityhuman; -@@ -1931,7 +_,7 @@ +@@ -1950,7 +_,7 @@ @DontObfuscate public String getServerModName() { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/commands/GameModeCommand.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/commands/GameModeCommand.java.patch index 135ee41ef..4890d3ff6 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/commands/GameModeCommand.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/commands/GameModeCommand.java.patch @@ -3,11 +3,11 @@ @@ -53,6 +_,18 @@ } - private static int setMode(CommandContext source, Collection players, GameType gameType) { + private static int setMode(CommandContext context, Collection players, GameType gameType) { + // Purpur start - Gamemode extra permissions + if (org.purpurmc.purpur.PurpurConfig.commandGamemodeRequiresPermission) { + String gamemode = gameType.getName(); -+ CommandSourceStack sender = source.getSource(); ++ CommandSourceStack sender = context.getSource(); + if (!sender.testPermission(2, "minecraft.command.gamemode." + gamemode)) { + return 0; + } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerLevel.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerLevel.java.patch index c970d6b50..f845335e8 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerLevel.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerLevel.java.patch @@ -15,7 +15,7 @@ this.server = server; - this.customSpawners = customSpawners; + this.customSpawners = new ArrayList<>(); // Purpur - Allow toggling special MobSpawners per world - this.serverLevelData = levelData; + this.serverLevelData = serverLevelData; + // Purpur start - Allow toggling special MobSpawners per world + if (purpurConfig.phantomSpawning) { + this.customSpawners.add(new net.minecraft.world.level.levelgen.PhantomSpawner()); @@ -145,14 +145,14 @@ } else { org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockFormEvent(this, heightmapPos, Blocks.SNOW.defaultBlockState(), 3, null); // CraftBukkit @@ -1050,7 +_,7 @@ - holder -> holder.is(PoiTypes.LIGHTNING_ROD), - blockPos -> blockPos.getY() == this.getHeight(Heightmap.Types.WORLD_SURFACE, blockPos.getX(), blockPos.getZ()) - 1, + poiType -> poiType.is(PoiTypes.LIGHTNING_ROD), + pos1 -> pos1.getY() == this.getHeight(Heightmap.Types.WORLD_SURFACE, pos1.getX(), pos1.getZ()) - 1, pos, - 128, + org.purpurmc.purpur.PurpurConfig.lightningRodRange, // Purpur - Make lightning rod range configurable PoiManager.Occupancy.ANY ); - return optional.map(blockPos -> blockPos.above(1)); + return optional.map(pos1 -> pos1.above(1)); @@ -1099,8 +_,26 @@ int _int = this.getGameRules().getInt(GameRules.RULE_PLAYERS_SLEEPING_PERCENTAGE); Component component; @@ -196,7 +196,7 @@ this.serverLevelData.setThundering(false, org.bukkit.event.weather.ThunderChangeEvent.Cause.SLEEP); // Paper - Add cause to Weather/ThunderChangeEvents // CraftBukkit start // If we stop due to everyone sleeping we should reset the weather duration to some other random value. -@@ -2804,7 +_,7 @@ +@@ -2794,7 +_,7 @@ // Spigot start if (entity.getBukkitEntity() instanceof org.bukkit.inventory.InventoryHolder && (!(entity instanceof ServerPlayer) || entity.getRemovalReason() != Entity.RemovalReason.KILLED)) { // SPIGOT-6876: closeInventory clears death message // Paper start - Fix merchant inventory not closing on entity removal diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch index c0dafb608..b50049a18 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch @@ -123,8 +123,8 @@ + // Purpur end - Component related conveniences + @Override - public void displayClientMessage(Component chatComponent, boolean actionBar) { - this.sendSystemMessage(chatComponent, actionBar); + public void displayClientMessage(Component message, boolean overlay) { + this.sendSystemMessage(message, overlay); @@ -2327,6 +_,20 @@ ); } @@ -143,8 +143,8 @@ + } + // Purpur end - Component related conveniences + - public void sendSystemMessage(Component mesage) { - this.sendSystemMessage(mesage, false); + public void sendSystemMessage(Component message) { + this.sendSystemMessage(message, false); } @@ -2465,7 +_,67 @@ @@ -215,7 +215,7 @@ public ServerStatsCounter getStats() { return this.stats; -@@ -3107,4 +_,56 @@ +@@ -3109,4 +_,56 @@ return (org.bukkit.craftbukkit.entity.CraftPlayer) super.getBukkitEntity(); } // CraftBukkit end diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayerGameMode.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayerGameMode.java.patch index 7d321b55c..cb452991d 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayerGameMode.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayerGameMode.java.patch @@ -26,8 +26,8 @@ if (interactionResult.consumesAction()) { CriteriaTriggers.ITEM_USED_ON_BLOCK.trigger(player, blockPos, itemStack); @@ -573,4 +_,18 @@ - public void setLevel(ServerLevel serverLevel) { - this.level = serverLevel; + public void setLevel(ServerLevel level) { + this.level = level; } + + // Purpur start - Shift right click to use exp for mending diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/players/PlayerList.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/players/PlayerList.java.patch index ab3717684..c407cb56c 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/players/PlayerList.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/players/PlayerList.java.patch @@ -37,7 +37,7 @@ public void broadcastAll(Packet packet, ResourceKey dimension) { for (ServerPlayer serverPlayer : this.players) { if (serverPlayer.level().dimension() == dimension) { -@@ -906,6 +_,7 @@ +@@ -904,6 +_,7 @@ } else { b = (byte)(24 + permLevel); } @@ -45,7 +45,7 @@ player.connection.send(new ClientboundEntityEventPacket(player, b)); } -@@ -918,7 +_,7 @@ +@@ -916,7 +_,7 @@ // Paper start - whitelist verify event / login event public LoginResult canBypassFullServerLogin(final NameAndId nameAndId, final LoginResult currentResult) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/CombatRules.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/CombatRules.java.patch index a70c7a253..45e676e4b 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/CombatRules.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/CombatRules.java.patch @@ -2,19 +2,19 @@ +++ b/net/minecraft/world/damagesource/CombatRules.java @@ -15,7 +_,7 @@ - public static float getDamageAfterAbsorb(LivingEntity entity, float damage, DamageSource damageSource, float armorValue, float armorToughness) { + public static float getDamageAfterAbsorb(LivingEntity entity, float damageAmount, DamageSource damageSource, float armorValue, float armorToughness) { float f = 2.0F + armorToughness / 4.0F; -- float f1 = Mth.clamp(armorValue - damage / f, armorValue * 0.2F, 20.0F); -+ float f1 = Mth.clamp(armorValue - damage / f, armorValue * 0.2F, org.purpurmc.purpur.PurpurConfig.limitArmor ? 20F : Float.MAX_VALUE); // Purpur - Add attribute clamping and armor limit config +- float f1 = Mth.clamp(armorValue - damageAmount / f, armorValue * 0.2F, 20.0F); ++ float f1 = Mth.clamp(armorValue - damageAmount / f, armorValue * 0.2F, org.purpurmc.purpur.PurpurConfig.limitArmor ? 20F : Float.MAX_VALUE); // Purpur - Add attribute clamping and armor limit config float f2 = f1 / 25.0F; ItemStack weaponItem = damageSource.getWeaponItem(); float f3; @@ -30,7 +_,7 @@ } - public static float getDamageAfterMagicAbsorb(float damage, float enchantModifiers) { + public static float getDamageAfterMagicAbsorb(float damageAmount, float enchantModifiers) { - float f = Mth.clamp(enchantModifiers, 0.0F, 20.0F); + float f = Mth.clamp(enchantModifiers, 0.0F, org.purpurmc.purpur.PurpurConfig.limitArmor ? 20F : Float.MAX_VALUE); // Purpur - Add attribute clamping and armor limit config - return damage * (1.0F - f / 25.0F); + return damageAmount * (1.0F - f / 25.0F); } } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch index e67daad17..8696af1b1 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch @@ -48,10 +48,10 @@ + } + // Purpur end - Add canSaveToDisk to Entity + - public Entity(EntityType entityType, Level level) { - this.type = entityType; + public Entity(EntityType type, Level level) { + this.type = type; this.level = level; - this.dimensions = entityType.getDimensions(); + this.dimensions = type.getDimensions(); + // Purpur start - Add toggle for RNG manipulation + this.random = level == null || level.purpurConfig.entitySharedRandom ? SHARED_RANDOM : RandomSource.create(); + this.uuid = Mth.createInsecureUUID(this.random); @@ -99,7 +99,7 @@ } catch (Throwable var7) { CrashReport crashReport = CrashReport.forThrowable(var7, "Loading entity NBT"); CrashReportCategory crashReportCategory = crashReport.addCategory("Entity being loaded"); -@@ -3035,6 +_,7 @@ +@@ -3034,6 +_,7 @@ if (this.isAlive() && this instanceof Leashable leashable2) { if (leashable2.getLeashHolder() == player) { if (!this.level().isClientSide()) { @@ -107,7 +107,7 @@ // Paper start - EntityUnleashEvent if (!org.bukkit.craftbukkit.event.CraftEventFactory.handlePlayerUnleashEntityEvent( leashable2, player, hand, !player.hasInfiniteMaterials(), true -@@ -3459,15 +_,18 @@ +@@ -3458,15 +_,18 @@ return Vec3.directionFromRotation(this.getRotationVector()); } @@ -127,7 +127,7 @@ } } } -@@ -3672,7 +_,7 @@ +@@ -3671,7 +_,7 @@ } public int getMaxAirSupply() { @@ -136,7 +136,7 @@ } public int getAirSupply() { -@@ -4234,7 +_,7 @@ +@@ -4233,7 +_,7 @@ // CraftBukkit end public boolean canUsePortal(boolean allowPassengers) { @@ -145,7 +145,7 @@ } public boolean canTeleport(Level fromLevel, Level toLevel) { -@@ -4749,6 +_,12 @@ +@@ -4748,6 +_,12 @@ return Mth.lerp(partialTick, this.yRotO, this.yRot); } @@ -158,7 +158,7 @@ // Paper start - optimise collisions public boolean updateFluidHeightAndDoFluidPushing(final TagKey fluid, final double flowScale) { if (this.touchingUnloadedChunk()) { -@@ -5166,7 +_,7 @@ +@@ -5165,7 +_,7 @@ } public float maxUpStep() { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/EntityType.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/EntityType.java.patch index 60feaf4c3..74c515ef2 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/EntityType.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/EntityType.java.patch @@ -17,7 +17,7 @@ public static ResourceLocation getKey(EntityType entityType) { return BuiltInRegistries.ENTITY_TYPE.getKey(entityType); } -@@ -1442,6 +_,16 @@ +@@ -1444,6 +_,16 @@ return this.category; } @@ -34,7 +34,7 @@ public String getDescriptionId() { return this.descriptionId; } -@@ -1501,7 +_,11 @@ +@@ -1503,7 +_,11 @@ entity.load(input); }, // Paper end - Don't fire sync event during generation diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/GlowSquid.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/GlowSquid.java.patch index 384908afc..0eb1de991 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/GlowSquid.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/GlowSquid.java.patch @@ -1,7 +1,7 @@ --- a/net/minecraft/world/entity/GlowSquid.java +++ b/net/minecraft/world/entity/GlowSquid.java @@ -27,6 +_,13 @@ - super(entityType, level); + super(type, level); } + // Purpur start - Flying squids! Oh my! diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/LivingEntity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/LivingEntity.java.patch index b02896f09..5bd962719 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/LivingEntity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/LivingEntity.java.patch @@ -137,7 +137,7 @@ final org.bukkit.inventory.EquipmentSlot handSlot = (hand != null) ? org.bukkit.craftbukkit.CraftEquipmentSlot.getHand(hand) : null; final EntityResurrectEvent event = new EntityResurrectEvent((org.bukkit.entity.LivingEntity) this.getBukkitEntity(), handSlot); event.setCancelled(itemStack == null); -@@ -1914,6 +_,7 @@ +@@ -1920,6 +_,7 @@ boolean flag = this.lastHurtByPlayerMemoryTime > 0; this.dropEquipment(level); // CraftBukkit - from below if (this.shouldDropLoot(level)) { @@ -145,7 +145,7 @@ this.dropFromLootTable(level, damageSource, flag); // Paper start final boolean prev = this.clearEquipmentSlots; -@@ -1922,6 +_,7 @@ +@@ -1928,6 +_,7 @@ // Paper end this.dropCustomDeathLoot(level, damageSource, flag); this.clearEquipmentSlots = prev; // Paper @@ -153,7 +153,7 @@ } // CraftBukkit start - Call death event // Paper start - call advancement triggers with correct entity equipment -@@ -3140,6 +_,7 @@ +@@ -3146,6 +_,7 @@ float f = (float)(d * 10.0 - 3.0); if (f > 0.0F) { this.playSound(this.getFallDamageSound((int)f), 1.0F, 1.0F); @@ -161,7 +161,7 @@ this.hurt(this.damageSources().flyIntoWall(), f); } } -@@ -4539,6 +_,12 @@ +@@ -4545,6 +_,12 @@ ? slot == EquipmentSlot.MAINHAND && this.canUseSlot(EquipmentSlot.MAINHAND) : slot == equippable.slot() && this.canUseSlot(equippable.slot()) && equippable.canBeEquippedBy(this.getType()); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Mob.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Mob.java.patch index dd8776b00..a5a989368 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Mob.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Mob.java.patch @@ -6,8 +6,8 @@ public net.kyori.adventure.util.TriState despawnInPeacefulOverride = net.kyori.adventure.util.TriState.NOT_SET; // Paper - allow changing despawnInPeaceful + public int ticksSinceLastInteraction; // Purpur - Entity lifespan - protected Mob(EntityType entityType, Level level) { - super(entityType, level); + protected Mob(EntityType type, Level level) { + super(type, level); @@ -295,6 +_,7 @@ target = null; } @@ -44,7 +44,7 @@ + // Purpur end - Entity lifespan @Override - protected void playHurtSound(DamageSource source) { + protected void playHurtSound(DamageSource damageSource) { @@ -443,6 +_,7 @@ output.putString("Paper.DespawnInPeacefulOverride", this.despawnInPeacefulOverride.name()); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Animal.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Animal.java.patch index 69e701551..bd095422e 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Animal.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Animal.java.patch @@ -10,15 +10,15 @@ this.usePlayerItem(player, hand, itemInHand); this.setInLove(serverPlayer, breedCopy); // Paper - Fix EntityBreedEvent copying @@ -223,10 +_,20 @@ - public void spawnChildFromBreeding(ServerLevel level, Animal mate) { - AgeableMob breedOffspring = this.getBreedOffspring(level, mate); + public void spawnChildFromBreeding(ServerLevel level, Animal partner) { + AgeableMob breedOffspring = this.getBreedOffspring(level, partner); if (breedOffspring != null) { - breedOffspring.setBaby(true); - breedOffspring.snapTo(this.getX(), this.getY(), this.getZ(), 0.0F, 0.0F); + //breedOffspring.setBaby(true); // Purpur - Add adjustable breeding cooldown to config - moved down + //breedOffspring.snapTo(this.getX(), this.getY(), this.getZ(), 0.0F, 0.0F); // Purpur - Add adjustable breeding cooldown to config - moved down // CraftBukkit start - Call EntityBreedEvent - ServerPlayer breeder = Optional.ofNullable(this.getLoveCause()).or(() -> Optional.ofNullable(mate.getLoveCause())).orElse(null); + ServerPlayer breeder = Optional.ofNullable(this.getLoveCause()).or(() -> Optional.ofNullable(partner.getLoveCause())).orElse(null); + // Purpur start - Add adjustable breeding cooldown to config + if (breeder != null && level.purpurConfig.animalBreedingCooldownSeconds > 0) { + if (level.hasBreedingCooldown(breeder.getUUID(), this.getClass())) { @@ -30,5 +30,5 @@ + breedOffspring.snapTo(this.getX(), this.getY(), this.getZ(), 0.0F, 0.0F); + // Purpur end - Add adjustable breeding cooldown to config int experience = this.getRandom().nextInt(7) + 1; - org.bukkit.event.entity.EntityBreedEvent entityBreedEvent = org.bukkit.craftbukkit.event.CraftEventFactory.callEntityBreedEvent(breedOffspring, this, mate, breeder, this.breedItem, experience); + org.bukkit.event.entity.EntityBreedEvent entityBreedEvent = org.bukkit.craftbukkit.event.CraftEventFactory.callEntityBreedEvent(breedOffspring, this, partner, breeder, this.breedItem, experience); if (entityBreedEvent.isCancelled()) { 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 index 022c7eaff..fa8da0b6c 100644 --- 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 @@ -9,7 +9,7 @@ this.setPathfindingMalus(PathType.WATER_BORDER, 16.0F); this.setPathfindingMalus(PathType.COCOA, -1.0F); this.setPathfindingMalus(PathType.FENCE, -1.0F); -@@ -368,7 +_,7 @@ +@@ -366,7 +_,7 @@ } public static boolean isNightOrRaining(Level level) { @@ -18,7 +18,7 @@ } public void setStayOutOfHiveCountdown(int stayOutOfHiveCountdown) { -@@ -391,7 +_,7 @@ +@@ -389,7 +_,7 @@ @Override protected void customServerAiStep(ServerLevel level) { boolean hasStung = this.hasStung(); @@ -27,7 +27,7 @@ this.underWaterTicks++; } else { this.underWaterTicks = 0; -@@ -401,6 +_,7 @@ +@@ -399,6 +_,7 @@ this.hurtServer(level, this.damageSources().drown(), 1.0F); } @@ -35,7 +35,7 @@ if (hasStung) { this.timeSinceSting++; if (this.timeSinceSting % 5 == 0 && this.random.nextInt(Mth.clamp(1200 - this.timeSinceSting, 1, 1200)) == 0) { -@@ -1140,6 +_,7 @@ +@@ -1138,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); @@ -43,7 +43,7 @@ return true; } else { Bee.this.remainingCooldownBeforeLocatingNewFlower = Mth.nextInt(Bee.this.random, 20, 60); -@@ -1186,6 +_,7 @@ +@@ -1184,6 +_,7 @@ this.pollinating = false; Bee.this.navigation.stop(); Bee.this.remainingCooldownBeforeLocatingNewFlower = 200; @@ -51,7 +51,7 @@ } @Override -@@ -1232,6 +_,7 @@ +@@ -1230,6 +_,7 @@ this.setWantedPos(); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Dolphin.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Dolphin.java.patch index 0e09ac94d..548eb7512 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Dolphin.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Dolphin.java.patch @@ -6,8 +6,8 @@ public BlockPos treasurePos; + private boolean isNaturallyAggressiveToPlayers; // Purpur - Dolphins naturally aggressive to players chance - public Dolphin(EntityType entityType, Level level) { - super(entityType, level); + public Dolphin(EntityType type, Level level) { + super(type, level); @@ -90,6 +_,7 @@ this.setAirSupply(this.getMaxAirSupply()); this.setXRot(0.0F); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/IronGolem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/IronGolem.java.patch index 322e86a71..1d05bc69c 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/IronGolem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/IronGolem.java.patch @@ -6,8 +6,8 @@ private UUID persistentAngerTarget; + @Nullable private UUID summoner; // Purpur - Summoner API - public IronGolem(EntityType entityType, Level level) { - super(entityType, level); + public IronGolem(EntityType type, Level level) { + super(type, level); } + // Purpur start - Summoner API diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/MushroomCow.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/MushroomCow.java.patch index a92ea3a0e..0d13e703a 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/MushroomCow.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/MushroomCow.java.patch @@ -1,7 +1,7 @@ --- a/net/minecraft/world/entity/animal/MushroomCow.java +++ b/net/minecraft/world/entity/animal/MushroomCow.java @@ -201,6 +_,13 @@ - level.playSound(null, this, SoundEvents.MOOSHROOM_SHEAR, soundSource, 1.0F, 1.0F); + level.playSound(null, this, SoundEvents.MOOSHROOM_SHEAR, source, 1.0F, 1.0F); this.convertTo(EntityType.COW, ConversionParams.single(this, false, false), cow -> { level.sendParticles(ParticleTypes.EXPLOSION, this.getX(), this.getY(0.5), this.getZ(), 1, 0.0, 0.0, 0.0, 0.0); + // Purpur start - Fix cow rotation when shearing mooshroom 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 index c515b3a4c..8f9a8dcf1 100644 --- 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 @@ -44,7 +44,7 @@ @Nullable @Override - public AgeableMob getBreedOffspring(ServerLevel level, AgeableMob otherParent) { + public AgeableMob getBreedOffspring(ServerLevel level, AgeableMob partner) { - return null; + return level.purpurConfig.parrotBreedable ? EntityType.PARROT.create(level, EntitySpawnReason.BREEDING) : null; // Purpur - Breedable parrots } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/PolarBear.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/PolarBear.java.patch index 869d2910f..ddfcd11a4 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/PolarBear.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/PolarBear.java.patch @@ -1,7 +1,7 @@ --- a/net/minecraft/world/entity/animal/PolarBear.java +++ b/net/minecraft/world/entity/animal/PolarBear.java @@ -65,6 +_,29 @@ - super(entityType, level); + super(type, level); } + // Purpur start - Breedable Polar Bears @@ -29,7 +29,7 @@ + @Nullable @Override - public AgeableMob getBreedOffspring(ServerLevel level, AgeableMob otherParent) { + public AgeableMob getBreedOffspring(ServerLevel level, AgeableMob partner) { @@ -73,7 +_,7 @@ @Override diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/SnowGolem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/SnowGolem.java.patch index a3cb9e147..d25fc3092 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/SnowGolem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/SnowGolem.java.patch @@ -6,8 +6,8 @@ private static final boolean DEFAULT_PUMPKIN = true; + @Nullable private java.util.UUID summoner; // Purpur - Summoner API - public SnowGolem(EntityType entityType, Level level) { - super(entityType, level); + public SnowGolem(EntityType type, Level level) { + super(type, level); } + // Purpur start - Summoner API diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Squid.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Squid.java.patch index 83c0aed86..89574a219 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Squid.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/Squid.java.patch @@ -2,9 +2,9 @@ +++ b/net/minecraft/world/entity/animal/Squid.java @@ -46,10 +_,29 @@ - public Squid(EntityType entityType, Level level) { - super(entityType, level); -- //this.random.setSeed(this.getId()); // Paper - Share random for entities to make them more random + public Squid(EntityType type, Level level) { + super(type, level); +- // this.random.setSeed(this.getId()); // Paper - Share random for entities to make them more random + if (!level.purpurConfig.entitySharedRandom) this.random.setSeed(this.getId()); // Paper - Share random for entities to make them more random // Purpur - Add toggle for RNG manipulation this.tentacleSpeed = 1.0F / (this.random.nextFloat() + 1.0F) * 0.2F; } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/coppergolem/CopperGolem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/coppergolem/CopperGolem.java.patch index aa9cfe0bc..26bd84af0 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/coppergolem/CopperGolem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/coppergolem/CopperGolem.java.patch @@ -6,8 +6,8 @@ public static final EquipmentSlot EQUIPMENT_SLOT_ANTENNA = EquipmentSlot.SADDLE; + @Nullable private UUID summoner; // Purpur - Summoner API - public CopperGolem(EntityType entityType, Level level) { - super(entityType, level); + public CopperGolem(EntityType type, Level level) { + super(type, level); @@ -97,6 +_,17 @@ this.getBrain().setMemory(MemoryModuleType.TRANSPORT_ITEMS_COOLDOWN_TICKS, this.getRandom().nextInt(60, 100)); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/coppergolem/CopperGolemAi.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/coppergolem/CopperGolemAi.java.patch index d5f2652c4..38a91059c 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/coppergolem/CopperGolemAi.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/coppergolem/CopperGolemAi.java.patch @@ -3,9 +3,9 @@ @@ -43,7 +_,7 @@ private static final int TICK_TO_START_ON_REACHED_INTERACTION = 1; private static final int TICK_TO_PLAY_ON_REACHED_SOUND = 9; - private static final Predicate TRANSPORT_ITEM_SOURCE_BLOCK = blockState -> blockState.is(BlockTags.COPPER_CHESTS); -- private static final Predicate TRANSPORT_ITEM_DESTINATION_BLOCK = blockState -> blockState.is(Blocks.CHEST) -+ private static final Predicate TRANSPORT_ITEM_DESTINATION_BLOCK = blockState -> blockState.is(Blocks.CHEST) // Purpur - copper golem can place items in barrels option - diff on change - || blockState.is(Blocks.TRAPPED_CHEST); + private static final Predicate TRANSPORT_ITEM_SOURCE_BLOCK = state -> state.is(BlockTags.COPPER_CHESTS); +- private static final Predicate TRANSPORT_ITEM_DESTINATION_BLOCK = state -> state.is(Blocks.CHEST) || state.is(Blocks.TRAPPED_CHEST); ++ private static final Predicate TRANSPORT_ITEM_DESTINATION_BLOCK = state -> state.is(Blocks.CHEST) || state.is(Blocks.TRAPPED_CHEST); // Purpur - copper golem can place items in barrels option - diff on change private static final ImmutableList>> SENSOR_TYPES = ImmutableList.of( SensorType.NEAREST_LIVING_ENTITIES, SensorType.HURT_BY + ); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/horse/Llama.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/horse/Llama.java.patch index 3a614d8c8..2dde9c392 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/horse/Llama.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/animal/horse/Llama.java.patch @@ -3,12 +3,12 @@ @@ -78,6 +_,7 @@ private Llama caravanHead; @Nullable - public Llama caravanTail; // Paper + public Llama caravanTail; // Paper - public + public boolean shouldJoinCaravan = true; // Purpur - Llama API - public Llama(EntityType entityType, Level level) { - super(entityType, level); -@@ -112,6 +_,7 @@ + public Llama(EntityType type, Level level) { + super(type, level); +@@ -107,6 +_,7 @@ super.addAdditionalSaveData(output); output.store("Variant", Llama.Variant.LEGACY_CODEC, this.getVariant()); output.putInt("Strength", this.getStrength()); @@ -16,7 +16,7 @@ } @Override -@@ -119,6 +_,7 @@ +@@ -114,6 +_,7 @@ this.setStrength(input.getIntOr("Strength", 0)); super.readAdditionalSaveData(input); this.setVariant(input.read("Variant", Llama.Variant.LEGACY_CODEC).orElse(Llama.Variant.DEFAULT)); @@ -24,7 +24,7 @@ } @Override -@@ -400,6 +_,7 @@ +@@ -395,6 +_,7 @@ public void leaveCaravan() { if (this.caravanHead != null) { @@ -32,7 +32,7 @@ this.caravanHead.caravanTail = null; } -@@ -407,6 +_,7 @@ +@@ -402,6 +_,7 @@ } public void joinCaravan(Llama caravanHead) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/wither/WitherBoss.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/wither/WitherBoss.java.patch index ae41b8b7c..177964f06 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/wither/WitherBoss.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/boss/wither/WitherBoss.java.patch @@ -6,8 +6,8 @@ private static final TargetingConditions TARGETING_CONDITIONS = TargetingConditions.forCombat().range(20.0).selector(LIVING_ENTITY_SELECTOR); + @Nullable private java.util.UUID summoner; // Purpur - Summoner API - public WitherBoss(EntityType entityType, Level level) { - super(entityType, level); + public WitherBoss(EntityType type, Level level) { + super(type, level); @@ -87,6 +_,17 @@ this.xpReward = 50; } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/decoration/ArmorStand.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/decoration/ArmorStand.java.patch index 8a3b604f5..a4a86eb95 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/decoration/ArmorStand.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/decoration/ArmorStand.java.patch @@ -6,8 +6,8 @@ // Paper end - Allow ArmorStands not to tick + public boolean canMovementTick = true; // Purpur - Movement options for armor stands - public ArmorStand(EntityType entityType, Level level) { - super(entityType, level); + public ArmorStand(EntityType type, Level level) { + super(type, level); if (level != null) this.canTick = level.paperConfig().entities.armorStands.tick; // Paper - Allow ArmorStands not to tick + if (level != null) this.canMovementTick = level.purpurConfig.armorstandMovement; // Purpur - Movement options for armor stands + this.setShowArms(level != null && level.purpurConfig.armorstandPlaceWithArms); // Purpur - Config to show Armor Stand arms on spawn diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/item/ItemEntity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/item/ItemEntity.java.patch index 0015b2465..6b6f90ef3 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/item/ItemEntity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/item/ItemEntity.java.patch @@ -11,8 +11,8 @@ + public boolean immuneToLightning = false; + // Purpur end - Item entity immunities - public ItemEntity(EntityType entityType, Level level) { - super(entityType, level); + public ItemEntity(EntityType type, Level level) { + super(type, level); @@ -333,7 +_,16 @@ @Override diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Creeper.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Creeper.java.patch index 2a52be3b0..616f3be1d 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Creeper.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Creeper.java.patch @@ -2,12 +2,12 @@ +++ b/net/minecraft/world/entity/monster/Creeper.java @@ -56,6 +_,7 @@ public int explosionRadius = 3; - private boolean droppedSkulls; + public boolean droppedSkulls; public @Nullable Entity entityIgniter; // CraftBukkit + private boolean exploding = false; // Purpur - Config to make Creepers explode on death - public Creeper(EntityType entityType, Level level) { - super(entityType, level); + public Creeper(EntityType type, Level level) { + super(type, level); @@ -159,6 +_,27 @@ return false; // CraftBukkit } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Endermite.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Endermite.java.patch index b8e9ee681..a399138fa 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Endermite.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/Endermite.java.patch @@ -6,8 +6,8 @@ public int life = 0; + private boolean isPlayerSpawned; // Purpur - Add back player spawned endermite API - public Endermite(EntityType entityType, Level level) { - super(entityType, level); + public Endermite(EntityType type, Level level) { + super(type, level); this.xpReward = 3; } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/ZombifiedPiglin.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/ZombifiedPiglin.java.patch index cd7502ad9..b090f4bb2 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/ZombifiedPiglin.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/monster/ZombifiedPiglin.java.patch @@ -19,10 +19,10 @@ } + + // Purpur start - Toggle for Zombified Piglin death always counting as player kill when angry -+ if (livingEntity instanceof Player player && this.level().purpurConfig.zombifiedPiglinCountAsPlayerKillWhenAngry) { ++ if (target instanceof Player player && this.level().purpurConfig.zombifiedPiglinCountAsPlayerKillWhenAngry) { + this.setLastHurtByPlayer(player, this.tickCount); + } + // Purpur end - Toggle for Zombified Piglin death always counting as player kill when angry - return super.setTarget(livingEntity, reason); // CraftBukkit + return super.setTarget(target, reason); // CraftBukkit } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/Villager.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/Villager.java.patch index 9d36ed4a4..93d2e733a 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/Villager.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/Villager.java.patch @@ -7,8 +7,8 @@ + private boolean isLobotomized = false; public boolean isLobotomized() { return this.isLobotomized; } // Purpur - Lobotomize stuck villagers + private int notLobotomizedCount = 0; // Purpur - Lobotomize stuck villagers - public Villager(EntityType entityType, Level level) { - this(entityType, level, VillagerType.PLAINS); + public Villager(EntityType type, Level level) { + this(type, level, VillagerType.PLAINS); @@ -196,6 +_,57 @@ this.setVillagerData(this.getVillagerData().withType(villagerType).withProfession(level.registryAccess(), VillagerProfession.NONE)); } @@ -121,11 +121,11 @@ @@ -922,6 +_,7 @@ } - public void spawnGolemIfNeeded(ServerLevel serverLevel, long gameTime, int minVillagerAmount) { -+ if (serverLevel.purpurConfig.villagerSpawnIronGolemRadius > 0 && serverLevel.getEntitiesOfClass(net.minecraft.world.entity.animal.IronGolem.class, getBoundingBox().inflate(serverLevel.purpurConfig.villagerSpawnIronGolemRadius)).size() > serverLevel.purpurConfig.villagerSpawnIronGolemLimit) return; // Purpur - Implement configurable search radius for villagers to spawn iron golems + public void spawnGolemIfNeeded(ServerLevel level, long gameTime, int minVillagerAmount) { ++ if (level.purpurConfig.villagerSpawnIronGolemRadius > 0 && level.getEntitiesOfClass(net.minecraft.world.entity.animal.IronGolem.class, getBoundingBox().inflate(level.purpurConfig.villagerSpawnIronGolemRadius)).size() > level.purpurConfig.villagerSpawnIronGolemLimit) return; // Purpur - Implement configurable search radius for villagers to spawn iron golems if (this.wantsToSpawnGolem(gameTime)) { AABB aabb = this.getBoundingBox().inflate(10.0, 10.0, 10.0); - List entitiesOfClass = serverLevel.getEntitiesOfClass(Villager.class, aabb); + List entitiesOfClass = level.getEntitiesOfClass(Villager.class, aabb); @@ -989,6 +_,12 @@ @Override diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/WanderingTrader.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/WanderingTrader.java.patch index 0c82ef476..cb6fcbacd 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/WanderingTrader.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/WanderingTrader.java.patch @@ -1,7 +1,7 @@ --- a/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/net/minecraft/world/entity/npc/WanderingTrader.java @@ -60,6 +_,13 @@ - super(entityType, level); + super(type, level); } + // Purpur start - Allow leashing villagers diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/AbstractArrow.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/AbstractArrow.java.patch index e5078d28c..0ac5f2c2e 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/AbstractArrow.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/AbstractArrow.java.patch @@ -6,9 +6,9 @@ public ItemStack firedFromWeapon = null; + public net.minecraft.world.item.enchantment.ItemEnchantments actualEnchantments = net.minecraft.world.item.enchantment.ItemEnchantments.EMPTY; // Purpur - Add an option to fix MC-3304 projectile looting - protected AbstractArrow(EntityType entityType, Level level) { - super(entityType, level); -@@ -350,7 +_,7 @@ + protected AbstractArrow(EntityType type, Level level) { + super(type, level); +@@ -344,7 +_,7 @@ this.setInGround(false); Vec3 deltaMovement = this.getDeltaMovement(); this.setDeltaMovement(deltaMovement.multiply(this.random.nextFloat() * 0.2F, this.random.nextFloat() * 0.2F, this.random.nextFloat() * 0.2F)); @@ -17,7 +17,7 @@ } public boolean isInGround() { -@@ -574,6 +_,12 @@ +@@ -568,6 +_,12 @@ public ItemStack getWeaponItem() { return this.firedFromWeapon; } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/ThrownTrident.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/ThrownTrident.java.patch index cb2639bfb..7b1c6ed02 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/ThrownTrident.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/projectile/ThrownTrident.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/entity/projectile/ThrownTrident.java +++ b/net/minecraft/world/entity/projectile/ThrownTrident.java -@@ -66,7 +_,7 @@ +@@ -69,7 +_,7 @@ Entity owner = this.getOwner(); int i = this.entityData.get(ID_LOYALTY); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AbstractFurnaceMenu.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AbstractFurnaceMenu.java.patch index 1626289f6..41fe20831 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AbstractFurnaceMenu.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/AbstractFurnaceMenu.java.patch @@ -1,7 +1,7 @@ --- a/net/minecraft/world/inventory/AbstractFurnaceMenu.java +++ b/net/minecraft/world/inventory/AbstractFurnaceMenu.java @@ -121,7 +_,13 @@ - } else if (index != 1 && index != 0) { + } else if (slotIndex != 1 && slotIndex != 0) { if (this.canSmelt(item)) { if (!this.moveItemStackTo(item, 0, 1, false)) { - return ItemStack.EMPTY; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/EnchantmentMenu.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/EnchantmentMenu.java.patch index b6a6515d1..4996e388d 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/EnchantmentMenu.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/EnchantmentMenu.java.patch @@ -44,8 +44,8 @@ @Override public void removed(Player player) { super.removed(player); -- this.access.execute((level, blockPos) -> this.clearContainer(player, this.enchantSlots)); -+ this.access.execute((level, blockPos) -> {if (level.purpurConfig.enchantmentTableLapisPersists) this.getSlot(1).set(ItemStack.EMPTY);this.clearContainer(player, this.enchantSlots);}); // Purpur - Enchantment Table Persists Lapis +- this.access.execute((level, pos) -> this.clearContainer(player, this.enchantSlots)); ++ this.access.execute((level, pos) -> {if (level.purpurConfig.enchantmentTableLapisPersists) this.getSlot(1).set(ItemStack.EMPTY);this.clearContainer(player, this.enchantSlots);}); // Purpur - Enchantment Table Persists Lapis } @Override diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/ItemCombinerMenu.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/ItemCombinerMenu.java.patch index 9899e30a5..e674780eb 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/ItemCombinerMenu.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/ItemCombinerMenu.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/inventory/ItemCombinerMenu.java +++ b/net/minecraft/world/inventory/ItemCombinerMenu.java -@@ -156,7 +_,9 @@ +@@ -155,7 +_,9 @@ return ItemStack.EMPTY; } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/MapItem.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/MapItem.java.patch index e4abe0ae9..26cb87e2f 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/MapItem.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/MapItem.java.patch @@ -1,10 +1,10 @@ --- a/net/minecraft/world/item/MapItem.java +++ b/net/minecraft/world/item/MapItem.java @@ -194,6 +_,7 @@ - public static void renderBiomePreviewMap(ServerLevel serverLevel, ItemStack stack) { - MapItemSavedData savedData = getSavedData(stack, serverLevel); + public static void renderBiomePreviewMap(ServerLevel level, ItemStack stack) { + MapItemSavedData savedData = getSavedData(stack, level); if (savedData != null) { + savedData.isExplorerMap = true; // Purpur - Explorer Map API - if (serverLevel.dimension() == savedData.dimension) { + if (level.dimension() == savedData.dimension) { int i = 1 << savedData.scale; int i1 = savedData.centerX; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/Block.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/Block.java.patch index 9139c8898..85f668c68 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/Block.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/Block.java.patch @@ -24,17 +24,17 @@ public static void dropResources(BlockState state, LevelAccessor level, BlockPos pos, @Nullable BlockEntity blockEntity) { if (level instanceof ServerLevel) { -- getDrops(state, (ServerLevel)level, pos, blockEntity).forEach(itemStack -> popResource((ServerLevel)level, pos, itemStack)); -+ getDrops(state, (ServerLevel)level, pos, blockEntity).forEach(itemStack -> popResource((ServerLevel)level, pos, applyLoreFromTile(itemStack, blockEntity))); // Purpur - Persistent BlockEntity Lore and DisplayName +- getDrops(state, (ServerLevel)level, pos, blockEntity).forEach(stack -> popResource((ServerLevel)level, pos, stack)); ++ getDrops(state, (ServerLevel)level, pos, blockEntity).forEach(stack -> popResource((ServerLevel)level, pos, applyLoreFromTile(stack, blockEntity))); // Purpur - Persistent BlockEntity Lore and DisplayName state.spawnAfterBreak((ServerLevel)level, pos, ItemStack.EMPTY, true); } } @@ -414,11 +_,30 @@ public static void dropResources(BlockState state, Level level, BlockPos pos, @Nullable BlockEntity blockEntity, @Nullable Entity entity, ItemStack tool, boolean dropExperience) { - // Paper end - Properly handle xp dropping + // Paper end - Properly handle xp dropping if (level instanceof ServerLevel) { -- getDrops(state, (ServerLevel)level, pos, blockEntity, entity, tool).forEach(itemStack -> popResource(level, pos, itemStack)); -+ getDrops(state, (ServerLevel)level, pos, blockEntity, entity, tool).forEach(itemStack -> popResource(level, pos, applyLoreFromTile(itemStack, blockEntity))); // Purpur - Persistent BlockEntity Lore and DisplayName +- getDrops(state, (ServerLevel)level, pos, blockEntity, entity, tool).forEach(stack -> popResource(level, pos, stack)); ++ getDrops(state, (ServerLevel)level, pos, blockEntity, entity, tool).forEach(stack -> popResource(level, pos, applyLoreFromTile(stack, blockEntity))); // Purpur - Persistent BlockEntity Lore and DisplayName state.spawnAfterBreak((ServerLevel)level, pos, tool, dropExperience); // Paper - Properly handle xp dropping } } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BubbleColumnBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BubbleColumnBlock.java.patch index 4fedaf17a..6d57a3ee0 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BubbleColumnBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BubbleColumnBlock.java.patch @@ -1,14 +1,14 @@ --- a/net/minecraft/world/level/block/BubbleColumnBlock.java +++ b/net/minecraft/world/level/block/BubbleColumnBlock.java -@@ -100,9 +_,9 @@ - if (blockState.is(Blocks.BUBBLE_COLUMN)) { - return blockState; - } else if (blockState.is(Blocks.SOUL_SAND)) { +@@ -99,9 +_,9 @@ + if (state.is(Blocks.BUBBLE_COLUMN)) { + return state; + } else if (state.is(Blocks.SOUL_SAND)) { - return Blocks.BUBBLE_COLUMN.defaultBlockState().setValue(DRAG_DOWN, false); + return Blocks.BUBBLE_COLUMN.defaultBlockState().setValue(DRAG_DOWN, org.purpurmc.purpur.PurpurConfig.soulSandBlockReverseBubbleColumnFlow); // Purpur - Config to reverse bubble column flow } else { -- return blockState.is(Blocks.MAGMA_BLOCK) ? Blocks.BUBBLE_COLUMN.defaultBlockState().setValue(DRAG_DOWN, true) : Blocks.WATER.defaultBlockState(); -+ return blockState.is(Blocks.MAGMA_BLOCK) ? Blocks.BUBBLE_COLUMN.defaultBlockState().setValue(DRAG_DOWN, !org.purpurmc.purpur.PurpurConfig.magmaBlockReverseBubbleColumnFlow) : Blocks.WATER.defaultBlockState(); // Purpur - Config to reverse bubble column flow +- return state.is(Blocks.MAGMA_BLOCK) ? Blocks.BUBBLE_COLUMN.defaultBlockState().setValue(DRAG_DOWN, true) : Blocks.WATER.defaultBlockState(); ++ return state.is(Blocks.MAGMA_BLOCK) ? Blocks.BUBBLE_COLUMN.defaultBlockState().setValue(DRAG_DOWN, !org.purpurmc.purpur.PurpurConfig.magmaBlockReverseBubbleColumnFlow) : Blocks.WATER.defaultBlockState(); // Purpur - Config to reverse bubble column flow } } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CropBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CropBlock.java.patch index 5a3916155..cd0927a8e 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CropBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/CropBlock.java.patch @@ -2,7 +2,7 @@ +++ b/net/minecraft/world/level/block/CropBlock.java @@ -169,7 +_,7 @@ @Override - protected void entityInside(BlockState state, Level level, BlockPos pos, Entity entity, InsideBlockEffectApplier effectApplier, boolean flag) { + protected void entityInside(BlockState state, Level level, BlockPos pos, Entity entity, InsideBlockEffectApplier effectApplier, boolean pastEdges) { if (!new io.papermc.paper.event.entity.EntityInsideBlockEvent(entity.getBukkitEntity(), org.bukkit.craftbukkit.block.CraftBlock.at(level, pos)).callEvent()) { return; } // Paper - Add EntityInsideBlockEvent - if (level instanceof ServerLevel serverLevel && entity instanceof Ravager && org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.AIR.defaultBlockState(), !serverLevel.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING))) { // CraftBukkit + if (level instanceof ServerLevel serverLevel && entity instanceof Ravager && serverLevel.purpurConfig.ravagerGriefableBlocks.contains(serverLevel.getBlockState(pos).getBlock()) && org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.AIR.defaultBlockState(), !serverLevel.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING))) { // CraftBukkit // Purpur - Configurable ravager griefable blocks list diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/LiquidBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/LiquidBlock.java.patch index b3bd142bd..449e5e6c6 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/LiquidBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/LiquidBlock.java.patch @@ -3,13 +3,13 @@ @@ -138,7 +_,7 @@ @Override - protected void onPlace(BlockState state, Level level, BlockPos pos, BlockState oldState, boolean isMoving) { + protected void onPlace(BlockState state, Level level, BlockPos pos, BlockState oldState, boolean movedByPiston) { - if (this.shouldSpreadLiquid(level, pos, state)) { + if (level.purpurConfig.tickFluids && this.shouldSpreadLiquid(level, pos, state)) { // Purpur - Tick fluids config level.scheduleTick(pos, state.getFluidState().getType(), this.getFlowSpeed(level, pos)); // Paper - Configurable speed for water flowing over lava } } -@@ -173,7 +_,7 @@ +@@ -175,7 +_,7 @@ BlockState neighborState, RandomSource random ) { @@ -18,7 +18,7 @@ scheduledTickAccess.scheduleTick(pos, state.getFluidState().getType(), this.fluid.getTickDelay(level)); } -@@ -182,7 +_,7 @@ +@@ -184,7 +_,7 @@ @Override protected void neighborChanged(BlockState state, Level level, BlockPos pos, Block neighborBlock, @Nullable Orientation orientation, boolean movedByPiston) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java.patch index 117a0b2fe..e2aa6cdd5 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java.patch @@ -44,7 +44,7 @@ public void clearBees() { this.stored.clear(); @@ -397,8 +_,8 @@ - registration.register(DebugSubscriptions.BEE_HIVES, () -> DebugHiveInfo.pack(this)); + registrar.register(DebugSubscriptions.BEE_HIVES, () -> DebugHiveInfo.pack(this)); } - static class BeeData { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java.patch index 7939ae661..53c5cc2ab 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/EnchantingTableBlockEntity.java.patch @@ -6,8 +6,8 @@ private Component name; + private int lapis = 0; // Purpur - Enchantment Table Persists Lapis - public EnchantingTableBlockEntity(BlockPos pos, BlockState state) { - super(BlockEntityType.ENCHANTING_TABLE, pos, state); + public EnchantingTableBlockEntity(BlockPos pos, BlockState blockState) { + super(BlockEntityType.ENCHANTING_TABLE, pos, blockState); @@ -40,12 +_,14 @@ protected void saveAdditional(ValueOutput output) { super.saveAdditional(output); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/FlowingFluid.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/FlowingFluid.java.patch index 8779d84d5..f174b46a5 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/FlowingFluid.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/FlowingFluid.java.patch @@ -20,5 +20,5 @@ + } + // Purpur end - Implement infinite liquids - protected void spreadTo(LevelAccessor level, BlockPos pos, BlockState blockState, Direction direction, FluidState fluidState) { - if (blockState.getBlock() instanceof LiquidBlockContainer liquidBlockContainer) { + protected void spreadTo(LevelAccessor level, BlockPos pos, BlockState state, Direction direction, FluidState fluidState) { + if (state.getBlock() instanceof LiquidBlockContainer liquidBlockContainer) {