EntityUtilities.java 1.21 KB
package com.mumfrey.liteloader.util;

import net.minecraft.entity.Entity;
import net.minecraft.util.math.RayTraceResult;
import net.minecraft.util.math.Vec3d;

public abstract class EntityUtilities
{
    public static RayTraceResult rayTraceFromEntity(Entity entity, double traceDistance, float partialTicks)
    {
        Vec3d var4 = EntityUtilities.getPositionEyes(entity, partialTicks);
        Vec3d var5 = entity.getLook(partialTicks);
        Vec3d var6 = var4.addVector(var5.xCoord * traceDistance, var5.yCoord * traceDistance, var5.zCoord * traceDistance);
        return entity.worldObj.rayTraceBlocks(var4, var6, false, false, true);
    }

    public static Vec3d getPositionEyes(Entity entity, float partialTicks)
    {
        if (partialTicks == 1.0F)
        {
            return new Vec3d(entity.posX, entity.posY + entity.getEyeHeight(), entity.posZ);
        }

        double interpX = entity.prevPosX + (entity.posX - entity.prevPosX) * partialTicks;
        double interpY = entity.prevPosY + (entity.posY - entity.prevPosY) * partialTicks + entity.getEyeHeight();
        double interpZ = entity.prevPosZ + (entity.posZ - entity.prevPosZ) * partialTicks;
        return new Vec3d(interpX, interpY, interpZ);
    }
}