Implement water controller. Make doplhins ridable

This commit is contained in:
William Blake Galbreath
2019-05-04 19:39:37 -05:00
parent c04b2cf924
commit b1b3002d32

View File

@@ -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 <blake.galbreath@gmail.com> From: William Blake Galbreath <blake.galbreath@gmail.com>
Date: Tue, 30 Apr 2019 19:17:21 -0500 Date: Tue, 30 Apr 2019 19:17:21 -0500
Subject: [PATCH] Integrate ridables Subject: [PATCH] Integrate ridables
--- ---
.../net/minecraft/server/ControllerJump.java | 1 + .../net/minecraft/server/ControllerJump.java | 1 +
.../server/ControllerLookDolphin.java | 4 +-
.../java/net/minecraft/server/Entity.java | 13 ++++ .../java/net/minecraft/server/Entity.java | 13 ++++
.../net/minecraft/server/EntityChicken.java | 17 +++- .../net/minecraft/server/EntityChicken.java | 17 +++-
.../java/net/minecraft/server/EntityCow.java | 14 ++++ .../java/net/minecraft/server/EntityCow.java | 14 ++++
.../net/minecraft/server/EntityCreeper.java | 14 ++++ .../net/minecraft/server/EntityCreeper.java | 14 ++++
.../net/minecraft/server/EntityDolphin.java | 28 ++++++-
.../net/minecraft/server/EntityDrowned.java | 38 ++++++++- .../net/minecraft/server/EntityDrowned.java | 38 ++++++++-
.../net/minecraft/server/EntityEnderman.java | 15 ++++ .../net/minecraft/server/EntityEnderman.java | 15 ++++
.../net/minecraft/server/EntityEndermite.java | 15 ++++ .../net/minecraft/server/EntityEndermite.java | 15 ++++
@@ -39,10 +41,12 @@ Subject: [PATCH] Integrate ridables
.../net/minecraft/server/EntityZombie.java | 15 ++++ .../net/minecraft/server/EntityZombie.java | 15 ++++
.../purpur/controller/ControllerLookWASD.java | 46 +++++++++++ .../purpur/controller/ControllerLookWASD.java | 46 +++++++++++
.../purpur/controller/ControllerMoveWASD.java | 77 +++++++++++++++++++ .../purpur/controller/ControllerMoveWASD.java | 77 +++++++++++++++++++
.../controller/ControllerMoveWASDWater.java | 42 ++++++++++
.../craftbukkit/entity/CraftLivingEntity.java | 12 +++ .../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/ControllerLookWASD.java
create mode 100644 src/main/java/net/pl3x/purpur/controller/ControllerMoveWASD.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 diff --git a/src/main/java/net/minecraft/server/ControllerJump.java b/src/main/java/net/minecraft/server/ControllerJump.java
index 489beed2..041f0763 100644 index 489beed2..041f0763 100644
@@ -56,6 +60,27 @@ index 489beed2..041f0763 100644
public void a() { public void a() {
this.a = true; 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 diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index 89a8bbe3..caa07f8b 100644 index 89a8bbe3..caa07f8b 100644
--- a/src/main/java/net/minecraft/server/Entity.java --- a/src/main/java/net/minecraft/server/Entity.java
@@ -207,6 +232,66 @@ index 945a75dd..588bba0a 100644
ItemStack itemstack = entityhuman.b(enumhand); ItemStack itemstack = entityhuman.b(enumhand);
if (itemstack.getItem() == Items.FLINT_AND_STEEL) { 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 diff --git a/src/main/java/net/minecraft/server/EntityDrowned.java b/src/main/java/net/minecraft/server/EntityDrowned.java
index 0e2b5ee7..522f7d61 100644 index 0e2b5ee7..522f7d61 100644
--- a/src/main/java/net/minecraft/server/EntityDrowned.java --- a/src/main/java/net/minecraft/server/EntityDrowned.java
@@ -1313,6 +1398,54 @@ index 00000000..4f7dec9b
+ g = entity.getStrafe(); + 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 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 index d6a4bc64..7cfd33a7 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java