package ru.dbotthepony.mc.otm.datagen.lang

import ru.dbotthepony.mc.otm.registry.AndroidFeatures
import ru.dbotthepony.mc.otm.registry.MBlocks
import ru.dbotthepony.mc.otm.registry.MEntityTypes
import ru.dbotthepony.mc.otm.registry.MItems
import ru.dbotthepony.mc.otm.registry.MRegistry
import ru.dbotthepony.mc.otm.registry.MSoundEvents

private const val HIGH_BLAST_RESISTANCE = "Высокая взрывоустойчивость"
private const val HIGH_BLAST_RESISTANCE_DOOR = "Взрывоустойчивая дверь с засовом красного камня..."
private const val FEELING_SAFE_NOW = "...ощущаете ли вы себя теперь в безопасности?"

private fun decoratives(provider: MatteryLanguageProvider) {
	with(provider.russianColors) {
		add(MRegistry.VENT, "%s Вентиляция")
		add(MRegistry.VENT_ALTERNATIVE, "%s Альтернативная Вентиляция")

		add(MRegistry.TRITANIUM_BLOCK, "%s тритановый блок")
		add(MRegistry.TRITANIUM_STAIRS, "%s Тритановые ступеньки")
		add(MRegistry.TRITANIUM_SLAB, "%s Тритановая плита")
		add(MRegistry.TRITANIUM_WALL, "%s тритановая ограда")
		add(MRegistry.FLOOR_TILES, "%s керамическая плитка")
		add(MRegistry.FLOOR_TILES_STAIRS, "%s ступеньки из керамической плитки")
		add(MRegistry.FLOOR_TILES_SLAB, "%s плита из керамической плитки")
		add(MRegistry.UNREFINED_FLOOR_TILES, "Необработанная %s кирамическая Плитка")

		add(MRegistry.INDUSTRIAL_GLASS, "%s окрашенное промышленное стекло")
		add(MRegistry.INDUSTRIAL_GLASS_PANE, "%s окрашенная промышленная стеклянная панель")

		add(MRegistry.CARGO_CRATES, "%s грузовой ящик")
		add(MRegistry.DECORATIVE_CRATE, "%s блок контейнера")
	}

	with (provider.russian) {
		for ((color, name) in provider.russianColors.dyeClassMapped) {
			add(MItems.CARGO_CRATE_MINECARTS[color]!!, "Вагонетка с $name грузовым ящиком")
			add(MEntityTypes.CARGO_CRATE_MINECARTS[color]!!, "Вагонетка с $name грузовым ящиком")

			add(MRegistry.TRITANIUM_PRESSURE_PLATE.getBlock(color), "$name тритановая нажимная пластина")
			add(MRegistry.TRITANIUM_PRESSURE_PLATE.getBlock(color), "description0", "Активируется только при наступлении игрока на неё")
			add(MRegistry.TRITANIUM_PRESSURE_PLATE.getBlock(color), "description1", HIGH_BLAST_RESISTANCE)

			add(MBlocks.TRITANIUM_DOOR[color]!!, "$name тритановая дверь")
			add(MBlocks.TRITANIUM_DOOR[color]!!, "description0", HIGH_BLAST_RESISTANCE_DOOR)
			add(MBlocks.TRITANIUM_DOOR[color]!!, "description1", FEELING_SAFE_NOW)
			add(MBlocks.TRITANIUM_DOOR[color]!!, "description2", "Данный вариант выкрашен в $name")

			add(MBlocks.TRITANIUM_TRAPDOOR[color]!!, "$name тритановый люк")
			add(MBlocks.TRITANIUM_TRAPDOOR[color]!!, "description0", HIGH_BLAST_RESISTANCE_DOOR)
			add(MBlocks.TRITANIUM_TRAPDOOR[color]!!, "description1", FEELING_SAFE_NOW)
			add(MBlocks.TRITANIUM_TRAPDOOR[color]!!, "description2", "Данный вариант выкрашен в $name")
		}

		add(MRegistry.TRITANIUM_PRESSURE_PLATE.block, "Тритановая нажимная пластина")
		add(MRegistry.TRITANIUM_PRESSURE_PLATE.block, "description0", "Активируется только при наступлении игрока на неё")
		add(MRegistry.TRITANIUM_PRESSURE_PLATE.block, "description1", HIGH_BLAST_RESISTANCE)
	}

	with(provider.russian) {
		add(MItems.CARGO_CRATE_MINECARTS[null]!!, "Вагонетка с грузовым ящиком")
		add(MEntityTypes.CARGO_CRATE_MINECARTS[null]!!, "Вагонетка с грузовым ящиком")

		add(MRegistry.CARGO_CRATES.block, "Грузовой ящик")
		add(MRegistry.TRITANIUM_BLOCK.block, "Тритановый блок")
		add(MRegistry.TRITANIUM_STAIRS.block, "Тритановые ступеньки")
		add(MRegistry.TRITANIUM_SLAB.block, "Тритановая плита")
		add(MRegistry.TRITANIUM_WALL.block, "Тритановая ограда")

		add(MRegistry.INDUSTRIAL_GLASS.block, "Промышленное стекло")
		add(MRegistry.INDUSTRIAL_GLASS_PANE.block, "Панель промышенного стекла")

		add(MRegistry.DECORATIVE_CRATE.block, "Ржавый грузовой контейнер")

		add(MRegistry.VENT.block, "Вентиляция")
		add(MRegistry.VENT_ALTERNATIVE.block, "Альтернаятивная вентиляция")

		for ((block, colors) in MRegistry.TRITANIUM_STRIPED_BLOCK.blocksWithColor) {
			val (base, stripe) = colors

			val baseName = provider.russianColors.dyeClassMapped[base]!!
			val stripeName = provider.russianColors.dyeClassMapped[stripe]!!

			add(block, "$baseName-окрашенный $stripeName-ополосаченный тритановый блок")
		}

		for ((block, colors) in MRegistry.TRITANIUM_STRIPED_STAIRS.blocksWithColor) {
			val (base, stripe) = colors

			val baseName = provider.russianColors.dyeClassMapped[base]!!
			val stripeName = provider.russianColors.dyeClassMapped[stripe]!!

			add(block, "$baseName-окрашенные $stripeName-ополосаченные тритановые ступеньки")
		}

		for ((block, colors) in MRegistry.TRITANIUM_STRIPED_SLAB.blocksWithColor) {
			val (base, stripe) = colors

			val baseName = provider.russianColors.dyeClassMapped[base]!!
			val stripeName = provider.russianColors.dyeClassMapped[stripe]!!

			add(block, "$baseName-окрашенная $stripeName-ополосаченная тритановая Плита")
		}

		for ((block, colors) in MRegistry.TRITANIUM_STRIPED_WALL.blocksWithColor) {
			val (base, stripe) = colors

			val baseName = provider.russianColors.dyeClassMapped[base]!!
			val stripeName = provider.russianColors.dyeClassMapped[stripe]!!

			add(block, "$baseName-окрашенная $stripeName-ополосаченная тритановая ограда")
		}
	}
}

