From cc9c4e3c93ecd4fb70f7d9ab01e35b56b1804c0e Mon Sep 17 00:00:00 2001 From: Frank Date: Tue, 23 May 2023 21:46:45 +0200 Subject: [PATCH] [Change] Better Thread-Syncing abilities for `RegistrySupplier` --- .../bclib/api/v3/datagen/RegistrySupplier.java | 18 +++++++++++++++++- .../betterx/datagen/bclib/BCLibDatagen.java | 1 - 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/betterx/bclib/api/v3/datagen/RegistrySupplier.java b/src/main/java/org/betterx/bclib/api/v3/datagen/RegistrySupplier.java index 26d5f23f..5441940d 100644 --- a/src/main/java/org/betterx/bclib/api/v3/datagen/RegistrySupplier.java +++ b/src/main/java/org/betterx/bclib/api/v3/datagen/RegistrySupplier.java @@ -18,7 +18,7 @@ import java.util.concurrent.Semaphore; import org.jetbrains.annotations.Nullable; public abstract class RegistrySupplier { - private static final int MAX_PERMITS = 1000; + private static final int MAX_PERMITS = 2000; private final Semaphore BOOTSTRAP_LOCK = new Semaphore(MAX_PERMITS); final List> allRegistries; @@ -55,7 +55,23 @@ public abstract class RegistrySupplier { void releaseLock() { BOOTSTRAP_LOCK.release(MAX_PERMITS); + } + + public void addWithLock( + RegistrySetBuilder registryBuilder, + ResourceKey> resourceKey, + RegistrySetBuilder.RegistryBootstrap registryBootstrap + ) { + try { + BOOTSTRAP_LOCK.acquire(); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + registryBuilder.add(resourceKey, (ctx) -> { + registryBootstrap.run(ctx); + BOOTSTRAP_LOCK.release(); + }); } public class InfoList extends LinkedList> { diff --git a/src/main/java/org/betterx/datagen/bclib/BCLibDatagen.java b/src/main/java/org/betterx/datagen/bclib/BCLibDatagen.java index f32e0e50..d24e65ef 100644 --- a/src/main/java/org/betterx/datagen/bclib/BCLibDatagen.java +++ b/src/main/java/org/betterx/datagen/bclib/BCLibDatagen.java @@ -36,7 +36,6 @@ public class BCLibDatagen implements DataGeneratorEntrypoint { pack.addProvider(WorldPresetDataProvider::new); pack.addProvider(BCLibRegistriesDataProvider::new); pack.addProvider(BCLAdvancementDataProvider::new); - }