From b1b3002d324c19b6556b2fdf9aaabd1d2e7c9959 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Sat, 4 May 2019 19:39:37 -0500 Subject: [PATCH] Implement water controller. Make doplhins ridable --- patches/server/0007-Integrate-ridables.patch | 137 ++++++++++++++++++- 1 file changed, 135 insertions(+), 2 deletions(-) diff --git a/patches/server/0007-Integrate-ridables.patch b/patches/server/0007-Integrate-ridables.patch index 8d003cda0..828aa21cc 100644 --- a/patches/server/0007-Integrate-ridables.patch +++ b/patches/server/0007-Integrate-ridables.patch @@ -1,14 +1,16 @@ -From 39df59dec4551dc7158ee55aa26a54c5af731bd2 Mon Sep 17 00:00:00 2001 +From a1a7384376a7c067a41ce83576b440e7e2163642 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Tue, 30 Apr 2019 19:17:21 -0500 Subject: [PATCH] Integrate ridables --- .../net/minecraft/server/ControllerJump.java | 1 + + .../server/ControllerLookDolphin.java | 4 +- .../java/net/minecraft/server/Entity.java | 13 ++++ .../net/minecraft/server/EntityChicken.java | 17 +++- .../java/net/minecraft/server/EntityCow.java | 14 ++++ .../net/minecraft/server/EntityCreeper.java | 14 ++++ + .../net/minecraft/server/EntityDolphin.java | 28 ++++++- .../net/minecraft/server/EntityDrowned.java | 38 ++++++++- .../net/minecraft/server/EntityEnderman.java | 15 ++++ .../net/minecraft/server/EntityEndermite.java | 15 ++++ @@ -39,10 +41,12 @@ Subject: [PATCH] Integrate ridables .../net/minecraft/server/EntityZombie.java | 15 ++++ .../purpur/controller/ControllerLookWASD.java | 46 +++++++++++ .../purpur/controller/ControllerMoveWASD.java | 77 +++++++++++++++++++ + .../controller/ControllerMoveWASDWater.java | 42 ++++++++++ .../craftbukkit/entity/CraftLivingEntity.java | 12 +++ - 36 files changed, 606 insertions(+), 30 deletions(-) + 39 files changed, 676 insertions(+), 34 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/ControllerMoveWASDWater.java diff --git a/src/main/java/net/minecraft/server/ControllerJump.java b/src/main/java/net/minecraft/server/ControllerJump.java index 489beed2..041f0763 100644 @@ -56,6 +60,27 @@ index 489beed2..041f0763 100644 public void a() { this.a = true; } +diff --git a/src/main/java/net/minecraft/server/ControllerLookDolphin.java b/src/main/java/net/minecraft/server/ControllerLookDolphin.java +index 8397aacb..92432ee6 100644 +--- a/src/main/java/net/minecraft/server/ControllerLookDolphin.java ++++ b/src/main/java/net/minecraft/server/ControllerLookDolphin.java +@@ -1,6 +1,6 @@ + package net.minecraft.server; + +-public class ControllerLookDolphin extends ControllerLook { ++public class ControllerLookDolphin extends net.pl3x.purpur.controller.ControllerLookWASD { // Purpur + + private final int h; + +@@ -9,7 +9,7 @@ public class ControllerLookDolphin extends ControllerLook { + this.h = i; + } + +- public void a() { ++ public void tick() { // Purpur + if (this.d) { + this.d = false; + double d0 = this.e - this.a.locX; diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java index 89a8bbe3..caa07f8b 100644 --- a/src/main/java/net/minecraft/server/Entity.java @@ -207,6 +232,66 @@ index 945a75dd..588bba0a 100644 ItemStack itemstack = entityhuman.b(enumhand); if (itemstack.getItem() == Items.FLINT_AND_STEEL) { +diff --git a/src/main/java/net/minecraft/server/EntityDolphin.java b/src/main/java/net/minecraft/server/EntityDolphin.java +index 8bf15a68..68133d47 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 { + this.setSize(0.9F, 0.6F); + this.moveController = new EntityDolphin.a(this); + this.lookController = new ControllerLookDolphin(this, 10); ++ this.canBeRiddenInWater = true; // Purpur + this.p(true); + } + +@@ -199,6 +200,15 @@ public class EntityDolphin extends EntityWaterAnimal { + } + + protected boolean a(EntityHuman entityhuman, EnumHand enumhand) { ++ // Purpur start - processInteract ++ if (super.a(entityhuman, enumhand)) { ++ return true; // vanilla action handled ++ } ++ return tryRide(entityhuman, enumhand); ++ } ++ ++ protected boolean processInteract(EntityHuman entityhuman, EnumHand enumhand) { ++ // Purpur end + ItemStack itemstack = entityhuman.b(enumhand); + + if (!itemstack.isEmpty() && itemstack.getItem().a(TagsItem.FISHES)) { +@@ -487,7 +497,7 @@ public class EntityDolphin extends EntityWaterAnimal { + } + } + +- static class a extends ControllerMove { ++ static class a extends net.pl3x.purpur.controller.ControllerMoveWASDWater { // Purpur + + private final EntityDolphin i; + +@@ -496,7 +506,21 @@ public class EntityDolphin extends EntityWaterAnimal { + this.i = entitydolphin; + } + +- public void a() { ++ // Purpur start ++ @Override ++ public void tick(EntityHuman rider) { ++ if (this.i.getAirTicks() < 150) { ++ // if drowning override player WASD controls to find air ++ tick(); ++ } else { ++ super.tick(rider); ++ this.i.motY += 0.005D; ++ } ++ } ++ ++ @Override ++ public void tick() { ++ // Purpur end + if (this.i.isInWater()) { + this.i.motY += 0.005D; + } diff --git a/src/main/java/net/minecraft/server/EntityDrowned.java b/src/main/java/net/minecraft/server/EntityDrowned.java index 0e2b5ee7..522f7d61 100644 --- a/src/main/java/net/minecraft/server/EntityDrowned.java @@ -1313,6 +1398,54 @@ index 00000000..4f7dec9b + g = entity.getStrafe(); + } +} +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..74ff4825 +--- /dev/null ++++ b/src/main/java/net/pl3x/purpur/controller/ControllerMoveWASDWater.java +@@ -0,0 +1,42 @@ ++package net.pl3x.purpur.controller; ++ ++import net.minecraft.server.EntityHuman; ++import net.minecraft.server.EntityInsentient; ++import net.minecraft.server.GenericAttributes; ++ ++public class ControllerMoveWASDWater extends ControllerMoveWASD { ++ public ControllerMoveWASDWater(EntityInsentient entity) { ++ super(entity); ++ } ++ ++ @Override ++ protected void tick(EntityHuman rider) { ++ float forward = rider.getForward(); ++ float strafe = rider.getStrafe() * 0.5F; // strafe slower by default ++ float vertical = -(rider.pitch / 90); ++ ++ if (forward == 0.0F) { ++ // strafe slower if not moving forward ++ strafe *= 0.5F; ++ // do not move vertically if not moving forward ++ vertical = 0.0F; ++ } else if (forward < 0.0F) { ++ // water animals can't swim backwards ++ forward = 0.0F; ++ vertical = 0.0F; ++ } ++ ++ if (rider.isJumping()) { ++ entity.onSpacebar(); ++ } ++ ++ entity.setSpeed((float) (e = entity.getAttributeInstance(GenericAttributes.MOVEMENT_SPEED).getValue()) * 0.1F); ++ ++ entity.setForward(forward); ++ entity.setStrafe(strafe); ++ entity.setVertical(vertical); ++ ++ f = entity.getForward(); ++ g = entity.getStrafe(); ++ } ++} diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java index d6a4bc64..7cfd33a7 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java