Welcome to Archie¶
Archie is a Kotlin-first library mod for Minecraft (1.21.x) that provides a comprehensive set of utilities for Kernel Panic's mods. It targets both Fabric and NeoForge via Architectury.
Feature Overview¶
| Area | Description |
|---|---|
| Networking | Strongly-typed, CBOR-serialized packet channels |
| Registries | Deferred-register helpers for blocks, items, and creative tabs |
| Serialization | Kotlinx serialization + Mojang Codec bridge; NBT holders; data attachments; Minecraft type serializers |
| Config | Hierarchical, multi-format config system (JSON5, TOML, JSON) with Cloth Config UI and optional client↔server sync |
| GUI | Compose-for-Minecraft UI framework with layout, modifiers, composables, and themes |
| Events | Architectury event wrappers |
| Data Gen | Data generation provider utilities |
| Transfer | Cross-platform item storage and inventory slot helpers |
| Block Entities | NBT-backed block entity base class |
| Resource Packs | Deserialization-based resource reload listeners |
| GameTest | Server-side GameTestHelper registration plus a client GameTest DSL for driving/asserting Compose screens |
Quick Start¶
Gradle (Fabric)¶
repositories {
maven("https://maven.kernelpanicsoft.net/releases")
}
dependencies {
modImplementation("net.kernelpanicsoft:archie-fabric:<version>")
}
Gradle (NeoForge)¶
Mod initialization¶
object MyMod {
const val MOD_ID = "mymod"
fun init() {
MyItems.init()
MyBlocks.init()
MyChannel.register()
}
}
Where to add new code¶
- Put shared logic in
core/common/src/main/kotlin/...first. - Add loader differences with
expect/actualtriplets:*.common.kt,*.fabric.kt,*.neoforge.kt. - Keep Fabric and NeoForge entrypoints thin (
ArchieFabric,ArchieNeoForge) and delegate toArchie.init*(). - Register packet handlers before calling
register()on yourNetworkChannel.