From d06657e2ffcfb8d486a525333524ff0fdf00b957 Mon Sep 17 00:00:00 2001 From: Daniel Mills Date: Thu, 22 Jul 2021 20:49:00 -0400 Subject: [PATCH] Zero write detection? --- .../volmit/iris/engine/data/mca/Chunk.java | 14 +++++++++++++ .../volmit/iris/engine/data/mca/Section.java | 13 ++++++++++++ .../framework/EngineCompositeGenerator.java | 6 ++++++ .../iris/engine/lighting/LightingCube.java | 1 + .../volmit/iris/util/data/NibbleArray.java | 21 ++++++++++--------- 5 files changed, 45 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/volmit/iris/engine/data/mca/Chunk.java b/src/main/java/com/volmit/iris/engine/data/mca/Chunk.java index 5574c9fbe..52684ddc4 100644 --- a/src/main/java/com/volmit/iris/engine/data/mca/Chunk.java +++ b/src/main/java/com/volmit/iris/engine/data/mca/Chunk.java @@ -32,6 +32,7 @@ import static com.volmit.iris.engine.data.mca.LoadFlags.*; public class Chunk { + public transient int writes = 0; public static final int DEFAULT_DATA_VERSION = 1628; private boolean partial; @@ -327,6 +328,7 @@ public class Chunk { sections.set(sectionIndex, section); } section.setBlockStateAt(blockX, blockY, blockZ, state, cleanup); + writes++; } /** @@ -689,4 +691,16 @@ public class Chunk { public int sectionCount() { return sections.length(); } + + public void runLighting() { + for(int s = 15; s >= 0; s--) + { + Section section = getSection(s); + + if(section != null) + { + section.runLighting(); + } + } + } } diff --git a/src/main/java/com/volmit/iris/engine/data/mca/Section.java b/src/main/java/com/volmit/iris/engine/data/mca/Section.java index 89c3750d1..b8c4924e0 100644 --- a/src/main/java/com/volmit/iris/engine/data/mca/Section.java +++ b/src/main/java/com/volmit/iris/engine/data/mca/Section.java @@ -107,6 +107,19 @@ public class Section { return null; } + public void runLighting() { + for(int x = 1; x < 14; x++) + { + for(int z = 1; z < 14; z++) + { + for(int y = 0; y < 16; y++) + { + + } + } + } + } + @SuppressWarnings("ClassCanBeRecord") private static class PaletteIndex { diff --git a/src/main/java/com/volmit/iris/engine/framework/EngineCompositeGenerator.java b/src/main/java/com/volmit/iris/engine/framework/EngineCompositeGenerator.java index 2ac6d4a9c..a80acc634 100644 --- a/src/main/java/com/volmit/iris/engine/framework/EngineCompositeGenerator.java +++ b/src/main/java/com/volmit/iris/engine/framework/EngineCompositeGenerator.java @@ -34,6 +34,7 @@ import com.volmit.iris.engine.data.mca.NBTWorld; import com.volmit.iris.engine.data.nbt.tag.CompoundTag; import com.volmit.iris.engine.headless.HeadlessGenerator; import com.volmit.iris.engine.hunk.Hunk; +import com.volmit.iris.engine.lighting.LightingChunk; import com.volmit.iris.engine.object.IrisBiome; import com.volmit.iris.engine.object.IrisDimension; import com.volmit.iris.engine.object.IrisPosition; @@ -546,6 +547,11 @@ public class EngineCompositeGenerator extends ChunkGenerator implements IrisAcce .injector((xx, yy, zz, biomeBase) -> chunk.setBiomeAt(ox + xx, yy, oz + zz, INMS.get().getTrueBiomeBaseId(biomeBase))) .build()).run(); + + if(chunk.writes == 0) + { + Iris.error("Chunk " + x + " " + z + " has 0 writes?"); + } } catch(Throwable e) diff --git a/src/main/java/com/volmit/iris/engine/lighting/LightingCube.java b/src/main/java/com/volmit/iris/engine/lighting/LightingCube.java index 5dc25d054..7434baf78 100644 --- a/src/main/java/com/volmit/iris/engine/lighting/LightingCube.java +++ b/src/main/java/com/volmit/iris/engine/lighting/LightingCube.java @@ -24,6 +24,7 @@ import com.bergerkiller.bukkit.common.wrappers.BlockData; import com.bergerkiller.bukkit.common.wrappers.ChunkSection; import com.bergerkiller.generated.net.minecraft.server.NibbleArrayHandle; import com.volmit.iris.Iris; +import com.volmit.iris.util.data.NibbleArray; import java.util.concurrent.CompletableFuture; diff --git a/src/main/java/com/volmit/iris/util/data/NibbleArray.java b/src/main/java/com/volmit/iris/util/data/NibbleArray.java index a33f80f1a..52da2e825 100644 --- a/src/main/java/com/volmit/iris/util/data/NibbleArray.java +++ b/src/main/java/com/volmit/iris/util/data/NibbleArray.java @@ -100,21 +100,22 @@ public class NibbleArray implements Writable { } } - public byte getAsync(int index) { - int bitIndex = index * depth; - int byteIndex = bitIndex >> 3; - int bitInByte = bitIndex & 7; - int value = data[byteIndex] >> bitInByte; + public byte get(int x, int y, int z) + { + return get(index(x,y,z)); + } - if (bitInByte + depth > 8) { - value |= data[byteIndex + 1] << bitInByte; - } - - return (byte) (value & mask); + public int index(int x, int y, int z) { + return y << 8 | z << 4 | x; } private transient int bitIndex, byteIndex, bitInByte; + public void set(int x, int y, int z, int nibble) + { + set(index(x,y,z), nibble); + } + public void set(int index, int nibble) { set(index, (byte) nibble); }