33 lines
1 KiB
Java
33 lines
1 KiB
Java
package net.minecraft.world.phys.shapes;
|
|
|
|
import it.unimi.dsi.fastutil.doubles.DoubleList;
|
|
import net.minecraft.core.Direction;
|
|
|
|
public class SliceShape extends VoxelShape {
|
|
private final VoxelShape delegate;
|
|
private final Direction.Axis axis;
|
|
private static final DoubleList SLICE_COORDS = new CubePointRange(1);
|
|
|
|
public SliceShape(VoxelShape delegate, Direction.Axis axis, int index) {
|
|
super(makeSlice(delegate.shape, axis, index));
|
|
this.delegate = delegate;
|
|
this.axis = axis;
|
|
}
|
|
|
|
private static DiscreteVoxelShape makeSlice(DiscreteVoxelShape shape, Direction.Axis axis, int index) {
|
|
return new SubShape(
|
|
shape,
|
|
axis.choose(index, 0, 0),
|
|
axis.choose(0, index, 0),
|
|
axis.choose(0, 0, index),
|
|
axis.choose(index + 1, shape.xSize, shape.xSize),
|
|
axis.choose(shape.ySize, index + 1, shape.ySize),
|
|
axis.choose(shape.zSize, shape.zSize, index + 1)
|
|
);
|
|
}
|
|
|
|
@Override
|
|
public DoubleList getCoords(Direction.Axis axis) {
|
|
return axis == this.axis ? SLICE_COORDS : this.delegate.getCoords(axis);
|
|
}
|
|
}
|