helper for 0.5 center
This commit is contained in:
parent
b1462d5649
commit
38afa1b63c
@ -35,7 +35,6 @@ import net.minecraft.util.EnumFacing;
|
|||||||
import net.minecraft.util.NonNullList;
|
import net.minecraft.util.NonNullList;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.util.math.RayTraceResult;
|
import net.minecraft.util.math.RayTraceResult;
|
||||||
import net.minecraft.util.math.Vec3d;
|
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -204,7 +203,7 @@ public interface MovementHelper extends ActionCosts, Helper {
|
|||||||
|
|
||||||
static MovementState moveTowards(MovementState state, BlockPos pos) {
|
static MovementState moveTowards(MovementState state, BlockPos pos) {
|
||||||
return state.setTarget(new MovementTarget(new Rotation(Utils.calcRotationFromVec3d(mc.player.getPositionEyes(1.0F),
|
return state.setTarget(new MovementTarget(new Rotation(Utils.calcRotationFromVec3d(mc.player.getPositionEyes(1.0F),
|
||||||
new Vec3d(pos.getX() + 0.5, pos.getY() + 0.5, pos.getZ() + 0.5),
|
Utils.getBlockPosCenter(pos),
|
||||||
new Rotation(mc.player.rotationYaw, mc.player.rotationPitch)).getFirst(), mc.player.rotationPitch))
|
new Rotation(mc.player.rotationYaw, mc.player.rotationPitch)).getFirst(), mc.player.rotationPitch))
|
||||||
).setInput(InputOverrideHandler.Input.MOVE_FORWARD, true);
|
).setInput(InputOverrideHandler.Input.MOVE_FORWARD, true);
|
||||||
}
|
}
|
||||||
|
@ -89,7 +89,7 @@ public class MovementFall extends Movement {
|
|||||||
}
|
}
|
||||||
return state.setStatus(MovementStatus.SUCCESS);
|
return state.setStatus(MovementStatus.SUCCESS);
|
||||||
}
|
}
|
||||||
Vec3d destCenter = Utils.calcCenterFromCoords(dest, world());
|
Vec3d destCenter = Utils.getBlockPosCenter(dest); // we are moving to the 0.5 center not the edge (like if we were falling on a ladder)
|
||||||
if (Math.abs(player().posX - destCenter.x) > 0.2 || Math.abs(player().posZ - destCenter.z) > 0.2) {
|
if (Math.abs(player().posX - destCenter.x) > 0.2 || Math.abs(player().posZ - destCenter.z) > 0.2) {
|
||||||
state.setInput(InputOverrideHandler.Input.MOVE_FORWARD, true);
|
state.setInput(InputOverrideHandler.Input.MOVE_FORWARD, true);
|
||||||
}
|
}
|
||||||
|
@ -42,7 +42,7 @@ public final class Utils {
|
|||||||
* @return Rotation {@link Rotation}
|
* @return Rotation {@link Rotation}
|
||||||
*/
|
*/
|
||||||
public static Rotation calcRotationFromVec3d(Vec3d orig, Vec3d dest) {
|
public static Rotation calcRotationFromVec3d(Vec3d orig, Vec3d dest) {
|
||||||
double[] delta = { orig.x - dest.x, orig.y - dest.y, orig.z - dest.z };
|
double[] delta = {orig.x - dest.x, orig.y - dest.y, orig.z - dest.z};
|
||||||
double yaw = Math.atan2(delta[0], -delta[2]);
|
double yaw = Math.atan2(delta[0], -delta[2]);
|
||||||
double dist = Math.sqrt(delta[0] * delta[0] + delta[2] * delta[2]);
|
double dist = Math.sqrt(delta[0] * delta[0] + delta[2] * delta[2]);
|
||||||
double pitch = Math.atan2(delta[1], dist);
|
double pitch = Math.atan2(delta[1], dist);
|
||||||
@ -74,6 +74,10 @@ public final class Utils {
|
|||||||
orig.getZ() + zDiff);
|
orig.getZ() + zDiff);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Vec3d getBlockPosCenter(BlockPos pos) {
|
||||||
|
return new Vec3d(pos.getX() + 0.5, pos.getY() + 0.5, pos.getZ() + 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
public static Rotation wrapAnglesToRelative(Rotation current, Rotation target) {
|
public static Rotation wrapAnglesToRelative(Rotation current, Rotation target) {
|
||||||
return new Rotation(
|
return new Rotation(
|
||||||
MathHelper.wrapDegrees(target.getFirst() - current.getFirst()) + current.getFirst(),
|
MathHelper.wrapDegrees(target.getFirst() - current.getFirst()) + current.getFirst(),
|
||||||
|
Loading…
Reference in New Issue
Block a user