From 9713b3f2552e5a40bfb672ecf331829c3c748628 Mon Sep 17 00:00:00 2001 From: CraftBukkit/Spigot Date: Sun, 15 Oct 2023 20:20:30 +1100 Subject: [PATCH] #1278: Return correct default light in chunk snapshot By: DerFrZocker --- .../java/org/bukkit/craftbukkit/CraftChunk.java | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/CraftChunk.java b/paper-server/src/main/java/org/bukkit/craftbukkit/CraftChunk.java index 00826c67e8..96144bab27 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/CraftChunk.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/CraftChunk.java @@ -56,7 +56,8 @@ public class CraftChunk implements Chunk { private final int x; private final int z; private static final DataPaletteBlock emptyBlockIDs = new DataPaletteBlock<>(net.minecraft.world.level.block.Block.BLOCK_STATE_REGISTRY, Blocks.AIR.defaultBlockState(), DataPaletteBlock.d.SECTION_STATES); - private static final byte[] emptyLight = new byte[2048]; + private static final byte[] FULL_LIGHT = new byte[2048]; + private static final byte[] EMPTY_LIGHT = new byte[2048]; public CraftChunk(net.minecraft.world.level.chunk.Chunk chunk) { worldServer = chunk.level; @@ -318,14 +319,14 @@ public class CraftChunk implements Chunk { LevelLightEngine lightengine = worldServer.getLightEngine(); NibbleArray skyLightArray = lightengine.getLayerListener(EnumSkyBlock.SKY).getDataLayerData(SectionPosition.of(x, chunk.getSectionYFromSectionIndex(i), z)); // SPIGOT-7498: Convert section index if (skyLightArray == null) { - sectionSkyLights[i] = emptyLight; + sectionSkyLights[i] = worldServer.dimensionType().hasSkyLight() ? FULL_LIGHT : EMPTY_LIGHT; } else { sectionSkyLights[i] = new byte[2048]; System.arraycopy(skyLightArray.getData(), 0, sectionSkyLights[i], 0, 2048); } NibbleArray emitLightArray = lightengine.getLayerListener(EnumSkyBlock.BLOCK).getDataLayerData(SectionPosition.of(x, chunk.getSectionYFromSectionIndex(i), z)); // SPIGOT-7498: Convert section index if (emitLightArray == null) { - sectionEmitLights[i] = emptyLight; + sectionEmitLights[i] = EMPTY_LIGHT; } else { sectionEmitLights[i] = new byte[2048]; System.arraycopy(emitLightArray.getData(), 0, sectionEmitLights[i], 0, 2048); @@ -397,8 +398,8 @@ public class CraftChunk implements Chunk { for (int i = 0; i < hSection; i++) { blockIDs[i] = emptyBlockIDs; - skyLight[i] = emptyLight; - emitLight[i] = emptyLight; + skyLight[i] = world.getHandle().dimensionType().hasSkyLight() ? FULL_LIGHT : EMPTY_LIGHT; + emitLight[i] = EMPTY_LIGHT; empty[i] = true; if (biome != null) { @@ -416,6 +417,6 @@ public class CraftChunk implements Chunk { } static { - Arrays.fill(emptyLight, (byte) 0xFF); + Arrays.fill(FULL_LIGHT, (byte) 0xFF); } }