33 lines
1.2 KiB
Java
33 lines
1.2 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 p_83173_, Direction.Axis p_83174_, int p_83175_) {
|
|
super(makeSlice(p_83173_.shape, p_83174_, p_83175_));
|
|
this.delegate = p_83173_;
|
|
this.axis = p_83174_;
|
|
}
|
|
|
|
private static DiscreteVoxelShape makeSlice(DiscreteVoxelShape p_83177_, Direction.Axis p_83178_, int p_83179_) {
|
|
return new SubShape(
|
|
p_83177_,
|
|
p_83178_.choose(p_83179_, 0, 0),
|
|
p_83178_.choose(0, p_83179_, 0),
|
|
p_83178_.choose(0, 0, p_83179_),
|
|
p_83178_.choose(p_83179_ + 1, p_83177_.xSize, p_83177_.xSize),
|
|
p_83178_.choose(p_83177_.ySize, p_83179_ + 1, p_83177_.ySize),
|
|
p_83178_.choose(p_83177_.zSize, p_83177_.zSize, p_83179_ + 1)
|
|
);
|
|
}
|
|
|
|
@Override
|
|
public DoubleList getCoords(Direction.Axis p_83181_) {
|
|
return p_83181_ == this.axis ? SLICE_COORDS : this.delegate.getCoords(p_83181_);
|
|
}
|
|
} |