diff --git a/common/src/main/java/dev/ryanhcode/sable/sublevel/plot/heat/SubLevelHeatMapManager.java b/common/src/main/java/dev/ryanhcode/sable/sublevel/plot/heat/SubLevelHeatMapManager.java index 6816fda13..12a8b4327 100644 --- a/common/src/main/java/dev/ryanhcode/sable/sublevel/plot/heat/SubLevelHeatMapManager.java +++ b/common/src/main/java/dev/ryanhcode/sable/sublevel/plot/heat/SubLevelHeatMapManager.java @@ -233,6 +233,13 @@ private void split() { final Level level = this.subLevel.getLevel(); for (final List blocks : newSubLevelBlocks.values()) { + // assembling a previous split can leave this sub-level without mass, which destroys its remaining blocks + // and marks it removed. there is nothing left to split off then, and assembling from inside a removed + // sub-level's plot throws + if (this.subLevel.isRemoved()) { + break; + } + final BoundingBox3i bounds = Objects.requireNonNull(BoundingBox3i.from(blocks)).expand(1, 1, 1); for (final SplitListener listener : LISTENERS) {