Code/net/minecraft/world/phys/shapes/SliceShape.java

33 lines
1.2 KiB
Java
Raw Normal View History

2025-07-01 06:20:03 +00:00
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_);
}
}