private fun sounds(provider: MatteryLanguageProvider) {
	with(provider.russian) {
		sound("rifle_shot", "Выстрел плазменной винтовки")
		sound("plasma_weapon_overheat", "Плазменное оружие перегрелось")
		sound("player_become_android", "Игрок превратился в андроида")

		sound(MSoundEvents.CARGO_CRATE_OPEN, "Открыт грузовой ящик")
	}
}

private fun misc(provider: MatteryLanguageProvider) {
	with(provider.russian) {
		gui("help.slot_filters", "Удерживайте CTRL для настройки фильтрации слотов")
		gui("help.slot_charging", "Удерживайте ALT для переключения зарядки слотов")

		misc("needs_no_power", "Не требует энергии для работы")

		gui("lock_holo_screen", "Заблокировать содержимое")
		gui("lock_holo_screen.tip", "Блокировка и разблокировка содержимого возможна только в режиме творчества.\nКогда заблокировано, границы ввода текста отключены.")

		gui("ticks", "Тиков")

		gui("power_cost_per_use", "Энергии на операцию: %s")
		gui("power_cost_per_tick", "Энергии на тик: %s")

		gui("cancel", "Отмена")
		gui("confirm", "Подтвердить")

		gui("recipe.ticks", "%s Тиков")

		gui("exopack", "Инвентарь Экзопака")

		gui("exopack.customize", "Изменить внешний вид Экзопака")
		gui("exopack.customization", "Внешний вид Экзопака")

		gui("exopack.go_back", "Открыть обычный инвентарь")
		gui("exopack.go_in", "Открыть инвентарь Экзопака")
		gui("exopack.toggle_visibility", "Отображать на игроке")
		gui("exopack.toggle_glow", "Свечение в темноте")
		gui("exopack.change_color", "Изменить окраску")
		gui("exopack.change_color2", "Убрать окраску")
		gui("exopack.go_curios", "Открыть инвентарь Curios")

		gui("exopack.probe1", "Данное маленькое устройство необычно на ощупь, а так же неприступно для любых попыток вскрыть.")
		gui("exopack.probe2", "На одной из сторон данного устройства находится сканер отпечатка, который тускло загорается при касании.")
		gui("exopack.probe3", "Вероятно, устройство откроется если достаточно сильно нажать на сканер отпечатка, и вы чувствуете, что последствия будут необратимы!")

		gui("exopack.already_activated", "У вас уже есть Экзопак!")

		gui("exopack_upgrades.no_exopack", "Данный пазл технологии кажется для вас бесполезным... Или..?!")

		gui("exopack_upgrades.already_activated", "Улучшение уже активно!")
		gui("exopack_upgrades.slots_upgrade", "Активируя данное улучшение даст %s слотов в вашем экзопаке.")
		gui("exopack_upgrades.crafting_upgrade", "Активация данного улучшения даст 3x3 сетку создания в вашем экзопаке.")
		gui("exopack_upgrades.smelting_upgrade", "Активация данного улучшения даст плавильню в вашем экзопаке.")

		gui("crude_battery.replace_in_world", "Простота устройства данного аккумулятора позволяет вам заменить .")
		gui("crude_battery.replace_in_world_warning", "Данная операция крайне рискованная и может нанести огромный урон вашим системам!")

		gui("power_supplier.active_nodes", "Узлы сети, требующие питания: %s")

		misc("battery.single_use", "Единоразовая батарейка, не может быть перезаряжена.")

		misc("exopack_upgrades.slots_upgraded", "Ваш экзопак был расширен на %s слотов")
		misc("exopack_upgrades.crafting_upgraded", "Ваш экзопак получил 3x3 сетку создания")
		misc("exopack_upgrades.smelting_installed", "Ваш экзопак получил плавильню")

		misc("exopack.granted1", "После некоторого времени нажатия на сканер отпечатка, маяк исчезает.")
		misc("exopack.granted2", "Через мгновение, вашу спину пронзают множество раз...")
		misc("exopack.granted3", "Как только боль утихает, вы обнаруживаете нового 'друга' на вашей спине: Экзопак.")
		misc("exopack.granted4", "Данное устройство предоставляет вам доступ к карманному измерению в 4том измерении.")
		misc("exopack.granted5", "Ищите или создавайте модули для улучшения Экзопака.")
		misc("exopack.granted6", "Так же сам Экзопак существует в 4том измерении, что не мешает носить любую броню.")
		misc("exopack.granted7", "Но не смотря на то, что экзопак существует в 4том измерении, предметы из него всё равно высыпаются при смерти.")

		misc("dumping_matter_registry", "Выгружаю реестр материи в %s")
		misc("dumped_matter_registry", "Выгрузил реестр материи в %s")

		misc("iteration", "Итерация %s")
		misc("death_reason", "Списан!")

		misc("item.blackhole_immunity", "Нейтрализует искажение пространства-времени сингулярностями")

		misc("suffix.merge", "%s %s")

		misc("suffix.none", "%s %s")
		misc("suffix.kilo", "%s к%s")
		misc("suffix.mega", "%s М%s")
		misc("suffix.giga", "%s Г%s")
		misc("suffix.tera", "%s Т%s")
		misc("suffix.peta", "%s П%s")
		misc("suffix.exa", "%s Э%s")
		misc("suffix.zetta", "%s З%s")
		misc("suffix.yotta", "%s И%s")

		misc("suffix.deci", "%s д%s")
		misc("suffix.centi", "%s с%s")
		misc("suffix.milli", "%s м%s")
		misc("suffix.micro", "%s мк%s")
		misc("suffix.nano", "%s н%s")
		misc("suffix.pico", "%s п%s")
		misc("suffix.femto", "%s ф%s")
		misc("suffix.atto", "%s а%s")
		misc("suffix.zepto", "%s з%s")
		misc("suffix.yocto", "%s и%s")

		misc("suffix_raw.kilo", "к")
		misc("suffix_raw.mega", "М")
		misc("suffix_raw.giga", "Г")
		misc("suffix_raw.tera", "Т")
		misc("suffix_raw.peta", "П")
		misc("suffix_raw.exa", "Э")
		misc("suffix_raw.zetta", "З")
		misc("suffix_raw.yotta", "И")
		misc("suffix_raw.deci", "д")
		misc("suffix_raw.centi", "с")
		misc("suffix_raw.milli", "м")
		misc("suffix_raw.micro", "мк")
		misc("suffix_raw.nano", "н")
		misc("suffix_raw.pico", "п")
		misc("suffix_raw.femto", "ф")
		misc("suffix_raw.atto", "а")
		misc("suffix_raw.zepto", "з")
		misc("suffix_raw.yocto", "и")

		misc("item.power.infinite.storage", "Хранимая энергия неиссякаема")
		misc("item.power.infinite.throughput", "Максимальный ввод/вывод неограничен")
		misc("item.power.passed", "Переданная энергия: %s")
		misc("item.power.received", "Принятая энергия: %s")
		misc("item.power.average", "Среднее: %s в тик")
		misc("item.power.last_20_ticks", "Последняя секунда: %s")
		misc("item.power.last_tick", "Последний тик: %s")

		gui("power.passed", "Всего передано энергии:")
		gui("power.average", "Средняя передача в тик:")
		gui("power.last_20_ticks", "Последняя секунда:")
		gui("power.last_tick", "Последний тик:")

		misc("item.power.storage", "Хранимая энергия: %s / %s")
		misc("item.power.throughput", "Максимальная пропускная способность: %s / %s")
		misc("item.power.throughput_mono", "Максимальная пропускная способность: %s")
		misc("item.power.infinity", "∞ МтДж")

		misc("item.worker.work_ticks_mono", "Рабочих тиков: %s")
		misc("item.worker.work_ticks", "Рабочих тиков: %s / %s")

		misc("item.block.stored_battery", "Батарея: %s")

		misc("item.pattern.stored", "Хранимые шаблоны: %s / %s")
		misc("item.pattern.infinite.stored", "Хранимые шаблоны: %s")
		misc("item.pattern.research", "Исследовано: %s%%")
		misc("item.pattern.research.item_count", "Предметы: %s / %s")
		misc("item.pattern.research.advance", "Исследование за предмет: %s%%")

		misc("item.matter.infinite", "Хранимая материя неиссякаема")
		misc("item.matter.normal", "Хранимая материя: %s / %s")

		misc("gui.matter_task.total", "Всего: %s")
		misc("gui.matter_task.required", "Осталось исполнить: %s")
		misc("gui.matter_task.in_progress", "В процессе: %s")
		misc("gui.matter_task.finished", "Завершено: %s")

		misc("pill.warning", "ВНИМАНИЕ: Это МГНОВЕННО спишет вас при употреблении!")
		misc("pill.android", "Примешь эту таблетку - войдешь в страну чудес, потеряв то, что удерживает тебя здесь.")

		misc("pill.humane", "Примешь эту таблетку - проснешься в своей постели и поверишь, что это был сон.")

		misc("pill.oblivion", "Предметы и Очки опыта, потраченные на исследования полностью возвращаются.")
		misc("pill.message_oblivion", "Все возможности андроида были удалены, а потраченные на исследования предметы и опыт возвращены.")

		misc("pill.heal", "Мгновенно восполняет 4 сердца при употреблении, а так же даёт на 2 минуты поглощение V и на 8 секунд регенерацию III.")
		misc("pill.heal_android", "Не действует на андроидов.")

		misc("pill.message", "Ничего не произошло, но вы чувствуете... себя уставшим?.. Возможно надо отдохнуть.")
		misc("pill.message_finish", "§kОДИН ИЗ НАС ОДИН ИЗ НАС ОДИН ИЗ НАС ОДИН ИЗ НАС ОДИН ИЗ НАС")

		gui("power.percentage_level", "Уровень энергии: %s%%")
		gui("power.name", "МтДж")
		gui("fluid.name", "В")
		gui("fluid.level", "%s / %s с %s")

		gui("empty", "Пусто")

		gui("power.burn_time", "Оставшееся время горения: %s тиков")

		gui("progress_widget", "Прогресс: %s%%")
		gui("progress_widget_stuck", "Это устройство не может продолжить работу, проверьте конфигурацию")

		gui("total_raw", "Всего:")

		gui("matter.percentage_level", "Уровень материи: %s%%")
		gui("matter.format", "Материя: %s")
		gui("matter.format_and_complexity", "%s / Сложность: %s")
		gui("matter.format_and_complexity2", "%s (%s) / Сложность: %s (%s)")
		gui("matter.name", "МтЕд")

		gui("filter.is_whitelist", "Белый список")
		gui("filter.match_nbt", "Сравнивать NBT")
		gui("filter.match_tag", "Сравнить Теги")

		gui("android_research", "Дерево Исследований")

		gui("pattern.percentage_level", "Уровень заполнения: %s%%")
		gui("pattern.format", "Хранимые шаблоны: %s / %s")

		gui("redstone.ignored", "Режим красного камня: Игнорирование")
		gui("redstone.low", "Режим красного камня: Нет сигнала")
		gui("redstone.high", "Режим красного камня: Есть сигнал")

		gui("redstone.ignored.description", "Сигнал красного камня не влияет на работу устройства")
		gui("redstone.low.description", "Устройство работает если нет сигнала красного камня")
		gui("redstone.high.description", "Устройство работает если есть сигнал красного камня")

		misc("3d2d.gravitation_stabilizer.mass", "Масса сингулярности: %s")
		misc("3d2d.gravitation_stabilizer.strength", "Гравитационная сила: %s")

		misc("android_station.research.low_power", "Мало питания у станции андроидов! Исследования недоступны!")
		misc("android_station.research.researched", "Исследовано!")
		misc("android_station.research.can_be_researched", "Готово к исследованию!")
		misc("android_station.research.can_not_be_researched", "Нельзя исследовать!")
		misc("android_station.research.xp_cost", "Требуется %s уровней Опыта")
		misc("android_station.research.item", "Требует %s %s шт.")
		misc("android_station.research.missing_predecessors", "Сначала надо изучить %s")

		misc("android_station.research.confirm", "Подтвердите исследование %s")
		misc("android_station.research.research_will_be_blocked", "Следующие исследования станут недоступны:")

		misc("android_station.low_power_0", "Недостаточно питания; Невозможно менять части андроида")
		misc("android_station.low_power_1", "Слабое питание; Невозможно исследовать")
		misc("android_station.power_ok", "Питание в норме")

		misc("filter.yes", "Да")
		misc("filter.no", "Нет")

		misc("matter_bottler.switch_mode", "Переключить режим работы")

		misc("item.quantum_battery.creative", "Наполните этот аккумулятор чтоб выиграть Minecraft.")
		misc("item.quantum_battery.creative2", "Встретимся после выгорания миллионов звёзд.")
		misc("item.quantum_battery.creative_power", "Хранимая энергия: %s / ∞")

		misc("item.quantum_link_id", "ID Квантового соединения: %s")
		misc("item.quantum_description", "Содержимое данного предмета связано с другими предметами посредством квантовой запутанности")
	}
}

