diff --git a/core/src/main/java/com/seibel/distanthorizons/core/world/DhClientServerWorld.java b/core/src/main/java/com/seibel/distanthorizons/core/world/DhClientServerWorld.java index 935299539..6d64be5ca 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/world/DhClientServerWorld.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/world/DhClientServerWorld.java @@ -160,7 +160,12 @@ public class DhClientServerWorld extends AbstractDhWorld implements IDhClientWor this.saveAndFlush(); this.f3Message.close(); - for (DhClientServerLevel level : this.dhLevels) + + // clear dhLevels to prevent concurrent modification errors + HashSet levelsToClose = new HashSet<>(this.dhLevels); + this.dhLevels.clear(); + // close each level + for (DhClientServerLevel level : levelsToClose) { LOGGER.info("Unloading level " + level.getServerLevelWrapper().getDimensionType().getDimensionName());