介绍
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.
常见问题
YARRP 支持哪些 Minecraft 版本?
YARRP 支持 Minecraft Java 版 1.20.5–1.21.1,共 4 个版本,可用的加载器:Fabric / NeoForge。下载时注意选择和你游戏版本一致的文件。
YARRP 怎么安装?
先用 PCL2 或 HMCL 启动器安装对应版本的 Fabric / NeoForge,再把下载的 .jar 文件放进游戏目录的 mods 文件夹,重新启动游戏即可。开启了版本隔离的,mods 文件夹在 versions/版本名 下面。
RubixDev 的其他作品
查看全部 →Inventorio (Forge)
一款物品栏增强模组(Forge 版本)
EnchantedShulkers
为潜影盒添加了一些实用的附魔
Inventorio
一个物品栏增强模组
Inventorio (Fabric)
An inventory enhancement mod (Fabric Version)
评论
登录后评论和评分