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 b343d9c50..b68c2d099 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 @@ -24,7 +24,7 @@ public final class TerraCLI { ConfigPack generate = platform.getConfigRegistry().get("OVERWORLD").orElseThrow(); // TODO: make this a cli argument - CLIWorld world = new CLIWorld(2, 2, 384, -64, generate); + CLIWorld world = new CLIWorld(1, 2, 384, -64, generate); world.generate(); 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 0fbb769ff..efd5c3e98 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 @@ -7,6 +7,7 @@ import com.dfsek.terra.cli.NBTSerializable; import com.dfsek.terra.cli.world.chunk.CLIChunk; +import com.google.common.collect.Streams; import net.jafama.FastMath; import com.dfsek.terra.api.block.entity.BlockEntity; @@ -37,8 +38,8 @@ import java.util.stream.Stream; public class CLIWorld implements ServerWorld, NBTSerializable>> { private static final Logger LOGGER = LoggerFactory.getLogger(CLIWorld.class); - private static final int regionBlocks = 32 * 16; private final Region[] regions; + private final Region[] negativeRegions; private final int size; private final long seed; private final int maxHeight; @@ -48,7 +49,7 @@ public class CLIWorld implements ServerWorld, NBTSerializable= 0) return regions[key]; + else return negativeRegions[-key]; + } + @Override public long getSeed() { return seed; @@ -212,7 +220,9 @@ public class CLIWorld implements ServerWorld, NBTSerializable> serialize() { - return Arrays.stream(regions).map(region -> Pair.of(Vector2Int.of(region.getX(), region.getZ()), region.serialize())); + return Streams + .concat(Arrays.stream(regions), Arrays.stream(negativeRegions)) + .map(region -> Pair.of(Vector2Int.of(region.getX(), region.getZ()), region.serialize())); } private static final class CLIProtoWorld implements ProtoWorld { diff --git a/platforms/cli/src/main/java/com/dfsek/terra/cli/world/Region.java b/platforms/cli/src/main/java/com/dfsek/terra/cli/world/Region.java index 5c73e9eb6..7c4562ff2 100644 --- a/platforms/cli/src/main/java/com/dfsek/terra/cli/world/Region.java +++ b/platforms/cli/src/main/java/com/dfsek/terra/cli/world/Region.java @@ -1,11 +1,10 @@ package com.dfsek.terra.cli.world; +import net.querz.mca.MCAFile; + import com.dfsek.terra.cli.NBTSerializable; import com.dfsek.terra.cli.world.chunk.CLIChunk; -import net.querz.mca.MCAFile; -import net.querz.mca.MCAUtil; - public class Region implements NBTSerializable { private final CLIChunk[] chunks; diff --git a/platforms/cli/src/main/java/com/dfsek/terra/cli/world/chunk/CLIChunk.java b/platforms/cli/src/main/java/com/dfsek/terra/cli/world/chunk/CLIChunk.java index b06a5ea71..79fa0832b 100644 --- a/platforms/cli/src/main/java/com/dfsek/terra/cli/world/chunk/CLIChunk.java +++ b/platforms/cli/src/main/java/com/dfsek/terra/cli/world/chunk/CLIChunk.java @@ -1,6 +1,5 @@ package com.dfsek.terra.cli.world.chunk; -import net.querz.mca.Section; import org.jetbrains.annotations.NotNull; import com.dfsek.terra.api.block.state.BlockState; @@ -9,11 +8,8 @@ import com.dfsek.terra.api.world.chunk.Chunk; import com.dfsek.terra.api.world.chunk.generation.ProtoChunk; import com.dfsek.terra.cli.NBTSerializable; import com.dfsek.terra.cli.block.CLIBlockState; -import com.dfsek.terra.cli.handle.CLIWorldHandle; import com.dfsek.terra.cli.world.CLIWorld; -import java.lang.reflect.Field; - import static com.dfsek.terra.cli.handle.CLIWorldHandle.getAIR;