Files
CraterLib/Common/src/main/java/me/hypherionmc/craterlib/util/MathUtils.java
2022-05-12 00:20:18 +02:00

38 lines
1.2 KiB
Java

package me.hypherionmc.craterlib.util;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.world.phys.shapes.Shapes;
import net.minecraft.world.phys.shapes.VoxelShape;
public class MathUtils {
public static VoxelShape rotateShape(Direction from, Direction to, VoxelShape shape) {
VoxelShape[] buffer = new VoxelShape[]{ shape, Shapes.empty() };
int times = (to.ordinal() - from.ordinal() + 4) % 4;
for (int i = 0; i < times; i++) {
buffer[0].forAllBoxes((minX, minY, minZ, maxX, maxY, maxZ) -> buffer[1] = Shapes.or(buffer[1], Shapes.box(1-maxZ, minY, minX, 1-minZ, maxY, maxX)));
buffer[0] = buffer[1];
buffer[1] = Shapes.empty();
}
return buffer[0];
}
public static void writeBlockPosToNBT(BlockPos pos, CompoundTag tag) {
tag.putInt("block_x", pos.getX());
tag.putInt("block_y", pos.getY());
tag.putInt("block_z", pos.getZ());
}
public static BlockPos readBlockPosFromNBT(CompoundTag tag) {
int x, y, z;
x = tag.getInt("block_x");
y = tag.getInt("block_y");
z = tag.getInt("block_z");
return new BlockPos(x, y, z);
}
}