YARRP - Yet Another Runtime Resource Pack
YARRP вдохновлён ARRP и BRRP, но написан с нуля с простым в использовании Kotlin API. Он позволяет создавать ресурсные пакеты (то есть как data packs, так и asset packs) во время выполнения, поэтому вам не нужно иметь JSON файлы готовыми для всех возможных вариантов.
Использование
Чтобы добавить YARRP в качестве зависимости, добавьте следующее в ваш build.gradle.kts:
repositories {
// вы можете использовать любой из них
maven("https://jitpack.io")
maven("https://api.modrinth.com/maven")
}
dependencies {
// замените версии и загрузчик по необходимости. загрузчик один из `fabric` или `neoforge`
modImplementation("com.github.RubixDev.YARRP:yarrp-mc1.21.1-fabric:v0.2.0") // при использовании jitpack
modImplementation("maven.modrinth:yarrp:0.2.0+1.21.1-fabric") // при использовании modrinth maven
}Не забудьте также указать YARRP как зависимость в ваших файлах fabric.mod.json и neoforge.mods.toml.
Затем вы можете использовать YARRP, создав пакет и добавив его в один из колбэков регистрации. Вот пример:
object MyModResources {
// вызовите это в вашем инициализаторе мода
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", // вероятно, следует установить в версию вашего мода
),
RuntimeResourcePack.createMetadata(Text.of("pack description")),
)
val MY_ENCHANTMENT: RegistryKey = PACK.addEnchantment(
Identifier.of("modid", "my_enchantment"),
Enchantment.definition(
// этот dummy type может быть использован для создания RegistryEntryList из данного TagKey
// но должен использоваться только для добавления ресурсов в 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),
)
}
}
} Полная документация API находится на yarrp.rubixdev.de.

