YARRP: Build Runtime Resource Packs for Minecraft Without the JSON Headache
If you have ever stared at a wall of untyped JSON files while configuring blocks, items, recipes, or enchantments, you already understand the pain that YARRP was built to solve. YARRP, short for Yet Another Runtime Resource Pack, is a library that lets mod developers create both data packs and asset packs while the game is running. That means no pre-written JSON for every possible configuration, and no more guessing whether a typo will break your entire mod.
Inspired by ARRP and BRRP, YARRP takes a different route: it is written from the ground up with a clean Kotlin API that is approachable even if you have never touched runtime resource generation before. If you want your mod's data to be dynamic, configurable, or simply more maintainable, this library deserves a spot in your development toolkit.
Why Developers Choose YARRP for Minecraft
Mojang itself relies on data generation for Vanilla content, and that approach is battle-tested. However, data generation produces static files at build time. YARRP fills the gap for situations where static output is not enough. When a player toggles a setting in your config, YARRP can react instantly, adding or removing tags, recipes, and enchantments on the fly.
- Create data packs and asset packs programmatically at runtime.
- Skip writing JSON for every possible option combination.
- Adjust content dynamically based on player settings.
- Use a typed Kotlin API instead of raw, error-prone JSON.
- Register packs before or after Vanilla data with simple callbacks.
The library supports modern Minecraft versions, including 1.21.1, and ships for both the Fabric and NeoForge loaders. Version-specific artifacts follow a clear naming pattern, so matching YARRP to your mod's Minecraft target is straightforward. If you maintain builds across multiple loaders, this dual support saves significant time.
How to Install YARRP in Your Mod Project
Adding the Dependency
To download YARRP and wire it into your workspace, add the JitPack or Modrinth Maven repository to your build.gradle.kts file. Then declare the dependency using the artifact that matches your loader and Minecraft version. Replace the version numbers and loader name as needed, choosing either fabric or neoforge.
Do not forget to list YARRP as a dependency in your fabric.mod.json or neoforge.mods.toml file as well. Missing this step is one of the most common reasons a project fails to load at runtime.
Registering a Runtime Pack
Once the dependency is in place, create a pack and attach it to one of the register callbacks. A typical setup defines a pack object with an identifier, a title, a version, and a description. From there you can add enchantments, tags, recipes, and advancements directly in code. Conditional logic works naturally here: check a config value, then add your enchantment to the treasure tag or the non-treasure tag depending on the result.
Recipes follow the same pattern. You can build a shaped recipe, attach a tick criterion, and register it alongside its advancement in a single call. Because everything happens at runtime, players see the correct content immediately after changing settings, with no restart gymnastics required.
For those who prefer a smoother setup experience, the foxygame.net launcher can handle YARRP installation in a single click and keeps the add-on updated automatically as new Minecraft versions and loader builds appear in its catalog. It is a convenient option for players who want the library ready without manually editing build files.
Understanding the YARRP API
The API centers on a runtime resource pack object that holds your registrations. You define identifiers for each entry, supply metadata, and let YARRP handle serialization behind the scenes. A dummy holder set type is available for constructing registry entry lists from tag keys, which is useful when adding resources to a runtime pack. Attribute modifiers, cost curves, and slot assignments for enchantments are all expressed through readable Kotlin calls rather than nested JSON objects.
Full API documentation is available at the official YARRP site, where you can explore every callback, builder, and helper the library exposes. Between the documentation and the example code, most developers have a working pack running within an afternoon.
Final Thoughts on YARRP
YARRP solves a real problem for modders who need flexibility that static data generation cannot provide. By combining a typed Kotlin API with runtime pack creation, it removes the tedium of hand-written JSON and opens the door to configurable, dynamic content. Whether you are adding a single enchantment or an entire suite of conditional recipes, YARRP for Minecraft gives you the tools to do it cleanly. If your mod's data needs to adapt, this library is well worth the download.