Files
Purpur/patches/server/0037-Controllable-Minecarts.patch
William Blake Galbreath 669afad383 Controllable Minecarts
2019-06-29 04:09:12 -05:00

41 lines
1.9 KiB
Diff

From c77c0887764d4c7cba2c3190e402a7dfeb06e232 Mon Sep 17 00:00:00 2001
From: William Blake Galbreath <blake.galbreath@gmail.com>
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