Fix riding iron golems not activating

This commit is contained in:
William Blake Galbreath
2019-12-20 22:27:08 -06:00
parent 12c9bf6455
commit 24d6915c6c

View File

@@ -1,4 +1,4 @@
From bd0a901250083968b63fa45b51b840fd8142df84 Mon Sep 17 00:00:00 2001
From f8316e6f0522ead67284c7127eae2137c5788cf4 Mon Sep 17 00:00:00 2001
From: William Blake Galbreath <blake.galbreath@gmail.com>
Date: Tue, 30 Apr 2019 19:17:21 -0500
Subject: [PATCH] Integrate ridables
@@ -33,7 +33,7 @@ Subject: [PATCH] Integrate ridables
.../net/minecraft/server/EntityHuman.java | 14 +-
.../server/EntityIllagerIllusioner.java | 2 +
.../minecraft/server/EntityInsentient.java | 51 +++++++-
.../net/minecraft/server/EntityIronGolem.java | 2 +
.../net/minecraft/server/EntityIronGolem.java | 6 +-
.../net/minecraft/server/EntityLiving.java | 27 ++--
.../net/minecraft/server/EntityLlama.java | 42 +++++-
.../minecraft/server/EntityLlamaTrader.java | 8 ++
@@ -83,7 +83,7 @@ Subject: [PATCH] Integrate ridables
.../pathfinder/PathfinderGoalHasRider.java | 20 +++
.../craftbukkit/entity/CraftLivingEntity.java | 10 ++
.../bukkit/craftbukkit/entity/CraftMob.java | 12 ++
79 files changed, 1266 insertions(+), 117 deletions(-)
79 files changed, 1268 insertions(+), 119 deletions(-)
create mode 100644 src/main/java/net/pl3x/purpur/controller/ControllerLookWASD.java
create mode 100644 src/main/java/net/pl3x/purpur/controller/ControllerMoveWASD.java
create mode 100644 src/main/java/net/pl3x/purpur/controller/ControllerMoveWASDFlying.java
@@ -92,7 +92,7 @@ Subject: [PATCH] Integrate ridables
create mode 100644 src/main/java/net/pl3x/purpur/pathfinder/PathfinderGoalHasRider.java
diff --git a/src/main/java/net/minecraft/server/ControllerLookDolphin.java b/src/main/java/net/minecraft/server/ControllerLookDolphin.java
index 1d9ba04daa..2bade947ee 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 @@
@@ -113,7 +113,7 @@ index 1d9ba04daa..2bade947ee 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/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index bb355803d5..86ce0977df 100644
index 647fc4b0e..c40d3b56b 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -79,6 +79,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
@@ -195,7 +195,7 @@ index bb355803d5..86ce0977df 100644
+ // Purpur end
}
diff --git a/src/main/java/net/minecraft/server/EntityAgeable.java b/src/main/java/net/minecraft/server/EntityAgeable.java
index 3d27f0964a..822316a65f 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 {
@@ -208,7 +208,7 @@ index 3d27f0964a..822316a65f 100644
}
diff --git a/src/main/java/net/minecraft/server/EntityBat.java b/src/main/java/net/minecraft/server/EntityBat.java
index 34239160be..f83e35f5ba 100644
index 34239160b..f83e35f5b 100644
--- a/src/main/java/net/minecraft/server/EntityBat.java
+++ b/src/main/java/net/minecraft/server/EntityBat.java
@@ -14,6 +14,10 @@ public class EntityBat extends EntityAmbient {
@@ -252,7 +252,7 @@ index 34239160be..f83e35f5ba 100644
+ // Purpur end
}
diff --git a/src/main/java/net/minecraft/server/EntityBlaze.java b/src/main/java/net/minecraft/server/EntityBlaze.java
index 5b1d2c7f50..d46b99b5c9 100644
index 5b1d2c7f5..d46b99b5c 100644
--- a/src/main/java/net/minecraft/server/EntityBlaze.java
+++ b/src/main/java/net/minecraft/server/EntityBlaze.java
@@ -10,6 +10,10 @@ public class EntityBlaze extends EntityMonster {
@@ -297,7 +297,7 @@ index 5b1d2c7f50..d46b99b5c9 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 57af3835ee..7219f90322 100644
index 57af3835e..7219f9032 100644
--- a/src/main/java/net/minecraft/server/EntityCat.java
+++ b/src/main/java/net/minecraft/server/EntityCat.java
@@ -16,7 +16,7 @@ public class EntityCat extends EntityTameableAnimal {
@@ -371,7 +371,7 @@ index 57af3835ee..7219f90322 100644
private final EntityCat a;
diff --git a/src/main/java/net/minecraft/server/EntityCaveSpider.java b/src/main/java/net/minecraft/server/EntityCaveSpider.java
index 23ced2c7bb..6613583587 100644
index 23ced2c7b..661358358 100644
--- a/src/main/java/net/minecraft/server/EntityCaveSpider.java
+++ b/src/main/java/net/minecraft/server/EntityCaveSpider.java
@@ -6,6 +6,7 @@ public class EntityCaveSpider extends EntitySpider {
@@ -383,7 +383,7 @@ index 23ced2c7bb..6613583587 100644
@Override
diff --git a/src/main/java/net/minecraft/server/EntityChicken.java b/src/main/java/net/minecraft/server/EntityChicken.java
index 65795fc896..b31b606044 100644
index 65795fc89..b31b60604 100644
--- a/src/main/java/net/minecraft/server/EntityChicken.java
+++ b/src/main/java/net/minecraft/server/EntityChicken.java
@@ -13,6 +13,7 @@ public class EntityChicken extends EntityAnimal {
@@ -412,7 +412,7 @@ index 65795fc896..b31b606044 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 1e3782122a..c0b066d188 100644
index 1e3782122..c0b066d18 100644
--- a/src/main/java/net/minecraft/server/EntityCod.java
+++ b/src/main/java/net/minecraft/server/EntityCod.java
@@ -4,6 +4,7 @@ public class EntityCod extends EntityFishSchool {
@@ -424,7 +424,7 @@ index 1e3782122a..c0b066d188 100644
@Override
diff --git a/src/main/java/net/minecraft/server/EntityCow.java b/src/main/java/net/minecraft/server/EntityCow.java
index e1d0f0f38d..dcff77d8d8 100644
index e1d0f0f38..dcff77d8d 100644
--- a/src/main/java/net/minecraft/server/EntityCow.java
+++ b/src/main/java/net/minecraft/server/EntityCow.java
@@ -9,11 +9,13 @@ public class EntityCow extends EntityAnimal {
@@ -442,7 +442,7 @@ index e1d0f0f38d..dcff77d8d8 100644
this.goalSelector.a(2, new PathfinderGoalBreed(this, 1.0D));
if (net.pl3x.purpur.PurpurConfig.feedMushroomsToCows > 0) this.goalSelector.a(3, new PathfinderGoalTempt(this, 1.25D, RecipeItemStack.a(Items.WHEAT, Blocks.RED_MUSHROOM.getItem(), Blocks.BROWN_MUSHROOM.getItem()), false)); else // Purpur
diff --git a/src/main/java/net/minecraft/server/EntityCreeper.java b/src/main/java/net/minecraft/server/EntityCreeper.java
index 77ba923338..9bce3f7716 100644
index 77ba92333..9bce3f771 100644
--- a/src/main/java/net/minecraft/server/EntityCreeper.java
+++ b/src/main/java/net/minecraft/server/EntityCreeper.java
@@ -21,11 +21,13 @@ public class EntityCreeper extends EntityMonster {
@@ -520,7 +520,7 @@ index 77ba923338..9bce3f7716 100644
+ // Purpur end
}
diff --git a/src/main/java/net/minecraft/server/EntityDolphin.java b/src/main/java/net/minecraft/server/EntityDolphin.java
index 3523007ae4..96d090e348 100644
index 3523007ae..96d090e34 100644
--- a/src/main/java/net/minecraft/server/EntityDolphin.java
+++ b/src/main/java/net/minecraft/server/EntityDolphin.java
@@ -18,6 +18,7 @@ public class EntityDolphin extends EntityWaterAnimal {
@@ -581,7 +581,7 @@ index 3523007ae4..96d090e348 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 3a1928b221..d6a78c5ae6 100644
index 77885f67f..b9a5ab443 100644
--- a/src/main/java/net/minecraft/server/EntityDrowned.java
+++ b/src/main/java/net/minecraft/server/EntityDrowned.java
@@ -12,6 +12,7 @@ public class EntityDrowned extends EntityZombie implements IRangedEntity {
@@ -620,7 +620,7 @@ index 3a1928b221..d6a78c5ae6 100644
}
diff --git a/src/main/java/net/minecraft/server/EntityEnderDragon.java b/src/main/java/net/minecraft/server/EntityEnderDragon.java
index 9acdd6e566..5935ecb529 100644
index 9acdd6e56..5935ecb52 100644
--- a/src/main/java/net/minecraft/server/EntityEnderDragon.java
+++ b/src/main/java/net/minecraft/server/EntityEnderDragon.java
@@ -49,6 +49,7 @@ public class EntityEnderDragon extends EntityInsentient implements IMonster {
@@ -632,7 +632,7 @@ index 9acdd6e566..5935ecb529 100644
this.setHealth(this.getMaxHealth());
this.noclip = true;
diff --git a/src/main/java/net/minecraft/server/EntityEnderman.java b/src/main/java/net/minecraft/server/EntityEnderman.java
index 13507edbce..245dc9a687 100644
index 8741df83b..560ff3227 100644
--- a/src/main/java/net/minecraft/server/EntityEnderman.java
+++ b/src/main/java/net/minecraft/server/EntityEnderman.java
@@ -23,6 +23,7 @@ public class EntityEnderman extends EntityMonster {
@@ -652,7 +652,7 @@ index 13507edbce..245dc9a687 100644
this.goalSelector.a(2, new PathfinderGoalMeleeAttack(this, 1.0D, false));
this.goalSelector.a(7, new PathfinderGoalRandomStrollLand(this, 1.0D, 0.0F));
diff --git a/src/main/java/net/minecraft/server/EntityEndermite.java b/src/main/java/net/minecraft/server/EntityEndermite.java
index b34695f2d0..92288e704f 100644
index b34695f2d..92288e704 100644
--- a/src/main/java/net/minecraft/server/EntityEndermite.java
+++ b/src/main/java/net/minecraft/server/EntityEndermite.java
@@ -9,17 +9,19 @@ public class EntityEndermite extends EntityMonster {
@@ -677,7 +677,7 @@ index b34695f2d0..92288e704f 100644
}
diff --git a/src/main/java/net/minecraft/server/EntityEvoker.java b/src/main/java/net/minecraft/server/EntityEvoker.java
index 886268b09e..3560c95298 100644
index 886268b09..3560c9529 100644
--- a/src/main/java/net/minecraft/server/EntityEvoker.java
+++ b/src/main/java/net/minecraft/server/EntityEvoker.java
@@ -9,6 +9,7 @@ public class EntityEvoker extends EntityIllagerWizard {
@@ -706,7 +706,7 @@ index 886268b09e..3560c95298 100644
this.targetSelector.a(3, (new PathfinderGoalNearestAttackableTarget<>(this, EntityVillagerAbstract.class, false)).a(300));
this.targetSelector.a(3, new PathfinderGoalNearestAttackableTarget<>(this, EntityIronGolem.class, false));
diff --git a/src/main/java/net/minecraft/server/EntityFish.java b/src/main/java/net/minecraft/server/EntityFish.java
index d332907b3b..0ca3d45c9c 100644
index d332907b3..0ca3d45c9 100644
--- a/src/main/java/net/minecraft/server/EntityFish.java
+++ b/src/main/java/net/minecraft/server/EntityFish.java
@@ -72,13 +72,10 @@ public abstract class EntityFish extends EntityWaterAnimal {
@@ -764,7 +764,7 @@ index d332907b3b..0ca3d45c9c 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 7495af8e3a..66078b484c 100644
index 45b4db990..e34ca7170 100644
--- a/src/main/java/net/minecraft/server/EntityFox.java
+++ b/src/main/java/net/minecraft/server/EntityFox.java
@@ -48,6 +48,7 @@ public class EntityFox extends EntityAnimal {
@@ -914,7 +914,7 @@ index 7495af8e3a..66078b484c 100644
}
diff --git a/src/main/java/net/minecraft/server/EntityGhast.java b/src/main/java/net/minecraft/server/EntityGhast.java
index e1c2540d14..ef794fbeb9 100644
index e1c2540d1..ef794fbeb 100644
--- a/src/main/java/net/minecraft/server/EntityGhast.java
+++ b/src/main/java/net/minecraft/server/EntityGhast.java
@@ -10,12 +10,14 @@ public class EntityGhast extends EntityFlying implements IMonster {
@@ -951,7 +951,7 @@ index e1c2540d14..ef794fbeb9 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 bcbade19ea..b7e2022b19 100644
index bcbade19e..b7e2022b1 100644
--- a/src/main/java/net/minecraft/server/EntityGiantZombie.java
+++ b/src/main/java/net/minecraft/server/EntityGiantZombie.java
@@ -5,7 +5,9 @@ public class EntityGiantZombie extends EntityMonster {
@@ -965,7 +965,7 @@ index bcbade19ea..b7e2022b19 100644
}
diff --git a/src/main/java/net/minecraft/server/EntityGuardian.java b/src/main/java/net/minecraft/server/EntityGuardian.java
index e69cb334fb..aed6ee845a 100644
index e69cb334f..aed6ee845 100644
--- a/src/main/java/net/minecraft/server/EntityGuardian.java
+++ b/src/main/java/net/minecraft/server/EntityGuardian.java
@@ -24,8 +24,15 @@ public class EntityGuardian extends EntityMonster {
@@ -1040,7 +1040,7 @@ index e69cb334fb..aed6ee845a 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 7484bfeea0..292125cbd2 100644
index 7484bfeea..292125cbd 100644
--- a/src/main/java/net/minecraft/server/EntityGuardianElder.java
+++ b/src/main/java/net/minecraft/server/EntityGuardianElder.java
@@ -9,6 +9,7 @@ public class EntityGuardianElder extends EntityGuardian {
@@ -1052,7 +1052,7 @@ index 7484bfeea0..292125cbd2 100644
if (this.goalRandomStroll != null) {
this.goalRandomStroll.setTimeBetweenMovement(400);
diff --git a/src/main/java/net/minecraft/server/EntityHorseAbstract.java b/src/main/java/net/minecraft/server/EntityHorseAbstract.java
index 9e708769f7..5cd46c7475 100644
index 9e708769f..5cd46c747 100644
--- a/src/main/java/net/minecraft/server/EntityHorseAbstract.java
+++ b/src/main/java/net/minecraft/server/EntityHorseAbstract.java
@@ -38,6 +38,10 @@ public abstract class EntityHorseAbstract extends EntityAnimal implements IInven
@@ -1067,7 +1067,7 @@ index 9e708769f7..5cd46c7475 100644
this.loadChest();
}
diff --git a/src/main/java/net/minecraft/server/EntityHorseSkeleton.java b/src/main/java/net/minecraft/server/EntityHorseSkeleton.java
index 290cb9337c..52ea911fe9 100644
index 290cb9337..52ea911fe 100644
--- a/src/main/java/net/minecraft/server/EntityHorseSkeleton.java
+++ b/src/main/java/net/minecraft/server/EntityHorseSkeleton.java
@@ -179,4 +179,10 @@ public class EntityHorseSkeleton extends EntityHorseAbstract {
@@ -1082,7 +1082,7 @@ index 290cb9337c..52ea911fe9 100644
+ // Purpur end
}
diff --git a/src/main/java/net/minecraft/server/EntityHorseZombie.java b/src/main/java/net/minecraft/server/EntityHorseZombie.java
index 5782a25ecd..dbe0223401 100644
index 5782a25ec..dbe022340 100644
--- a/src/main/java/net/minecraft/server/EntityHorseZombie.java
+++ b/src/main/java/net/minecraft/server/EntityHorseZombie.java
@@ -79,4 +79,10 @@ public class EntityHorseZombie extends EntityHorseAbstract {
@@ -1097,7 +1097,7 @@ index 5782a25ecd..dbe0223401 100644
+ // Purpur end
}
diff --git a/src/main/java/net/minecraft/server/EntityHuman.java b/src/main/java/net/minecraft/server/EntityHuman.java
index 4bb24de9d9..886fbb7dff 100644
index 3c0621e65..e9d1c01ed 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 {
@@ -1124,7 +1124,7 @@ index 4bb24de9d9..886fbb7dff 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 81b7cd06f2..18fedbc691 100644
index 81b7cd06f..18fedbc69 100644
--- a/src/main/java/net/minecraft/server/EntityIllagerIllusioner.java
+++ b/src/main/java/net/minecraft/server/EntityIllagerIllusioner.java
@@ -9,6 +9,7 @@ public class EntityIllagerIllusioner extends EntityIllagerWizard implements IRan
@@ -1144,7 +1144,7 @@ index 81b7cd06f2..18fedbc691 100644
this.goalSelector.a(4, new EntityIllagerIllusioner.b());
this.goalSelector.a(5, new EntityIllagerIllusioner.a());
diff --git a/src/main/java/net/minecraft/server/EntityInsentient.java b/src/main/java/net/minecraft/server/EntityInsentient.java
index 6bad1687fe..90587f4c82 100644
index 5fb3c948d..917e5ac64 100644
--- a/src/main/java/net/minecraft/server/EntityInsentient.java
+++ b/src/main/java/net/minecraft/server/EntityInsentient.java
@@ -10,6 +10,7 @@ import java.util.UUID;
@@ -1239,7 +1239,7 @@ index 6bad1687fe..90587f4c82 100644
+ // Purpur end
}
diff --git a/src/main/java/net/minecraft/server/EntityIronGolem.java b/src/main/java/net/minecraft/server/EntityIronGolem.java
index 2f764776b2..6a41e1cfd0 100644
index 2f764776b..63b88f454 100644
--- a/src/main/java/net/minecraft/server/EntityIronGolem.java
+++ b/src/main/java/net/minecraft/server/EntityIronGolem.java
@@ -14,11 +14,13 @@ public class EntityIronGolem extends EntityGolem {
@@ -1256,8 +1256,24 @@ index 2f764776b2..6a41e1cfd0 100644
this.goalSelector.a(1, new PathfinderGoalMeleeAttack(this, 1.0D, true));
this.goalSelector.a(2, new PathfinderGoalMoveTowardsTarget(this, 0.9D, 32.0F));
this.goalSelector.a(2, new PathfinderGoalStrollVillage(this, 0.6D));
@@ -170,13 +172,13 @@ public class EntityIronGolem extends EntityGolem {
Item item = itemstack.getItem();
if (item != Items.IRON_INGOT) {
- return false;
+ return super.a(entityhuman, enumhand); // Purpur
} else {
float f = this.getHealth();
this.heal(25.0F);
if (this.getHealth() == f) {
- return false;
+ return super.a(entityhuman, enumhand); // Purpur
} else {
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 0d5236bd7e..969a77c597 100644
index 0d5236bd7..969a77c59 100644
--- a/src/main/java/net/minecraft/server/EntityLiving.java
+++ b/src/main/java/net/minecraft/server/EntityLiving.java
@@ -91,10 +91,10 @@ public abstract class EntityLiving extends Entity {
@@ -1327,7 +1343,7 @@ index 0d5236bd7e..969a77c597 100644
this.bB = f;
}
diff --git a/src/main/java/net/minecraft/server/EntityLlama.java b/src/main/java/net/minecraft/server/EntityLlama.java
index 6d4d41c88c..6ebb6fd663 100644
index 6d4d41c88..6ebb6fd66 100644
--- a/src/main/java/net/minecraft/server/EntityLlama.java
+++ b/src/main/java/net/minecraft/server/EntityLlama.java
@@ -16,6 +16,29 @@ public class EntityLlama extends EntityHorseChestedAbstract implements IRangedEn
@@ -1401,7 +1417,7 @@ index 6d4d41c88c..6ebb6fd663 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 4cebd67e85..f8129ef10d 100644
index 4cebd67e8..f8129ef10 100644
--- a/src/main/java/net/minecraft/server/EntityLlamaTrader.java
+++ b/src/main/java/net/minecraft/server/EntityLlamaTrader.java
@@ -9,6 +9,7 @@ public class EntityLlamaTrader extends EntityLlama {
@@ -1427,7 +1443,7 @@ index 4cebd67e85..f8129ef10d 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 1fdc248ba8..b5e8857cbb 100644
index 1fdc248ba..b5e8857cb 100644
--- a/src/main/java/net/minecraft/server/EntityMagmaCube.java
+++ b/src/main/java/net/minecraft/server/EntityMagmaCube.java
@@ -6,6 +6,7 @@ public class EntityMagmaCube extends EntitySlime {
@@ -1448,7 +1464,7 @@ index 1fdc248ba8..b5e8857cbb 100644
this.setMot(vec3d.x, (double) (this.dp() + (float) this.getSize() * 0.1F), vec3d.z);
diff --git a/src/main/java/net/minecraft/server/EntityMushroomCow.java b/src/main/java/net/minecraft/server/EntityMushroomCow.java
index ce5bac35db..80c98c04b1 100644
index ce5bac35d..80c98c04b 100644
--- a/src/main/java/net/minecraft/server/EntityMushroomCow.java
+++ b/src/main/java/net/minecraft/server/EntityMushroomCow.java
@@ -18,6 +18,7 @@ public class EntityMushroomCow extends EntityCow {
@@ -1460,7 +1476,7 @@ index ce5bac35db..80c98c04b1 100644
@Override
diff --git a/src/main/java/net/minecraft/server/EntityOcelot.java b/src/main/java/net/minecraft/server/EntityOcelot.java
index d9a7b8ac1e..8093e01505 100644
index d9a7b8ac1..8093e0150 100644
--- a/src/main/java/net/minecraft/server/EntityOcelot.java
+++ b/src/main/java/net/minecraft/server/EntityOcelot.java
@@ -13,6 +13,7 @@ public class EntityOcelot extends EntityAnimal {
@@ -1480,7 +1496,7 @@ index d9a7b8ac1e..8093e01505 100644
this.goalSelector.a(7, new PathfinderGoalLeapAtTarget(this, 0.3F));
this.goalSelector.a(8, new PathfinderGoalOcelotAttack(this));
diff --git a/src/main/java/net/minecraft/server/EntityPanda.java b/src/main/java/net/minecraft/server/EntityPanda.java
index cd41c80f19..c6afe108c7 100644
index cd41c80f1..c6afe108c 100644
--- a/src/main/java/net/minecraft/server/EntityPanda.java
+++ b/src/main/java/net/minecraft/server/EntityPanda.java
@@ -39,6 +39,7 @@ public class EntityPanda extends EntityAnimal {
@@ -1587,7 +1603,7 @@ index cd41c80f19..c6afe108c7 100644
}
}
diff --git a/src/main/java/net/minecraft/server/EntityParrot.java b/src/main/java/net/minecraft/server/EntityParrot.java
index 1402087612..04f0ef54b1 100644
index 140208761..04f0ef54b 100644
--- a/src/main/java/net/minecraft/server/EntityParrot.java
+++ b/src/main/java/net/minecraft/server/EntityParrot.java
@@ -21,7 +21,7 @@ public class EntityParrot extends EntityPerchable implements EntityBird {
@@ -1658,7 +1674,7 @@ index 1402087612..04f0ef54b1 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 052a741c0b..ccc1ade4e4 100644
index 052a741c0..ccc1ade4e 100644
--- a/src/main/java/net/minecraft/server/EntityPhantom.java
+++ b/src/main/java/net/minecraft/server/EntityPhantom.java
@@ -15,12 +15,14 @@ public class EntityPhantom extends EntityFlying implements IMonster {
@@ -1776,7 +1792,7 @@ index 052a741c0b..ccc1ade4e4 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 8d277566e9..f71d4b58f0 100644
index 8d277566e..f71d4b58f 100644
--- a/src/main/java/net/minecraft/server/EntityPig.java
+++ b/src/main/java/net/minecraft/server/EntityPig.java
@@ -17,11 +17,13 @@ public class EntityPig extends EntityAnimal {
@@ -1833,7 +1849,7 @@ index 8d277566e9..f71d4b58f0 100644
@Override
diff --git a/src/main/java/net/minecraft/server/EntityPigZombie.java b/src/main/java/net/minecraft/server/EntityPigZombie.java
index 9dd028b558..8d57c5f1b5 100644
index 9dd028b55..8d57c5f1b 100644
--- a/src/main/java/net/minecraft/server/EntityPigZombie.java
+++ b/src/main/java/net/minecraft/server/EntityPigZombie.java
@@ -14,6 +14,7 @@ public class EntityPigZombie extends EntityZombie {
@@ -1857,7 +1873,7 @@ index 9dd028b558..8d57c5f1b5 100644
protected void a(DifficultyDamageScaler difficultydamagescaler) {
this.setSlot(EnumItemSlot.MAINHAND, new ItemStack(Items.GOLDEN_SWORD));
diff --git a/src/main/java/net/minecraft/server/EntityPillager.java b/src/main/java/net/minecraft/server/EntityPillager.java
index 0357c9da93..e4762bf98d 100644
index 0357c9da9..e4762bf98 100644
--- a/src/main/java/net/minecraft/server/EntityPillager.java
+++ b/src/main/java/net/minecraft/server/EntityPillager.java
@@ -11,12 +11,14 @@ public class EntityPillager extends EntityIllagerAbstract implements ICrossbow,
@@ -1876,7 +1892,7 @@ index 0357c9da93..e4762bf98d 100644
this.goalSelector.a(3, new PathfinderGoalCrossbowAttack<>(this, 1.0D, 8.0F));
this.goalSelector.a(8, new PathfinderGoalRandomStroll(this, 0.6D));
diff --git a/src/main/java/net/minecraft/server/EntityPolarBear.java b/src/main/java/net/minecraft/server/EntityPolarBear.java
index f8e29a02d3..b1652477e8 100644
index f8e29a02d..b1652477e 100644
--- a/src/main/java/net/minecraft/server/EntityPolarBear.java
+++ b/src/main/java/net/minecraft/server/EntityPolarBear.java
@@ -15,6 +15,7 @@ public class EntityPolarBear extends EntityAnimal {
@@ -1946,7 +1962,7 @@ index f8e29a02d3..b1652477e8 100644
public d() {
diff --git a/src/main/java/net/minecraft/server/EntityPufferFish.java b/src/main/java/net/minecraft/server/EntityPufferFish.java
index 98af9a2235..36d88e9ce5 100644
index 98af9a223..36d88e9ce 100644
--- a/src/main/java/net/minecraft/server/EntityPufferFish.java
+++ b/src/main/java/net/minecraft/server/EntityPufferFish.java
@@ -15,6 +15,7 @@ public class EntityPufferFish extends EntityFish {
@@ -1967,7 +1983,7 @@ index 98af9a2235..36d88e9ce5 100644
@Override
diff --git a/src/main/java/net/minecraft/server/EntityRabbit.java b/src/main/java/net/minecraft/server/EntityRabbit.java
index 2ed2d0b6bb..d36a074c89 100644
index 2ed2d0b6b..d36a074c8 100644
--- a/src/main/java/net/minecraft/server/EntityRabbit.java
+++ b/src/main/java/net/minecraft/server/EntityRabbit.java
@@ -15,6 +15,7 @@ public class EntityRabbit extends EntityAnimal {
@@ -1998,7 +2014,7 @@ index 2ed2d0b6bb..d36a074c89 100644
double d0 = this.moveController.c();
diff --git a/src/main/java/net/minecraft/server/EntityRavager.java b/src/main/java/net/minecraft/server/EntityRavager.java
index fd25ce1026..5fa0b505b9 100644
index fd25ce102..5fa0b505b 100644
--- a/src/main/java/net/minecraft/server/EntityRavager.java
+++ b/src/main/java/net/minecraft/server/EntityRavager.java
@@ -16,6 +16,7 @@ public class EntityRavager extends EntityRaider {
@@ -2018,7 +2034,7 @@ index fd25ce1026..5fa0b505b9 100644
this.goalSelector.a(5, new PathfinderGoalRandomStrollLand(this, 0.4D));
this.goalSelector.a(6, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 6.0F));
diff --git a/src/main/java/net/minecraft/server/EntitySalmon.java b/src/main/java/net/minecraft/server/EntitySalmon.java
index 6be29f3078..7347ffcd5c 100644
index 6be29f307..7347ffcd5 100644
--- a/src/main/java/net/minecraft/server/EntitySalmon.java
+++ b/src/main/java/net/minecraft/server/EntitySalmon.java
@@ -4,6 +4,7 @@ public class EntitySalmon extends EntityFishSchool {
@@ -2030,7 +2046,7 @@ index 6be29f3078..7347ffcd5c 100644
@Override
diff --git a/src/main/java/net/minecraft/server/EntitySheep.java b/src/main/java/net/minecraft/server/EntitySheep.java
index e3419a7f47..a065ddb907 100644
index e3419a7f4..a065ddb90 100644
--- a/src/main/java/net/minecraft/server/EntitySheep.java
+++ b/src/main/java/net/minecraft/server/EntitySheep.java
@@ -18,7 +18,7 @@ import org.bukkit.inventory.InventoryView;
@@ -2069,7 +2085,7 @@ index e3419a7f47..a065ddb907 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 0d2ceff6f2..d687a53a6f 100644
index 0d2ceff6f..d687a53a6 100644
--- a/src/main/java/net/minecraft/server/EntityShulker.java
+++ b/src/main/java/net/minecraft/server/EntityShulker.java
@@ -26,6 +26,7 @@ public class EntityShulker extends EntityGolem implements IMonster {
@@ -2089,7 +2105,7 @@ index 0d2ceff6f2..d687a53a6f 100644
this.goalSelector.a(4, new EntityShulker.a());
this.goalSelector.a(7, new EntityShulker.e());
diff --git a/src/main/java/net/minecraft/server/EntitySilverfish.java b/src/main/java/net/minecraft/server/EntitySilverfish.java
index 08c2a22f7a..021bce7e95 100644
index 08c2a22f7..021bce7e9 100644
--- a/src/main/java/net/minecraft/server/EntitySilverfish.java
+++ b/src/main/java/net/minecraft/server/EntitySilverfish.java
@@ -9,12 +9,14 @@ public class EntitySilverfish extends EntityMonster {
@@ -2108,7 +2124,7 @@ index 08c2a22f7a..021bce7e95 100644
this.goalSelector.a(4, new PathfinderGoalMeleeAttack(this, 1.0D, false));
this.goalSelector.a(5, new EntitySilverfish.PathfinderGoalSilverfishHideInBlock(this));
diff --git a/src/main/java/net/minecraft/server/EntitySkeleton.java b/src/main/java/net/minecraft/server/EntitySkeleton.java
index 0e78d5c62c..908e51b636 100644
index 0e78d5c62..908e51b63 100644
--- a/src/main/java/net/minecraft/server/EntitySkeleton.java
+++ b/src/main/java/net/minecraft/server/EntitySkeleton.java
@@ -4,6 +4,7 @@ public class EntitySkeleton extends EntitySkeletonAbstract {
@@ -2120,7 +2136,7 @@ index 0e78d5c62c..908e51b636 100644
@Override
diff --git a/src/main/java/net/minecraft/server/EntitySkeletonAbstract.java b/src/main/java/net/minecraft/server/EntitySkeletonAbstract.java
index fdeb8980d9..347766e4b0 100644
index fdeb8980d..347766e4b 100644
--- a/src/main/java/net/minecraft/server/EntitySkeletonAbstract.java
+++ b/src/main/java/net/minecraft/server/EntitySkeletonAbstract.java
@@ -28,6 +28,7 @@ public abstract class EntitySkeletonAbstract extends EntityMonster implements IR
@@ -2132,7 +2148,7 @@ index fdeb8980d9..347766e4b0 100644
this.goalSelector.a(3, new PathfinderGoalFleeSun(this, 1.0D));
this.goalSelector.a(3, new PathfinderGoalAvoidTarget<>(this, EntityWolf.class, 6.0F, 1.0D, 1.2D));
diff --git a/src/main/java/net/minecraft/server/EntitySkeletonStray.java b/src/main/java/net/minecraft/server/EntitySkeletonStray.java
index 2eb53864f2..eda880703e 100644
index 2eb53864f..eda880703 100644
--- a/src/main/java/net/minecraft/server/EntitySkeletonStray.java
+++ b/src/main/java/net/minecraft/server/EntitySkeletonStray.java
@@ -6,6 +6,7 @@ public class EntitySkeletonStray extends EntitySkeletonAbstract {
@@ -2144,7 +2160,7 @@ index 2eb53864f2..eda880703e 100644
public static boolean b(EntityTypes<EntitySkeletonStray> entitytypes, GeneratorAccess generatoraccess, EnumMobSpawn enummobspawn, BlockPosition blockposition, Random random) {
diff --git a/src/main/java/net/minecraft/server/EntitySkeletonWither.java b/src/main/java/net/minecraft/server/EntitySkeletonWither.java
index 98e042424c..c2b93010a3 100644
index 98e042424..c2b93010a 100644
--- a/src/main/java/net/minecraft/server/EntitySkeletonWither.java
+++ b/src/main/java/net/minecraft/server/EntitySkeletonWither.java
@@ -6,6 +6,7 @@ public class EntitySkeletonWither extends EntitySkeletonAbstract {
@@ -2156,7 +2172,7 @@ index 98e042424c..c2b93010a3 100644
}
diff --git a/src/main/java/net/minecraft/server/EntitySlime.java b/src/main/java/net/minecraft/server/EntitySlime.java
index 2efc18df94..71e8e95d25 100644
index 2efc18df9..71e8e95d2 100644
--- a/src/main/java/net/minecraft/server/EntitySlime.java
+++ b/src/main/java/net/minecraft/server/EntitySlime.java
@@ -29,11 +29,13 @@ public class EntitySlime extends EntityInsentient implements IMonster {
@@ -2183,7 +2199,7 @@ index 2efc18df94..71e8e95d25 100644
this.setMot(vec3d.x, (double) this.dp(), vec3d.z);
diff --git a/src/main/java/net/minecraft/server/EntitySnowman.java b/src/main/java/net/minecraft/server/EntitySnowman.java
index 53c5057d20..93d3bccb26 100644
index 53c5057d2..93d3bccb2 100644
--- a/src/main/java/net/minecraft/server/EntitySnowman.java
+++ b/src/main/java/net/minecraft/server/EntitySnowman.java
@@ -13,10 +13,12 @@ public class EntitySnowman extends EntityGolem implements IRangedEntity {
@@ -2208,7 +2224,7 @@ index 53c5057d20..93d3bccb26 100644
for (int l = 0; l < 4; ++l) {
diff --git a/src/main/java/net/minecraft/server/EntitySpider.java b/src/main/java/net/minecraft/server/EntitySpider.java
index d02db56595..c38ae96f23 100644
index d02db5659..c38ae96f2 100644
--- a/src/main/java/net/minecraft/server/EntitySpider.java
+++ b/src/main/java/net/minecraft/server/EntitySpider.java
@@ -9,11 +9,13 @@ public class EntitySpider extends EntityMonster {
@@ -2226,7 +2242,7 @@ index d02db56595..c38ae96f23 100644
this.goalSelector.a(4, new EntitySpider.PathfinderGoalSpiderMeleeAttack(this));
this.goalSelector.a(5, new PathfinderGoalRandomStrollLand(this, 0.8D));
diff --git a/src/main/java/net/minecraft/server/EntitySquid.java b/src/main/java/net/minecraft/server/EntitySquid.java
index 92efe4e7f5..eb74f5d127 100644
index 92efe4e7f..eb74f5d12 100644
--- a/src/main/java/net/minecraft/server/EntitySquid.java
+++ b/src/main/java/net/minecraft/server/EntitySquid.java
@@ -21,14 +21,16 @@ public class EntitySquid extends EntityWaterAnimal {
@@ -2315,7 +2331,7 @@ index 92efe4e7f5..eb74f5d127 100644
}
}
diff --git a/src/main/java/net/minecraft/server/EntityTameableAnimal.java b/src/main/java/net/minecraft/server/EntityTameableAnimal.java
index 9b2eea71cc..4ac12ebe2c 100644
index 9b2eea71c..4ac12ebe2 100644
--- a/src/main/java/net/minecraft/server/EntityTameableAnimal.java
+++ b/src/main/java/net/minecraft/server/EntityTameableAnimal.java
@@ -110,6 +110,12 @@ public abstract class EntityTameableAnimal extends EntityAnimal {
@@ -2332,7 +2348,7 @@ index 9b2eea71cc..4ac12ebe2c 100644
this.setTamed(true);
this.setOwnerUUID(entityhuman.getUniqueID());
diff --git a/src/main/java/net/minecraft/server/EntityTropicalFish.java b/src/main/java/net/minecraft/server/EntityTropicalFish.java
index ef8f373bea..b00ae70cb3 100644
index ef8f373be..b00ae70cb 100644
--- a/src/main/java/net/minecraft/server/EntityTropicalFish.java
+++ b/src/main/java/net/minecraft/server/EntityTropicalFish.java
@@ -17,6 +17,7 @@ public class EntityTropicalFish extends EntityFishSchool {
@@ -2344,7 +2360,7 @@ index ef8f373bea..b00ae70cb3 100644
@Override
diff --git a/src/main/java/net/minecraft/server/EntityTurtle.java b/src/main/java/net/minecraft/server/EntityTurtle.java
index dd02cb3485..f18261197c 100644
index dd02cb348..f18261197 100644
--- a/src/main/java/net/minecraft/server/EntityTurtle.java
+++ b/src/main/java/net/minecraft/server/EntityTurtle.java
@@ -22,6 +22,7 @@ public class EntityTurtle extends EntityAnimal {
@@ -2471,7 +2487,7 @@ index dd02cb3485..f18261197c 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 dcba6d6c89..b82d53e5da 100644
index dcba6d6c8..b82d53e5d 100644
--- a/src/main/java/net/minecraft/server/EntityTypes.java
+++ b/src/main/java/net/minecraft/server/EntityTypes.java
@@ -267,6 +267,10 @@ public class EntityTypes<T extends Entity> {
@@ -2486,7 +2502,7 @@ index dcba6d6c89..b82d53e5da 100644
return getNameComponent().getString();
}
diff --git a/src/main/java/net/minecraft/server/EntityVex.java b/src/main/java/net/minecraft/server/EntityVex.java
index cf274666c7..3ea0b47593 100644
index cf274666c..3ea0b4759 100644
--- a/src/main/java/net/minecraft/server/EntityVex.java
+++ b/src/main/java/net/minecraft/server/EntityVex.java
@@ -15,6 +15,7 @@ public class EntityVex extends EntityMonster {
@@ -2531,7 +2547,7 @@ index cf274666c7..3ea0b47593 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/EntityVindicator.java b/src/main/java/net/minecraft/server/EntityVindicator.java
index c974c02e92..e8f76209d7 100644
index c974c02e9..e8f76209d 100644
--- a/src/main/java/net/minecraft/server/EntityVindicator.java
+++ b/src/main/java/net/minecraft/server/EntityVindicator.java
@@ -15,12 +15,14 @@ public class EntityVindicator extends EntityIllagerAbstract {
@@ -2550,7 +2566,7 @@ index c974c02e92..e8f76209d7 100644
this.goalSelector.a(2, new EntityIllagerAbstract.b(this));
this.goalSelector.a(3, new EntityRaider.a(this, 10.0F));
diff --git a/src/main/java/net/minecraft/server/EntityWitch.java b/src/main/java/net/minecraft/server/EntityWitch.java
index 7b6b1ad17b..9ef1b9e61c 100644
index 7b6b1ad17..9ef1b9e61 100644
--- a/src/main/java/net/minecraft/server/EntityWitch.java
+++ b/src/main/java/net/minecraft/server/EntityWitch.java
@@ -22,6 +22,7 @@ public class EntityWitch extends EntityRaider implements IRangedEntity {
@@ -2574,7 +2590,7 @@ index 7b6b1ad17b..9ef1b9e61c 100644
this.goalSelector.a(2, new PathfinderGoalRandomStrollLand(this, 1.0D));
this.goalSelector.a(3, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 8.0F));
diff --git a/src/main/java/net/minecraft/server/EntityWither.java b/src/main/java/net/minecraft/server/EntityWither.java
index 8977c3516b..3e6c4eff5d 100644
index 8977c3516..3e6c4eff5 100644
--- a/src/main/java/net/minecraft/server/EntityWither.java
+++ b/src/main/java/net/minecraft/server/EntityWither.java
@@ -35,6 +35,7 @@ public class EntityWither extends EntityMonster implements IRangedEntity {
@@ -2596,7 +2612,7 @@ index 8977c3516b..3e6c4eff5d 100644
this.goalSelector.a(5, new PathfinderGoalRandomStrollLand(this, 1.0D));
this.goalSelector.a(6, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 8.0F));
diff --git a/src/main/java/net/minecraft/server/EntityWolf.java b/src/main/java/net/minecraft/server/EntityWolf.java
index db15d5e0a2..2a6e1f33b7 100644
index db15d5e0a..2a6e1f33b 100644
--- a/src/main/java/net/minecraft/server/EntityWolf.java
+++ b/src/main/java/net/minecraft/server/EntityWolf.java
@@ -27,6 +27,7 @@ public class EntityWolf extends EntityTameableAnimal {
@@ -2631,7 +2647,7 @@ index db15d5e0a2..2a6e1f33b7 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 7d882d9c7e..8f9d252c1e 100644
index 7d882d9c7..8f9d252c1 100644
--- a/src/main/java/net/minecraft/server/EntityZombie.java
+++ b/src/main/java/net/minecraft/server/EntityZombie.java
@@ -37,6 +37,7 @@ public class EntityZombie extends EntityMonster {
@@ -2651,7 +2667,7 @@ index 7d882d9c7e..8f9d252c1e 100644
this.goalSelector.a(8, new PathfinderGoalLookAtPlayer(this, EntityHuman.class, 8.0F));
this.goalSelector.a(8, new PathfinderGoalRandomLookaround(this));
diff --git a/src/main/java/net/minecraft/server/EntityZombieHusk.java b/src/main/java/net/minecraft/server/EntityZombieHusk.java
index da8446d05d..350aaaeb0d 100644
index da8446d05..350aaaeb0 100644
--- a/src/main/java/net/minecraft/server/EntityZombieHusk.java
+++ b/src/main/java/net/minecraft/server/EntityZombieHusk.java
@@ -6,6 +6,7 @@ public class EntityZombieHusk extends EntityZombie {
@@ -2663,7 +2679,7 @@ index da8446d05d..350aaaeb0d 100644
public static boolean b(EntityTypes<EntityZombieHusk> entitytypes, GeneratorAccess generatoraccess, EnumMobSpawn enummobspawn, BlockPosition blockposition, Random random) {
diff --git a/src/main/java/net/minecraft/server/EntityZombieVillager.java b/src/main/java/net/minecraft/server/EntityZombieVillager.java
index 8082fa617a..0c51c8dea1 100644
index 8082fa617..0c51c8dea 100644
--- a/src/main/java/net/minecraft/server/EntityZombieVillager.java
+++ b/src/main/java/net/minecraft/server/EntityZombieVillager.java
@@ -22,6 +22,7 @@ public class EntityZombieVillager extends EntityZombie implements VillagerDataHo
@@ -2684,7 +2700,7 @@ index 8082fa617a..0c51c8dea1 100644
}
diff --git a/src/main/java/net/pl3x/purpur/PurpurConfig.java b/src/main/java/net/pl3x/purpur/PurpurConfig.java
index 960361ff74..d3409155ed 100644
index 960361ff7..d3409155e 100644
--- a/src/main/java/net/pl3x/purpur/PurpurConfig.java
+++ b/src/main/java/net/pl3x/purpur/PurpurConfig.java
@@ -131,6 +131,11 @@ public class PurpurConfig {
@@ -2823,7 +2839,7 @@ index 960361ff74..d3409155ed 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 0000000000..99e184d36e
index 000000000..99e184d36
--- /dev/null
+++ b/src/main/java/net/pl3x/purpur/controller/ControllerLookWASD.java
@@ -0,0 +1,74 @@
@@ -2903,7 +2919,7 @@ index 0000000000..99e184d36e
+}
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 0000000000..d64a66274b
index 000000000..d64a66274
--- /dev/null
+++ b/src/main/java/net/pl3x/purpur/controller/ControllerMoveWASD.java
@@ -0,0 +1,77 @@
@@ -2986,7 +3002,7 @@ index 0000000000..d64a66274b
+}
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 0000000000..dc43fef37d
index 000000000..dc43fef37
--- /dev/null
+++ b/src/main/java/net/pl3x/purpur/controller/ControllerMoveWASDFlying.java
@@ -0,0 +1,62 @@
@@ -3054,7 +3070,7 @@ index 0000000000..dc43fef37d
+}
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 0000000000..f8b3310b84
index 000000000..f8b3310b8
--- /dev/null
+++ b/src/main/java/net/pl3x/purpur/controller/ControllerMoveWASDFlyingWithSpacebar.java
@@ -0,0 +1,65 @@
@@ -3125,7 +3141,7 @@ index 0000000000..f8b3310b84
+}
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 0000000000..74ff48259c
index 000000000..74ff48259
--- /dev/null
+++ b/src/main/java/net/pl3x/purpur/controller/ControllerMoveWASDWater.java
@@ -0,0 +1,42 @@
@@ -3173,7 +3189,7 @@ index 0000000000..74ff48259c
+}
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 0000000000..e3a9fd9d21
index 000000000..e3a9fd9d2
--- /dev/null
+++ b/src/main/java/net/pl3x/purpur/pathfinder/PathfinderGoalHasRider.java
@@ -0,0 +1,20 @@
@@ -3198,7 +3214,7 @@ index 0000000000..e3a9fd9d21
+ }
+}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
index 33f56b85ea..ffd1372284 100644
index 33f56b85e..ffd137228 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
@@ -723,5 +723,15 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
@@ -3218,7 +3234,7 @@ index 33f56b85ea..ffd1372284 100644
// Purpur end
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftMob.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftMob.java
index 56c233872b..b19970c883 100644
index 56c233872..b19970c88 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftMob.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftMob.java
@@ -75,4 +75,16 @@ public abstract class CraftMob extends CraftLivingEntity implements Mob {