diff --git a/src/main/java/com/volmit/iris/engine/modifier/IrisCarveModifier.java b/src/main/java/com/volmit/iris/engine/modifier/IrisCarveModifier.java index d711512ab..b03dac036 100644 --- a/src/main/java/com/volmit/iris/engine/modifier/IrisCarveModifier.java +++ b/src/main/java/com/volmit/iris/engine/modifier/IrisCarveModifier.java @@ -237,24 +237,27 @@ public class IrisCarveModifier extends EngineAssignedModifier { blocks = biome.generateCeilingLayers(getDimension(), xx, zz, rng, 3, zone.ceiling, getData(), getComplex()); - for (int i = 0; i < zone.ceiling + 1; i++) { - if (!blocks.hasIndex(i)) { - break; + if(zone.ceiling + 1 < mantle.getWorldHeight()) + { + for (int i = 0; i < zone.ceiling + 1; i++) { + if (!blocks.hasIndex(i)) { + break; + } + + BlockData b = blocks.get(i); + BlockData up = output.get(rx, zone.ceiling + i + 1, rz); + + if (!B.isSolid(up)) { + continue; + } + + if (B.isOre(up)) { + output.set(rx, zone.ceiling + i + 1, rz, B.toDeepSlateOre(up, b)); + continue; + } + + output.set(rx, zone.ceiling + i + 1, rz, b); } - - BlockData b = blocks.get(i); - BlockData up = output.get(rx, zone.ceiling + i + 1, rz); - - if (!B.isSolid(up)) { - continue; - } - - if (B.isOre(up)) { - output.set(rx, zone.ceiling + i + 1, rz, B.toDeepSlateOre(up, b)); - continue; - } - - output.set(rx, zone.ceiling + i + 1, rz, b); } } diff --git a/src/main/java/com/volmit/iris/util/nbt/mca/Chunk.java b/src/main/java/com/volmit/iris/util/nbt/mca/Chunk.java index 801c95345..c2a3adc11 100644 --- a/src/main/java/com/volmit/iris/util/nbt/mca/Chunk.java +++ b/src/main/java/com/volmit/iris/util/nbt/mca/Chunk.java @@ -253,7 +253,14 @@ public class Chunk { } public CompoundTag getBlockStateAt(int blockX, int blockY, int blockZ) { - Section section = sections.get(MCAUtil.blockToChunk(blockY)); + int s = MCAUtil.blockToChunk(blockY); + + if(sections.length() <= s) + { + return null; + } + + Section section = sections.get(s); if (section == null) { return null; } @@ -274,6 +281,12 @@ public class Chunk { */ public void setBlockStateAt(int blockX, int blockY, int blockZ, CompoundTag state, boolean cleanup) { int sectionIndex = MCAUtil.blockToChunk(blockY); + + if(sections.length() <= sectionIndex) + { + return; + } + Section section = sections.get(sectionIndex); if (section == null) { section = Section.newSection();