Unicopia/src/main/java/com/minelittlepony/unicopia/util/VecHelper.java
2021-08-04 15:38:03 +02:00

26 lines
992 B
Java

package com.minelittlepony.unicopia.util;
import java.util.List;
import java.util.function.Predicate;
import org.jetbrains.annotations.Nullable;
import net.minecraft.entity.Entity;
import net.minecraft.util.math.Box;
import net.minecraft.util.math.Vec3d;
import net.minecraft.world.World;
public interface VecHelper {
static Predicate<Entity> inRange(Vec3d center, double range) {
double rad = Math.pow(range, 2);
return e -> {
return e.squaredDistanceTo(center) <= rad
|| e.squaredDistanceTo(center.getX(), center.getY() - e.getStandingEyeHeight(), center.getZ()) <= rad;
};
}
static List<Entity> findInRange(@Nullable Entity origin, World w, Vec3d pos, double radius, @Nullable Predicate<Entity> predicate) {
double diameter = radius * 2;
return w.getOtherEntities(origin, Box.of(pos, diameter, diameter, diameter), predicate == null ? inRange(pos, radius) : inRange(pos, radius).and(predicate));
}
}