Skip to content

net.kernelpanicsoft.archie.registries

Types

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

val <T> InjectedRegistryEntryExtension<T>.holder: Holder<T>

The Holder Architectury injected into this registry entry. Only valid once registered.

id

val <T> InjectedRegistryEntryExtension<T>.id: ResourceLocation

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.