From d3ff4131a3bc83f5143bded82ca7dfa18ecb0e2e Mon Sep 17 00:00:00 2001 From: dordsor21 Date: Fri, 24 Jul 2020 20:21:05 +0100 Subject: [PATCH] Fix incorrect light array reference. Possibly fixes #531 and #535 --- .../mc1_16_1/BukkitGetBlocks_1_16_1.java | 30 +++++++++---------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/worldedit-bukkit/src/main/java/com/boydti/fawe/bukkit/adapter/mc1_16_1/BukkitGetBlocks_1_16_1.java b/worldedit-bukkit/src/main/java/com/boydti/fawe/bukkit/adapter/mc1_16_1/BukkitGetBlocks_1_16_1.java index 2d5ace231..0df06b933 100644 --- a/worldedit-bukkit/src/main/java/com/boydti/fawe/bukkit/adapter/mc1_16_1/BukkitGetBlocks_1_16_1.java +++ b/worldedit-bukkit/src/main/java/com/boydti/fawe/bukkit/adapter/mc1_16_1/BukkitGetBlocks_1_16_1.java @@ -105,19 +105,18 @@ public class BukkitGetBlocks_1_16_1 extends CharGetBlocks { return AdaptedMap.immutable(nmsTiles, posNms2We, nmsTile2We); } - @Override - public int getSkyLight(int x, int y, int z) { + @Override public int getSkyLight(int x, int y, int z) { int layer = y >> 4; if (skyLight[layer] == null) { SectionPosition sectionPosition = SectionPosition.a(nmsChunk.getPos(), layer); NibbleArray nibbleArray = world.getChunkProvider().getLightEngine().a(EnumSkyBlock.SKY).a(sectionPosition); // If the server hasn't generated the section's NibbleArray yet, it will be null if (nibbleArray == null) { - byte[] a = new byte[2048]; - // Safe enough to assume if it's not created, it's under the sky. Unlikely to be created before lighting is fixed anyway. - Arrays.fill(a, (byte) 15); - nibbleArray = new NibbleArray(a); - ((LightEngine) world.getChunkProvider().getLightEngine()).a(EnumSkyBlock.SKY, sectionPosition, nibbleArray, true); + byte[] a = new byte[2048]; + // Safe enough to assume if it's not created, it's under the sky. Unlikely to be created before lighting is fixed anyway. + Arrays.fill(a, (byte) 15); + nibbleArray = new NibbleArray(a); + ((LightEngine) world.getChunkProvider().getLightEngine()).a(EnumSkyBlock.SKY, sectionPosition, nibbleArray, true); } skyLight[layer] = nibbleArray; } @@ -125,21 +124,20 @@ public class BukkitGetBlocks_1_16_1 extends CharGetBlocks { return skyLight[layer].a(SectionPosition.b(BlockPosition.b(l)), SectionPosition.b(BlockPosition.c(l)), SectionPosition.b(BlockPosition.d(l))); } - @Override - public int getEmmittedLight(int x, int y, int z) { + @Override public int getEmmittedLight(int x, int y, int z) { int layer = y >> 4; - if (skyLight[layer] == null) { + if (blockLight[layer] == null) { SectionPosition sectionPosition = SectionPosition.a(nmsChunk.getPos(), layer); NibbleArray nibbleArray = world.getChunkProvider().getLightEngine().a(EnumSkyBlock.BLOCK).a(sectionPosition); // If the server hasn't generated the section's NibbleArray yet, it will be null if (nibbleArray == null) { - byte[] a = new byte[2048]; - // Safe enough to assume if it's not created, it's under the sky. Unlikely to be created before lighting is fixed anyway. - Arrays.fill(a, (byte) 15); - nibbleArray = new NibbleArray(a); - ((LightEngine) world.getChunkProvider().getLightEngine()).a(EnumSkyBlock.BLOCK, sectionPosition, nibbleArray, true); + byte[] a = new byte[2048]; + // Safe enough to assume if it's not created, it's under the sky. Unlikely to be created before lighting is fixed anyway. + Arrays.fill(a, (byte) 15); + nibbleArray = new NibbleArray(a); + ((LightEngine) world.getChunkProvider().getLightEngine()).a(EnumSkyBlock.BLOCK, sectionPosition, nibbleArray, true); } - skyLight[layer] = nibbleArray; + blockLight[layer] = nibbleArray; } long l = BlockPosition.a(x, y, z); return blockLight[layer].a(SectionPosition.b(BlockPosition.b(l)), SectionPosition.b(BlockPosition.c(l)), SectionPosition.b(BlockPosition.d(l)));