Search in sources :

Example 1 with Fluid

use of net.minecraft.world.level.ClipContext.Fluid in project wthit by badasintended.

the class RaycastUtil method fire.

public static HitResult fire(Entity camera, double reach, float tickDelta) {
    Vec3 viewVec = camera.getViewVector(tickDelta);
    Vec3 start = camera.getEyePosition(tickDelta);
    Vec3 end = start.add(viewVec.x * reach, viewVec.y * reach, viewVec.z * reach);
    Fluid fluidContext = PluginConfig.INSTANCE.getBoolean(WailaConstants.CONFIG_SHOW_FLUID) ? Fluid.SOURCE_ONLY : Fluid.NONE;
    BlockHitResult blockHit = camera.level.clip(new ClipContext(start, end, Block.OUTLINE, fluidContext, camera));
    if (PluginConfig.INSTANCE.getBoolean(WailaConstants.CONFIG_SHOW_ENTITY)) {
        EntityHitResult entityHit = ProjectileUtil.getEntityHitResult(camera, start, end, new AABB(start, end), EntitySelector.ENTITY_STILL_ALIVE, 0f);
        if (entityHit != null) {
            if (blockHit.getType() == Type.MISS) {
                return entityHit;
            }
            double blockDistance = blockHit.getLocation().distanceToSqr(start);
            double entityDistance = entityHit.getLocation().distanceToSqr(start);
            if (entityDistance < blockDistance) {
                return entityHit;
            }
        }
    }
    return blockHit;
}
Also used : ClipContext(net.minecraft.world.level.ClipContext) Vec3(net.minecraft.world.phys.Vec3) Fluid(net.minecraft.world.level.ClipContext.Fluid) BlockHitResult(net.minecraft.world.phys.BlockHitResult) EntityHitResult(net.minecraft.world.phys.EntityHitResult) AABB(net.minecraft.world.phys.AABB)

Aggregations

ClipContext (net.minecraft.world.level.ClipContext)1 Fluid (net.minecraft.world.level.ClipContext.Fluid)1 AABB (net.minecraft.world.phys.AABB)1 BlockHitResult (net.minecraft.world.phys.BlockHitResult)1 EntityHitResult (net.minecraft.world.phys.EntityHitResult)1 Vec3 (net.minecraft.world.phys.Vec3)1