From a61eb28d71bf24915f0902c076b868b89f46ae22 Mon Sep 17 00:00:00 2001 From: "Calum H. (IMB11)" Date: Mon, 2 Nov 2026 00:59:36 +0000 Subject: [PATCH] fix(snow): lithium incompat --- .../dev/imb11/snow/snowlogging/SnowloggingStorage.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/snow/src/main/java/dev/imb11/snow/snowlogging/SnowloggingStorage.java b/snow/src/main/java/dev/imb11/snow/snowlogging/SnowloggingStorage.java index 8e87ff1..38f5b25 100644 --- a/snow/src/main/java/dev/imb11/snow/snowlogging/SnowloggingStorage.java +++ b/snow/src/main/java/dev/imb11/snow/snowlogging/SnowloggingStorage.java @@ -14,8 +14,10 @@ import org.jspecify.annotations.Nullable; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; public class SnowloggingStorage { public static final String TAG = "snow:snowlogged_layers"; @@ -39,12 +41,16 @@ public static List store(ChunkAccess chunk, SerializableChunkData data) } public static void restore(SerializableChunkData data, List layers) { + Set changed = new HashSet<>(); for (Layers entry : layers) { LevelChunkSection section = section(data, entry.pos()); if (section != null && getBlockState(section, entry.pos()).is(Snowlogging.SNOWLOGGABLE)) { setBlockState(section, entry.pos(), Blocks.SNOW.defaultBlockState().setValue(SnowLayerBlock.LAYERS, entry.layers())); + changed.add(section); } } + + changed.forEach(LevelChunkSection::recalcBlockCounts); } public static void write(CompoundTag tag, List layers) { @@ -73,7 +79,7 @@ private static BlockState getBlockState(LevelChunkSection section, BlockPos pos) } private static void setBlockState(LevelChunkSection section, BlockPos pos, BlockState state) { - section.setBlockState(SectionPos.sectionRelative(pos.getX()), SectionPos.sectionRelative(pos.getY()), SectionPos.sectionRelative(pos.getZ()), state, false); + section.getStates().getAndSetUnchecked(SectionPos.sectionRelative(pos.getX()), SectionPos.sectionRelative(pos.getY()), SectionPos.sectionRelative(pos.getZ()), state); } public record Layers(BlockPos pos, int layers) {