From 86bffcf6047bd3a41e419d1b72f64f3280b6480b Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Fri, 14 Jun 2019 20:32:48 -0500 Subject: [PATCH] Fix riding bats --- patches/server/0011-Integrate-ridables.patch | 134 +++++++++++++++++-- 1 file changed, 123 insertions(+), 11 deletions(-) diff --git a/patches/server/0011-Integrate-ridables.patch b/patches/server/0011-Integrate-ridables.patch index 2108bca41..5e075f60c 100644 --- a/patches/server/0011-Integrate-ridables.patch +++ b/patches/server/0011-Integrate-ridables.patch @@ -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 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 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