YARRP
No reviews yet
Yet Another Runtime Resource Pack
Neoforge is a fork of the Minecraft Forge available for versions 1.20.1+ of Minecraft. Many Forge mods are compatible with Neoforge and vice versa.
Fabric is a mod loader for versions 1.14+ of Minecraft, particularly popular for client side and optimization mods.
Community voices
Reviews
Click once to include, again to exclude, again to clear
No reviews yet. Be the first to review this project!
Get it on
Available Platforms
Compatibility
Supported Environments
About
Project Details
For authors
Embed Badge
If you're the author of this project, you can embed a live badge anywhere that supports HTML or Markdown. It updates automatically whenever ratings change.
Use HTML for any page that supports it, or Markdown for README files and Markdown-based descriptions.
Identifiers
Platform IDs
About
Description
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.
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.
Screenshots
Gallery
Versions
Files
Relations
Project Relations
More like this
Similar Mods
Suggestions use data such as tags, dependencies, dependents, descriptions, titles, and more to rank how much they overlap with this mod.
On ModDex
Community snapshot
By the numbers
Statistics
Want to reach Minecraft players?
We're looking for a server hosting partner to feature here and other parts of the site. Interested? Send us a message!
Get in touchGet it on
Available Platforms
On ModDex
Community snapshot
By the numbers