private fun death(provider: MatteryLanguageProvider) {
	with(provider.russian) {
		death("otm_become_android", "%1\$s потерял свою человечность")
		death("otm_become_humane", "%1\$s восстановил свою человечность")
		death("otm_event_horizon", "%1\$s никогда не пересёк горизонт событий")
		death("otm_hawking_radiation", "%1\$s открыл излучение Хокинга")
		death("otm_emp", "Электроника %1\$s перегорела")
		death("otm_cosmic_rays", "Электроника %1\$s была ошеломлена космическим излучением")
		death("otm_android_discharge", "В аккумуляторах %1\$s закончился заряд")

		death("otm_become_android.player", "%1\$s потерял свою человечность, когда %2\$s пытался образумить их")
		death("otm_become_humane.player", "%1\$s восстановил свою человечность, когда %2\$s пытался образумить их")
		death("otm_event_horizon.player", "%1\$s попытался пересечь горизонт событий, спасаясь от %2\$s")
		death("otm_hawking_radiation.player", "%1\$s распался пока сражался с %2\$s")
		death("otm_emp.player", "%2\$s выбил все предохранители %1\$s")
		death("otm_emp.player.item", "%2\$s выбил все предохранители %1\$s используя %3\$s")

		death("otm_explosive_hammer", "Время развлечений у %1\$s с молотком подошло к концу")
		death("otm_hammer_nail", "%1\$s был пригвождён")
		death("otm_hammer_nail" + ".player", "%1\$s был пригвождён %2\$s")
		death("otm_hammer_nail" + ".player.item", "%1\$s был пригвождён %2\$s используя %3\$s")

		death("otm_exopack_probe", "%1\$s не выдержал спинную хирургию")
		death("otm_exopack_probe.player", "%1\$s не выдержал спинную хирургию пока сражался с %2\$s")
	}
}

