From 7959097fe35c952e372b9a3c17d186942f741fdb Mon Sep 17 00:00:00 2001 From: James Seibel Date: Fri, 24 Nov 2023 09:46:45 -0600 Subject: [PATCH] Fix a potential concurrent error on DhClientServerWorld shutdown --- .../distanthorizons/core/world/DhClientServerWorld.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) 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());