45 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| package net.minecraft.world.phys.shapes;
 | |
| 
 | |
| import it.unimi.dsi.fastutil.doubles.DoubleArrayList;
 | |
| import it.unimi.dsi.fastutil.doubles.DoubleList;
 | |
| import java.util.Arrays;
 | |
| import net.minecraft.Util;
 | |
| import net.minecraft.core.Direction;
 | |
| 
 | |
| public class ArrayVoxelShape extends VoxelShape {
 | |
| 	private final DoubleList xs;
 | |
| 	private final DoubleList ys;
 | |
| 	private final DoubleList zs;
 | |
| 
 | |
| 	protected ArrayVoxelShape(DiscreteVoxelShape shape, double[] xs, double[] ys, double[] zs) {
 | |
| 		this(
 | |
| 			shape,
 | |
| 			DoubleArrayList.wrap(Arrays.copyOf(xs, shape.getXSize() + 1)),
 | |
| 			DoubleArrayList.wrap(Arrays.copyOf(ys, shape.getYSize() + 1)),
 | |
| 			DoubleArrayList.wrap(Arrays.copyOf(zs, shape.getZSize() + 1))
 | |
| 		);
 | |
| 	}
 | |
| 
 | |
| 	ArrayVoxelShape(DiscreteVoxelShape shape, DoubleList xs, DoubleList ys, DoubleList zs) {
 | |
| 		super(shape);
 | |
| 		int i = shape.getXSize() + 1;
 | |
| 		int j = shape.getYSize() + 1;
 | |
| 		int k = shape.getZSize() + 1;
 | |
| 		if (i == xs.size() && j == ys.size() && k == zs.size()) {
 | |
| 			this.xs = xs;
 | |
| 			this.ys = ys;
 | |
| 			this.zs = zs;
 | |
| 		} else {
 | |
| 			throw (IllegalArgumentException)Util.pauseInIde(new IllegalArgumentException("Lengths of point arrays must be consistent with the size of the VoxelShape."));
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	@Override
 | |
| 	public DoubleList getCoords(Direction.Axis axis) {
 | |
| 		return switch (axis) {
 | |
| 			case X -> this.xs;
 | |
| 			case Y -> this.ys;
 | |
| 			case Z -> this.zs;
 | |
| 		};
 | |
| 	}
 | |
| }
 |