Set<ChunkPosition> loadedChunks = new HashSet<ChunkPosition>();
int requiredDepth = calculateOctreeOrigin(chunksToLoad);
// create new octree to fit all chunks
octree = new Octree(requiredDepth);
if (waterHeight > 0) {
for (int x = 0; x < (1<<octree.depth); ++x) {
for (int z = 0; z < (1<<octree.depth); ++z) {
for (int y = -origin.y; y < (-origin.y)+waterHeight-1; ++y) {