@Nullable
    @Override
    public BlockHitResult clip(Vec3 start, Vec3 end, BlockPos pos) {

        Vector3 relativeStart = new Vector3(start).subtract(pos.getX(), pos.getY(), pos.getZ());
        Vector3 relativeEnd = new Vector3(end).subtract(pos.getX(), pos.getY(), pos.getZ());

        Vector3 intersection = null;
        Direction side = null;
        double dist = Double.MAX_VALUE;

        List<Tri> hits = new LinkedList<>();

        for (Tri tri : tris) {
            Vector3 i = tri.getIntersection(relativeStart, relativeEnd, true, false);
            if (i == null) continue;

            hits.add(tri);
            double d = relativeStart.copy().subtract(i).magSquared();

            if (dist > d) {
                intersection = i;
                side = tri.side;
                dist = d;
            }
        }

        if (intersection == null) return null;

        return new BlockHitResult(intersection.add(pos).vec3(), side, pos, true);
    }
Creates a VoxelShape with properties of the provided parent, but that traces
against only against the provided triangles.

@param parent The parent shape for render outline. Typically, something similar to the actual model.
@param tris   Triangles for ray tracing
core/src/main/java/mrtjp/projectred/lib/ModelVoxelShape.java