From 8c00499e7602c024ec2dadef05a13539f261cd78 Mon Sep 17 00:00:00 2001 From: cyberpwn Date: Wed, 12 Jan 2022 01:24:12 -0500 Subject: [PATCH] Height fixes --- .../volmit/iris/engine/framework/Engine.java | 2 +- .../engine/platform/BukkitChunkGenerator.java | 4 ++-- .../iris/engine/platform/HeadlessGenerator.java | 2 +- .../java/com/volmit/iris/util/hunk/Hunk.java | 4 ++-- .../iris/util/hunk/view/BiomeGridHunkView.java | 17 ++++++++++------- .../iris/util/hunk/view/ChunkDataHunkView.java | 8 ++++---- 6 files changed, 20 insertions(+), 17 deletions(-) diff --git a/src/main/java/com/volmit/iris/engine/framework/Engine.java b/src/main/java/com/volmit/iris/engine/framework/Engine.java index 06afb363f..daf7b79d0 100644 --- a/src/main/java/com/volmit/iris/engine/framework/Engine.java +++ b/src/main/java/com/volmit/iris/engine/framework/Engine.java @@ -145,7 +145,7 @@ public interface Engine extends DataProvider, Fallible, LootProvider, BlockUpdat @BlockCoordinates default void generate(int x, int z, TerrainChunk tc, boolean multicore) throws WrongEngineBroException { - generate(x, z, Hunk.view((ChunkGenerator.ChunkData) tc), Hunk.view((ChunkGenerator.BiomeGrid) tc), multicore); + generate(x, z, Hunk.view((ChunkGenerator.ChunkData) tc), Hunk.view((ChunkGenerator.BiomeGrid) tc, tc.getMinHeight(), tc.getMaxHeight()), multicore); } @BlockCoordinates diff --git a/src/main/java/com/volmit/iris/engine/platform/BukkitChunkGenerator.java b/src/main/java/com/volmit/iris/engine/platform/BukkitChunkGenerator.java index b4745f3fc..968839ef3 100644 --- a/src/main/java/com/volmit/iris/engine/platform/BukkitChunkGenerator.java +++ b/src/main/java/com/volmit/iris/engine/platform/BukkitChunkGenerator.java @@ -139,7 +139,7 @@ public class BukkitChunkGenerator extends ChunkGenerator implements PlatformChun IrisBiomeStorage st = new IrisBiomeStorage(); TerrainChunk tc = TerrainChunk.createUnsafe(world, st); Hunk blocks = Hunk.view((ChunkData) tc); - Hunk biomes = Hunk.view((BiomeGrid) tc); + Hunk biomes = Hunk.view((BiomeGrid) tc, tc.getMinHeight(), tc.getMaxHeight()); this.world.bind(world); getEngine().generate(x << 4, z << 4, blocks, biomes, true); Iris.debug("Regenerated " + x + " " + z); @@ -284,7 +284,7 @@ public class BukkitChunkGenerator extends ChunkGenerator implements PlatformChun studioGenerator.generateChunk(getEngine(), tc, x, z); } else { Hunk blocks = Hunk.view((ChunkData) tc); - Hunk biomes = Hunk.view((BiomeGrid) tc); + Hunk biomes = Hunk.view((BiomeGrid) tc, tc.getMinHeight(), tc.getMaxHeight()); getEngine().generate(x << 4, z << 4, blocks, biomes, true); } diff --git a/src/main/java/com/volmit/iris/engine/platform/HeadlessGenerator.java b/src/main/java/com/volmit/iris/engine/platform/HeadlessGenerator.java index e698bb0cb..e8af96455 100644 --- a/src/main/java/com/volmit/iris/engine/platform/HeadlessGenerator.java +++ b/src/main/java/com/volmit/iris/engine/platform/HeadlessGenerator.java @@ -86,7 +86,7 @@ public class HeadlessGenerator implements PlatformChunkGenerator { INMS.get().getTrueBiomeBaseId(biomeBase))) .build(); getEngine().generate(x << 4, z << 4, - Hunk.view((ChunkGenerator.ChunkData) tc), Hunk.view((ChunkGenerator.BiomeGrid) tc), + Hunk.view((ChunkGenerator.ChunkData) tc), Hunk.view((ChunkGenerator.BiomeGrid) tc, tc.getMinHeight(), tc.getMaxHeight()), false); chunk.cleanupPalettesAndBlockStates(); } catch (Throwable e) { diff --git a/src/main/java/com/volmit/iris/util/hunk/Hunk.java b/src/main/java/com/volmit/iris/util/hunk/Hunk.java index 5522908db..3e20715c8 100644 --- a/src/main/java/com/volmit/iris/util/hunk/Hunk.java +++ b/src/main/java/com/volmit/iris/util/hunk/Hunk.java @@ -98,8 +98,8 @@ public interface Hunk { return new FunctionalHunkView(src, reader, writer); } - static Hunk view(BiomeGrid biome) { - return new BiomeGridHunkView(biome); + static Hunk view(BiomeGrid biome, int minHeight, int maxHeight) { + return new BiomeGridHunkView(biome, minHeight, maxHeight); } static Hunk fringe(Hunk i, Hunk o) { diff --git a/src/main/java/com/volmit/iris/util/hunk/view/BiomeGridHunkView.java b/src/main/java/com/volmit/iris/util/hunk/view/BiomeGridHunkView.java index 1ce534580..43dcbaf75 100644 --- a/src/main/java/com/volmit/iris/util/hunk/view/BiomeGridHunkView.java +++ b/src/main/java/com/volmit/iris/util/hunk/view/BiomeGridHunkView.java @@ -29,9 +29,13 @@ import org.bukkit.generator.ChunkGenerator.BiomeGrid; public class BiomeGridHunkView implements Hunk { @Getter private final BiomeGrid chunk; + private final int minHeight; + private final int maxHeight; - public BiomeGridHunkView(BiomeGrid chunk) { + public BiomeGridHunkView(BiomeGrid chunk, int minHeight, int maxHeight) { this.chunk = chunk; + this.minHeight = minHeight; + this.maxHeight = maxHeight; } @Override @@ -46,25 +50,24 @@ public class BiomeGridHunkView implements Hunk { @Override public int getHeight() { - // TODO: WARNING HEIGHT - return 256; + return maxHeight - minHeight; } @Override public void setRaw(int x, int y, int z, Biome t) { - chunk.setBiome(x, y, z, t); + chunk.setBiome(x, y+minHeight, z, t); } @Override public Biome getRaw(int x, int y, int z) { - return chunk.getBiome(x, y, z); + return chunk.getBiome(x, y+minHeight, z); } public void forceBiomeBaseInto(int x, int y, int z, Object somethingVeryDirty) { if (chunk instanceof LinkedTerrainChunk) { - INMS.get().forceBiomeInto(x, y, z, somethingVeryDirty, ((LinkedTerrainChunk) chunk).getRawBiome()); + INMS.get().forceBiomeInto(x, y+minHeight, z, somethingVeryDirty, ((LinkedTerrainChunk) chunk).getRawBiome()); return; } - INMS.get().forceBiomeInto(x, y, z, somethingVeryDirty, chunk); + INMS.get().forceBiomeInto(x, y+minHeight, z, somethingVeryDirty, chunk); } } diff --git a/src/main/java/com/volmit/iris/util/hunk/view/ChunkDataHunkView.java b/src/main/java/com/volmit/iris/util/hunk/view/ChunkDataHunkView.java index e229178cb..8dab96d69 100644 --- a/src/main/java/com/volmit/iris/util/hunk/view/ChunkDataHunkView.java +++ b/src/main/java/com/volmit/iris/util/hunk/view/ChunkDataHunkView.java @@ -42,7 +42,7 @@ public class ChunkDataHunkView implements Hunk { @Override public int getHeight() { - return chunk.getMaxHeight(); + return chunk.getMaxHeight() - chunk.getMinHeight(); } @Override @@ -51,7 +51,7 @@ public class ChunkDataHunkView implements Hunk { return; } - chunk.setRegion(x1, y1, z1, x2, y2, z2, t); + chunk.setRegion(x1, y1+chunk.getMinHeight(), z1, x2, y2+chunk.getMinHeight(), z2, t); } @Override @@ -60,11 +60,11 @@ public class ChunkDataHunkView implements Hunk { return; } - chunk.setBlock(x, y, z, t); + chunk.setBlock(x, y+chunk.getMinHeight(), z, t); } @Override public BlockData getRaw(int x, int y, int z) { - return chunk.getBlockData(x, y, z); + return chunk.getBlockData(x, y+chunk.getMinHeight(), z); } }