From 4265a2855cf6d0e672229b841eeb95ef950786cc Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Thu, 17 Jun 2021 11:28:29 +0200 Subject: [PATCH] Finally bearable - Entities can now jump on Mechanical Belts - Entities on belts no longer get force-centered while actively moving or strafing --- .../relays/belt/transport/BeltMovementHandler.java | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltMovementHandler.java b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltMovementHandler.java index 9786a30c4f..e96ebabdf4 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltMovementHandler.java +++ b/src/main/java/com/simibubi/create/content/contraptions/relays/belt/transport/BeltMovementHandler.java @@ -95,9 +95,8 @@ public class BeltMovementHandler { // Lock entities in place boolean isPlayer = entityIn instanceof PlayerEntity; - if (entityIn instanceof LivingEntity && !isPlayer) { + if (entityIn instanceof LivingEntity && !isPlayer) ((LivingEntity) entityIn).addPotionEffect(new EffectInstance(Effects.SLOWNESS, 10, 1, false, false)); - } final Direction beltFacing = blockState.get(BlockStateProperties.HORIZONTAL_FACING); final BeltSlope slope = blockState.get(BeltBlock.SLOPE); @@ -138,12 +137,14 @@ public class BeltMovementHandler { movement = movement.add(0, -Math.abs(axis.getCoordinate(movement.x, movement.y, movement.z)), 0); Vector3d centering = Vector3d.of(centeringDirection).scale(diffCenter * Math.min(Math.abs(movementSpeed), .1f) * 4); - float step = entityIn.stepHeight; - if (!isPlayer) { + if (!(entityIn instanceof LivingEntity) + || ((LivingEntity) entityIn).moveForward == 0 && ((LivingEntity) entityIn).moveStrafing == 0) movement = movement.add(centering); + + float step = entityIn.stepHeight; + if (!isPlayer) entityIn.stepHeight = 1; - } // Entity Collisions if (Math.abs(movementSpeed) < .5f) { @@ -175,6 +176,8 @@ public class BeltMovementHandler { } else { entityIn.move(SELF, movement); } + + entityIn.onGround = true; if (!isPlayer) entityIn.stepHeight = step; @@ -189,6 +192,7 @@ public class BeltMovementHandler { entityIn.setMotion(movement); entityIn.velocityChanged = true; } + } public static boolean shouldIgnoreBlocking(Entity me, Entity other) {