diff --git a/common/src/main/java/com/dtteam/dynamictrees/api/registry/AbstractRegistry.java b/common/src/main/java/com/dtteam/dynamictrees/api/registry/AbstractRegistry.java index 6fe934816..c730973ce 100644 --- a/common/src/main/java/com/dtteam/dynamictrees/api/registry/AbstractRegistry.java +++ b/common/src/main/java/com/dtteam/dynamictrees/api/registry/AbstractRegistry.java @@ -188,9 +188,14 @@ public final void lock() { this.locked = true; this.dump(); - // Run all of the on lock runnables and then clear them. - this.onLockRunnables.forEach(Runnable::run); - this.onLockRunnables.clear(); + if (onLockRunnables.isEmpty()) { + return; + } + + // Copy the onLockRunnables to prevent a ConcurrentModificationException + List current = new ArrayList<>(onLockRunnables); + onLockRunnables.clear(); + current.forEach(Runnable::run); } /**