diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MDeferredRegister.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MDeferredRegister.kt index 5eaa476b9..24bb19ba8 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MDeferredRegister.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MDeferredRegister.kt @@ -22,8 +22,8 @@ import kotlin.reflect.KProperty /** * DeferredRegister which allows parallel initialization */ -class MDeferredRegister(val registry: ResourceKey>, val modId: String = OverdriveThatMatters.MOD_ID) { - constructor(registry: IForgeRegistry, modId: String = OverdriveThatMatters.MOD_ID) : this(registry.registryKey, modId) +class MDeferredRegister(val registry: ResourceKey>, val modId: String = OverdriveThatMatters.MOD_ID, val allowParallel: Boolean = false) { + constructor(registry: IForgeRegistry, modId: String = OverdriveThatMatters.MOD_ID, allowParallel: Boolean = false) : this(registry.registryKey, modId, allowParallel) private val entries = Object2ObjectLinkedOpenHashMap>() private var allowRegistration = true @@ -74,8 +74,10 @@ class MDeferredRegister(val registry: ResourceKey>, val check(allowRegistration) { "Unable to register new entries after RegisterEvent has been fired" } require(entries.put(name, this) == null) { "Duplicate entry $name for registry $registry" } - if (stages.isEmpty() || stages.last().serial != serial) { - val stage = RegistrationStage(serial) + val actualSerial = if (allowParallel) serial else true + + if (stages.isEmpty() || stages.last().serial != actualSerial) { + val stage = RegistrationStage(actualSerial) stage.add(this) stages.add(stage) } else {