mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-17 08:27:43 +01:00
Implement water controller. Make doplhins ridable
This commit is contained in:
@@ -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>
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user