private fun blocks(provider: MatteryLanguageProvider) {
	with(provider.russian) {
		add(MBlocks.ANDROID_STATION, "Станция андроидов")
		add(MBlocks.ANDROID_CHARGER, "Беспроводной зарядник андроидов")
		add(MBlocks.BATTERY_BANK, "Банк аккумуляторов")
		add(MBlocks.MATTER_DECOMPOSER, "Декомпозитор материи")
		add(MBlocks.MATTER_CAPACITOR_BANK, "Банк накопителей материи")
		add(MBlocks.MATTER_CABLE, "Кабель сети материи")
		add(MBlocks.PATTERN_STORAGE, "Хранилище шаблонов")
		add(MBlocks.MATTER_SCANNER, "Сканер материи")
		add(MBlocks.MATTER_PANEL, "Монитор шаблонов")
		add(MBlocks.MATTER_REPLICATOR, "Репликатор материи")
		add(MBlocks.MATTER_BOTTLER, "Бутилировщик материи")
		add(MBlocks.DRIVE_VIEWER, "Просмотрщик дисков конденсации")
		add(MBlocks.BLACK_HOLE, "Локализированная сингулярная точка аномального искажения пространства-времени")
		add(MBlocks.COBBLESTONE_GENERATOR, "Генератор булыжника")
		add(MBlocks.ESSENCE_STORAGE, "Хранилище эссенции")
		add(MBlocks.ESSENCE_STORAGE, "desc", "Позволяет хранить очки опыта")
		add(MBlocks.MATTER_RECONSTRUCTOR, "Материальный реконструктор")
		add(MBlocks.MATTER_RECONSTRUCTOR, "desc", "Чинит инструменты используя материю")

		add(MBlocks.FLUID_TANK, "Жидкостный бак")
		add(MBlocks.FLUID_TANK, "named", "Жидкостный бак (%s)")

		add(MBlocks.ENGINE, "Двигатель корабля")
		add(MBlocks.ENGINE, "desc", "К сожалению, он больше не выглядит рабочим.")
		add(MBlocks.HOLO_SIGN, "Голографическая табличка")

		add(MBlocks.TRITANIUM_INGOT_BLOCK, "Блок слитков тритана")

		add(MBlocks.ENERGY_COUNTER, "Счётчик энергии")
		add(MBlocks.ENERGY_COUNTER, "Facing", "сторона входа: %s")
		add(MBlocks.ENERGY_COUNTER, "Switch", "сменить сторону входа")
		add(MBlocks.ENERGY_COUNTER, "Limit", "лимит ввода/вывода. -1 для отключения лимитов")

		add(MBlocks.CHEMICAL_GENERATOR, "Химический генератор")
		add(MBlocks.DRIVE_RACK, "Стеллаж дисков конденсации")
		add(MBlocks.ITEM_MONITOR, "Монитор предметов")
		add(MBlocks.PLATE_PRESS, "Пресс пластин")
		add(MBlocks.TWIN_PLATE_PRESS, "Двойной пресс пластин")

		add(MBlocks.POWERED_FURNACE, "Электрическая печь")
		add(MBlocks.POWERED_BLAST_FURNACE, "Индукционная печь")
		add(MBlocks.POWERED_SMOKER, "Микроволновая печь")

		add(MBlocks.MATTER_RECYCLER, "Перерабатыватель материи")
		add(MBlocks.ENERGY_SERVO, "Энергетическая помпа")
		add(MBlocks.ENERGY_SERVO, "Desc", "заряжает, разряжает и передаёт энергию между предметами")

		add(MBlocks.CARBON_FIBRE_BLOCK, "Блок углеродных трубок")
		add(MBlocks.METAL_MESH, "Блок металлической сетки")
		add(MBlocks.METAL_JUNK, "Металлический хлам")
		add(MBlocks.METAL_JUNK, "desc", "Бесполезный хлам, или нет?")

		add(MBlocks.TRITANIUM_STRIPED_BLOCK, "Тритановый блок с полоской")
		add(MBlocks.TRITANIUM_STRIPED_STAIRS, "Тритановые ступеньки с полоской")
		add(MBlocks.TRITANIUM_STRIPED_SLAB, "Тритановая плита с полоской")
		add(MBlocks.TRITANIUM_STRIPED_WALL, "Тритановая ограда с полоской")
		add(MBlocks.TRITANIUM_ORE, "Тритановая руда")
		add(MBlocks.DEEPSLATE_TRITANIUM_ORE, "Тританоносный глубинный сланец")
		add(MBlocks.TRITANIUM_RAW_BLOCK, "Блок рудного тритана")

		add(MBlocks.STORAGE_CABLE, "Кабель хранилища")
		add(MBlocks.STORAGE_POWER_SUPPLIER, "Подстанция сети хранилища")
		add(MBlocks.STORAGE_BUS, "Шина хранилища")
		add(MBlocks.STORAGE_IMPORTER, "Импортер хранилища")
		add(MBlocks.STORAGE_EXPORTER, "Экспортер хранилища")

		add(MBlocks.GRAVITATION_STABILIZER, "Стабилизатор пространства-времени")
		add(MBlocks.GRAVITATION_STABILIZER_LENS, "Линза стабилизатора пространства-времени")
		add(MBlocks.GRAVITATION_STABILIZER, "Desc", "Уменьшает искажение пространства-времени сингулярностей")
		add(MBlocks.GRAVITATION_STABILIZER, "Desc2", "Имейте ввиду, что несколько стабилизаторов создают экспоненциальный эффект")
		add(MBlocks.GRAVITATION_STABILIZER, "Desc3", "Слишком слабое искажение пространства-времени приведёт к быстрому 'испарению' сингулярности!")

		add(MBlocks.PHANTOM_ATTRACTOR, "Приманщик фантомов")
		add(MBlocks.PHANTOM_ATTRACTOR, "Desc", "приманивает фантомов в ночное время")

		add(MBlocks.LABORATORY_LAMP, "Лабораторная лампа")
		add(MBlocks.LABORATORY_LAMP, "Description", "освещает на несколько блоков в направлении своей лампы, с переключателем красного камня")
		add(MBlocks.LABORATORY_LAMP_INVERTED, "Лабораторная лампа (инвентированный сигнал)")
		add(MBlocks.DANGER_STRIPE_BLOCK, "Полоски 'опасность'")
		add(MBlocks.METAL_BEAM, "Металлическая опора")

		add(MBlocks.TRITANIUM_DOOR[null]!!, "Тритановая дверь")
		add(MBlocks.TRITANIUM_DOOR[null]!!, "description0", "Взрывоустойчивая дверь с засовом красного камня...")
		add(MBlocks.TRITANIUM_DOOR[null]!!, "description1", FEELING_SAFE_NOW)

		add(MBlocks.TRITANIUM_TRAPDOOR[null]!!, "Тритановый люк")
		add(MBlocks.TRITANIUM_TRAPDOOR[null]!!, "description0", "Взрывоустойчивая дверь с засовом красного камня...")
		add(MBlocks.TRITANIUM_TRAPDOOR[null]!!, "description1", FEELING_SAFE_NOW)

		add(MBlocks.TRITANIUM_BARS, "Тритановая решётка")

		for (block in MBlocks.TRITANIUM_ANVIL)
			add(block, "Тритановая наковальня")
	}
}

