diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/advancements/AndroidAdvancementsData.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/advancements/AndroidAdvancementsData.kt index 8103ac23a..c5250156c 100644 --- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/advancements/AndroidAdvancementsData.kt +++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/advancements/AndroidAdvancementsData.kt @@ -38,13 +38,17 @@ import ru.dbotthepony.mc.otm.triggers.ShockwaveTrigger import java.util.function.Consumer fun addAndroidAdvancements(serializer: Consumer, existingFileHelper: ExistingFileHelper, lang: MatteryLanguageProvider) { - val translation = lang.english.Prepended("otm.advancements.android") + val translation = lang.MultiBuilder("otm.advancements.android") val root = AdvancementBuilder() .display( itemStack = ItemStack(MItems.PILL_ANDROID), - title = TranslatableComponent(translation.add("root", "Androids and Humans")), - description = TranslatableComponent(translation.add("root.desc", "Can you make out who is cruel machine and who can love?")), + title = translation.add("root", "Androids and Humans") { + russian("Андроиды и Люди") + }, + description = translation.add("root.desc", "Can you make out who is cruel machine and who care about others?") { + russian("Сможете ли вы отличить бездушную машину от того, кому другие не безразличны?") + }, showToast = false, announceChat = false, background = modLocation("textures/block/decorative/metal_beam_top.png") @@ -56,8 +60,12 @@ fun addAndroidAdvancements(serializer: Consumer, existingFileHelper .parent(root) .display( itemStack = ItemStack(MItems.ZPM_BATTERY), - title = TranslatableComponent(translation.add("zpm", "Fully Autonomous")), - description = TranslatableComponent(translation.add("zpm.desc", "Use Zero Point Module as internal battery power source. Only time is your enemy now")), + title = translation.add("zpm", "Fully Autonomous") { + russian("Полностью Автономный") + }, + description = translation.add("zpm.desc", "Use Zero Point Module as internal battery power source. Only time is your enemy now") { + russian("Используйте Модуль Нулевой Точки как внутренний источник питания. Теперь только время будет вашим злейшим врагом") + }, hidden = true, frameType = FrameType.CHALLENGE ) @@ -68,8 +76,12 @@ fun addAndroidAdvancements(serializer: Consumer, existingFileHelper .parent(root) .display( itemStack = ItemStack(MItems.QUANTUM_BATTERY), - title = TranslatableComponent(translation.add("quantum_battery", "Wireless Charged")), - description = TranslatableComponent(translation.add("quantum_battery.desc", "Use Quantum Battery as internal battery power source, might as well have Fission Reactor charge other side of the link")), + title = translation.add("quantum_battery", "Wireless Charged") { + russian("Беспроводная Зарядка") + }, + description = translation.add("quantum_battery.desc", "Use Quantum Battery as internal battery power source, might as well have Fission Reactor charge other side of the link") { + russian("Используйте Квантовый Аккумулятор как внутренний источник питания, можно даже подключить другой конец к Реактору Распада") + }, hidden = true, frameType = FrameType.GOAL ) @@ -82,8 +94,12 @@ fun addAndroidAdvancements(serializer: Consumer, existingFileHelper .parent(root) .display( itemStack = ItemStack(MItems.PILL_ANDROID), - title = TranslatableComponent(translation.add("normal", "Last Sweet Dreams")), - description = TranslatableComponent(translation.add("normal.desc", "Become an Android in your dreams, a soulless machine... Or is it?")), + title = translation.add("normal", "Last Sweet Dreams") { + russian("Последние Сновидения") + }, + description = translation.add("normal.desc", "Become an Android in your dreams, a soulless machine... Or is it?") { + russian("Превратитесь в Андроида во сне, в бездушную машину... Или нет?") + }, hidden = true, ) .addCriterion("became_android", BecomeAndroidSleepTrigger.Instance) @@ -93,8 +109,12 @@ fun addAndroidAdvancements(serializer: Consumer, existingFileHelper .parent(root) .display( itemStack = ItemStack(MItems.PILL_ANDROID), - title = TranslatableComponent(translation.add("death", "The Old Way")), - description = TranslatableComponent(translation.add("death.desc", "Become an Android in event of death, veteran's favorite")), + title = translation.add("death", "The Old Way") { + russian("Изготовленный по Старинке") + }, + description = translation.add("death.desc", "In event of death, become an Android; Veteran's favorite") { + russian("Будучи умерев, станьте Андроидом; Ветераны оценят") + }, hidden = true, ) .addCriterion("became_android", BecomeAndroidDeathTrigger.Instance) @@ -104,8 +124,12 @@ fun addAndroidAdvancements(serializer: Consumer, existingFileHelper .parent(root) .display( itemStack = ItemStack(MItems.PILL_HUMANE), - title = TranslatableComponent(translation.add("unandroid", "Feel Humane Again")), - description = TranslatableComponent(translation.add("unandroid.desc", "Become fleshy after being a machine, yet something is still missing that you had before...")), + title = translation.add("unandroid", "Feel Humane Again") { + russian("Вкусить Человечность Вновь") + }, + description = translation.add("unandroid.desc", "Become fleshy after being a machine, yet something is still missing that you had before...") { + russian("Вновь обретите плоть после своей жизни как набор гаек и болтов, но вот чего-то всё равно не хватает, что было при вас с самого начала...") + }, hidden = true, frameType = FrameType.GOAL ) @@ -116,8 +140,12 @@ fun addAndroidAdvancements(serializer: Consumer, existingFileHelper .parent(root) .display( itemStack = ItemStack(Items.PHANTOM_MEMBRANE), - title = TranslatableComponent(translation.add("phantom_spawn_denied", "Insomnia Immune")), - description = TranslatableComponent(translation.add("phantom_spawn_denied.desc", "Have Phantoms not come after you because you are not someone who needs to sleep")), + title = translation.add("phantom_spawn_denied", "Insomnia Immune") { + russian("Пере-Бессоница") + }, + description = translation.add("phantom_spawn_denied.desc", "Have Phantoms not come after you because you are not someone who needs to sleep") { + russian("Не привлеките внимание Фантомов, так как вы не тот, кому надо спать") + }, hidden = true ) .addCriterion("phantom_spawn_denied", PhantomSpawnDeniedTrigger.Instance) @@ -127,8 +155,12 @@ fun addAndroidAdvancements(serializer: Consumer, existingFileHelper .parent(phantoms) .display( itemStack = ItemStack(MItems.PHANTOM_ATTRACTOR), - title = TranslatableComponent(translation.add("phantom_attractor", "Eversleeping Decoy")), - description = TranslatableComponent(translation.add("phantom_attractor.desc", "Put together a Phantom Attractor, to be able to fight Phantoms as Android again")), + title = translation.add("phantom_attractor", "Eversleeping Decoy") { + russian("Вечноспящий Декой") + }, + description = translation.add("phantom_attractor.desc", "Put together a Phantom Attractor, to be able to fight Phantoms as Android again") { + russian("Создайте Приманщик Фантомов, для привлечения Фантомов вновь, будучи Андроидом") + }, ) .addCriterion("has_item", criterion(MItems.PHANTOM_ATTRACTOR)) .save(serializer, modLocation("regular/phantom_attractor"), existingFileHelper) @@ -137,8 +169,12 @@ fun addAndroidAdvancements(serializer: Consumer, existingFileHelper .parent(attractor) .display( itemStack = ItemStack(MItems.PHANTOM_ATTRACTOR), - title = TranslatableComponent(translation.add("phantom_attractor_research", "Deception of Phantoms")), - description = TranslatableComponent(translation.add("phantom_attractor_research.desc", "Research into how to attract Phantoms the same way as the ones who need to sleep")), + title = translation.add("phantom_attractor_research", "Deception of Phantoms") { + russian("Обман Фантомов") + }, + description = translation.add("phantom_attractor_research.desc", "Research into how to attract Phantoms the same way as the ones who need to sleep") { + russian("Исследуйте привлечение Фантомов, чтоб привлекать их так же, как те, кому нужно спать") + }, ) .addCriterion("researched", AndroidResearchTrigger.Instance(modLocation(MNames.PHANTOM_ATTRACTOR))) .save(serializer, modLocation("regular/phantom_attractor_research"), existingFileHelper) @@ -147,8 +183,12 @@ fun addAndroidAdvancements(serializer: Consumer, existingFileHelper .parent(root) .display( itemStack = ItemStack(MItems.ANDROID_STATION), - title = TranslatableComponent(translation.add("research_anything", "New Trick")), - description = TranslatableComponent(translation.add("research_anything.desc", "Research anything as Android")), + title = translation.add("research_anything", "New Trick") { + russian("Новый Фокус") + }, + description = translation.add("research_anything.desc", "Research anything as Android") { + russian("Исследуйте что либо за Андроида") + }, ) .addCriterion("research_anything", AndroidResearchTrigger.Instance(null)) .save(serializer, modLocation("android/research_anything"), existingFileHelper) @@ -157,8 +197,12 @@ fun addAndroidAdvancements(serializer: Consumer, existingFileHelper .parent(researchAnything) .display( itemStack = ItemStack(Items.WATER_BUCKET), - title = TranslatableComponent(translation.add("air_bags", "Patching Up Wooden Vessel")), - description = TranslatableComponent(translation.add("air_bags.desc", "Research Air Bags as Android, to float in water")), + title = translation.add("air_bags", "Patching Up Wooden Vessel") { + russian("В Бочку - Затычку") + }, + description = translation.add("air_bags.desc", "Research Air Bags as Android, to float in water") { + russian("Исследуйте Воздушные Мешки, дабы быть вновь поплавком в воде") + }, ) .addCriterion("air_bags", AndroidResearchTrigger.Instance(modLocation(MNames.AIR_BAGS))) .save(serializer, modLocation("android/research_air_bags"), existingFileHelper) @@ -167,8 +211,12 @@ fun addAndroidAdvancements(serializer: Consumer, existingFileHelper .parent(researchAnything) .display( itemStack = ItemStack(Items.ENDER_EYE), - title = TranslatableComponent(translation.add("night_vision", "Second Pair of Eyes")), - description = TranslatableComponent(translation.add("night_vision.desc", "Research Night Vision as Android, to see in the dark")), + title = translation.add("night_vision", "Second Pair of Eyes") { + russian("Вторая Пара Глаз") + }, + description = translation.add("night_vision.desc", "Research Night Vision as Android, to see in the dark") { + russian("Исследуйте Ночное Зрение за Андроида, дабы видеть во тьме") + }, ) .addCriterion("night_vision", AndroidResearchTrigger.Instance(modLocation(MNames.NIGHT_VISION))) .save(serializer, modLocation("android/research_night_vision"), existingFileHelper) @@ -177,8 +225,12 @@ fun addAndroidAdvancements(serializer: Consumer, existingFileHelper .parent(researchAnything) .display( itemStack = ItemStack(MItems.MATTER_TRANSFORM_MATRIX), - title = TranslatableComponent(translation.add("nanobots", "Nanomachines, Son!")), - description = TranslatableComponent(translation.add("nanobots.desc", "Research Nanobots as Android, to unlock potent research that come after it")), + title = translation.add("nanobots", "Nanomachines, Son!") { + russian("Наномашины, Дитя!") + }, + description = translation.add("nanobots.desc", "Research Nanobots as Android, to unlock potent research that come after it") { + russian("Исследуйте Наномашины за Андроида, для разблокировки очень больших возможностей") + }, hidden = true ) .addCriterion("nanobots", AndroidResearchTrigger.Instance(modLocation(MNames.NANOBOTS))) @@ -188,8 +240,12 @@ fun addAndroidAdvancements(serializer: Consumer, existingFileHelper .parent(nanobots) .display( itemStack = ItemStack(Items.SHIELD), - title = TranslatableComponent(translation.add("nanobots_armor_deflect", "Like a Concrete Wall")), - description = TranslatableComponent(translation.add("nanobots_armor_deflect.desc", "Have Nanobots absorb more than 5 hears of damage while you are left still functioning")), + title = translation.add("nanobots_armor_deflect", "Like a Concrete Wall") { + russian("Как за Каменной Стеной") + }, + description = translation.add("nanobots_armor_deflect.desc", "Have Nanobots absorb more than 5 hears of damage while you are left still functioning") { + russian("Дайте Наноботам поглотить 5 сердец урона, не отключившись насовсем") + }, hidden = true, frameType = FrameType.GOAL ) @@ -200,8 +256,12 @@ fun addAndroidAdvancements(serializer: Consumer, existingFileHelper .parent(shielding) .display( itemStack = ItemStack(Items.SHIELD), - title = TranslatableComponent(translation.add("nanobots_armor_deflect2", "Unstoppable Force vs Immovable Object")), - description = TranslatableComponent(translation.add("nanobots_armor_deflect2.desc", "Have Nanobots absorb more than 10 hears of damage while you are left still functioning")), + title = translation.add("nanobots_armor_deflect2", "Unstoppable Force vs Immovable Object") { + russian("Неостановимая Сила против Недвижимого Объекта") + }, + description = translation.add("nanobots_armor_deflect2.desc", "Have Nanobots absorb more than 10 hears of damage while you are left still functioning") { + russian("Дайте Наноботам поглотить 10 сердец урона, не отключившись насовсем") + }, hidden = true, frameType = FrameType.CHALLENGE ) @@ -212,8 +272,12 @@ fun addAndroidAdvancements(serializer: Consumer, existingFileHelper .parent(researchAnything) .display( itemStack = ItemStack(Items.FEATHER), - title = TranslatableComponent(translation.add("fall_dampeners_save", "Lucky Landing")), - description = TranslatableComponent(translation.add("fall_dampeners_save.desc", "Survive fall that would have otherwise be fatal without Fall Dampeners research")), + title = translation.add("fall_dampeners_save", "Lucky Landing") { + russian("Удачное Приземление") + }, + description = translation.add("fall_dampeners_save.desc", "Survive fall that would have otherwise be fatal without Fall Dampeners research") { + russian("Выживите после падения, которое было бы фатальным без исследования Смягчителей Падения") + }, frameType = FrameType.GOAL ) .addCriterion("saved", FallDampenersSaveTrigger.Instance) @@ -223,8 +287,12 @@ fun addAndroidAdvancements(serializer: Consumer, existingFileHelper .parent(researchAnything) .display( itemStack = ItemStack(Items.SKELETON_SKULL), - title = TranslatableComponent(translation.add("ender_teleport_fall_death", "Navigation Error")), - description = TranslatableComponent(translation.add("ender_teleport_fall_death.desc", "Fall to your death moments after Teleporting")), + title = translation.add("ender_teleport_fall_death", "Navigation Error") { + russian("Ошибка Навигации") + }, + description = translation.add("ender_teleport_fall_death.desc", "Fall to your demise moments after Teleporting as Android") { + russian("Разбейтесь насмерть через мгновения после телепортации за Андроида") + }, frameType = FrameType.GOAL, hidden = true ) @@ -235,8 +303,12 @@ fun addAndroidAdvancements(serializer: Consumer, existingFileHelper .parent(nanobots) .display( itemStack = ItemStack(Items.GOLDEN_APPLE), - title = TranslatableComponent(translation.add("regen", "Field Repair Done Easy")), - description = TranslatableComponent(translation.add("regen.desc", "Research Nanobots Regeneration as Android")), + title = translation.add("regen", "Field Repair Done Easy") { + russian("Починка на Ходу - Легко") + }, + description = translation.add("regen.desc", "Research Nanobots Regeneration as Android") { + russian("Исследуйте Регенерацию Наноботов за Андроида") + }, ) .addCriterion("regen0", AndroidResearchTrigger.Instance(modLocation(MNames.NANOBOTS_REGENERATION_1))) .save(serializer, modLocation("android/regen"), existingFileHelper) @@ -245,8 +317,12 @@ fun addAndroidAdvancements(serializer: Consumer, existingFileHelper .parent(regen) .display( itemStack = ItemStack(Items.ENCHANTED_GOLDEN_APPLE), - title = TranslatableComponent(translation.add("regen_all", "Field Repair Done Effortless")), - description = TranslatableComponent(translation.add("regen_all.desc", "Max out Nanobots Regeneration research")), + title = translation.add("regen_all", "Field Repair Done Effortless") { + russian("Починка на Ходу - Без Усилий") + }, + description = translation.add("regen_all.desc", "Max out Nanobots Regeneration research") { + russian("Полностью исследуйте Регенерацию Наноботов за Андроида") + }, frameType = FrameType.GOAL, ) .addCriterion("regen0", AndroidResearchTrigger.Instance(modLocation(MNames.NANOBOTS_REGENERATION_1))) @@ -259,8 +335,12 @@ fun addAndroidAdvancements(serializer: Consumer, existingFileHelper .parent(researchAnything) .display( itemStack = ItemStack(MItems.ANDROID_STATION), - title = TranslatableComponent(translation.add("research_all", "Mecha-agnomination")), - description = TranslatableComponent(translation.add("research_all.desc", "Research everything (that don't block any other research)")), + title = translation.add("research_all", "Mecha-Agnomination") { + russian("Меха-Зумие") + }, + description = translation.add("research_all.desc", "Research everything as Android (that don't block or get blocked by any other research)") { + russian("Исследуйте все технологии за Андроида (которые не блокируют и не блокируются другими технологиями)") + }, frameType = FrameType.CHALLENGE ) .rewards(AdvancementRewards.Builder.experience(400).addLootTable(modLocation("research_all_android"))) @@ -277,8 +357,12 @@ fun addAndroidAdvancements(serializer: Consumer, existingFileHelper .parent(researchAnything) .display( itemStack = ItemStack(Items.PISTON), - title = TranslatableComponent(translation.add("shockwave", "Supersonic Landing")), - description = TranslatableComponent(translation.add("shockwave.desc", "Perform a Shockwave upon landing")), + title = translation.add("shockwave", "Supersonic Landing") { + russian("Сверхзвуковое Приземление") + }, + description = translation.add("shockwave.desc", "Make a Shockwave upon landing") { + russian("Вызовите Ударную Волну при приземлении") + }, ) .addCriterion("shockwave", ShockwaveTrigger.Instance) .save(serializer, modLocation("android/shockwave"), existingFileHelper) @@ -287,8 +371,12 @@ fun addAndroidAdvancements(serializer: Consumer, existingFileHelper .parent(shockwave) .display( itemStack = ItemStack(Items.WARDEN_SPAWN_EGG), - title = TranslatableComponent(translation.add("shockwave_warden", "Music To Their Ears")), - description = TranslatableComponent(translation.add("shockwave_warden.desc", "Hurt Warden using Shockwave ability")), + title = translation.add("shockwave_warden", "Music to their Ears") { + russian("Музыка для их Ушей") + }, + description = translation.add("shockwave_warden.desc", "Hurt Warden using Shockwave ability") { + russian("Нанесите Хранителю урон используя Ударную Волну") + }, frameType = FrameType.GOAL ) .addCriterion("shockwave_warden", ShockwaveDamageMobTrigger.Instance(EntityPredicate.Builder.entity().of(EntityType.WARDEN).build().wrap())) diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/advancements/MachineAdvancementsData.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/advancements/MachineAdvancementsData.kt index 6cb958c8b..2dcb1d3be 100644 --- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/advancements/MachineAdvancementsData.kt +++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/advancements/MachineAdvancementsData.kt @@ -2,10 +2,12 @@ package ru.dbotthepony.mc.otm.datagen.advancements import net.minecraft.advancements.Advancement import net.minecraft.advancements.RequirementsStrategy +import net.minecraft.network.chat.contents.TranslatableContents import net.minecraft.world.item.Item import net.minecraft.world.item.ItemStack import net.minecraftforge.common.data.ExistingFileHelper import ru.dbotthepony.mc.otm.core.TranslatableComponent +import ru.dbotthepony.mc.otm.core.key import ru.dbotthepony.mc.otm.core.registryName import ru.dbotthepony.mc.otm.datagen.lang.MatteryLanguageProvider import ru.dbotthepony.mc.otm.datagen.modLocation @@ -13,17 +15,28 @@ import ru.dbotthepony.mc.otm.registry.MItemTags import ru.dbotthepony.mc.otm.registry.MItems import java.util.function.Consumer -private data class CraftEntry(val item: Item, val englishName: String, val englishSuffix: String? = null) +private data class CraftEntry( + val item: Item, + val englishName: String, + val englishSuffix: String? = null, + + val russianName: String? = null, + val russianSuffix: String? = null, +) fun addMachineAdvancements(serializer: Consumer, existingFileHelper: ExistingFileHelper, lang: MatteryLanguageProvider) { - val translation = lang.english.Prepended("otm.advancements.machine") + val translation = lang.MultiBuilder("otm.advancements.machine") val root = AdvancementBuilder() .requirements(RequirementsStrategy.OR) .display( itemStack = ItemStack(MItems.CHEMICAL_GENERATOR), - title = TranslatableComponent(translation.add("root", "Tritanium Empowered Machinery")), - description = TranslatableComponent(translation.add("root.desc", "Do not drop in anything if you want the latter preserved intact")), + title = translation.add("root", "Tritanium Empowered Machinery") { + russian("Тританово Запитанные Механизмы") + }, + description = translation.add("root.desc", "Do not drop in anything if you want the latter preserved intact") { + russian("Не роняйте ничего внутрь если хотите чтоб последнее осталось таким, какое оно есть") + }, showToast = false, announceChat = false, background = modLocation("textures/block/decorative/floor_tiles_gray.png") @@ -37,8 +50,12 @@ fun addMachineAdvancements(serializer: Consumer, existingFileHelper .parent(root) .display( itemStack = ItemStack(MItems.CHEMICAL_GENERATOR), - title = TranslatableComponent(translation.add("chemical_generator", "Burning the Organics")), - description = TranslatableComponent(translation.add("chemical_generator.desc", "Craft a Chemical Generator, better to put it outside")), + title = translation.add("chemical_generator", "Burning the Organics") { + russian("Сжигание Органики") + }, + description = translation.add("chemical_generator.desc", "Craft a Chemical Generator, better to put it outside") { + russian("Создайте Химический Генератор. Лучше установить его снаружи") + }, ) .addCriterion("has_machine", criterion(MItems.CHEMICAL_GENERATOR)) .save(serializer, modLocation("machines/chemical_generator"), existingFileHelper) @@ -47,24 +64,38 @@ fun addMachineAdvancements(serializer: Consumer, existingFileHelper .parent(chem) .display( itemStack = ItemStack(MItems.PLATE_PRESS), - title = TranslatableComponent(translation.add("plate_press", "Bending the Material")), - description = TranslatableComponent(translation.add("plate_press.desc", "Craft a Plate Press, avoid having limbs inside during operation")), + title = translation.add("plate_press", "Bending the Material") { + russian("Раскатка Металла") + }, + description = translation.add("plate_press.desc", "Craft a Plate Press, avoid having limbs inside at all times") { + russian("Создайте Пресс Пластин, не суйте свои или чужие конечности внутрь") + }, ) .addCriterion("has_machine", criterion(MItems.PLATE_PRESS)) .save(serializer, modLocation("machines/plate_press"), existingFileHelper) val entries = listOf( - CraftEntry(MItems.MATTER_SCANNER, "Scanning Things that Matter"), - CraftEntry(MItems.PATTERN_STORAGE, "Digital Knowledge Library"), - CraftEntry(MItems.MATTER_DECOMPOSER, "Decaying the Atoms", "Keep your limbs outside of the working chamber at all times"), - CraftEntry(MItems.MATTER_PANEL, "Indexing the Library"), - CraftEntry(MItems.MATTER_REPLICATOR, "Local Bakery", "Now let's bake some perfect bread"), - CraftEntry(MItems.MATTER_BOTTLER, "Transfusing Pure Matter", "For those who loved to play with water in their childhood"), - CraftEntry(MItems.MATTER_RECYCLER, "Refine and Redefine", "This is what waste recycling should look like"), - CraftEntry(MItems.MATTER_CAPACITOR_BANK, "Modular Matter Tank"), + CraftEntry(MItems.MATTER_SCANNER, "Scanning Things that Matter", + russianName = "Сканируем Вещи которые Материальны"), + CraftEntry(MItems.PATTERN_STORAGE, "Digital Knowledge Library", + russianName = "Цифровая Библиотека Знаний"), + CraftEntry(MItems.MATTER_DECOMPOSER, "Decaying the Atoms", "Keep your limbs outside of the working chamber at all times", + russianName = "Разлагаем Атомы", russianSuffix = "Во всех ситуациях держите свои конечности вне рабочей камеры"), + CraftEntry(MItems.MATTER_PANEL, "Indexing the Library", + russianName = "Индексируем Библиотеку"), + CraftEntry(MItems.MATTER_REPLICATOR, "Local Bakery", "Now let's bake some perfect bread", + russianName = "Местная Выпечка", russianSuffix = "А теперь давайте выпечем немного идеального хлеба"), + CraftEntry(MItems.MATTER_BOTTLER, "Transfusing Pure Matter", "For those who loved to play with water in their childhood", + russianName = "Переливаем Чистую Материю", russianSuffix = "Для тех, кто любил играться в воде в детстве"), + CraftEntry(MItems.MATTER_RECYCLER, "Refine and Redefine", "This is what waste recycling should look like", + russianName = "Переработка и Перегонка", russianSuffix = "Вот он, пик переработки отходов"), + CraftEntry(MItems.MATTER_CAPACITOR_BANK, "Modular Matter Tank", + russianName = "Модульный Бак Материи"), - CraftEntry(MItems.ENERGY_COUNTER, "Visualize Power Burn"), - CraftEntry(MItems.BATTERY_BANK, "Batteries Not Included", "By all means avoid the urge to hammer incompatible batteries into the power bus."), + CraftEntry(MItems.ENERGY_COUNTER, "Visualize Power Burn", + russianName = "Визуализация Сжигания Энергии"), + CraftEntry(MItems.BATTERY_BANK, "Batteries Not Included", "By all means avoid the urge to hammer incompatible batteries into the power bus.", + russianName = "Батарейки в Комплект не Входят", russianSuffix = "Пожалуйста, воздержитесь от вбивания кувалдой несовместимых батарей в энергетическую шину."), ) val built = mutableMapOf() @@ -72,12 +103,24 @@ fun addMachineAdvancements(serializer: Consumer, existingFileHelper for (entry in entries) { val path = entry.item.registryName!!.path + val translated = translation.add("$path.desc", "Craft a %s%s") { + russian("Создайте %s%s") + } + + val translatedSuffix = translation.add("$path.suffix", if (entry.englishSuffix != null) ". " + entry.englishSuffix else "") { + russian(if (entry.russianSuffix != null) ". " + entry.russianSuffix else "") + } + built[entry.item] = AdvancementBuilder() .parent(press) .display( itemStack = ItemStack(entry.item), - title = TranslatableComponent(translation.add(path, entry.englishName)), - description = TranslatableComponent(translation.add("$path.desc", "Craft a %s%s"), entry.item.description, if (entry.englishSuffix != null) ". " + entry.englishSuffix else ""), + title = translation.add(path, entry.englishName) { + if (entry.russianName != null) { + russian(entry.russianName) + } + }, + description = TranslatableComponent(translated.contents.key, entry.item.description, translatedSuffix), ) .addCriterion("has_machine", criterion(entry.item)) .save(serializer, modLocation("machines/$path"), existingFileHelper) diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/core/Ext.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/core/Ext.kt index ace708971..68b54d5f7 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/core/Ext.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/core/Ext.kt @@ -10,6 +10,8 @@ import com.google.gson.JsonPrimitive import net.minecraft.core.BlockPos import net.minecraft.nbt.CompoundTag import net.minecraft.network.FriendlyByteBuf +import net.minecraft.network.chat.ComponentContents +import net.minecraft.network.chat.contents.TranslatableContents import net.minecraft.resources.ResourceLocation import net.minecraft.world.entity.Entity import net.minecraft.world.item.Item @@ -248,3 +250,6 @@ inline fun MutableList>.forValidRefs(fn: (T) -> Unit) { } } } + +val ComponentContents.key: String + get() = (this as? TranslatableContents ?: throw ClassCastException("$this is not a TranslatableContents"))?.key