mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-17 16:37: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>
|
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
|
||||||
|
|||||||
Reference in New Issue
Block a user