Add rotation method to respect relative angles
This commit is contained in:
parent
207947f7dd
commit
5b3eb5a375
@ -178,6 +178,6 @@ public abstract class Movement implements Helper, MovementHelper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected void moveTowards(BlockPos pos) {
|
protected void moveTowards(BlockPos pos) {
|
||||||
currentState.setTarget(new MovementState.MovementTarget(new Rotation(Utils.calcRotationFromVec3d(playerHead(), Utils.calcCenterFromCoords(pos, world())).getFirst(), player().rotationPitch))).setInput(InputOverrideHandler.Input.MOVE_FORWARD, true);
|
currentState.setTarget(new MovementState.MovementTarget(new Rotation(Utils.calcRotationFromVec3d(playerHead(), Utils.calcCenterFromCoords(pos, world()), playerRotations()).getFirst(), player().rotationPitch))).setInput(InputOverrideHandler.Input.MOVE_FORWARD, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -131,7 +131,7 @@ public class MovementTraverse extends Movement {
|
|||||||
double faceX = (dest.getX() + against1.getX() + 1.0D) * 0.5D;
|
double faceX = (dest.getX() + against1.getX() + 1.0D) * 0.5D;
|
||||||
double faceY = (dest.getY() + against1.getY()) * 0.5D;
|
double faceY = (dest.getY() + against1.getY()) * 0.5D;
|
||||||
double faceZ = (dest.getZ() + against1.getZ() + 1.0D) * 0.5D;
|
double faceZ = (dest.getZ() + against1.getZ() + 1.0D) * 0.5D;
|
||||||
state.setTarget(new MovementState.MovementTarget(Utils.calcRotationFromVec3d(playerHead(), new Vec3d(faceX, faceY, faceZ))));
|
state.setTarget(new MovementState.MovementTarget(Utils.calcRotationFromVec3d(playerHead(), new Vec3d(faceX, faceY, faceZ), playerRotations())));
|
||||||
|
|
||||||
EnumFacing side = Minecraft.getMinecraft().objectMouseOver.sideHit;
|
EnumFacing side = Minecraft.getMinecraft().objectMouseOver.sideHit;
|
||||||
if (Objects.equals(LookBehaviorUtils.getSelectedBlock().orElse(null), against1) && Minecraft.getMinecraft().player.isSneaking()) {
|
if (Objects.equals(LookBehaviorUtils.getSelectedBlock().orElse(null), against1) && Minecraft.getMinecraft().player.isSneaking()) {
|
||||||
@ -158,7 +158,7 @@ public class MovementTraverse extends Movement {
|
|||||||
double faceZ = (dest.getZ() + src.getZ() + 1.0D) * 0.5D;
|
double faceZ = (dest.getZ() + src.getZ() + 1.0D) * 0.5D;
|
||||||
//faceX,faceY,faceZ is the middle of the face between from and to
|
//faceX,faceY,faceZ is the middle of the face between from and to
|
||||||
BlockPos goalLook = src.down();//this is the block we were just standing on, and the one we want to place against
|
BlockPos goalLook = src.down();//this is the block we were just standing on, and the one we want to place against
|
||||||
state.setTarget(new MovementState.MovementTarget(Utils.calcRotationFromVec3d(playerHead(), new Vec3d(faceX, faceY, faceZ))));
|
state.setTarget(new MovementState.MovementTarget(Utils.calcRotationFromVec3d(playerHead(), new Vec3d(faceX, faceY, faceZ), playerRotations())));
|
||||||
|
|
||||||
state.setInput(InputOverrideHandler.Input.MOVE_BACK, true);
|
state.setInput(InputOverrideHandler.Input.MOVE_BACK, true);
|
||||||
state.setInput(InputOverrideHandler.Input.SNEAK, true);
|
state.setInput(InputOverrideHandler.Input.SNEAK, true);
|
||||||
|
@ -24,11 +24,15 @@ public interface Helper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
default BlockPos playerFeet() {
|
default BlockPos playerFeet() {
|
||||||
return new BlockPos(mc.player.posX, mc.player.posY, mc.player.posZ);
|
return new BlockPos(player().posX, player().posY, player().posZ);
|
||||||
}
|
}
|
||||||
|
|
||||||
default Vec3d playerHead() {
|
default Vec3d playerHead() {
|
||||||
return new Vec3d(mc.player.posX, mc.player.posY + mc.player.getEyeHeight(), mc.player.posZ);
|
return new Vec3d(player().posX, player().posY + player().getEyeHeight(), player().posZ);
|
||||||
|
}
|
||||||
|
|
||||||
|
default Rotation playerRotations() {
|
||||||
|
return new Rotation(player().rotationYaw, player().rotationPitch);
|
||||||
}
|
}
|
||||||
|
|
||||||
default void displayChatMessageRaw(String message) {
|
default void displayChatMessageRaw(String message) {
|
||||||
|
@ -3,6 +3,7 @@ package baritone.bot.utils;
|
|||||||
import net.minecraft.util.Tuple;
|
import net.minecraft.util.Tuple;
|
||||||
|
|
||||||
public class Rotation extends Tuple<Float, Float> {
|
public class Rotation extends Tuple<Float, Float> {
|
||||||
|
|
||||||
public Rotation(Float yaw, Float pitch) {
|
public Rotation(Float yaw, Float pitch) {
|
||||||
super(yaw, pitch);
|
super(yaw, pitch);
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
package baritone.bot.utils;
|
package baritone.bot.utils;
|
||||||
|
|
||||||
import net.minecraft.block.Block;
|
|
||||||
import net.minecraft.block.state.IBlockState;
|
import net.minecraft.block.state.IBlockState;
|
||||||
import net.minecraft.util.math.AxisAlignedBB;
|
import net.minecraft.util.math.AxisAlignedBB;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
import net.minecraft.util.math.MathHelper;
|
||||||
import net.minecraft.util.math.Vec3d;
|
import net.minecraft.util.math.Vec3d;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
@ -32,6 +32,17 @@ public final class Utils {
|
|||||||
(float) (pitch * 180 / Math.PI));
|
(float) (pitch * 180 / Math.PI));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Calculates rotation to given Vec<sub>dest</sub> from Vec<sub>orig</sub>
|
||||||
|
*
|
||||||
|
* @param orig
|
||||||
|
* @param dest
|
||||||
|
* @return Rotation {@link Rotation}
|
||||||
|
*/
|
||||||
|
public static Rotation calcRotationFromVec3d(Vec3d orig, Vec3d dest, Rotation current) {
|
||||||
|
return wrapAnglesToRelative(current, calcRotationFromVec3d(orig, dest));
|
||||||
|
}
|
||||||
|
|
||||||
public static Vec3d calcCenterFromCoords(BlockPos orig, World world) {
|
public static Vec3d calcCenterFromCoords(BlockPos orig, World world) {
|
||||||
IBlockState b = BlockStateInterface.get(orig);
|
IBlockState b = BlockStateInterface.get(orig);
|
||||||
AxisAlignedBB bbox = b.getBoundingBox(world, orig);
|
AxisAlignedBB bbox = b.getBoundingBox(world, orig);
|
||||||
@ -43,6 +54,13 @@ public final class Utils {
|
|||||||
orig.getZ() + zDiff);
|
orig.getZ() + zDiff);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Rotation wrapAnglesToRelative(Rotation current, Rotation target) {
|
||||||
|
return new Rotation(
|
||||||
|
MathHelper.wrapDegrees(target.getFirst() - current.getFirst()) + current.getFirst(),
|
||||||
|
MathHelper.wrapDegrees(target.getSecond() - current.getSecond()) + current.getSecond()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
public static Vec3d vec3dFromBlockPos(BlockPos orig) {
|
public static Vec3d vec3dFromBlockPos(BlockPos orig) {
|
||||||
return new Vec3d(orig.getX() + 0.0D, orig.getY() + 0.0D, orig.getZ() + 0.0D);
|
return new Vec3d(orig.getX() + 0.0D, orig.getY() + 0.0D, orig.getZ() + 0.0D);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user