diff --git a/patches/server/0037-Controllable-Minecarts.patch b/patches/server/0037-Controllable-Minecarts.patch new file mode 100644 index 000000000..4d84de48f --- /dev/null +++ b/patches/server/0037-Controllable-Minecarts.patch @@ -0,0 +1,40 @@ +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 +