mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-17 16:37: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>
|
||||
Date: Tue, 30 Apr 2019 19:17:21 -0500
|
||||
Subject: [PATCH] Integrate ridables
|
||||
@@ -7,7 +7,7 @@ Subject: [PATCH] Integrate ridables
|
||||
.../server/ControllerLookDolphin.java | 4 +-
|
||||
.../java/net/minecraft/server/Entity.java | 25 +++-
|
||||
.../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 +-
|
||||
.../java/net/minecraft/server/EntityCat.java | 3 +-
|
||||
.../minecraft/server/EntityCaveSpider.java | 1 +
|
||||
@@ -82,14 +82,16 @@ Subject: [PATCH] Integrate ridables
|
||||
.../java/net/pl3x/purpur/PurpurConfig.java | 136 ++++++++++++++++++
|
||||
.../purpur/controller/ControllerLookWASD.java | 74 ++++++++++
|
||||
.../purpur/controller/ControllerMoveWASD.java | 77 ++++++++++
|
||||
.../controller/ControllerMoveWASDFlying.java | 58 ++++++++
|
||||
.../controller/ControllerMoveWASDFlying.java | 62 ++++++++
|
||||
.../ControllerMoveWASDFlyingWithSpacebar.java | 65 +++++++++
|
||||
.../controller/ControllerMoveWASDWater.java | 42 ++++++
|
||||
.../craftbukkit/entity/CraftLivingEntity.java | 10 ++
|
||||
.../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/ControllerMoveWASD.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
|
||||
|
||||
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
|
||||
index 4c283c33b..6a666ae05 100644
|
||||
index 4c283c33b..5344a6cf2 100644
|
||||
--- a/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;
|
||||
@@ -207,14 +209,49 @@ index 4c283c33b..6a666ae05 100644
|
||||
import org.bukkit.craftbukkit.event.CraftEventFactory; // CraftBukkit
|
||||
|
||||
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) {
|
||||
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);
|
||||
}
|
||||
|
||||
@@ -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
|
||||
index 15db67de0..2e418ee14 100644
|
||||
--- 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
|
||||
new file mode 100644
|
||||
index 000000000..1a5a0c04c
|
||||
index 000000000..b0b504c7d
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/net/pl3x/purpur/controller/ControllerMoveWASDFlying.java
|
||||
@@ -0,0 +1,58 @@
|
||||
@@ -0,0 +1,62 @@
|
||||
+package net.pl3x.purpur.controller;
|
||||
+
|
||||
+import net.minecraft.server.EntityHuman;
|
||||
@@ -2363,13 +2400,17 @@ index 000000000..1a5a0c04c
|
||||
+
|
||||
+public class ControllerMoveWASDFlying extends ControllerMoveWASD {
|
||||
+ protected final float groundSpeedModifier;
|
||||
+ private final double maxY;
|
||||
+ private int tooHighCooldown = 0;
|
||||
+ protected final double maxY;
|
||||
+ protected int tooHighCooldown = 0;
|
||||
+
|
||||
+ public ControllerMoveWASDFlying(EntityInsentient entity) {
|
||||
+ this(entity, 1.0F, 256D);
|
||||
+ }
|
||||
+
|
||||
+ public ControllerMoveWASDFlying(EntityInsentient entity, float groundSpeedModifier) {
|
||||
+ this(entity, groundSpeedModifier, 256D);
|
||||
+ }
|
||||
+
|
||||
+ public ControllerMoveWASDFlying(EntityInsentient entity, float groundSpeedModifier, double maxY) {
|
||||
+ super(entity);
|
||||
+ this.groundSpeedModifier = groundSpeedModifier;
|
||||
@@ -2413,6 +2454,77 @@ index 000000000..1a5a0c04c
|
||||
+ 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
|
||||
new file mode 100644
|
||||
index 000000000..74ff48259
|
||||
|
||||
Reference in New Issue
Block a user