SimpleMultipart/src/main/java/net/shadowfacts/simplemultipart/util/ShapeUtils.java

39 lines
1.1 KiB
Java
Raw Normal View History

2018-12-24 22:16:38 +00:00
package net.shadowfacts.simplemultipart.util;
import net.minecraft.util.BooleanBiFunction;
import net.minecraft.util.math.Direction;
2018-12-24 22:16:38 +00:00
import net.minecraft.util.shape.VoxelShape;
import net.minecraft.util.shape.VoxelShapes;
import java.util.function.BiFunction;
import java.util.function.DoubleFunction;
2018-12-24 22:16:38 +00:00
/**
* @author shadowfacts
*/
public class ShapeUtils {
public static boolean intersect(VoxelShape a, VoxelShape b) {
2018-12-25 15:20:44 +00:00
// TODO: this seems very inefficient
2018-12-24 22:16:38 +00:00
VoxelShape overlap = VoxelShapes.combine(a, b, BooleanBiFunction.AND);
return !overlap.isEmpty();
}
public static boolean hasSolidSide(VoxelShape shape, Direction side) {
2019-01-05 23:20:21 +00:00
if ((side.getDirection() == Direction.AxisDirection.POSITIVE && shape.getMaximum(side.getAxis()) < 1) || (side.getDirection() == Direction.AxisDirection.NEGATIVE && shape.getMinimum(side.getAxis()) > 0)) {
return false;
}
for (Direction.Axis axis : Direction.Axis.values()) {
if (axis == side.getAxis()) {
continue;
}
if (shape.getMinimum(axis) > 0 || shape.getMaximum(axis) < 1) {
return false;
}
}
return true;
}
2018-12-24 22:16:38 +00:00
}