diff --git a/platforms/cli/src/main/java/com/dfsek/terra/cli/TerraCLI.java b/platforms/cli/src/main/java/com/dfsek/terra/cli/TerraCLI.java index 6bce0674b..df55beea9 100644 --- a/platforms/cli/src/main/java/com/dfsek/terra/cli/TerraCLI.java +++ b/platforms/cli/src/main/java/com/dfsek/terra/cli/TerraCLI.java @@ -36,6 +36,9 @@ public final class TerraCLI implements Callable { @Option(names = { "--min-height"}, description = "Minimum height of the world.") private int minHeight = -64; + @Option(names = { "--no-save"}, description = "Don't save the world to disk.") + private boolean noSave = false; + @Override public Integer call() { Logger LOGGER = LoggerFactory.getLogger(TerraCLI.class); @@ -46,22 +49,24 @@ public final class TerraCLI implements Callable { ConfigPack generate = platform.getConfigRegistry().getByID(pack).orElseThrow(); - CLIWorld world = new CLIWorld(size, seed, maxHeight, minHeight, generate); + CLIWorld world = new CLIWorld(size, seed, maxHeight, minHeight, generate, noSave); world.generate(); - world.serialize().parallel().forEach(mcaFile -> { - Vector2Int pos = mcaFile.getLeft(); - String name = MCAUtil.createNameFromRegionLocation(pos.getX(), pos.getZ()); - LOGGER.info("Writing region ({}, {}) to {}", pos.getX(), pos.getZ(), name); + if(!noSave) { + world.serialize().parallel().forEach(mcaFile -> { + Vector2Int pos = mcaFile.getLeft(); + String name = MCAUtil.createNameFromRegionLocation(pos.getX(), pos.getZ()); + LOGGER.info("Writing region ({}, {}) to {}", pos.getX(), pos.getZ(), name); - try { - MCAUtil.write(mcaFile.getRight(), name); - } catch(IOException e) { - e.printStackTrace(); - } - LOGGER.info("Wrote region to file."); - }); + try { + MCAUtil.write(mcaFile.getRight(), name); + } catch(IOException e) { + e.printStackTrace(); + } + LOGGER.info("Wrote region to file."); + }); + } LOGGER.info("Done."); return 0; } diff --git a/platforms/cli/src/main/java/com/dfsek/terra/cli/world/CLIWorld.java b/platforms/cli/src/main/java/com/dfsek/terra/cli/world/CLIWorld.java index 3d2b5dd51..cb22ac666 100644 --- a/platforms/cli/src/main/java/com/dfsek/terra/cli/world/CLIWorld.java +++ b/platforms/cli/src/main/java/com/dfsek/terra/cli/world/CLIWorld.java @@ -43,6 +43,7 @@ public class CLIWorld implements ServerWorld, NBTSerializable { try { int num = amount.getAndIncrement(); - CLIChunk chunk = getChunkAt(finalX, finalZ); + CLIChunk chunk; + if (!noSave) { + chunk = getChunkAt(finalX, finalZ); + } else { + chunk = new CLIChunk(Math.floorMod(finalX, 32), Math.floorMod(finalZ, 32), this); + } + BiomeProvider cachingBiomeProvider = pack.getBiomeProvider(); chunkGenerator.generateChunkData(chunk, this, cachingBiomeProvider, finalX, finalZ); CLIProtoWorld protoWorld = new CLIProtoWorld(this, cachingBiomeProvider, finalX, finalZ);