public static int calcChunkPosY(int y) { return calcChunkPosY(y, ChunkConstants.CHUNK_POWER.y); } public static int calcChunkPosZ(int z) {
/** * Gets the index of the chunk in {@link #chunks} * * @param blockPos The position of the block in world coordinates * @return The index of the chunk in the array */ private int chunkIndexOf(Vector3i blockPos) { return ChunkMath.calcChunkPosX(blockPos.x, ChunkConstants.POWER_X) - topLeft.x + 3 * (ChunkMath.calcChunkPosY(blockPos.y, ChunkConstants.POWER_Y) - topLeft.y + 3 * (ChunkMath.calcChunkPosZ(blockPos.z, ChunkConstants.POWER_Z) - topLeft.z)); }
public static Vector3i calcChunkPos(int x, int y, int z, Vector3i chunkPower) { return new Vector3i(calcChunkPosX(x, chunkPower.x), calcChunkPosY(y, chunkPower.y), calcChunkPosZ(z, chunkPower.z)); }
protected int relChunkIndex(int x, int y, int z) { return TeraMath.calculate3DArrayIndex(ChunkMath.calcChunkPosX(x, chunkPower.x) + offset.x, ChunkMath.calcChunkPosY(y, chunkPower.y) + offset.y, ChunkMath.calcChunkPosZ(z, chunkPower.z) + offset.z, chunkRegion.size()); }
public static Vector3i[] calcChunkPos(Region3i region, Vector3i chunkPower) { int minX = calcChunkPosX(region.minX(), chunkPower.x); int minY = calcChunkPosY(region.minY(), chunkPower.y); int minZ = calcChunkPosZ(region.minZ(), chunkPower.z); int maxX = calcChunkPosX(region.maxX(), chunkPower.x); int maxY = calcChunkPosY(region.maxY(), chunkPower.y); int maxZ = calcChunkPosZ(region.maxZ(), chunkPower.z); int size = (maxX - minX + 1) * (maxY - minY + 1) * (maxZ - minZ + 1); Vector3i[] result = new Vector3i[size]; int index = 0; for (int x = minX; x <= maxX; x++) { for (int y = minY; y <= maxY; y++) { for (int z = minZ; z <= maxZ; z++) { result[index++] = new Vector3i(x, y, z); } } } return result; }
@Override public Block getBlock(int x, int y, int z) { CoreChunk chunk = chunkProvider.getChunk(ChunkMath.calcChunkPosX(x), ChunkMath.calcChunkPosY(y), ChunkMath.calcChunkPosZ(z)); if (chunk != null) { return chunk.getBlock(ChunkMath.calcBlockPosX(x), ChunkMath.calcBlockPosY(y), ChunkMath.calcBlockPosZ(z)); } return unloadedBlock; }
@Override public int getExtraData(int index, int x, int y, int z) { CoreChunk chunk = chunkProvider.getChunk(ChunkMath.calcChunkPosX(x), ChunkMath.calcChunkPosY(y), ChunkMath.calcChunkPosZ(z)); if (chunk != null) { return chunk.getExtraData(index, ChunkMath.calcBlockPosX(x), ChunkMath.calcBlockPosY(y), ChunkMath.calcBlockPosZ(z)); } return 0; }