From c77c0887764d4c7cba2c3190e402a7dfeb06e232 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Sat, 29 Jun 2019 02:32:40 -0500 Subject: [PATCH] Controllable Minecarts --- .../server/EntityMinecartAbstract.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/main/java/net/minecraft/server/EntityMinecartAbstract.java b/src/main/java/net/minecraft/server/EntityMinecartAbstract.java index 6df2930e2d..c8c8fcca1b 100644 --- a/src/main/java/net/minecraft/server/EntityMinecartAbstract.java +++ b/src/main/java/net/minecraft/server/EntityMinecartAbstract.java @@ -336,6 +336,23 @@ public abstract class EntityMinecartAbstract extends Entity { this.setMot(MathHelper.a(vec3d.x, -d0, d0), vec3d.y, MathHelper.a(vec3d.z, -d0, d0)); if (this.onGround) { + // Purpur start + Entity passenger = isVehicle() ? passengers.get(0) : null; + if (passenger instanceof EntityHuman) { + EntityHuman entityhuman = (EntityHuman) passenger; + if (entityhuman.getForward() != 0.0F) { + org.bukkit.util.Vector dir = entityhuman.getBukkitEntity().getEyeLocation().getDirection().normalize(); + if (entityhuman.getForward() < 0.0) { + dir.multiply(-0.25); + } + setMot(new Vec3D(dir.getX(), getMot().y, dir.getZ())); + setStepHeight(1.0F); + } else { + setStepHeight(0.0F); + } + this.yaw = passenger.yaw - 90; + } + // Purpur end // CraftBukkit start - replace magic numbers with our variables this.setMot(new Vec3D(this.getMot().x * this.derailedX, this.getMot().y * this.derailedY, this.getMot().z * this.derailedZ)); // CraftBukkit end -- 2.20.1