Updated Upstream (Paper)

Upstream has released updates that appears to apply and compile correctly

Paper Changes:
a6ac47e5 Fix numerous item duplication issues and teleport issues
b7402f11 Add phantom creative and insomniac controls (#3222)
75819fac Fix Potion#toItemStack swapping the extended and upgraded constructor values (#3216)
This commit is contained in:
William Blake Galbreath
2020-04-25 15:48:09 -05:00
parent 6daa61aea9
commit 8ec7d99ec0
108 changed files with 642 additions and 746 deletions

View File

@@ -1,4 +1,4 @@
From f28759eebeaaab8c588d7ff5ede57a1a84330cfd Mon Sep 17 00:00:00 2001
From 316bdb85e6f5f5596abc3d5cd031d2f307b83871 Mon Sep 17 00:00:00 2001
From: William Blake Galbreath <Blake.Galbreath@GMail.com>
Date: Thu, 6 Feb 2020 19:53:59 -0600
Subject: [PATCH] Ridables
@@ -115,7 +115,7 @@ Subject: [PATCH] Ridables
create mode 100644 src/main/java/net/pl3x/purpur/pathfinder/PathfinderGoalHasRider.java
diff --git a/src/main/java/net/minecraft/server/AxisAlignedBB.java b/src/main/java/net/minecraft/server/AxisAlignedBB.java
index 3fdb5200..7e67292c 100644
index 3fdb52007..7e67292c2 100644
--- a/src/main/java/net/minecraft/server/AxisAlignedBB.java
+++ b/src/main/java/net/minecraft/server/AxisAlignedBB.java
@@ -104,6 +104,7 @@ public class AxisAlignedBB {
@@ -135,7 +135,7 @@ index 3fdb5200..7e67292c 100644
return this.grow(d0, d0, d0);
}
diff --git a/src/main/java/net/minecraft/server/ControllerLookDolphin.java b/src/main/java/net/minecraft/server/ControllerLookDolphin.java
index 1d9ba04d..2bade947 100644
index 1d9ba04da..2bade947e 100644
--- a/src/main/java/net/minecraft/server/ControllerLookDolphin.java
+++ b/src/main/java/net/minecraft/server/ControllerLookDolphin.java
@@ -1,6 +1,6 @@
@@ -156,7 +156,7 @@ index 1d9ba04d..2bade947 100644
this.d = false;
this.a.aK = this.a(this.a.aK, this.h() + 20.0F, this.b);
diff --git a/src/main/java/net/minecraft/server/ControllerMove.java b/src/main/java/net/minecraft/server/ControllerMove.java
index a5c4cbb6..efe6afde 100644
index a5c4cbb67..efe6afde9 100644
--- a/src/main/java/net/minecraft/server/ControllerMove.java
+++ b/src/main/java/net/minecraft/server/ControllerMove.java
@@ -6,9 +6,9 @@ public class ControllerMove {
@@ -173,7 +173,7 @@ index a5c4cbb6..efe6afde 100644
public ControllerMove(EntityInsentient entityinsentient) {
diff --git a/src/main/java/net/minecraft/server/DamageSource.java b/src/main/java/net/minecraft/server/DamageSource.java
index 816d301f..f7344d3a 100644
index 816d301f1..f7344d3ae 100644
--- a/src/main/java/net/minecraft/server/DamageSource.java
+++ b/src/main/java/net/minecraft/server/DamageSource.java
@@ -57,6 +57,7 @@ public class DamageSource {
@@ -198,7 +198,7 @@ index 816d301f..f7344d3a 100644
this.C = true;
return this;
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index f973466b..e368fbc5 100644
index a69969f46..46d802a2f 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -79,7 +79,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -272,7 +272,7 @@ index f973466b..e368fbc5 100644
public void a(float f, Vec3D vec3d) {
Vec3D vec3d1 = a(vec3d, f, this.yaw);
@@ -2161,7 +2165,13 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -2162,7 +2166,13 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
} else {
this.passengers.add(entity);
}
@@ -287,7 +287,7 @@ index f973466b..e368fbc5 100644
}
return true; // CraftBukkit
}
@@ -2196,6 +2206,12 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -2197,6 +2207,12 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
return false;
}
// Spigot end
@@ -300,7 +300,7 @@ index f973466b..e368fbc5 100644
this.passengers.remove(entity);
entity.j = 60;
}
@@ -2364,6 +2380,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -2365,6 +2381,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
this.setFlag(4, flag);
}
@@ -308,7 +308,7 @@ index f973466b..e368fbc5 100644
public boolean bt() {
return this.glowing || this.world.isClientSide && this.getFlag(6);
}
@@ -2582,6 +2599,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -2583,6 +2600,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
public void setHeadRotation(float f) {}
@@ -316,7 +316,7 @@ index f973466b..e368fbc5 100644
public void l(float f) {}
public boolean bA() {
@@ -3428,4 +3446,43 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -3435,4 +3453,43 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
void accept(Entity entity, double d0, double d1, double d2);
}
@@ -361,7 +361,7 @@ index f973466b..e368fbc5 100644
+ // Purpur end
}
diff --git a/src/main/java/net/minecraft/server/EntityAgeable.java b/src/main/java/net/minecraft/server/EntityAgeable.java
index 3d27f096..822316a6 100644
index 3d27f0964..822316a65 100644
--- a/src/main/java/net/minecraft/server/EntityAgeable.java
+++ b/src/main/java/net/minecraft/server/EntityAgeable.java
@@ -86,7 +86,7 @@ public abstract class EntityAgeable extends EntityCreature {
@@ -374,7 +374,7 @@ index 3d27f096..822316a6 100644
}
diff --git a/src/main/java/net/minecraft/server/EntityBat.java b/src/main/java/net/minecraft/server/EntityBat.java
index 34239160..592408ba 100644
index 34239160b..592408bac 100644
--- a/src/main/java/net/minecraft/server/EntityBat.java
+++ b/src/main/java/net/minecraft/server/EntityBat.java
@@ -14,9 +14,44 @@ public class EntityBat extends EntityAmbient {
@@ -465,7 +465,7 @@ index 34239160..592408ba 100644
+ // Purpur end
}
diff --git a/src/main/java/net/minecraft/server/EntityBee.java b/src/main/java/net/minecraft/server/EntityBee.java
index dd1d246a..f0f83baa 100644
index dd1d246ae..f0f83baac 100644
--- a/src/main/java/net/minecraft/server/EntityBee.java
+++ b/src/main/java/net/minecraft/server/EntityBee.java
@@ -36,9 +36,7 @@ public class EntityBee extends EntityAnimal implements EntityBird {
@@ -646,7 +646,7 @@ index dd1d246a..f0f83baa 100644
+ // Purpur end
}
diff --git a/src/main/java/net/minecraft/server/EntityBlaze.java b/src/main/java/net/minecraft/server/EntityBlaze.java
index da6a3fa2..d02130e0 100644
index da6a3fa2c..d02130e0d 100644
--- a/src/main/java/net/minecraft/server/EntityBlaze.java
+++ b/src/main/java/net/minecraft/server/EntityBlaze.java
@@ -10,6 +10,7 @@ public class EntityBlaze extends EntityMonster {
@@ -736,7 +736,7 @@ index da6a3fa2..d02130e0 100644
if (this.c <= 0) {
this.c = 100;
diff --git a/src/main/java/net/minecraft/server/EntityCat.java b/src/main/java/net/minecraft/server/EntityCat.java
index b3bdc194..8b9222d7 100644
index b3bdc194a..8b9222d77 100644
--- a/src/main/java/net/minecraft/server/EntityCat.java
+++ b/src/main/java/net/minecraft/server/EntityCat.java
@@ -42,6 +42,23 @@ public class EntityCat extends EntityTameableAnimal {
@@ -830,7 +830,7 @@ index b3bdc194..8b9222d7 100644
@Override
diff --git a/src/main/java/net/minecraft/server/EntityCaveSpider.java b/src/main/java/net/minecraft/server/EntityCaveSpider.java
index 23ced2c7..5b86b36f 100644
index 23ced2c7b..5b86b36f6 100644
--- a/src/main/java/net/minecraft/server/EntityCaveSpider.java
+++ b/src/main/java/net/minecraft/server/EntityCaveSpider.java
@@ -8,6 +8,23 @@ public class EntityCaveSpider extends EntitySpider {
@@ -858,7 +858,7 @@ index 23ced2c7..5b86b36f 100644
protected void initAttributes() {
super.initAttributes();
diff --git a/src/main/java/net/minecraft/server/EntityChicken.java b/src/main/java/net/minecraft/server/EntityChicken.java
index 65795fc8..5505b7ee 100644
index 65795fc89..5505b7ee9 100644
--- a/src/main/java/net/minecraft/server/EntityChicken.java
+++ b/src/main/java/net/minecraft/server/EntityChicken.java
@@ -17,9 +17,27 @@ public class EntityChicken extends EntityAnimal {
@@ -898,7 +898,7 @@ index 65795fc8..5505b7ee 100644
this.forceDrops = true; // CraftBukkit
this.a((IMaterial) Items.EGG);
diff --git a/src/main/java/net/minecraft/server/EntityCod.java b/src/main/java/net/minecraft/server/EntityCod.java
index 1e378212..0153a821 100644
index 1e3782122..0153a821e 100644
--- a/src/main/java/net/minecraft/server/EntityCod.java
+++ b/src/main/java/net/minecraft/server/EntityCod.java
@@ -6,6 +6,23 @@ public class EntityCod extends EntityFishSchool {
@@ -926,7 +926,7 @@ index 1e378212..0153a821 100644
protected ItemStack l() {
return new ItemStack(Items.COD_BUCKET);
diff --git a/src/main/java/net/minecraft/server/EntityComplexPart.java b/src/main/java/net/minecraft/server/EntityComplexPart.java
index a0b35c86..144e89f2 100644
index a0b35c869..144e89f22 100644
--- a/src/main/java/net/minecraft/server/EntityComplexPart.java
+++ b/src/main/java/net/minecraft/server/EntityComplexPart.java
@@ -47,4 +47,11 @@ public class EntityComplexPart extends Entity {
@@ -942,7 +942,7 @@ index a0b35c86..144e89f2 100644
+ // Purpur end
}
diff --git a/src/main/java/net/minecraft/server/EntityCow.java b/src/main/java/net/minecraft/server/EntityCow.java
index 2c8bbf20..723a9fa1 100644
index 2c8bbf20a..723a9fa1e 100644
--- a/src/main/java/net/minecraft/server/EntityCow.java
+++ b/src/main/java/net/minecraft/server/EntityCow.java
@@ -11,9 +11,27 @@ public class EntityCow extends EntityAnimal {
@@ -974,7 +974,7 @@ index 2c8bbf20..723a9fa1 100644
this.goalSelector.a(2, new PathfinderGoalBreed(this, 1.0D));
this.goalSelector.a(3, new PathfinderGoalTempt(this, 1.25D, RecipeItemStack.a(Items.WHEAT), false));
diff --git a/src/main/java/net/minecraft/server/EntityCreeper.java b/src/main/java/net/minecraft/server/EntityCreeper.java
index 45dfc810..48fd8e71 100644
index 45dfc8104..48fd8e716 100644
--- a/src/main/java/net/minecraft/server/EntityCreeper.java
+++ b/src/main/java/net/minecraft/server/EntityCreeper.java
@@ -23,16 +23,35 @@ public class EntityCreeper extends EntityMonster {
@@ -1090,7 +1090,7 @@ index 45dfc810..48fd8e71 100644
+ // Purpur end
}
diff --git a/src/main/java/net/minecraft/server/EntityDolphin.java b/src/main/java/net/minecraft/server/EntityDolphin.java
index ce78586e..81570b37 100644
index ce78586ea..81570b37b 100644
--- a/src/main/java/net/minecraft/server/EntityDolphin.java
+++ b/src/main/java/net/minecraft/server/EntityDolphin.java
@@ -1,5 +1,12 @@
@@ -1241,7 +1241,7 @@ index ce78586e..81570b37 100644
this.i.setMot(this.i.getMot().add(0.0D, 0.005D, 0.0D));
}
diff --git a/src/main/java/net/minecraft/server/EntityDrowned.java b/src/main/java/net/minecraft/server/EntityDrowned.java
index 77885f67..63f5969b 100644
index 77885f67f..63f5969b1 100644
--- a/src/main/java/net/minecraft/server/EntityDrowned.java
+++ b/src/main/java/net/minecraft/server/EntityDrowned.java
@@ -19,6 +19,23 @@ public class EntityDrowned extends EntityZombie implements IRangedEntity {
@@ -1304,7 +1304,7 @@ index 77885f67..63f5969b 100644
@Override
diff --git a/src/main/java/net/minecraft/server/EntityEnderDragon.java b/src/main/java/net/minecraft/server/EntityEnderDragon.java
index 2887cb14..a6a79f5e 100644
index 2887cb14e..a6a79f5e9 100644
--- a/src/main/java/net/minecraft/server/EntityEnderDragon.java
+++ b/src/main/java/net/minecraft/server/EntityEnderDragon.java
@@ -46,6 +46,7 @@ public class EntityEnderDragon extends EntityInsentient implements IMonster {
@@ -1461,7 +1461,7 @@ index 2887cb14..a6a79f5e 100644
@Override
diff --git a/src/main/java/net/minecraft/server/EntityEnderman.java b/src/main/java/net/minecraft/server/EntityEnderman.java
index 212636dc..de30ce48 100644
index 212636dcb..de30ce483 100644
--- a/src/main/java/net/minecraft/server/EntityEnderman.java
+++ b/src/main/java/net/minecraft/server/EntityEnderman.java
@@ -27,9 +27,27 @@ public class EntityEnderman extends EntityMonster {
@@ -1560,7 +1560,7 @@ index 212636dc..de30ce48 100644
if (iblockdata2 != null && this.a(world, blockposition, iblockdata2, iblockdata, iblockdata1, blockposition1)) {
// CraftBukkit start - Place event
diff --git a/src/main/java/net/minecraft/server/EntityEndermite.java b/src/main/java/net/minecraft/server/EntityEndermite.java
index e4bd2796..5eaf1920 100644
index e4bd2796a..5eaf1920b 100644
--- a/src/main/java/net/minecraft/server/EntityEndermite.java
+++ b/src/main/java/net/minecraft/server/EntityEndermite.java
@@ -12,13 +12,32 @@ public class EntityEndermite extends EntityMonster {
@@ -1597,7 +1597,7 @@ index e4bd2796..5eaf1920 100644
this.targetSelector.a(2, new PathfinderGoalNearestAttackableTarget<>(this, EntityHuman.class, true));
}
diff --git a/src/main/java/net/minecraft/server/EntityEvoker.java b/src/main/java/net/minecraft/server/EntityEvoker.java
index b030fe95..179a2612 100644
index b030fe957..179a26129 100644
--- a/src/main/java/net/minecraft/server/EntityEvoker.java
+++ b/src/main/java/net/minecraft/server/EntityEvoker.java
@@ -12,10 +12,28 @@ public class EntityEvoker extends EntityIllagerWizard {
@@ -1662,7 +1662,7 @@ index b030fe95..179a2612 100644
@Override
diff --git a/src/main/java/net/minecraft/server/EntityFish.java b/src/main/java/net/minecraft/server/EntityFish.java
index b853fd0d..b8d786fa 100644
index b853fd0d9..b8d786fad 100644
--- a/src/main/java/net/minecraft/server/EntityFish.java
+++ b/src/main/java/net/minecraft/server/EntityFish.java
@@ -72,9 +72,10 @@ public abstract class EntityFish extends EntityWaterAnimal {
@@ -1716,7 +1716,7 @@ index b853fd0d..b8d786fa 100644
this.i.setMot(this.i.getMot().add(0.0D, 0.005D, 0.0D));
}
diff --git a/src/main/java/net/minecraft/server/EntityFox.java b/src/main/java/net/minecraft/server/EntityFox.java
index 82a32d5d..4f53090d 100644
index 82a32d5db..4f53090d3 100644
--- a/src/main/java/net/minecraft/server/EntityFox.java
+++ b/src/main/java/net/minecraft/server/EntityFox.java
@@ -55,6 +55,23 @@ public class EntityFox extends EntityAnimal {
@@ -1854,7 +1854,7 @@ index 82a32d5d..4f53090d 100644
}
diff --git a/src/main/java/net/minecraft/server/EntityGhast.java b/src/main/java/net/minecraft/server/EntityGhast.java
index e1c2540d..46841df7 100644
index e1c2540d1..46841df71 100644
--- a/src/main/java/net/minecraft/server/EntityGhast.java
+++ b/src/main/java/net/minecraft/server/EntityGhast.java
@@ -14,11 +14,47 @@ public class EntityGhast extends EntityFlying implements IMonster {
@@ -1937,7 +1937,7 @@ index e1c2540d..46841df7 100644
if (this.j-- <= 0) {
this.j += this.i.getRandom().nextInt(5) + 2;
diff --git a/src/main/java/net/minecraft/server/EntityGiantZombie.java b/src/main/java/net/minecraft/server/EntityGiantZombie.java
index d9e5eaad..ff8a41a5 100644
index d9e5eaad1..ff8a41a53 100644
--- a/src/main/java/net/minecraft/server/EntityGiantZombie.java
+++ b/src/main/java/net/minecraft/server/EntityGiantZombie.java
@@ -4,8 +4,33 @@ public class EntityGiantZombie extends EntityMonster {
@@ -1975,7 +1975,7 @@ index d9e5eaad..ff8a41a5 100644
protected float b(EntityPose entitypose, EntitySize entitysize) {
return 10.440001F;
diff --git a/src/main/java/net/minecraft/server/EntityGuardian.java b/src/main/java/net/minecraft/server/EntityGuardian.java
index e69cb334..97040872 100644
index e69cb334f..97040872b 100644
--- a/src/main/java/net/minecraft/server/EntityGuardian.java
+++ b/src/main/java/net/minecraft/server/EntityGuardian.java
@@ -24,15 +24,39 @@ public class EntityGuardian extends EntityMonster {
@@ -2076,7 +2076,7 @@ index e69cb334..97040872 100644
Vec3D vec3d = new Vec3D(this.b - this.i.locX(), this.c - this.i.locY(), this.d - this.i.locZ());
double d0 = vec3d.f();
diff --git a/src/main/java/net/minecraft/server/EntityGuardianElder.java b/src/main/java/net/minecraft/server/EntityGuardianElder.java
index 7484bfee..f231340d 100644
index 7484bfeea..f231340d9 100644
--- a/src/main/java/net/minecraft/server/EntityGuardianElder.java
+++ b/src/main/java/net/minecraft/server/EntityGuardianElder.java
@@ -16,6 +16,23 @@ public class EntityGuardianElder extends EntityGuardian {
@@ -2104,7 +2104,7 @@ index 7484bfee..f231340d 100644
public void initAttributes() {
super.initAttributes();
diff --git a/src/main/java/net/minecraft/server/EntityHorse.java b/src/main/java/net/minecraft/server/EntityHorse.java
index a6fb4ba5..98b1e937 100644
index a6fb4ba5b..98b1e9375 100644
--- a/src/main/java/net/minecraft/server/EntityHorse.java
+++ b/src/main/java/net/minecraft/server/EntityHorse.java
@@ -19,6 +19,13 @@ public class EntityHorse extends EntityHorseAbstract {
@@ -2122,7 +2122,7 @@ index a6fb4ba5..98b1e937 100644
protected void initDatawatcher() {
super.initDatawatcher();
diff --git a/src/main/java/net/minecraft/server/EntityHorseAbstract.java b/src/main/java/net/minecraft/server/EntityHorseAbstract.java
index c56efe03..e7ba83f3 100644
index c56efe035..e7ba83f32 100644
--- a/src/main/java/net/minecraft/server/EntityHorseAbstract.java
+++ b/src/main/java/net/minecraft/server/EntityHorseAbstract.java
@@ -38,12 +38,39 @@ public abstract class EntityHorseAbstract extends EntityAnimal implements IInven
@@ -2175,7 +2175,7 @@ index c56efe03..e7ba83f3 100644
}
diff --git a/src/main/java/net/minecraft/server/EntityHorseDonkey.java b/src/main/java/net/minecraft/server/EntityHorseDonkey.java
index 9a52decd..64d80081 100644
index 9a52decdc..64d80081f 100644
--- a/src/main/java/net/minecraft/server/EntityHorseDonkey.java
+++ b/src/main/java/net/minecraft/server/EntityHorseDonkey.java
@@ -6,6 +6,13 @@ public class EntityHorseDonkey extends EntityHorseChestedAbstract {
@@ -2193,7 +2193,7 @@ index 9a52decd..64d80081 100644
protected SoundEffect getSoundAmbient() {
super.getSoundAmbient();
diff --git a/src/main/java/net/minecraft/server/EntityHorseMule.java b/src/main/java/net/minecraft/server/EntityHorseMule.java
index 4dd4d91e..a9f26efe 100644
index 4dd4d91eb..a9f26efe6 100644
--- a/src/main/java/net/minecraft/server/EntityHorseMule.java
+++ b/src/main/java/net/minecraft/server/EntityHorseMule.java
@@ -6,6 +6,13 @@ public class EntityHorseMule extends EntityHorseChestedAbstract {
@@ -2211,7 +2211,7 @@ index 4dd4d91e..a9f26efe 100644
protected SoundEffect getSoundAmbient() {
super.getSoundAmbient();
diff --git a/src/main/java/net/minecraft/server/EntityHorseSkeleton.java b/src/main/java/net/minecraft/server/EntityHorseSkeleton.java
index 290cb933..7bf76e5a 100644
index 290cb9337..7bf76e5a0 100644
--- a/src/main/java/net/minecraft/server/EntityHorseSkeleton.java
+++ b/src/main/java/net/minecraft/server/EntityHorseSkeleton.java
@@ -12,6 +12,18 @@ public class EntityHorseSkeleton extends EntityHorseAbstract {
@@ -2252,7 +2252,7 @@ index 290cb933..7bf76e5a 100644
@Override
diff --git a/src/main/java/net/minecraft/server/EntityHorseZombie.java b/src/main/java/net/minecraft/server/EntityHorseZombie.java
index 5782a25e..c87fc523 100644
index 5782a25ec..c87fc523f 100644
--- a/src/main/java/net/minecraft/server/EntityHorseZombie.java
+++ b/src/main/java/net/minecraft/server/EntityHorseZombie.java
@@ -8,6 +8,18 @@ public class EntityHorseZombie extends EntityHorseAbstract {
@@ -2282,7 +2282,7 @@ index 5782a25e..c87fc523 100644
+ protected void ez() { if (world.purpurConfig.zombieHorseCanSwim) goalSelector.a(0, new PathfinderGoalFloat(this)); } // Purpur
}
diff --git a/src/main/java/net/minecraft/server/EntityHuman.java b/src/main/java/net/minecraft/server/EntityHuman.java
index 2e186134..16ccabfd 100644
index 2e186134e..16ccabfd5 100644
--- a/src/main/java/net/minecraft/server/EntityHuman.java
+++ b/src/main/java/net/minecraft/server/EntityHuman.java
@@ -374,9 +374,21 @@ public abstract class EntityHuman extends EntityLiving {
@@ -2309,7 +2309,7 @@ index 2e186134..16ccabfd 100644
this.setSneaking(false);
} else {
diff --git a/src/main/java/net/minecraft/server/EntityIllagerIllusioner.java b/src/main/java/net/minecraft/server/EntityIllagerIllusioner.java
index 81b7cd06..3e6722cf 100644
index 81b7cd06f..3e6722cfc 100644
--- a/src/main/java/net/minecraft/server/EntityIllagerIllusioner.java
+++ b/src/main/java/net/minecraft/server/EntityIllagerIllusioner.java
@@ -19,10 +19,28 @@ public class EntityIllagerIllusioner extends EntityIllagerWizard implements IRan
@@ -2350,7 +2350,7 @@ index 81b7cd06..3e6722cf 100644
this.targetSelector.a(2, (new PathfinderGoalNearestAttackableTarget<>(this, EntityHuman.class, true)).a(300));
this.targetSelector.a(3, (new PathfinderGoalNearestAttackableTarget<>(this, EntityVillagerAbstract.class, false)).a(300));
diff --git a/src/main/java/net/minecraft/server/EntityInsentient.java b/src/main/java/net/minecraft/server/EntityInsentient.java
index 1991cee4..d0a5687f 100644
index 1991cee43..d0a5687f0 100644
--- a/src/main/java/net/minecraft/server/EntityInsentient.java
+++ b/src/main/java/net/minecraft/server/EntityInsentient.java
@@ -28,7 +28,7 @@ public abstract class EntityInsentient extends EntityLiving {
@@ -2442,7 +2442,7 @@ index 1991cee4..d0a5687f 100644
+ // Purpur end
}
diff --git a/src/main/java/net/minecraft/server/EntityIronGolem.java b/src/main/java/net/minecraft/server/EntityIronGolem.java
index 7f6a5677..288a043f 100644
index 7f6a56776..288a043fb 100644
--- a/src/main/java/net/minecraft/server/EntityIronGolem.java
+++ b/src/main/java/net/minecraft/server/EntityIronGolem.java
@@ -17,8 +17,26 @@ public class EntityIronGolem extends EntityGolem {
@@ -2497,7 +2497,7 @@ index 7f6a5677..288a043f 100644
float f1 = 1.0F + (this.random.nextFloat() - this.random.nextFloat()) * 0.2F;
diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java
index dfb9421a..53925d52 100644
index dfb9421a1..53925d526 100644
--- a/src/main/java/net/minecraft/server/EntityLiving.java
+++ b/src/main/java/net/minecraft/server/EntityLiving.java
@@ -75,7 +75,7 @@ public abstract class EntityLiving extends Entity {
@@ -2570,7 +2570,7 @@ index dfb9421a..53925d52 100644
}
diff --git a/src/main/java/net/minecraft/server/EntityLlama.java b/src/main/java/net/minecraft/server/EntityLlama.java
index 193dbfc5..7a4e64a3 100644
index 193dbfc5f..7a4e64a3d 100644
--- a/src/main/java/net/minecraft/server/EntityLlama.java
+++ b/src/main/java/net/minecraft/server/EntityLlama.java
@@ -16,8 +16,47 @@ public class EntityLlama extends EntityHorseChestedAbstract implements IRangedEn
@@ -2675,7 +2675,7 @@ index 193dbfc5..7a4e64a3 100644
return i == -1 ? null : EnumColor.fromColorIndex(i);
diff --git a/src/main/java/net/minecraft/server/EntityLlamaTrader.java b/src/main/java/net/minecraft/server/EntityLlamaTrader.java
index 4cebd67e..08c4ca3f 100644
index 4cebd67e8..08c4ca3f3 100644
--- a/src/main/java/net/minecraft/server/EntityLlamaTrader.java
+++ b/src/main/java/net/minecraft/server/EntityLlamaTrader.java
@@ -11,6 +11,23 @@ public class EntityLlamaTrader extends EntityLlama {
@@ -2716,7 +2716,7 @@ index 4cebd67e..08c4ca3f 100644
@Override
public GroupDataEntity prepare(GeneratorAccess generatoraccess, DifficultyDamageScaler difficultydamagescaler, EnumMobSpawn enummobspawn, @Nullable GroupDataEntity groupdataentity, @Nullable NBTTagCompound nbttagcompound) {
diff --git a/src/main/java/net/minecraft/server/EntityMagmaCube.java b/src/main/java/net/minecraft/server/EntityMagmaCube.java
index 1fdc248b..a5a36af2 100644
index 1fdc248ba..a5a36af21 100644
--- a/src/main/java/net/minecraft/server/EntityMagmaCube.java
+++ b/src/main/java/net/minecraft/server/EntityMagmaCube.java
@@ -8,6 +8,23 @@ public class EntityMagmaCube extends EntitySlime {
@@ -2744,7 +2744,7 @@ index 1fdc248b..a5a36af2 100644
protected void initAttributes() {
super.initAttributes();
diff --git a/src/main/java/net/minecraft/server/EntityMushroomCow.java b/src/main/java/net/minecraft/server/EntityMushroomCow.java
index 3706c31a..b20f4afd 100644
index 3706c31aa..b20f4afd3 100644
--- a/src/main/java/net/minecraft/server/EntityMushroomCow.java
+++ b/src/main/java/net/minecraft/server/EntityMushroomCow.java
@@ -20,6 +20,23 @@ public class EntityMushroomCow extends EntityCow {
@@ -2772,7 +2772,7 @@ index 3706c31a..b20f4afd 100644
public float a(BlockPosition blockposition, IWorldReader iworldreader) {
return iworldreader.getType(blockposition.down()).getBlock() == Blocks.MYCELIUM ? 10.0F : iworldreader.w(blockposition) - 0.5F;
diff --git a/src/main/java/net/minecraft/server/EntityOcelot.java b/src/main/java/net/minecraft/server/EntityOcelot.java
index d9a7b8ac..8fdf3485 100644
index d9a7b8ac1..8fdf34857 100644
--- a/src/main/java/net/minecraft/server/EntityOcelot.java
+++ b/src/main/java/net/minecraft/server/EntityOcelot.java
@@ -16,6 +16,23 @@ public class EntityOcelot extends EntityAnimal {
@@ -2815,7 +2815,7 @@ index d9a7b8ac..8fdf3485 100644
this.targetSelector.a(1, new PathfinderGoalNearestAttackableTarget<>(this, EntityTurtle.class, 10, false, false, EntityTurtle.bw));
}
diff --git a/src/main/java/net/minecraft/server/EntityPanda.java b/src/main/java/net/minecraft/server/EntityPanda.java
index f50ed190..87ed9a8c 100644
index f50ed1908..87ed9a8ca 100644
--- a/src/main/java/net/minecraft/server/EntityPanda.java
+++ b/src/main/java/net/minecraft/server/EntityPanda.java
@@ -46,6 +46,23 @@ public class EntityPanda extends EntityAnimal {
@@ -2961,7 +2961,7 @@ index f50ed190..87ed9a8c 100644
}
}
diff --git a/src/main/java/net/minecraft/server/EntityParrot.java b/src/main/java/net/minecraft/server/EntityParrot.java
index 94e57a2d..7ba2f3a3 100644
index 94e57a2d8..7ba2f3a35 100644
--- a/src/main/java/net/minecraft/server/EntityParrot.java
+++ b/src/main/java/net/minecraft/server/EntityParrot.java
@@ -62,12 +62,83 @@ public class EntityParrot extends EntityPerchable implements EntityBird {
@@ -3062,7 +3062,7 @@ index 94e57a2d..7ba2f3a3 100644
this.goalSelector.a(2, this.goalSit);
this.goalSelector.a(2, new PathfinderGoalFollowOwner(this, 1.0D, 5.0F, 1.0F, true));
diff --git a/src/main/java/net/minecraft/server/EntityPhantom.java b/src/main/java/net/minecraft/server/EntityPhantom.java
index 90eeddb1..c392085d 100644
index 96b4912c4..777bc95ee 100644
--- a/src/main/java/net/minecraft/server/EntityPhantom.java
+++ b/src/main/java/net/minecraft/server/EntityPhantom.java
@@ -22,6 +22,40 @@ public class EntityPhantom extends EntityFlying implements IMonster {
@@ -3176,7 +3176,7 @@ index 90eeddb1..c392085d 100644
if (this.c > 0) {
--this.c;
return false;
@@ -244,6 +308,7 @@ public class EntityPhantom extends EntityFlying implements IMonster {
@@ -245,6 +309,7 @@ public class EntityPhantom extends EntityFlying implements IMonster {
@Override
public boolean b() {
@@ -3184,7 +3184,7 @@ index 90eeddb1..c392085d 100644
EntityLiving entityliving = EntityPhantom.this.getGoalTarget();
return entityliving != null ? EntityPhantom.this.a(entityliving, PathfinderTargetCondition.a) : false;
@@ -258,6 +323,7 @@ public class EntityPhantom extends EntityFlying implements IMonster {
@@ -259,6 +324,7 @@ public class EntityPhantom extends EntityFlying implements IMonster {
@Override
public boolean a() {
@@ -3192,7 +3192,7 @@ index 90eeddb1..c392085d 100644
EntityLiving entityliving = EntityPhantom.this.getGoalTarget();
return entityliving != null ? EntityPhantom.this.a(EntityPhantom.this.getGoalTarget(), PathfinderTargetCondition.a) : false;
@@ -447,14 +513,23 @@ public class EntityPhantom extends EntityFlying implements IMonster {
@@ -448,14 +514,23 @@ public class EntityPhantom extends EntityFlying implements IMonster {
}
}
@@ -3218,7 +3218,7 @@ index 90eeddb1..c392085d 100644
}
class d extends EntityAIBodyControl {
@@ -470,7 +545,7 @@ public class EntityPhantom extends EntityFlying implements IMonster {
@@ -471,7 +546,7 @@ public class EntityPhantom extends EntityFlying implements IMonster {
}
}
@@ -3227,7 +3227,7 @@ index 90eeddb1..c392085d 100644
private float j = 0.1F;
@@ -479,7 +554,19 @@ public class EntityPhantom extends EntityFlying implements IMonster {
@@ -480,7 +555,19 @@ public class EntityPhantom extends EntityFlying implements IMonster {
}
@Override
@@ -3249,7 +3249,7 @@ index 90eeddb1..c392085d 100644
EntityPhantom.this.yaw += 180.0F;
this.j = 0.1F;
diff --git a/src/main/java/net/minecraft/server/EntityPig.java b/src/main/java/net/minecraft/server/EntityPig.java
index 8d277566..e6a7f8ef 100644
index 8d277566e..e6a7f8ef3 100644
--- a/src/main/java/net/minecraft/server/EntityPig.java
+++ b/src/main/java/net/minecraft/server/EntityPig.java
@@ -19,9 +19,27 @@ public class EntityPig extends EntityAnimal {
@@ -3320,7 +3320,7 @@ index 8d277566..e6a7f8ef 100644
@Override
diff --git a/src/main/java/net/minecraft/server/EntityPigZombie.java b/src/main/java/net/minecraft/server/EntityPigZombie.java
index 9dd028b5..fb9ef88e 100644
index 9dd028b55..fb9ef88ea 100644
--- a/src/main/java/net/minecraft/server/EntityPigZombie.java
+++ b/src/main/java/net/minecraft/server/EntityPigZombie.java
@@ -17,6 +17,23 @@ public class EntityPigZombie extends EntityZombie {
@@ -3348,7 +3348,7 @@ index 9dd028b5..fb9ef88e 100644
public void setLastDamager(@Nullable EntityLiving entityliving) {
super.setLastDamager(entityliving);
diff --git a/src/main/java/net/minecraft/server/EntityPillager.java b/src/main/java/net/minecraft/server/EntityPillager.java
index 0357c9da..98a657ce 100644
index 0357c9da9..98a657cec 100644
--- a/src/main/java/net/minecraft/server/EntityPillager.java
+++ b/src/main/java/net/minecraft/server/EntityPillager.java
@@ -13,15 +13,34 @@ public class EntityPillager extends EntityIllagerAbstract implements ICrossbow,
@@ -3387,7 +3387,7 @@ index 0357c9da..98a657ce 100644
this.targetSelector.a(2, new PathfinderGoalNearestAttackableTarget<>(this, EntityHuman.class, true));
this.targetSelector.a(3, new PathfinderGoalNearestAttackableTarget<>(this, EntityVillagerAbstract.class, false));
diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java
index 1d921212..8404fc4e 100644
index 1d921212c..8404fc4e3 100644
--- a/src/main/java/net/minecraft/server/EntityPlayer.java
+++ b/src/main/java/net/minecraft/server/EntityPlayer.java
@@ -1289,6 +1289,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting {
@@ -3407,7 +3407,7 @@ index 1d921212..8404fc4e 100644
@Override
diff --git a/src/main/java/net/minecraft/server/EntityPolarBear.java b/src/main/java/net/minecraft/server/EntityPolarBear.java
index f8e29a02..0a3906bd 100644
index f8e29a02d..0a3906bde 100644
--- a/src/main/java/net/minecraft/server/EntityPolarBear.java
+++ b/src/main/java/net/minecraft/server/EntityPolarBear.java
@@ -17,6 +17,23 @@ public class EntityPolarBear extends EntityAnimal {
@@ -3499,7 +3499,7 @@ index f8e29a02..0a3906bd 100644
public d() {
diff --git a/src/main/java/net/minecraft/server/EntityPufferFish.java b/src/main/java/net/minecraft/server/EntityPufferFish.java
index 98af9a22..d0e3e251 100644
index 98af9a223..d0e3e251e 100644
--- a/src/main/java/net/minecraft/server/EntityPufferFish.java
+++ b/src/main/java/net/minecraft/server/EntityPufferFish.java
@@ -17,6 +17,23 @@ public class EntityPufferFish extends EntityFish {
@@ -3536,7 +3536,7 @@ index 98af9a22..d0e3e251 100644
@Override
diff --git a/src/main/java/net/minecraft/server/EntityRabbit.java b/src/main/java/net/minecraft/server/EntityRabbit.java
index 2ed2d0b6..9040ab1c 100644
index 2ed2d0b6b..9040ab1c5 100644
--- a/src/main/java/net/minecraft/server/EntityRabbit.java
+++ b/src/main/java/net/minecraft/server/EntityRabbit.java
@@ -26,9 +26,27 @@ public class EntityRabbit extends EntityAnimal {
@@ -3691,7 +3691,7 @@ index 2ed2d0b6..9040ab1c 100644
this.d = flag;
}
diff --git a/src/main/java/net/minecraft/server/EntityRavager.java b/src/main/java/net/minecraft/server/EntityRavager.java
index fd25ce10..98d182a4 100644
index fd25ce102..98d182a4c 100644
--- a/src/main/java/net/minecraft/server/EntityRavager.java
+++ b/src/main/java/net/minecraft/server/EntityRavager.java
@@ -20,14 +20,33 @@ public class EntityRavager extends EntityRaider {
@@ -3729,7 +3729,7 @@ index fd25ce10..98d182a4 100644
this.targetSelector.a(3, new PathfinderGoalNearestAttackableTarget<>(this, EntityHuman.class, true));
this.targetSelector.a(4, new PathfinderGoalNearestAttackableTarget<>(this, EntityVillagerAbstract.class, true));
diff --git a/src/main/java/net/minecraft/server/EntitySalmon.java b/src/main/java/net/minecraft/server/EntitySalmon.java
index 6be29f30..189515b0 100644
index 6be29f307..189515b0f 100644
--- a/src/main/java/net/minecraft/server/EntitySalmon.java
+++ b/src/main/java/net/minecraft/server/EntitySalmon.java
@@ -6,6 +6,23 @@ public class EntitySalmon extends EntityFishSchool {
@@ -3757,7 +3757,7 @@ index 6be29f30..189515b0 100644
public int es() {
return 5;
diff --git a/src/main/java/net/minecraft/server/EntitySheep.java b/src/main/java/net/minecraft/server/EntitySheep.java
index d5ffdc11..d4f2642d 100644
index d5ffdc110..d4f2642d3 100644
--- a/src/main/java/net/minecraft/server/EntitySheep.java
+++ b/src/main/java/net/minecraft/server/EntitySheep.java
@@ -55,10 +55,28 @@ public class EntitySheep extends EntityAnimal {
@@ -3790,7 +3790,7 @@ index d5ffdc11..d4f2642d 100644
this.goalSelector.a(2, new PathfinderGoalBreed(this, 1.0D));
this.goalSelector.a(3, new PathfinderGoalTempt(this, 1.1D, RecipeItemStack.a(Items.WHEAT), false));
diff --git a/src/main/java/net/minecraft/server/EntityShulker.java b/src/main/java/net/minecraft/server/EntityShulker.java
index 0d2ceff6..46379588 100644
index 0d2ceff6f..46379588c 100644
--- a/src/main/java/net/minecraft/server/EntityShulker.java
+++ b/src/main/java/net/minecraft/server/EntityShulker.java
@@ -32,6 +32,23 @@ public class EntityShulker extends EntityGolem implements IMonster {
@@ -3840,7 +3840,7 @@ index 0d2ceff6..46379588 100644
@Override
public boolean a() {
diff --git a/src/main/java/net/minecraft/server/EntitySilverfish.java b/src/main/java/net/minecraft/server/EntitySilverfish.java
index 08c2a22f..dff20567 100644
index 08c2a22f7..dff20567b 100644
--- a/src/main/java/net/minecraft/server/EntitySilverfish.java
+++ b/src/main/java/net/minecraft/server/EntitySilverfish.java
@@ -11,13 +11,32 @@ public class EntitySilverfish extends EntityMonster {
@@ -3885,7 +3885,7 @@ index 08c2a22f..dff20567 100644
public void g() {
diff --git a/src/main/java/net/minecraft/server/EntitySkeleton.java b/src/main/java/net/minecraft/server/EntitySkeleton.java
index 0e78d5c6..8e6efeb7 100644
index 0e78d5c62..8e6efeb7b 100644
--- a/src/main/java/net/minecraft/server/EntitySkeleton.java
+++ b/src/main/java/net/minecraft/server/EntitySkeleton.java
@@ -6,6 +6,23 @@ public class EntitySkeleton extends EntitySkeletonAbstract {
@@ -3913,7 +3913,7 @@ index 0e78d5c6..8e6efeb7 100644
protected SoundEffect getSoundAmbient() {
return SoundEffects.ENTITY_SKELETON_AMBIENT;
diff --git a/src/main/java/net/minecraft/server/EntitySkeletonAbstract.java b/src/main/java/net/minecraft/server/EntitySkeletonAbstract.java
index 3c95c042..8bc4e851 100644
index 3c95c0428..8bc4e8515 100644
--- a/src/main/java/net/minecraft/server/EntitySkeletonAbstract.java
+++ b/src/main/java/net/minecraft/server/EntitySkeletonAbstract.java
@@ -28,12 +28,14 @@ public abstract class EntitySkeletonAbstract extends EntityMonster implements IR
@@ -3932,7 +3932,7 @@ index 3c95c042..8bc4e851 100644
this.targetSelector.a(2, new PathfinderGoalNearestAttackableTarget<>(this, EntityHuman.class, true));
this.targetSelector.a(3, new PathfinderGoalNearestAttackableTarget<>(this, EntityIronGolem.class, true));
diff --git a/src/main/java/net/minecraft/server/EntitySkeletonStray.java b/src/main/java/net/minecraft/server/EntitySkeletonStray.java
index 2eb53864..a930fb84 100644
index 2eb53864f..a930fb840 100644
--- a/src/main/java/net/minecraft/server/EntitySkeletonStray.java
+++ b/src/main/java/net/minecraft/server/EntitySkeletonStray.java
@@ -8,6 +8,23 @@ public class EntitySkeletonStray extends EntitySkeletonAbstract {
@@ -3960,7 +3960,7 @@ index 2eb53864..a930fb84 100644
return c(entitytypes, generatoraccess, enummobspawn, blockposition, random) && (enummobspawn == EnumMobSpawn.SPAWNER || generatoraccess.f(blockposition));
}
diff --git a/src/main/java/net/minecraft/server/EntitySkeletonWither.java b/src/main/java/net/minecraft/server/EntitySkeletonWither.java
index 98e04242..8aa0a669 100644
index 98e042424..8aa0a6699 100644
--- a/src/main/java/net/minecraft/server/EntitySkeletonWither.java
+++ b/src/main/java/net/minecraft/server/EntitySkeletonWither.java
@@ -9,6 +9,23 @@ public class EntitySkeletonWither extends EntitySkeletonAbstract {
@@ -3988,7 +3988,7 @@ index 98e04242..8aa0a669 100644
protected SoundEffect getSoundAmbient() {
return SoundEffects.ENTITY_WITHER_SKELETON_AMBIENT;
diff --git a/src/main/java/net/minecraft/server/EntitySlime.java b/src/main/java/net/minecraft/server/EntitySlime.java
index 2efc18df..1469e3b2 100644
index 2efc18df9..1469e3b23 100644
--- a/src/main/java/net/minecraft/server/EntitySlime.java
+++ b/src/main/java/net/minecraft/server/EntitySlime.java
@@ -32,12 +32,31 @@ public class EntitySlime extends EntityInsentient implements IMonster {
@@ -4065,7 +4065,7 @@ index 2efc18df..1469e3b2 100644
} else {
this.h = ControllerMove.Operation.WAIT;
diff --git a/src/main/java/net/minecraft/server/EntitySnowman.java b/src/main/java/net/minecraft/server/EntitySnowman.java
index 07ca1a49..94187351 100644
index 07ca1a498..941873513 100644
--- a/src/main/java/net/minecraft/server/EntitySnowman.java
+++ b/src/main/java/net/minecraft/server/EntitySnowman.java
@@ -14,12 +14,31 @@ public class EntitySnowman extends EntityGolem implements IRangedEntity {
@@ -4127,7 +4127,7 @@ index 07ca1a49..94187351 100644
}
diff --git a/src/main/java/net/minecraft/server/EntitySpider.java b/src/main/java/net/minecraft/server/EntitySpider.java
index d02db565..d3708a7b 100644
index d02db5659..d3708a7b0 100644
--- a/src/main/java/net/minecraft/server/EntitySpider.java
+++ b/src/main/java/net/minecraft/server/EntitySpider.java
@@ -11,14 +11,33 @@ public class EntitySpider extends EntityMonster {
@@ -4165,7 +4165,7 @@ index d02db565..d3708a7b 100644
this.targetSelector.a(2, new EntitySpider.PathfinderGoalSpiderNearestAttackableTarget<>(this, EntityHuman.class));
this.targetSelector.a(3, new EntitySpider.PathfinderGoalSpiderNearestAttackableTarget<>(this, EntityIronGolem.class));
diff --git a/src/main/java/net/minecraft/server/EntitySquid.java b/src/main/java/net/minecraft/server/EntitySquid.java
index 92efe4e7..b967135a 100644
index 92efe4e7f..b967135ac 100644
--- a/src/main/java/net/minecraft/server/EntitySquid.java
+++ b/src/main/java/net/minecraft/server/EntitySquid.java
@@ -25,10 +25,28 @@ public class EntitySquid extends EntityWaterAnimal {
@@ -4274,7 +4274,7 @@ index 92efe4e7..b967135a 100644
}
}
diff --git a/src/main/java/net/minecraft/server/EntityTameableAnimal.java b/src/main/java/net/minecraft/server/EntityTameableAnimal.java
index 9b2eea71..d55c6cb3 100644
index 9b2eea71c..d55c6cb33 100644
--- a/src/main/java/net/minecraft/server/EntityTameableAnimal.java
+++ b/src/main/java/net/minecraft/server/EntityTameableAnimal.java
@@ -135,6 +135,7 @@ public abstract class EntityTameableAnimal extends EntityAnimal {
@@ -4286,7 +4286,7 @@ index 9b2eea71..d55c6cb3 100644
return entityliving == this.getOwner();
}
diff --git a/src/main/java/net/minecraft/server/EntityTropicalFish.java b/src/main/java/net/minecraft/server/EntityTropicalFish.java
index ef8f373b..99297846 100644
index ef8f373be..992978463 100644
--- a/src/main/java/net/minecraft/server/EntityTropicalFish.java
+++ b/src/main/java/net/minecraft/server/EntityTropicalFish.java
@@ -19,6 +19,23 @@ public class EntityTropicalFish extends EntityFishSchool {
@@ -4314,7 +4314,7 @@ index ef8f373b..99297846 100644
protected void initDatawatcher() {
super.initDatawatcher();
diff --git a/src/main/java/net/minecraft/server/EntityTurtle.java b/src/main/java/net/minecraft/server/EntityTurtle.java
index b24a5100..46954920 100644
index b24a5100b..469549206 100644
--- a/src/main/java/net/minecraft/server/EntityTurtle.java
+++ b/src/main/java/net/minecraft/server/EntityTurtle.java
@@ -27,6 +27,23 @@ public class EntityTurtle extends EntityAnimal {
@@ -4462,7 +4462,7 @@ index b24a5100..46954920 100644
if (this.h == ControllerMove.Operation.MOVE_TO && !this.i.getNavigation().m()) {
double d0 = this.b - this.i.locX();
diff --git a/src/main/java/net/minecraft/server/EntityTypes.java b/src/main/java/net/minecraft/server/EntityTypes.java
index 0f04bcc8..5a749494 100644
index 0f04bcc8b..5a7494947 100644
--- a/src/main/java/net/minecraft/server/EntityTypes.java
+++ b/src/main/java/net/minecraft/server/EntityTypes.java
@@ -259,6 +259,12 @@ public class EntityTypes<T extends Entity> {
@@ -4479,7 +4479,7 @@ index 0f04bcc8..5a749494 100644
if (this.bg == null) {
this.bg = SystemUtils.a("entity", IRegistry.ENTITY_TYPE.getKey(this));
diff --git a/src/main/java/net/minecraft/server/EntityVex.java b/src/main/java/net/minecraft/server/EntityVex.java
index cf274666..d919f44a 100644
index cf274666c..d919f44ab 100644
--- a/src/main/java/net/minecraft/server/EntityVex.java
+++ b/src/main/java/net/minecraft/server/EntityVex.java
@@ -19,6 +19,50 @@ public class EntityVex extends EntityMonster {
@@ -4593,7 +4593,7 @@ index cf274666..d919f44a 100644
Vec3D vec3d = new Vec3D(this.b - EntityVex.this.locX(), this.c - EntityVex.this.locY(), this.d - EntityVex.this.locZ());
double d0 = vec3d.f();
diff --git a/src/main/java/net/minecraft/server/EntityVillager.java b/src/main/java/net/minecraft/server/EntityVillager.java
index 6e0020ae..3eaac031 100644
index 6e0020ae0..3eaac031f 100644
--- a/src/main/java/net/minecraft/server/EntityVillager.java
+++ b/src/main/java/net/minecraft/server/EntityVillager.java
@@ -68,6 +68,28 @@ public class EntityVillager extends EntityVillagerAbstract implements Reputation
@@ -4626,7 +4626,7 @@ index 6e0020ae..3eaac031 100644
public BehaviorController<EntityVillager> getBehaviorController() {
return (BehaviorController<EntityVillager>) super.getBehaviorController(); // CraftBukkit - decompile error
diff --git a/src/main/java/net/minecraft/server/EntityVillagerTrader.java b/src/main/java/net/minecraft/server/EntityVillagerTrader.java
index 2ad8dba5..4e9c5e84 100644
index 2ad8dba5c..4e9c5e84a 100644
--- a/src/main/java/net/minecraft/server/EntityVillagerTrader.java
+++ b/src/main/java/net/minecraft/server/EntityVillagerTrader.java
@@ -20,6 +20,23 @@ public class EntityVillagerTrader extends EntityVillagerAbstract {
@@ -4662,7 +4662,7 @@ index 2ad8dba5..4e9c5e84 100644
this.goalSelector.a(1, new PathfinderGoalAvoidTarget<>(this, EntityZombie.class, 8.0F, 0.5D, 0.5D));
this.goalSelector.a(1, new PathfinderGoalAvoidTarget<>(this, EntityEvoker.class, 12.0F, 0.5D, 0.5D));
diff --git a/src/main/java/net/minecraft/server/EntityVindicator.java b/src/main/java/net/minecraft/server/EntityVindicator.java
index c974c02e..6ba92013 100644
index c974c02e9..6ba920134 100644
--- a/src/main/java/net/minecraft/server/EntityVindicator.java
+++ b/src/main/java/net/minecraft/server/EntityVindicator.java
@@ -17,14 +17,33 @@ public class EntityVindicator extends EntityIllagerAbstract {
@@ -4700,7 +4700,7 @@ index c974c02e..6ba92013 100644
this.targetSelector.a(2, new PathfinderGoalNearestAttackableTarget<>(this, EntityHuman.class, true));
this.targetSelector.a(3, new PathfinderGoalNearestAttackableTarget<>(this, EntityVillagerAbstract.class, true));
diff --git a/src/main/java/net/minecraft/server/EntityWitch.java b/src/main/java/net/minecraft/server/EntityWitch.java
index 1432d3f6..447387bd 100644
index 1432d3f6b..447387bd7 100644
--- a/src/main/java/net/minecraft/server/EntityWitch.java
+++ b/src/main/java/net/minecraft/server/EntityWitch.java
@@ -24,6 +24,23 @@ public class EntityWitch extends EntityRaider implements IRangedEntity {
@@ -4743,7 +4743,7 @@ index 1432d3f6..447387bd 100644
this.targetSelector.a(2, this.bz);
this.targetSelector.a(3, this.bA);
diff --git a/src/main/java/net/minecraft/server/EntityWither.java b/src/main/java/net/minecraft/server/EntityWither.java
index 8977c351..ad97fe7e 100644
index 8977c3516..ad97fe7ea 100644
--- a/src/main/java/net/minecraft/server/EntityWither.java
+++ b/src/main/java/net/minecraft/server/EntityWither.java
@@ -18,7 +18,7 @@ public class EntityWither extends EntityMonster implements IRangedEntity {
@@ -4876,7 +4876,7 @@ index 8977c351..ad97fe7e 100644
@Override
diff --git a/src/main/java/net/minecraft/server/EntityWolf.java b/src/main/java/net/minecraft/server/EntityWolf.java
index eec1e26b..47f0b2df 100644
index eec1e26b6..47f0b2df6 100644
--- a/src/main/java/net/minecraft/server/EntityWolf.java
+++ b/src/main/java/net/minecraft/server/EntityWolf.java
@@ -30,10 +30,28 @@ public class EntityWolf extends EntityTameableAnimal {
@@ -5050,7 +5050,7 @@ index eec1e26b..47f0b2df 100644
private final EntityWolf j;
diff --git a/src/main/java/net/minecraft/server/EntityZombie.java b/src/main/java/net/minecraft/server/EntityZombie.java
index 07ebc1d8..8d1f0441 100644
index 07ebc1d81..8d1f04415 100644
--- a/src/main/java/net/minecraft/server/EntityZombie.java
+++ b/src/main/java/net/minecraft/server/EntityZombie.java
@@ -44,11 +44,30 @@ public class EntityZombie extends EntityMonster {
@@ -5085,7 +5085,7 @@ index 07ebc1d8..8d1f0441 100644
}
diff --git a/src/main/java/net/minecraft/server/EntityZombieHusk.java b/src/main/java/net/minecraft/server/EntityZombieHusk.java
index da8446d0..db252ba4 100644
index da8446d05..db252ba4e 100644
--- a/src/main/java/net/minecraft/server/EntityZombieHusk.java
+++ b/src/main/java/net/minecraft/server/EntityZombieHusk.java
@@ -8,6 +8,23 @@ public class EntityZombieHusk extends EntityZombie {
@@ -5113,7 +5113,7 @@ index da8446d0..db252ba4 100644
return c(entitytypes, generatoraccess, enummobspawn, blockposition, random) && (enummobspawn == EnumMobSpawn.SPAWNER || generatoraccess.f(blockposition));
}
diff --git a/src/main/java/net/minecraft/server/EntityZombieVillager.java b/src/main/java/net/minecraft/server/EntityZombieVillager.java
index 8082fa61..ebbfcb75 100644
index 8082fa617..ebbfcb75a 100644
--- a/src/main/java/net/minecraft/server/EntityZombieVillager.java
+++ b/src/main/java/net/minecraft/server/EntityZombieVillager.java
@@ -25,6 +25,23 @@ public class EntityZombieVillager extends EntityZombie implements VillagerDataHo
@@ -5141,7 +5141,7 @@ index 8082fa61..ebbfcb75 100644
protected void initDatawatcher() {
super.initDatawatcher();
diff --git a/src/main/java/net/minecraft/server/FoodInfo.java b/src/main/java/net/minecraft/server/FoodInfo.java
index b35fe21a..5b0f35c7 100644
index b35fe21a6..5b0f35c73 100644
--- a/src/main/java/net/minecraft/server/FoodInfo.java
+++ b/src/main/java/net/minecraft/server/FoodInfo.java
@@ -30,6 +30,7 @@ public class FoodInfo {
@@ -5153,7 +5153,7 @@ index b35fe21a..5b0f35c7 100644
return this.c;
}
diff --git a/src/main/java/net/minecraft/server/ItemDye.java b/src/main/java/net/minecraft/server/ItemDye.java
index da49f6e5..7b5d6026 100644
index da49f6e5a..7b5d60264 100644
--- a/src/main/java/net/minecraft/server/ItemDye.java
+++ b/src/main/java/net/minecraft/server/ItemDye.java
@@ -42,6 +42,7 @@ public class ItemDye extends Item {
@@ -5165,7 +5165,7 @@ index da49f6e5..7b5d6026 100644
return this.b;
}
diff --git a/src/main/java/net/minecraft/server/MathHelper.java b/src/main/java/net/minecraft/server/MathHelper.java
index c4aa38dd..3d52a396 100644
index c4aa38ddf..3d52a396e 100644
--- a/src/main/java/net/minecraft/server/MathHelper.java
+++ b/src/main/java/net/minecraft/server/MathHelper.java
@@ -263,6 +263,7 @@ public class MathHelper {
@@ -5185,7 +5185,7 @@ index c4aa38dd..3d52a396 100644
return f1 + f * (f2 - f1);
}
diff --git a/src/main/java/net/minecraft/server/PathfinderGoal.java b/src/main/java/net/minecraft/server/PathfinderGoal.java
index 134f7d00..d6597967 100644
index 134f7d001..d65979673 100644
--- a/src/main/java/net/minecraft/server/PathfinderGoal.java
+++ b/src/main/java/net/minecraft/server/PathfinderGoal.java
@@ -28,6 +28,7 @@ public abstract class PathfinderGoal {
@@ -5197,7 +5197,7 @@ index 134f7d00..d6597967 100644
// Paper start - remove streams from pathfindergoalselector
this.goalTypes.clear();
diff --git a/src/main/java/net/minecraft/server/PathfinderGoalSwell.java b/src/main/java/net/minecraft/server/PathfinderGoalSwell.java
index e07c7674..3c077b68 100644
index e07c7674a..3c077b687 100644
--- a/src/main/java/net/minecraft/server/PathfinderGoalSwell.java
+++ b/src/main/java/net/minecraft/server/PathfinderGoalSwell.java
@@ -4,8 +4,8 @@ import java.util.EnumSet;
@@ -5220,7 +5220,7 @@ index e07c7674..3c077b68 100644
this.a.a(-1);
} else if (this.a.h((Entity) this.b) > 49.0D) {
diff --git a/src/main/java/net/minecraft/server/ProjectileHelper.java b/src/main/java/net/minecraft/server/ProjectileHelper.java
index 1b796ba5..7dbe3500 100644
index 1b796ba5b..7dbe3500e 100644
--- a/src/main/java/net/minecraft/server/ProjectileHelper.java
+++ b/src/main/java/net/minecraft/server/ProjectileHelper.java
@@ -15,6 +15,7 @@ public final class ProjectileHelper {
@@ -5232,7 +5232,7 @@ index 1b796ba5..7dbe3500 100644
return a(entity, flag, false, (Entity) null, raytrace_blockcollisionoption, false, predicate, axisalignedbb);
}
diff --git a/src/main/java/net/minecraft/server/Vec3D.java b/src/main/java/net/minecraft/server/Vec3D.java
index 0c7f094e..62a08100 100644
index 0c7f094e5..62a081006 100644
--- a/src/main/java/net/minecraft/server/Vec3D.java
+++ b/src/main/java/net/minecraft/server/Vec3D.java
@@ -27,6 +27,7 @@ public class Vec3D implements IPosition {
@@ -5260,7 +5260,7 @@ index 0c7f094e..62a08100 100644
return new Vec3D(this.x * d0, this.y * d1, this.z * d2);
}
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index 5a8271e3..2735b525 100644
index 5a8271e31..2735b5252 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -977,6 +977,7 @@ public abstract class World implements GeneratorAccess, AutoCloseable {
@@ -5283,7 +5283,7 @@ index 5a8271e3..2735b525 100644
+ // Purpur end
}
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
index eda37fa4..69f99a99 100644
index eda37fa43..69f99a993 100644
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
@@ -64,4 +64,603 @@ public class PurpurWorldConfig {
@@ -5892,7 +5892,7 @@ index eda37fa4..69f99a99 100644
}
diff --git a/src/main/java/net/pl3x/purpur/controller/ControllerLookWASD.java b/src/main/java/net/pl3x/purpur/controller/ControllerLookWASD.java
new file mode 100644
index 00000000..828e1b87
index 000000000..828e1b873
--- /dev/null
+++ b/src/main/java/net/pl3x/purpur/controller/ControllerLookWASD.java
@@ -0,0 +1,75 @@
@@ -5973,7 +5973,7 @@ index 00000000..828e1b87
+}
diff --git a/src/main/java/net/pl3x/purpur/controller/ControllerMoveWASD.java b/src/main/java/net/pl3x/purpur/controller/ControllerMoveWASD.java
new file mode 100644
index 00000000..0a5d6d46
index 000000000..0a5d6d46c
--- /dev/null
+++ b/src/main/java/net/pl3x/purpur/controller/ControllerMoveWASD.java
@@ -0,0 +1,86 @@
@@ -6065,7 +6065,7 @@ index 00000000..0a5d6d46
+}
diff --git a/src/main/java/net/pl3x/purpur/controller/ControllerMoveWASDFlying.java b/src/main/java/net/pl3x/purpur/controller/ControllerMoveWASDFlying.java
new file mode 100644
index 00000000..34912507
index 000000000..349125070
--- /dev/null
+++ b/src/main/java/net/pl3x/purpur/controller/ControllerMoveWASDFlying.java
@@ -0,0 +1,53 @@
@@ -6124,7 +6124,7 @@ index 00000000..34912507
+}
diff --git a/src/main/java/net/pl3x/purpur/controller/ControllerMoveWASDFlyingWithSpacebar.java b/src/main/java/net/pl3x/purpur/controller/ControllerMoveWASDFlyingWithSpacebar.java
new file mode 100644
index 00000000..f7537593
index 000000000..f75375936
--- /dev/null
+++ b/src/main/java/net/pl3x/purpur/controller/ControllerMoveWASDFlyingWithSpacebar.java
@@ -0,0 +1,61 @@
@@ -6191,7 +6191,7 @@ index 00000000..f7537593
+}
diff --git a/src/main/java/net/pl3x/purpur/controller/ControllerMoveWASDWater.java b/src/main/java/net/pl3x/purpur/controller/ControllerMoveWASDWater.java
new file mode 100644
index 00000000..e75e5806
index 000000000..e75e58067
--- /dev/null
+++ b/src/main/java/net/pl3x/purpur/controller/ControllerMoveWASDWater.java
@@ -0,0 +1,43 @@
@@ -6240,7 +6240,7 @@ index 00000000..e75e5806
+}
diff --git a/src/main/java/net/pl3x/purpur/entity/DolphinSpit.java b/src/main/java/net/pl3x/purpur/entity/DolphinSpit.java
new file mode 100644
index 00000000..7189cc56
index 000000000..7189cc569
--- /dev/null
+++ b/src/main/java/net/pl3x/purpur/entity/DolphinSpit.java
@@ -0,0 +1,119 @@
@@ -6365,7 +6365,7 @@ index 00000000..7189cc56
+}
diff --git a/src/main/java/net/pl3x/purpur/entity/PhantomFlames.java b/src/main/java/net/pl3x/purpur/entity/PhantomFlames.java
new file mode 100644
index 00000000..f9e680ef
index 000000000..f9e680efd
--- /dev/null
+++ b/src/main/java/net/pl3x/purpur/entity/PhantomFlames.java
@@ -0,0 +1,126 @@
@@ -6497,7 +6497,7 @@ index 00000000..f9e680ef
+}
diff --git a/src/main/java/net/pl3x/purpur/pathfinder/PathfinderGoalHasRider.java b/src/main/java/net/pl3x/purpur/pathfinder/PathfinderGoalHasRider.java
new file mode 100644
index 00000000..6e50344c
index 000000000..6e50344c0
--- /dev/null
+++ b/src/main/java/net/pl3x/purpur/pathfinder/PathfinderGoalHasRider.java
@@ -0,0 +1,21 @@
@@ -6523,7 +6523,7 @@ index 00000000..6e50344c
+ }
+}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
index dfa15372..350aa675 100644
index dfa15372b..350aa6754 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
@@ -1057,4 +1057,31 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
@@ -6559,7 +6559,7 @@ index dfa15372..350aa675 100644
+ // Purpur end
}
diff --git a/src/main/resources/purpur.lang b/src/main/resources/purpur.lang
index 0967ef42..7125c047 100644
index 0967ef424..7125c0477 100644
--- a/src/main/resources/purpur.lang
+++ b/src/main/resources/purpur.lang
@@ -1 +1,3 @@