From a482a6673eb6e9775d8bc2adde04fe0fae0ded23 Mon Sep 17 00:00:00 2001 From: "Josiah (Gaming32) Glosson" Date: Tue, 11 Jul 2023 16:13:53 -0500 Subject: [PATCH] Fix ceiling->wall teleportation I think it looks even better than it did before. --- .../com/fusionflux/portalcubed/mixin/PlayerMixin.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/fusionflux/portalcubed/mixin/PlayerMixin.java b/src/main/java/com/fusionflux/portalcubed/mixin/PlayerMixin.java index f84a532f..0ae4416d 100644 --- a/src/main/java/com/fusionflux/portalcubed/mixin/PlayerMixin.java +++ b/src/main/java/com/fusionflux/portalcubed/mixin/PlayerMixin.java @@ -229,7 +229,7 @@ private static boolean doFeetTeleport(Portal portal) { assert portal.getOtherNormal().isPresent(); final double y = portal.getNormal().y; final double oy = portal.getOtherNormal().get().y; - return (y > 0 && oy < 0) || (y < 0 && oy > 0); + return (y > 0 && oy < 0) || y < 0; } @Unique @@ -270,6 +270,7 @@ private void performTeleport( ((basePosition.y()) - portal.position().y()) * invert.y, ((basePosition.z()) - portal.position().z()) * invert.z ); + Vec3 teleportOffsetNoRotate = Vec3.ZERO; if (portal.getNormal().y < 0 && portal.getOtherNormal().get().y <= 0) { teleportOffset = teleportOffset.add( 0, @@ -278,16 +279,16 @@ private void performTeleport( ), 0 ); + teleportOffsetNoRotate = teleportOffsetNoRotate.add(0, -thisEntity.getEyeHeight(), 0); } else if (portal.getNormal().y > 0 && portal.getOtherNormal().get().y > 0) { teleportOffset = teleportOffset.add(0, thisEntity.getEyeHeight(), 0); } - byteBuf.writeDouble(teleportOffset.x); - byteBuf.writeDouble(teleportOffset.y); - byteBuf.writeDouble(teleportOffset.z); - Vec3 teleportOffsetNoRotate = Vec3.ZERO; if (portal.getOtherNormal().get().y < 0 && portal.getNormal().y <= 0) { teleportOffsetNoRotate = teleportOffsetNoRotate.add(0, -thisEntity.getEyeHeight(), 0); } + byteBuf.writeDouble(teleportOffset.x); + byteBuf.writeDouble(teleportOffset.y); + byteBuf.writeDouble(teleportOffset.z); byteBuf.writeDouble(teleportOffsetNoRotate.x); byteBuf.writeDouble(teleportOffsetNoRotate.y); byteBuf.writeDouble(teleportOffsetNoRotate.z);