CurseForge · Minecraft mod
YARRP
Yet Another Runtime Resource Pack
Quick answer
Which YARRP release should I use?
YARRP [NeoForge] [1.20.6] YARRP v0.2.0 targets 1.20.5, 1.20.6 with NeoForge. The project page does not say whether this file belongs on the client, dedicated server, or both. All 1 required mods have matching files.
Where it goes
Is YARRP required on the client, server, or both?
The project page does not say whether this file belongs on the client, dedicated server, or both.
The source does not explicitly classify this release as client-only or server-only.
What else does YARRP [NeoForge] [1.20.6] YARRP v0.2.0 need?
[NeoForge] [1.20.6] YARRP v0.2.0. Change the file and its required mods may change too.
Install Kotlin for Forge first. We found matching files for this game-version and loader setup.
We only count dependency files that match this setup. A file for another loader does not fill the gap.
Before you install it
Add YARRP without breaking your instance.
Built for YARRP [NeoForge] [1.20.6] YARRP v0.2.0. Pick another file and the loader, install side or required mods may change.
- 01
Stick to this file
Use [NeoForge] [1.20.6] YARRP v0.2.0. It targets 1.20.5, 1.20.6 with NeoForge; another release may have different loader, side or dependency requirements.
- 02
Bring the mods it needs
Install Kotlin for Forge first. We found matching files for this game-version and loader setup.
- 03
Put it on the correct side
The project page does not say whether this file belongs on the client, dedicated server, or both.
- 04
Pick the file you checked
Use the “Get this file” button beside [NeoForge] [1.20.6] YARRP v0.2.0. It opens that exact file at the source.
About this project
What does YARRP add?
YARRP - Yet Another Runtime Resource Pack
Has it ever bothered you that so much configuration of blocks, items, recipes, and now even enchantments is defined in untyped JSON files? Well then you should probably just use data generation which is much more battle tested and even used by Mojang for the Vanilla data. But, if you also want to be able to adjust the data dynamically or want some things to be configurable, then this might just be the thing for you. YARRP is inspired by ARRP and BRRP but written from the ground up with an easy to use Kotlin API. It allows you to create resource packs (i.e. both data packs and asset packs) at runtime, so you don't need to have JSON files ready for all possible options.
Usage
To add YARRP as a dependency, add the following to your build.gradle.kts:
repositories {
// you can use either one
maven("https://jitpack.io")
maven("https://api.modrinth.com/maven")
}
dependencies {
// replace the versions and loader as needed. the loader is one of `fabric` or `neoforge`
modImplementation("com.github.RubixDev.YARRP:yarrp-mc1.21.1-fabric:v0.2.0") // when using jitpack
modImplementation("maven.modrinth:yarrp:0.2.0+1.21.1-fabric") // when using modrinth maven
}
Don't forget to also list YARRP as a dependency in your fabric.mod.json and neoforge.mods.toml files.
You can then use YARRP by creating a pack and adding it to one of the register callbacks. Here's an example:
object MyModResources {
// call this in your mod initializer
fun register() {
YarrpCallbacks.register(PackPosition.AFTER_VANILLA, ResourceType.SERVER_DATA) {
add(PACK)
}
}
@JvmField
val PACK = RuntimeResourcePack(
RuntimeResourcePack.createInfo(
Identifier.of("modid", "my_runtime_pack"),
Text.of("Pack Title"),
"pack version", // should probably be set to the version of your mod
),
RuntimeResourcePack.createMetadata(Text.of("pack description")),
)
val MY_ENCHANTMENT: RegistryKey<Enchantment> = PACK.addEnchantment(
Identifier.of("modid", "my_enchantment"),
Enchantment.definition(
// this dummy type can be used to create a RegistryEntryList from a given TagKey
// but should only be used for adding resources to a runtime pack
DummyHolderSet(ItemTags.LEG_ARMOR_ENCHANTABLE),
5,
3,
Enchantment.leveledCost(5, 8),
Enchantment.leveledCost(55, 8),
2,
AttributeModifierSlot.LEGS,
),
)
init {
if (MyModSettings.myEnchantmentIsTreasure) {
PACK.addTag(EnchantmentTags.TREASURE) { add(MY_ENCHANTMENT) }
} else {
PACK.addTag(EnchantmentTags.NON_TREASURE) { add(MY_ENCHANTMENT) }
}
if (MyModSettings.enableRecipe) {
PACK.addRecipeAndAdvancement(
Identifier.of("modid", "my_recipe"),
ShapedRecipeJsonBuilder.create(RecipeCategory.MISC, Items.DIAMOND, 64)
.criterion("tick", TickCriterion.Conditions.createTick())
.pattern("//")
.pattern("//")
.input('/', Items.STICK),
)
}
}
}
Full API documentation can be found at yarrp.rubixdev.de.
Project description from CurseForge.
Pick your setup
YARRP by Minecraft version and loader
Choose the version and loader you play, then open the matching release.
1.21.1
2 loader builds1.21
2 loader builds1.20.6
2 loader builds1.20.5
2 loader buildsCheck the dependencies, then try the file in a copied instance before changing a world you care about.
Recent files
YARRP versions and loaders
[NeoForge] [1.20.6] YARRP v0.2.0
yarrp-mc1.20.6-neoforge-v0.2.0.jar
17 Nov 2025
[NeoForge] [1.21.1] YARRP v0.2.0
yarrp-mc1.21.1-neoforge-v0.2.0.jar
17 Nov 2025
[Fabric] [1.21.1] YARRP v0.2.0
yarrp-mc1.21.1-fabric-v0.2.0.jar
17 Nov 2025
[Fabric] [1.20.6] YARRP v0.2.0
yarrp-mc1.20.6-fabric-v0.2.0.jar
17 Nov 2025
[Fabric] [1.21.1] YARRP v0.1.0
yarrp-mc1.21.1-fabric-v0.1.0.jar
16 Nov 2025
[NeoForge] [1.20.6] YARRP v0.1.0
yarrp-mc1.20.6-neoforge-v0.1.0.jar
16 Nov 2025
[NeoForge] [1.21.1] YARRP v0.1.0
yarrp-mc1.21.1-neoforge-v0.1.0.jar
16 Nov 2025
[Fabric] [1.20.6] YARRP v0.1.0
yarrp-mc1.20.6-fabric-v0.1.0.jar
16 Nov 2025
Looking for an older file? The official CurseForge project page is in Resources.