private fun items(provider: MatteryLanguageProvider) {
	with(provider.russian) {
		add(MItems.PROCEDURAL_BATTERY, "Загадочный аккумулятор")
		add(MItems.PROCEDURAL_BATTERY, "desc", "Данные аккумуляторы можно найти в подземельях, со случайными характеристиками")

		add(MItems.EXPLOSIVE_HAMMER, "Молоток-убийца")
		add(MItems.EXPLOSIVE_HAMMER, "desc", "Для тех, кому стало скучно")
		add(MItems.EXPLOSIVE_HAMMER, "primed", "Заряжен!")
		add(MItems.EXPLOSIVE_HAMMER, "not_primed0", "Не заряжен")
		add(MItems.EXPLOSIVE_HAMMER, "not_primed1", "Для зарядки добавьте немного пороха и наконечник-самородок")

		add(MItems.EXOPACK_PROBE, "Маяк экзопака")
		add(MItems.ExopackUpgrades.INVENTORY_UPGRADE_CREATIVE, "Творческое обновление инвентаря экзопака")
		add(MItems.ExopackUpgrades.CRAFTING_UPGRADE, "Обновление сетки крафта экзопака")
		add(MItems.ExopackUpgrades.SMELTING_UPGRADE, "Модуль плавильни экзопака")

		add(MItems.ExopackUpgrades.INVENTORY_UPGRADE_WITHER, "Обновление сверхмассивной упаковки")
		add(MItems.ExopackUpgrades.INVENTORY_UPGRADE_WITHER, "description", "Использует те же принципы, которыми обладают звёзды незера")

		add(MItems.ExopackUpgrades.INVENTORY_UPGRADE_ENDER_DRAGON, "Обновление соединения края экзопака")
		add(MItems.ExopackUpgrades.INVENTORY_UPGRADE_ENDER_DRAGON, "description", "Позволяет хранить предметы в карманном измерении")

		add(MItems.ExopackUpgrades.INVENTORY_UPGRADE_PROCEDURAL, "Неописуемое обновление инвентаря экзопака")
		add(MItems.ExopackUpgrades.INVENTORY_UPGRADE_PROCEDURAL, "description", "В нормальных условиях, они появляются в сундуках")

		add(MItems.ESSENCE_CAPSULE, "Капсула эссенции")
		add(MItems.ESSENCE_DRIVE, "Голодиск воспоминаний андроида")
		add(MItems.ESSENCE_SERVO, "Помпа эссенции")
		add(MItems.ESSENCE_SERVO, "desc", "Позволяет 'перекачивать' эссенцию гуманоидов из плоти")
		add(MItems.ESSENCE_SERVO, "desc2", "Может быть использовано напрямую, или как инструмент внутри хранилища эссенции")

		add(MItems.NUTRIENT_PASTE, "Питательная паста")

		add(MItems.FLUID_CAPSULE, "Жидкостная капсула")
		add(MItems.FLUID_CAPSULE, "named", "Жидкостная капсула (%s)")

		add(MItems.BLACK_HOLE_SCANNER, "Сканер ёярностей")
		add(MItems.BLACK_HOLE_SCANNER, "desc", "Сканирует сингулярности и считывает их свойства")
		add(MItems.BLACK_HOLE_SCANNER, "desc2", "Держите в любой их рук для считывания массы сингулярностей")

		add(MItems.GRAVITATION_FIELD_LIMITER, "Ограничитель искажения пространства-времени")
		add(MItems.GRAVITATION_FIELD_SENSOR, "Сенсор искажения пространства-времени")
		add(MItems.PORTABLE_GRAVITATION_STABILIZER, "Портативный стабилизатор пространства-времени")

		add(MItems.BATTERY_CRUDE, "Самобытный аккумулятор")
		add(MItems.BATTERY_BASIC, "Простой аккумулятор")
		add(MItems.BATTERY_NORMAL, "Аккумулятор")
		add(MItems.BATTERY_DENSE, "Плотный аккумулятор")
		add(MItems.BATTERY_CAPACITOR, "Аккумулятор-конденсатор")
		add(MItems.BATTERY_CREATIVE, "Творческий аккумулятор")

		add(MItems.QUANTUM_BATTERY, "Квантовый аккумулятор")
		add(MItems.QUANTUM_CAPACITOR, "Квантовый аккумулятор-накопитель")
		add(MItems.QUANTUM_BATTERY_CREATIVE, "Творческий квантовый аккумулятор")

		add(MItems.TRITANIUM_SWORD, "Тритановый меч")
		add(MItems.TRITANIUM_PICKAXE, "Тритановая кирка")
		add(MItems.TRITANIUM_SHOVEL, "Тритановая лопата")
		add(MItems.TRITANIUM_AXE, "Тритановый топор")
		add(MItems.TRITANIUM_HOE, "Тритановая мотыга")
		add(MItems.TRITANIUM_SHEARS, "Тритановые ножницы")
		add(MItems.TRITANIUM_SHIELD, "Тритановый щит")

		add(MItems.TRITANIUM_HELMET, "Тритановый шлем")
		add(MItems.TRITANIUM_CHESTPLATE, "Тритановый нагрудник")
		add(MItems.TRITANIUM_PANTS, "Тритановые поножи")
		add(MItems.TRITANIUM_BOOTS, "Тритановые ботинки")

		add(MItems.SIMPLE_TRITANIUM_HELMET, "Простой тритановый шлем")
		add(MItems.SIMPLE_TRITANIUM_CHESTPLATE, "Простой тритановый нагрудник")
		add(MItems.SIMPLE_TRITANIUM_PANTS, "Простые тритановые поножи")
		add(MItems.SIMPLE_TRITANIUM_BOOTS, "Простые тритановые ботинки")

		add(MItems.TRITANIUM_DUST, "Тритановая пыль")
		add(MItems.TRITANIUM_INGOT, "Тритановый слиток")
		add(MItems.TRITANIUM_NUGGET, "Тритановый самородок")
		add(MItems.MATTER_IO_PORT, "Порт ввода/вывода материи")
		add(MItems.MATTER_TRANSFORM_MATRIX, "Матрица преобразования материи")
		add(MItems.ENERGY_BUS, "Шина питания")
		add(MItems.ELECTRIC_PARTS, "Электрические части")
		add(MItems.MACHINE_FRAME, "Каркас механизма")
		add(MItems.TRITANIUM_PLATE, "Тритановая пластина")
		add(MItems.IRON_PLATE, "Железная пластина")
		add(MItems.GOLD_PLATE, "Золотая пластина")
		add(MItems.COPPER_WIRING, "Медная проволока")
		add(MItems.GOLD_WIRING, "Золотая проволока")
		add(MItems.PORTABLE_CONDENSATION_DRIVE_CASING, "Каркас портативного диска конденсации")
		add(MItems.PORTABLE_DENSE_CONDENSATION_DRIVE_CASING, "Каркас плотного портативного диска конденсации")
		add(MItems.CIRCUIT_PLATING, "Плата электроники")
		add(MItems.BASIC_CONTROL_CIRCUIT, "Простая схема управления")
		add(MItems.ADVANCED_CONTROL_CIRCUIT, "Продвинутая схема управления")
		add(MItems.QUANTUM_TRANSCEIVER, "Квантовый передатчик")
		add(MItems.ELECTROMAGNET, "Электромагнит")
		add(MItems.MIRROR_COMPOUND, "Набор выплавки зеркала")
		add(MItems.MIRROR, "Зеркало")
		add(MItems.MIRROR, "description", "Я могу очень отчётливо видеть своё отражение в этом зеркале")
		add(MItems.REINFORCED_TRITANIUM_PLATE, "Укреплённая тритановая пластина")
		add(MItems.REINFORCED_TRITANIUM_PLATE, "description", "Бронированная пластина, усиленная что бы выдержать большие кинетические силы")
		add(MItems.CARBON_MESH, "Углеродная сетка")

		add(MItems.GRAVITATIONAL_DISRUPTOR, "Маяк уравнения пространства-времени")

		add(MItems.GRAVITATIONAL_DISRUPTOR, "description", "Будучи находясь около точки искажения пространства-времени, создаёт противоположное искажение пространства-времени")
		add(MItems.GRAVITATIONAL_DISRUPTOR, "description2", "Позволяет 'уничтожать' сингулярности")
		add(MItems.GRAVITATIONAL_DISRUPTOR, "description3", "Никак не влияет на материю, которую накопила сингулярность, что вызывает неописуемо сильный взрыв материи!")
		add(MItems.GRAVITATIONAL_DISRUPTOR, "description4", "Взрыв %s сдержан %s. Даже не пытайтесь его сдержать.")
		add(MItems.GRAVITATIONAL_DISRUPTOR, "description4_clarification", "не может быть")
		add(MItems.GRAVITATIONAL_DISRUPTOR, "description4_clarification2", "ничем")

		add(MItems.MATTER_DUST, "Пыль материи")
		add(MItems.MATTER_DUST, "desc", "Данный предмет является результатом неудачной попытки декомпозиции или репликации")
		add(MItems.MATTER_DUST, "desc2", "Закиньте в Материальный Переработчик для переработки обратно в чистую материю!")
		add(MItems.MATTER_DUST, "desc3", "Не нюхать, не кидать на других и не сыпать на пончики")

		add(MItems.PILL_ANDROID, "Пилюля андроида")
		add(MItems.PILL_HUMANE, "Пилюля человечности")
		add(MItems.PILL_OBLIVION, "Пилюля сброса андроида до заводских настроек")
		add(MItems.PILL_HEAL, "Медицинская пилюля")

		add(MItems.MATTER_CAPACITOR_PARTS, "Части накопителя материи")
		add(MItems.MATTER_CAPACITOR_BASIC, "Простой накопитель материи")
		add(MItems.MATTER_CAPACITOR_NORMAL, "Накопитель материи")
		add(MItems.MATTER_CAPACITOR_DENSE, "Плотный накопитель материи")
		add(MItems.MATTER_CAPACITOR_CREATIVE, "Творческий накопитель материи")

		add(MItems.ENERGY_SWORD, "Высокочастотный клинок")
		add(MItems.ENERGY_SWORD, "desc", "Требует энергию для работы")
		add(MItems.ENERGY_SWORD, "desc2", "Наносит дополнительный урон андроидам если имеет заряд")
		add(MItems.ENERGY_SWORD, "desc3", "Всегда наносит полный урон по площади если имеет заряд")
		add(MItems.ENERGY_SWORD, "desc4", "Зачарование 'Разящий клинок' не имеет никакого эффекта на данном оружии")

		add(MItems.PORTABLE_CONDENSATION_DRIVE, "Portable Condensation Drive")
		add(MItems.PORTABLE_DENSE_CONDENSATION_DRIVE, "Portable Dense Condensation Drive")
		add(MItems.PLASMA_RIFLE, "Плазменная винтовка")
		add(MItems.TRITANIUM_ORE_CLUMP, "Рудный тритан")
		add(MItems.PATTERN_DRIVE_NORMAL, "Диск шаблонов")
		add(MItems.PATTERN_DRIVE_CREATIVE, "Творческий диск шаблонов")

		add(MItems.PATTERN_DRIVE_CREATIVE2, "Вездесущий диск шаблонов")
		add(MItems.PATTERN_DRIVE_CREATIVE2, "description1", "Предмет режима творчества")
		add(MItems.PATTERN_DRIVE_CREATIVE2, "description2", "Содержит в себе шаблоны всех предметов, которые имеют значение материи")

		add(MItems.ZPM_BATTERY, "Модуль нулевой точки")
		add(MItems.ZPM_BATTERY, "description", "Может быть найден у тех, кто путешествует между измерениями, если, конечно, они смогли достигнуть вселенной, где данные устройства были созиданы...")

		add(MItems.CreativeUpgrades.SPEED, "Творческое улучшение скорости")
		add(MItems.CreativeUpgrades.ENERGY_CONSUMPTION, "Творческое улучшение энергоэффективности")
		add(MItems.CreativeUpgrades.ENERGY_STORAGE, "Творческое улучшение энергохраналища")
		add(MItems.CreativeUpgrades.ENERGY_STORAGE_FLAT, "Творческое улучшение энергохраналища (простое)")
		add(MItems.CreativeUpgrades.ENERGY_STORAGE_FLAT_SMALL, "Творческое улучшение энергохраналища (малое простое)")
		add(MItems.CreativeUpgrades.MATTER_STORAGE, "Творческое улучшение хранилища материи")
		add(MItems.CreativeUpgrades.MATTER_STORAGE_FLAT, "Творческое улучшение хранилища материи (простое)")
		add(MItems.CreativeUpgrades.MATTER_STORAGE_FLAT_SMALL, "Творческое улучшение хранилища материи (малое простое)")
		add(MItems.CreativeUpgrades.ENERGY_THROUGHPUT, "Творческое улучшение энергоканала")
		add(MItems.CreativeUpgrades.ENERGY_THROUGHPUT_FLAT, "Творческое улучшение энергоканала (простое)")
		add(MItems.CreativeUpgrades.ENERGY_THROUGHPUT_FLAT_SMALL, "Творческое улучшение энергоканала (малое простое)")
		add(MItems.CreativeUpgrades.FAILSAFE, "Творческое улучшение отказоустойчивости")
		add(MItems.CreativeUpgrades.FAILURE, "Творческое улучшение краха")
		add(MItems.CreativeUpgrades.PROCESSING_ITEMS, "Творческое улучшение обработки")
	}
}

