net.kernelpanicsoft.archie.registries¶
Types¶
ACreativeTabRegistry¶
object ACreativeTabRegistry
Thin wrapper over Architectury's CreativeTabRegistry for one-off creative tab creation.
ADeferredRegistryHolder¶
abstract class ADeferredRegistryHolder<T> : Map<ResourceLocation, RegistrySupplier<out T>>
A registry holder that stores every registered entry in a Map keyed by its ResourceLocation, providing O(1) lookup by id string as well as property delegation via by register(...).
BlockRegistryHelper¶
open class BlockRegistryHelper<T : Block>(modId: String) : RegistryHelper<T>
A RegistryHelper specialised for Block registration that also automatically registers a corresponding BlockItem in the item registry.
CreativeTabRegistryHelper¶
open class CreativeTabRegistryHelper<T : CreativeModeTab>(modId: String) : RegistryHelper<T>
A RegistryHelper specialised for CreativeModeTab registration via Architectury's CreativeTabRegistry.
CustomModelRegistry¶
expect object CustomModelRegistry
RegistrarHelper¶
abstract class RegistrarHelper(modId: String)
A base for declaring custom Architectury registries (i.e. a whole new registry, the way net.minecraft.core.registries.Registries.ITEM is a registry) via lazily-built Registrars.
RegistryHelper¶
abstract class RegistryHelper<T : Any>(val registry: DeferredRegister<T>)
A convenience base class for managing a collection of registry entries backed by an Architectury DeferredRegister.
Properties¶
holder¶
The Holder Architectury injected into this registry entry. Only valid once registered.
id¶
The registry name Architectury injected into this registry entry. Only valid once registered.
Functions¶
waitForRegistry¶
expect fun waitForRegistry(
mod: Mod,
registryKey: ResourceKey<out Registry<*>>,
block: () -> Unit
)
Schedules block to run on the client at the earliest point client-side registration APIs that depend on registryKey's registry already being populated - like Architectury's MenuRegistry.registerScreenFactory, or registering a block-entity renderer for a just-created BlockEntityType - are safe to call. Backed by an actual per mod loader, since the loaders genuinely differ on where that point is; only call this from inside a client-only guard (e.g. net.kernelpanicsoft.archie.util.onClient) - it does no environment checking of its own.
actual fun waitForRegistry(
mod: Mod,
registryKey: ResourceKey<out Registry<*>>,
block: () -> Unit
)
Client-only registration APIs that touch a by register(...) entry (e.g. passing a MenuType to MenuRegistry.registerScreenFactory, or a BlockEntityType to a renderer registration) aren't safe to call before registryKey's registry has actually been populated, which for a Mod-scoped dev.architectury.registry.registries.DeferredRegister happens on NeoForge's RegisterEvent - not at ADeferredRegistryHolder.init's own call time. Some of those APIs (MenuRegistry.registerScreenFactory among them) also only subscribe a listener at call time - their actual effect happens later, on a different event fired on Architectury's own per-mod bus, not mod's - so deferring block to mod's own firing of that same event (this platform used to hook RegisterMenuScreensEvent directly) races Architectury's: if Architectury's bus fires first, the listener block adds is added too late for that one-shot event and never runs.