2018-08-01 17:10:48 +00:00
|
|
|
package baritone.bot.utils;
|
|
|
|
|
2018-08-02 07:12:51 +00:00
|
|
|
import net.minecraft.block.state.IBlockState;
|
|
|
|
import net.minecraft.util.Tuple;
|
|
|
|
import net.minecraft.util.math.AxisAlignedBB;
|
|
|
|
import net.minecraft.util.math.BlockPos;
|
|
|
|
import net.minecraft.world.World;
|
|
|
|
|
2018-08-01 17:10:48 +00:00
|
|
|
/**
|
|
|
|
* @author Brady
|
|
|
|
* @since 8/1/2018 12:56 AM
|
|
|
|
*/
|
|
|
|
public final class Utils {
|
|
|
|
|
2018-08-02 07:12:51 +00:00
|
|
|
public static Tuple<Float, Float> calcRotationFromCoords(BlockPos orig, BlockPos dest) {
|
|
|
|
double yaw = Math.atan2(orig.getX() - dest.getX(), -orig.getZ() + dest.getZ());
|
|
|
|
double dist = Math.sqrt((orig.getX() - dest.getX()) * (orig.getX() - dest.getX()) + (-orig.getZ() + dest.getZ()) * (-orig.getZ() + dest.getZ()));
|
|
|
|
double pitch = Math.atan2(orig.getY() - dest.getY(), dist);
|
2018-08-02 07:17:48 +00:00
|
|
|
return new Tuple<>((float) (yaw * 180 / Math.PI),
|
2018-08-02 07:12:51 +00:00
|
|
|
(float) (pitch * 180 / Math.PI));
|
|
|
|
}
|
|
|
|
|
|
|
|
public static BlockPos calcCenterFromCoords(BlockPos orig, World world) {
|
|
|
|
IBlockState b = world.getBlockState(orig);
|
|
|
|
AxisAlignedBB bbox = b.getBoundingBox(world, orig);
|
|
|
|
double xDiff = (bbox.minX + bbox.maxX) / 2;
|
|
|
|
double yDiff = (bbox.minY + bbox.maxY) / 2;
|
|
|
|
double zDiff = (bbox.minZ + bbox.maxZ) / 2;
|
2018-08-02 07:17:48 +00:00
|
|
|
return new BlockPos(orig.getX() + xDiff,
|
2018-08-02 07:12:51 +00:00
|
|
|
orig.getY() + yDiff,
|
|
|
|
orig.getZ() + zDiff);
|
|
|
|
}
|
2018-08-01 17:10:48 +00:00
|
|
|
}
|