
YARRP
YARRP - библиотека для создания ресурс-паков (датапаков и ассетов) прямо во время игры. Решает проблему статичных JSON-конфигов: теперь можно менять предметы, рецепты, зачарования динамически, без правок вручную.
YARRP (Yet Another Runtime Resource Pack) - это удобная Kotlin-библиотека для Fabric и NeoForge, которая позволяет создавать и подгружать ресурс-паки (как серверные датапаки, так и клиентские ассеты) прямо на лету, без подготовки готовых JSON-файлов. Идеально подходит для разработчиков, кто устал вручную ковыряться кучей джсонок в каждом новом обновлении Майнкрафт.
Зачем это нужно
Если ты когда-нибудь правил рецепты вручную - знаешь, как это уныло. Еще хуже, когда нужно сделать конфиг с кучей опций, а под каждую комбинацию держать отдельный JSON. Mojang уже использует генерацию данных для ванильного контента, но это статично.
YARRP решает эту проблему: все можно сгенерировать прямо в коде, причем во время загрузки игры. Добавили новый рецепт? Ок, просто добавляешь его в пак - готово. Захотели сделать чарование в виде сокровища - меняете флаг на false, и оно само в нужный тег попадает.
Отличие от аналогов вроде ARRP и BRRP - YARRP написан с нуля на Kotlin и предлагает очень простой API. Доки лежат на yarrp.rubixdev.de, все как я люблю - понятно и без воды.
Как подключить
Добавь YARRP в build.gradle.kts:
repositories {
maven("https://jitpack.io")
maven("https://api.modrinth.com/maven")
}
dependencies {
modImplementation("com.github.RubixDev.YARRP:yarrp-mc1.21.1-fabric:v0.2.0")
// или через Modrinth:
modImplementation("maven.modrinth:yarrp:0.2.0+1.21.1-fabric")
}
Не забудь прописать YARRP как зависимость в fabric.mod.json или neoforge.mods.toml.
Пример использования
Создаешь ресурс-пак, регистрируешь его в коллбеке, и вперед:
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("Мой пакет"),
"1.0.0",
),
RuntimeResourcePack.createMetadata(Text.of("Описание пакета")),
)
val MY_ENCHANTMENT: RegistryKey<Enchantment> = PACK.addEnchantment(
Identifier.of("modid", "my_enchantment"),
Enchantment.definition(
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),
)
}
}
}
Важно знать
- Библиотека полностью заменяет ручную генерацию датапаков. В коде всё наглядно, правки вносятся без риска запутаться в файлах.
- Подходит для Fabric 1.21 и NeoForge, но версию в градле нужно подгонять под свою версию Minecraft.
- Если вы делаете мод с большим количеством настраиваемого контента (рецепты, чары, таблицы лута) - YARRP сэкономит вам кучу времени. К тому же, не придется пересобирать паки при каждом изменении конфига.
- Фишка с
DummyHolderSetпозволяет добавлять ресурсы в теги, даже если сам тег еще не зарегистрирован - очень удобно.
Скачать YARRP можно через Modrinth или через jitpack, ссылку я дал в коде. Если ваша сборка Майнкрафт активно использует датапаки от модов - смело подключайте эту библиотеку в качестве зависимости. Ну а если сами делаете мод с кастомными рецептами и чарованиями - это must-have, поверьте.
Как поиграть с друзьями с модом YARRP?
Мод YARRP куда интереснее в компании: поднимите сервер Майнкрафт с уже установленным модом, позовите друзей и играйте по своим правилам. Хостинг Майнкрафт для мода YARRP будет готов за пару минут - BungeeHost сделает всё за вас.