private fun stats(provider: MatteryLanguageProvider) {
	with(provider.russian) {
		stat("health_regenerated", "Здоровья отрегенерировано наноботами")
		stat("damage_absorbed", "Урона поглащено наноботами")
		stat("power_consumed", "МтДж сожжено за андроида")
	}
}

private fun research(provider: MatteryLanguageProvider) {
	with(provider.russian) {
		add("android_research.status.requires", "Требует %s для изучения")
		add("android_research.status.blocks", "Блокирует %s")
		add("android_research.status.blocked_by", "Блокируется %s")
		add("android_research.status.requires_item", "Требует %s")
		add("android_research.status.requires_item_multiple0", "Требует %s %s шт. (требуется ещё %s шт.)")
		add("android_research.status.requires_item_multiple1", "Требует %s %s шт.")

		add("android_research.status.requires_item_any", "Требует любое из %s")
		add("android_research.status.requires_item_multiple_any0", "Требует любое из %s %s шт. (требуется ещё %s шт.)")
		add("android_research.status.requires_item_multiple_any1", "Требует любое из %s %s шт.")
	}
}

private fun androidFeatures(provider: MatteryLanguageProvider) {
	with(provider.russian) {
		add(AndroidFeatures.AIR_BAGS, "Воздушные мешки")
		add(AndroidFeatures.SHOCKWAVE, "Генератор ударных волн")
		add(AndroidFeatures.NIGHT_VISION, "Ночное зрение")
		add(AndroidFeatures.NANOBOTS_ARMOR, "Броня из наноботов")
		add(AndroidFeatures.ITEM_MAGNET, "Предметный магнит")
		add(AndroidFeatures.STEP_ASSIST, "Помощник подъёма")
		add(AndroidFeatures.JUMP_BOOST, "Усилитель прыжка")
		add(AndroidFeatures.ENDER_TELEPORTER, "Телепортатор края")
	}
}

