Bugs and performance

This commit is contained in:
Piegames 2018-12-08 12:25:13 +01:00
parent 73d1d0d907
commit a627245fc3
2 changed files with 6 additions and 4 deletions

View File

@ -240,18 +240,18 @@ public class MinecraftLandGenerator implements Runnable {
.distinct().parallel()
.flatMap(v -> world.availableChunks(v, dimension)
.map(w -> new Vector2i((v.x << 5) | w.x, (v.y << 5) | w.y)))
.collect(Collectors.toList()));
.collect(Collectors.toSet()));
log.debug(
"Removed " + (size - loadedChunks.size()) + " chunks that are already present");
}
log.info("Generating world");
if (loadedChunks.size() < 5000)
log.debug("Chunks to generate: " + loadedChunks);
log.debug(loadedChunks.size() + " chunks to generate: " + loadedChunks);
else log.debug(loadedChunks.size() + " chunks to generate");
int stepCount = (int) Math.ceil((double) loadedChunks.size() / maxLoaded);
for (int i = 0; i < stepCount; i++) {
List<Vector2i> batch = loadedChunks.subList(i * maxLoaded,
Math.min((i + 1) * maxLoaded, loadedChunks.size() - 1));
Math.min((i + 1) * maxLoaded, loadedChunks.size()));
log.info("Generating batch " + (i + 1) + " / " + stepCount + " with " + batch.size()
+ " chunks");
try {

View File

@ -2,6 +2,7 @@ package morlok8k.MinecraftLandGenerator;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.IntBuffer;
import java.nio.channels.FileChannel;
import java.nio.file.FileAlreadyExistsException;
import java.nio.file.Files;
@ -239,7 +240,8 @@ public class World {
ByteBuffer buffer = ByteBuffer.allocate(4096);
channel.read(buffer);
buffer.flip();
return IntStream.range(0, buffer.capacity()).filter(i -> buffer.get(i) != 0)
IntBuffer locations = buffer.asIntBuffer();
return IntStream.range(0, locations.capacity()).filter(i -> locations.get(i) >>> 8 != 0)
.mapToObj(i -> new Vector2i(i & 31, i >> 5));
} catch (IOException e) {
log.warn("Could not open region file " + path + ", assuming it contains no chunks", e);