mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-20 18:07:43 +01:00
Fix riding bats
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
From f92fc627696ee6a3d0ab4776af2f286fc9ea3708 Mon Sep 17 00:00:00 2001
|
From 02c37cb0f3e33c7235007d6d06b84eb08a51d758 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
|
||||||
@@ -7,7 +7,7 @@ Subject: [PATCH] Integrate ridables
|
|||||||
.../server/ControllerLookDolphin.java | 4 +-
|
.../server/ControllerLookDolphin.java | 4 +-
|
||||||
.../java/net/minecraft/server/Entity.java | 25 +++-
|
.../java/net/minecraft/server/Entity.java | 25 +++-
|
||||||
.../net/minecraft/server/EntityAgeable.java | 2 +-
|
.../net/minecraft/server/EntityAgeable.java | 2 +-
|
||||||
.../java/net/minecraft/server/EntityBat.java | 2 +
|
.../java/net/minecraft/server/EntityBat.java | 25 ++++
|
||||||
.../net/minecraft/server/EntityBlaze.java | 3 +-
|
.../net/minecraft/server/EntityBlaze.java | 3 +-
|
||||||
.../java/net/minecraft/server/EntityCat.java | 3 +-
|
.../java/net/minecraft/server/EntityCat.java | 3 +-
|
||||||
.../minecraft/server/EntityCaveSpider.java | 1 +
|
.../minecraft/server/EntityCaveSpider.java | 1 +
|
||||||
@@ -82,14 +82,16 @@ Subject: [PATCH] Integrate ridables
|
|||||||
.../java/net/pl3x/purpur/PurpurConfig.java | 136 ++++++++++++++++++
|
.../java/net/pl3x/purpur/PurpurConfig.java | 136 ++++++++++++++++++
|
||||||
.../purpur/controller/ControllerLookWASD.java | 74 ++++++++++
|
.../purpur/controller/ControllerLookWASD.java | 74 ++++++++++
|
||||||
.../purpur/controller/ControllerMoveWASD.java | 77 ++++++++++
|
.../purpur/controller/ControllerMoveWASD.java | 77 ++++++++++
|
||||||
.../controller/ControllerMoveWASDFlying.java | 58 ++++++++
|
.../controller/ControllerMoveWASDFlying.java | 62 ++++++++
|
||||||
|
.../ControllerMoveWASDFlyingWithSpacebar.java | 65 +++++++++
|
||||||
.../controller/ControllerMoveWASDWater.java | 42 ++++++
|
.../controller/ControllerMoveWASDWater.java | 42 ++++++
|
||||||
.../craftbukkit/entity/CraftLivingEntity.java | 10 ++
|
.../craftbukkit/entity/CraftLivingEntity.java | 10 ++
|
||||||
.../bukkit/craftbukkit/entity/CraftMob.java | 12 ++
|
.../bukkit/craftbukkit/entity/CraftMob.java | 12 ++
|
||||||
82 files changed, 866 insertions(+), 92 deletions(-)
|
83 files changed, 958 insertions(+), 92 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/ControllerMoveWASDFlying.java
|
create mode 100644 src/main/java/net/pl3x/purpur/controller/ControllerMoveWASDFlying.java
|
||||||
|
create mode 100644 src/main/java/net/pl3x/purpur/controller/ControllerMoveWASDFlyingWithSpacebar.java
|
||||||
create mode 100644 src/main/java/net/pl3x/purpur/controller/ControllerMoveWASDWater.java
|
create mode 100644 src/main/java/net/pl3x/purpur/controller/ControllerMoveWASDWater.java
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/ControllerLookDolphin.java b/src/main/java/net/minecraft/server/ControllerLookDolphin.java
|
diff --git a/src/main/java/net/minecraft/server/ControllerLookDolphin.java b/src/main/java/net/minecraft/server/ControllerLookDolphin.java
|
||||||
@@ -196,7 +198,7 @@ index e87754ef3..553245ebe 100644
|
|||||||
}
|
}
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/EntityBat.java b/src/main/java/net/minecraft/server/EntityBat.java
|
diff --git a/src/main/java/net/minecraft/server/EntityBat.java b/src/main/java/net/minecraft/server/EntityBat.java
|
||||||
index 4c283c33b..6a666ae05 100644
|
index 4c283c33b..5344a6cf2 100644
|
||||||
--- a/src/main/java/net/minecraft/server/EntityBat.java
|
--- a/src/main/java/net/minecraft/server/EntityBat.java
|
||||||
+++ b/src/main/java/net/minecraft/server/EntityBat.java
|
+++ b/src/main/java/net/minecraft/server/EntityBat.java
|
||||||
@@ -3,6 +3,7 @@ package net.minecraft.server;
|
@@ -3,6 +3,7 @@ package net.minecraft.server;
|
||||||
@@ -207,14 +209,49 @@ index 4c283c33b..6a666ae05 100644
|
|||||||
import org.bukkit.craftbukkit.event.CraftEventFactory; // CraftBukkit
|
import org.bukkit.craftbukkit.event.CraftEventFactory; // CraftBukkit
|
||||||
|
|
||||||
public class EntityBat extends EntityAmbient {
|
public class EntityBat extends EntityAmbient {
|
||||||
@@ -13,6 +14,7 @@ public class EntityBat extends EntityAmbient {
|
@@ -13,6 +14,10 @@ public class EntityBat extends EntityAmbient {
|
||||||
|
|
||||||
public EntityBat(EntityTypes<? extends EntityBat> entitytypes, World world) {
|
public EntityBat(EntityTypes<? extends EntityBat> entitytypes, World world) {
|
||||||
super(entitytypes, world);
|
super(entitytypes, world);
|
||||||
+ this.isRidable = net.pl3x.purpur.PurpurConfig.ridableBat; // Purpur
|
+ // Purpur start
|
||||||
|
+ this.moveController = new net.pl3x.purpur.controller.ControllerMoveWASDFlyingWithSpacebar(this, 0.075F);
|
||||||
|
+ this.isRidable = net.pl3x.purpur.PurpurConfig.ridableBat;
|
||||||
|
+ // Purpur end
|
||||||
this.setAsleep(true);
|
this.setAsleep(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -94,6 +99,13 @@ public class EntityBat extends EntityAmbient {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void mobTick() {
|
||||||
|
+ // Purpur start
|
||||||
|
+ if (getRider() != null) {
|
||||||
|
+ Vec3D mot = getMot();
|
||||||
|
+ setMot(mot.x, mot.y + (getVertical() > 0 ? 0.07D : 0.0D), mot.z);
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
+ // Purpur end
|
||||||
|
super.mobTick();
|
||||||
|
BlockPosition blockposition = new BlockPosition(this);
|
||||||
|
BlockPosition blockposition1 = blockposition.up();
|
||||||
|
@@ -229,4 +241,17 @@ public class EntityBat extends EntityAmbient {
|
||||||
|
protected float b(EntityPose entitypose, EntitySize entitysize) {
|
||||||
|
return entitysize.height / 2.0F;
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+ // Purpur start
|
||||||
|
+ @Override
|
||||||
|
+ protected boolean a(EntityHuman entityhuman, EnumHand enumhand) {
|
||||||
|
+ if (isAsleep()) {
|
||||||
|
+ if (CraftEventFactory.handleBatToggleSleepEvent(this, true)) {
|
||||||
|
+ setAsleep(false);
|
||||||
|
+ world.a(null, 1025, new BlockPosition(this).up(), 0);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ return !isAsleep() && super.a(entityhuman, enumhand);
|
||||||
|
+ }
|
||||||
|
+ // Purpur end
|
||||||
|
}
|
||||||
diff --git a/src/main/java/net/minecraft/server/EntityBlaze.java b/src/main/java/net/minecraft/server/EntityBlaze.java
|
diff --git a/src/main/java/net/minecraft/server/EntityBlaze.java b/src/main/java/net/minecraft/server/EntityBlaze.java
|
||||||
index 15db67de0..2e418ee14 100644
|
index 15db67de0..2e418ee14 100644
|
||||||
--- a/src/main/java/net/minecraft/server/EntityBlaze.java
|
--- a/src/main/java/net/minecraft/server/EntityBlaze.java
|
||||||
@@ -2351,10 +2388,10 @@ index 000000000..d64a66274
|
|||||||
+}
|
+}
|
||||||
diff --git a/src/main/java/net/pl3x/purpur/controller/ControllerMoveWASDFlying.java b/src/main/java/net/pl3x/purpur/controller/ControllerMoveWASDFlying.java
|
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
|
new file mode 100644
|
||||||
index 000000000..1a5a0c04c
|
index 000000000..b0b504c7d
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/src/main/java/net/pl3x/purpur/controller/ControllerMoveWASDFlying.java
|
+++ b/src/main/java/net/pl3x/purpur/controller/ControllerMoveWASDFlying.java
|
||||||
@@ -0,0 +1,58 @@
|
@@ -0,0 +1,62 @@
|
||||||
+package net.pl3x.purpur.controller;
|
+package net.pl3x.purpur.controller;
|
||||||
+
|
+
|
||||||
+import net.minecraft.server.EntityHuman;
|
+import net.minecraft.server.EntityHuman;
|
||||||
@@ -2363,13 +2400,17 @@ index 000000000..1a5a0c04c
|
|||||||
+
|
+
|
||||||
+public class ControllerMoveWASDFlying extends ControllerMoveWASD {
|
+public class ControllerMoveWASDFlying extends ControllerMoveWASD {
|
||||||
+ protected final float groundSpeedModifier;
|
+ protected final float groundSpeedModifier;
|
||||||
+ private final double maxY;
|
+ protected final double maxY;
|
||||||
+ private int tooHighCooldown = 0;
|
+ protected int tooHighCooldown = 0;
|
||||||
+
|
+
|
||||||
+ public ControllerMoveWASDFlying(EntityInsentient entity) {
|
+ public ControllerMoveWASDFlying(EntityInsentient entity) {
|
||||||
+ this(entity, 1.0F, 256D);
|
+ this(entity, 1.0F, 256D);
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
|
+ public ControllerMoveWASDFlying(EntityInsentient entity, float groundSpeedModifier) {
|
||||||
|
+ this(entity, groundSpeedModifier, 256D);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
+ public ControllerMoveWASDFlying(EntityInsentient entity, float groundSpeedModifier, double maxY) {
|
+ public ControllerMoveWASDFlying(EntityInsentient entity, float groundSpeedModifier, double maxY) {
|
||||||
+ super(entity);
|
+ super(entity);
|
||||||
+ this.groundSpeedModifier = groundSpeedModifier;
|
+ this.groundSpeedModifier = groundSpeedModifier;
|
||||||
@@ -2413,6 +2454,77 @@ index 000000000..1a5a0c04c
|
|||||||
+ g = entity.getStrafe();
|
+ g = entity.getStrafe();
|
||||||
+ }
|
+ }
|
||||||
+}
|
+}
|
||||||
|
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 000000000..a353069b7
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/src/main/java/net/pl3x/purpur/controller/ControllerMoveWASDFlyingWithSpacebar.java
|
||||||
|
@@ -0,0 +1,65 @@
|
||||||
|
+package net.pl3x.purpur.controller;
|
||||||
|
+
|
||||||
|
+import net.minecraft.server.EntityHuman;
|
||||||
|
+import net.minecraft.server.EntityInsentient;
|
||||||
|
+import net.minecraft.server.GenericAttributes;
|
||||||
|
+import net.minecraft.server.Vec3D;
|
||||||
|
+
|
||||||
|
+public class ControllerMoveWASDFlyingWithSpacebar extends ControllerMoveWASDFlying {
|
||||||
|
+ public ControllerMoveWASDFlyingWithSpacebar(EntityInsentient entity) {
|
||||||
|
+ super(entity);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ public ControllerMoveWASDFlyingWithSpacebar(EntityInsentient entity, float groundSpeedModifier) {
|
||||||
|
+ super(entity, groundSpeedModifier);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ public ControllerMoveWASDFlyingWithSpacebar(EntityInsentient entity, float groundSpeedModifier, double maxY) {
|
||||||
|
+ super(entity, groundSpeedModifier, maxY);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public void tick(EntityHuman rider) {
|
||||||
|
+ float forward = rider.getForward();
|
||||||
|
+ float strafe = rider.getStrafe() * 0.5F;
|
||||||
|
+ float vertical = 0;
|
||||||
|
+
|
||||||
|
+ if (forward < 0.0F) {
|
||||||
|
+ forward *= 0.5F;
|
||||||
|
+ strafe *= 0.5F;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ float speed = (float) entity.getAttributeInstance(GenericAttributes.MOVEMENT_SPEED).getValue();
|
||||||
|
+
|
||||||
|
+ if (entity.onGround) {
|
||||||
|
+ speed *= groundSpeedModifier;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ //RidableSpacebarEvent event = new RidableSpacebarEvent(ridable);
|
||||||
|
+ if (rider.isJumping() /*&& event.callEvent() && !event.isHandled()*/ && !entity.onSpacebar()) {
|
||||||
|
+ entity.setNoGravity(true);
|
||||||
|
+ vertical = 1.0F;
|
||||||
|
+ } else {
|
||||||
|
+ entity.setNoGravity(false);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (entity.locY >= maxY || --tooHighCooldown > 0) {
|
||||||
|
+ tooHighCooldown = 60;
|
||||||
|
+ entity.setMot(entity.getMot().add(0.0D, -0.2D, 0.0D));
|
||||||
|
+ vertical = 0.0F;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ entity.setSpeed((float) (e = speed));
|
||||||
|
+ entity.setVertical(vertical);
|
||||||
|
+ entity.setStrafe(strafe);
|
||||||
|
+ entity.setForward(forward);
|
||||||
|
+
|
||||||
|
+ f = entity.getForward();
|
||||||
|
+ g = entity.getStrafe();
|
||||||
|
+
|
||||||
|
+ Vec3D mot = entity.getMot();
|
||||||
|
+ if (mot.y > 0.2D) {
|
||||||
|
+ entity.setMot(mot.x, 0.2D, mot.z);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
diff --git a/src/main/java/net/pl3x/purpur/controller/ControllerMoveWASDWater.java b/src/main/java/net/pl3x/purpur/controller/ControllerMoveWASDWater.java
|
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
|
new file mode 100644
|
||||||
index 000000000..74ff48259
|
index 000000000..74ff48259
|
||||||
|
|||||||
Reference in New Issue
Block a user