private fun gui(provider: MatteryLanguageProvider) {
	with(provider.russian) {
		gui("quicksearch", "Быстрый поиск...")

		gui("color_picker", "Выбор цвета")

		gui("color.short.red", "К")
		gui("color.short.green", "З")
		gui("color.short.blue", "С")
		gui("color.short.hue", "Ц")
		gui("color.short.saturation", "Н")
		gui("color.short.value", "Я")

		gui("color.full.red", "Красный")
		gui("color.full.green", "Зелёный")
		gui("color.full.blue", "Синий")
		gui("color.full.hue", "Цвет")
		gui("color.full.saturation", "Насыщение")
		gui("color.full.value", "Яркость")

		gui("item_monitor.refill_source.desc", "Контролирует источник предметов для заполнения сетки создания")
		gui("item_monitor.refill_source.system", "Только система. Сетка создания будет заполняться только из системы предметов. Данный параметр соответствует поведению AE2 и Refined Storage")
		gui("item_monitor.refill_source.inventory", "Только инвентарь. Сетка создания будет заполняться только из инвентаря игрока")
		gui("item_monitor.refill_source.system_first", "Сначала система. Сетка создания сначала будет заполняться из системы предметов, а затем из инвентаря игрока")
		gui("item_monitor.refill_source.inventory_first", "Сначала инвентарь. Сетка создания сначала будет заполняться из инвентаря игрока, а затем из системы предметов")
		gui("item_monitor.refill_source.do_not", "Не заполнять автоматически")

		gui("item_monitor.result_target.desc", "Контролирует поведение сетки создания")
		gui("item_monitor.result_target.all_system", "Всё в систему. И результат создания и остаток отправляется в систему предметов")
		gui("item_monitor.result_target.mixed", "Смешанный. Результат создания кладётся в инвентарь игрока, остаток отправляется в систему предметов")
		gui("item_monitor.result_target.all_inventory", "Всё в инвентарь. И результат создания и остаток кладётся в инвентарь игрока")

		gui("item_monitor.amount.desc", "Контролирует сколько предметов создавать при быстром крафте")
		gui("item_monitor.amount.one", "Ровно один предмет")
		gui("item_monitor.amount.stack", "Ровно одну стопку. Данный параметр соответствует поведению AE2 и Refined Storage")
		gui("item_monitor.amount.full", "Стопку ингредиентов. Создание продолжается пока не будет достигнут лимит по стопке одного из ингредиентов. Если хотя бы один из ингредиентов не может быть стопкой, будет использован режим 'одна стопка результата'")

		gui("stored_amount", "Точное количество в хранилище: %s шт.")

		gui("sides.item_config", "Настройка предметов")
		gui("sides.energy_config", "Настройка энергии")
		gui("sides.fluid_config", "Настройка жидкости")

		gui("sides.pull_help", "Удерживайте Shift для настройки режима забора")
		gui("sides.push_help", "Удерживайте Ctrl для настройки режима выталкивания")

		gui("sides.top", "Верхняя сторона")
		gui("sides.bottom", "Нижняя сторона")
		gui("sides.front", "Передняя сторона")
		gui("sides.back", "Задняя сторона")
		gui("sides.left", "Левая сторона")
		gui("sides.right", "Правая сторона")

		gui("side_mode.disabled", "Отключено")
		gui("side_mode.input", "Только вход")
		gui("side_mode.output", "Только выход")
		gui("side_mode.input_output", "Вход/Выход")
		gui("side_mode.battery", "Батарея")

		gui("side_mode.pull", "Автоматическое вытягивание")
		gui("side_mode.push", "Автоматическое выталкивание")

		gui("upgrades", "Улучшения")
		gui("upgrades.current", "Активные улучшения:")
		gui("upgrade.speed", "Скорость работы: %s%%")
		gui("upgrade.processing_items", "Работы за цикл: +%s")
		gui("upgrade.energy_storage_flat", "Хранилище энергии: +%s")
		gui("upgrade.matter_storage_flat", "Хранилище материи: +%s")
		gui("upgrade.energy_storage", "Хранилище энергии: +%s%%")
		gui("upgrade.matter_storage", "Хранилище материи: +%s%%")
		gui("upgrade.energy_consumed", "Потребление энергии: %s%%")
		gui("upgrade.energy_throughput_flat", "Пропускная способность энергии: +%s")
		gui("upgrade.energy_throughput", "Пропускная способность энергии: +%s%%")
		gui("upgrade.failsafe", "Шанс неудачи: %s%%")

		gui("upgrade_type.list", "Классификация улучшения:")
		gui("upgrade_type.allowed", "Допустимые улучшения:")
		gui("upgrade_type.allowed_none", "На данный момент нет допустимых улучшений.")
		gui("upgrade_type.speed", "Скорость")
		gui("upgrade_type.processing", "Обработка")
		gui("upgrade_type.matter_storage", "Хранилище материи")
		gui("upgrade_type.energy_storage", "Энергохранилище")
		gui("upgrade_type.energy_consumption", "Энергоэффективность")
		gui("upgrade_type.energy_throughput", "Энергоканал")
		gui("upgrade_type.failsafe", "Отказоустойчивость")

		gui("balance_inputs", "Балансировать входные слоты")

		gui("sorting.default", "Сортировка по умолчанию")
		gui("sorting.name", "Сортировка по имени")
		gui("sorting.id", "Сортировка по ID")
		gui("sorting.modid", "Сортировка по пространству имён (моду)")
		gui("sorting.count", "Сортировка по количеству")
		gui("sorting.ascending", "Возрастающая")
		gui("sorting.descending", "Убывающая")
		gui("sorting.matter_value", "Значение материи")
		gui("sorting.matter_complexity", "Сложность репликации")

		gui("matter_panel.send", "Запросить")
		gui("matter_panel.close", "Закрыть")
		gui("matter_panel.cancel_task", "Отменить задание")
		gui("matter_panel.cancel", "Отмена")
		gui("matter_panel.label", "Запрос на репликацию")
		gui("matter_panel.task", "Будущий запрос на репликацию")

		gui("matter_panel.tasks", "Задачи")
		gui("matter_panel.patterns", "Шаблоны")

		gui("matter_panel.number_input", "Введите кол-во единиц репликации")

		gui("matter_panel.matter_stored", "Материи хранится: %s")
		gui("matter_panel.matter_required", "Материи требуется: %s")
		gui("matter_panel.complexity", "Общая сложность: %s")

		gui("experience", "%s очков опыта")
		gui("experience_levels", "%s уровней опыта")

		gui("experience.store", "Передать %s уровней опыта")
		gui("experience.store_all", "Передать все уровни опыта")
		gui("experience.dispense", "Вывести %s уровней опыта")
		gui("experience.dispense_all", "Вывести все уровни опыта")
		gui("experience.set_exact", "Установить уровень опыта в %s")

		gui("essence_capsule", "(Почти) Всё, что вы знали, хранится внутри")
		gui("essence_capsule2", "Данный предмет может быть переработан внутри хранилища эссенции")

		gui("slot_filter.filtered", "Данный слот отфильтрован для автоматизации")
		gui("slot_filter.forbidden", "Данный слот запрещён для взаимодействия средствами автоматизации")
		gui("slot_filter.hint", "Для удаления фильтра нажмите Ctrl + ЛКМ")
	}
}

private fun jade(provider: MatteryLanguageProvider) {
	with(provider.russian) {
		jadeloc("matter_storage", "Хранилище материи")
		jadeloc("mattery_energy", "Хранилище энергии")
		jadeloc("mattery_worker", "Прогресс работы механизма")
		jadeloc("matter_bottler", "Режим бутилировщика материи")
		jadeloc("matter_reconstructor", "Прогресс материального реконструктора")

		jade("mode", "Режим: %s")

		jade("matter_bottler.mode.fill", "Заполнение")
		jade("matter_bottler.mode.drain", "Опустошение")
	}
}

fun AddRussianLanguage(provider: MatteryLanguageProvider) {
	decoratives(provider)
	blocks(provider)
	sounds(provider)
	misc(provider)
	items(provider)
	gui(provider)
	stats(provider)
	research(provider)
	death(provider)
	androidFeatures(provider)
	jade(provider)
}
