Custom Villager Trades позволяет автору сборки задать собственные сделки жителей через файлы JSON: что торговец отдаёт, что получает взамен, сколько раз доступен обмен и на каком уровне профессии он появляется. Здесь подготовлен вариант 20.25.0 для Minecraft Java Edition 1.20.1 и Forge с русскими сообщениями команд и диагностики. Автор мода — SpaceCat97. Перевод RU1 является неофициальной редакцией.
Мод подходит для изменения экономики сборки: например, фермер может продавать выбранный предмет за изумруды, а жители добавленной профессии — принимать предметы другого установленного мода. Сам по себе файл не создаёт готовый магазин и не добавляет новые профессии: нужные сделки задаёт администратор или автор сборки.
Авторская иллюстрация: сделка бронника с зачарованной шерстью. Кадр из галереи исходного проекта; версия игры на снимке не установлена. Это не тест перевода RU1.
У каждого набора есть profession — идентификатор профессии, например minecraft:farmer. Массив trades содержит отдельные предложения. Поле offer описывает предмет, который получает игрок, а request — оплату со стороны игрока. Для второй части оплаты предусмотрено additionalRequest. Если нужны варианты одного предложения, используются массивы multiOffer и multiRequest: мод выбирает один элемент массива, а не выдаёт весь список сразу.
Параметр tradeLevel задаёт уровень сделки; для обычных жителей используются уровни от 1 до 5. maxUses ограничивает число обменов до пополнения запасов, tradeExp определяет опыт жителя. priceMultiplier и demand участвуют в расчёте цены. Они не означают неизменную цену при любых условиях мира.
removeOtherTrades позволяет убрать прежний набор предложений для профессии. Начните с false, если хотите дополнить торговлю. Значение true используйте осознанно: оно меняет доступный набор сделок. Изменение файла также не гарантирует, что уже сохранённые предложения существующего жителя будут заменены. Для таких предложений важны данные самого жителя; команда перезагрузки не является обещанием массового сброса всех торговцев.
В выбранном Forge-файле каталог настроек — config/custom trades. Общий файл называется config/cvtGlobal.json. Для странствующего торговца выделен подкаталог config/custom trades/wanderer, для экспорта — config/custom trades/exports. Пробел в custom trades является частью имени. Путь config/custom villager trades из общей страницы проекта для этого файла не подходит.
При отсутствии пользовательских сделок код предусматривает создание примеров. Сохраните собственную копию нужного файла перед изменением и редактируйте JSON с сохранением технических ключей: profession, trades, offer, request и остальные имена полей не переводятся.
Ниже показан учебный файл для предложения «один хлеб за один изумруд». Это пример структуры по полям выбранного JAR — файла мода; игровой запуск примера не проводился.
Не меняйте местами offer и request: иначе направление обмена окажется обратным. Идентификатор предмета должен существовать в установленной сборке. Если предмет добавляет другой мод, сначала нужен сам этот мод в совместимой версии.
/reloadCVT перечитывает настройки сделок. /exportCVT выгружает предложения; у версии 20.25.0 код задаёт каталог exports. Для экспорта требуется контекст игрока, поэтому запуск из серверной консоли нельзя считать равнозначным. /addCVT добавляет предложение с указанными предметами, количеством, опытом, лимитом использований и уровнем. /removeCVT удаляет пользовательскую сделку по её UTID — уникальному идентификатору сделки.
Команды автор пометил экспериментальными. Используйте их после сохранения конфигурации. Доступ связан с opLevel в cvtGlobal.json; значение по умолчанию в коде — 2. Русский перевод не меняет имена команд и правила доступа.
Выбранный файл предназначен для Forge. Его mods.toml требует Forge 47+, Minecraft не ниже 1.20.1 и библиотеку Architectury API не ниже 9.1.12; классы используют Java 17. Эти нижние границы не доказывают совместимость с любой более новой версией игры. Для этой публикации выбран Minecraft 1.20.1: используйте Forge и Architectury именно для него. Fabric-вариант является отдельным файлом.
Поместите JAR мода и совместимый Forge-файл Architectury в mods нужной сборки. Настройки сделок относятся к миру или серверу, на котором работает мод. Один клиентский файл не изменит торговлю на чужом сервере.
В варианте RU1 переведены 37 сообщений: результаты команд, ошибки полей сделки, предметов, зачарований и чтения конфигурации. Названия предметов берутся из игры и других модов; технические идентификаторы, JSON-ключи, пути и команды сохранены. Отдельный ru_ru.json здесь не используется. Перевод изменяет строковые константы классов, сохраняя инструкции методов и остальные вложения JAR.
Проверены контрольные суммы исходника, целостность архива, метаданные зависимостей и структура изменённых классов. Внутриигровая проверка не проводилась. Карты сокровищ и подозрительное рагу не заявляются рабочими возможностями: документация автора отмечает для них ограничения.
Проверьте каталог custom trades, синтаксис JSON, идентификаторы предметов и профессию. Затем прочитайте сообщения Custom Villager Trades (CVT) в latest.log. Отдельно проверьте уровень жителя и сохранённые у него предложения. Наличие нового варианта в общем наборе не означает, что он появится у каждого жителя при каждом выборе.
Для поиска нужного торговца в той же версии Minecraft полезны метки профессий Merchant Markers: они помогают различать жителей, а Custom Villager Trades задаёт их предложения. Эти задачи дополняют друг друга; Merchant Markers не является обязательной зависимостью.
Мод подходит для изменения экономики сборки: например, фермер может продавать выбранный предмет за изумруды, а жители добавленной профессии — принимать предметы другого установленного мода. Сам по себе файл не создаёт готовый магазин и не добавляет новые профессии: нужные сделки задаёт администратор или автор сборки.
Авторская иллюстрация: сделка бронника с зачарованной шерстью. Кадр из галереи исходного проекта; версия игры на снимке не установлена. Это не тест перевода RU1.
Как устроены сделки
У каждого набора есть profession — идентификатор профессии, например minecraft:farmer. Массив trades содержит отдельные предложения. Поле offer описывает предмет, который получает игрок, а request — оплату со стороны игрока. Для второй части оплаты предусмотрено additionalRequest. Если нужны варианты одного предложения, используются массивы multiOffer и multiRequest: мод выбирает один элемент массива, а не выдаёт весь список сразу.
Параметр tradeLevel задаёт уровень сделки; для обычных жителей используются уровни от 1 до 5. maxUses ограничивает число обменов до пополнения запасов, tradeExp определяет опыт жителя. priceMultiplier и demand участвуют в расчёте цены. Они не означают неизменную цену при любых условиях мира.
removeOtherTrades позволяет убрать прежний набор предложений для профессии. Начните с false, если хотите дополнить торговлю. Значение true используйте осознанно: оно меняет доступный набор сделок. Изменение файла также не гарантирует, что уже сохранённые предложения существующего жителя будут заменены. Для таких предложений важны данные самого жителя; команда перезагрузки не является обещанием массового сброса всех торговцев.
Где лежат настройки версии 20.25.0
В выбранном Forge-файле каталог настроек — config/custom trades. Общий файл называется config/cvtGlobal.json. Для странствующего торговца выделен подкаталог config/custom trades/wanderer, для экспорта — config/custom trades/exports. Пробел в custom trades является частью имени. Путь config/custom villager trades из общей страницы проекта для этого файла не подходит.
При отсутствии пользовательских сделок код предусматривает создание примеров. Сохраните собственную копию нужного файла перед изменением и редактируйте JSON с сохранением технических ключей: profession, trades, offer, request и остальные имена полей не переводятся.
Минимальный пример сделки фермера
Ниже показан учебный файл для предложения «один хлеб за один изумруд». Это пример структуры по полям выбранного JAR — файла мода; игровой запуск примера не проводился.
JSON:
{
"profession": "minecraft:farmer",
"removeOtherTrades": false,
"maxTrades": 2,
"trades": [
{
"offer": {"itemKey": "minecraft:bread", "amount": 1},
"request": {"itemKey": "minecraft:emerald", "amount": 1},
"tradeExp": 1,
"maxUses": 12,
"priceMultiplier": 0.05,
"tradeLevel": 1
}
]
}
Не меняйте местами offer и request: иначе направление обмена окажется обратным. Идентификатор предмета должен существовать в установленной сборке. Если предмет добавляет другой мод, сначала нужен сам этот мод в совместимой версии.
Команды и права
/reloadCVT перечитывает настройки сделок. /exportCVT выгружает предложения; у версии 20.25.0 код задаёт каталог exports. Для экспорта требуется контекст игрока, поэтому запуск из серверной консоли нельзя считать равнозначным. /addCVT добавляет предложение с указанными предметами, количеством, опытом, лимитом использований и уровнем. /removeCVT удаляет пользовательскую сделку по её UTID — уникальному идентификатору сделки.
Команды автор пометил экспериментальными. Используйте их после сохранения конфигурации. Доступ связан с opLevel в cvtGlobal.json; значение по умолчанию в коде — 2. Русский перевод не меняет имена команд и правила доступа.
Установка и зависимости
Выбранный файл предназначен для Forge. Его mods.toml требует Forge 47+, Minecraft не ниже 1.20.1 и библиотеку Architectury API не ниже 9.1.12; классы используют Java 17. Эти нижние границы не доказывают совместимость с любой более новой версией игры. Для этой публикации выбран Minecraft 1.20.1: используйте Forge и Architectury именно для него. Fabric-вариант является отдельным файлом.
Поместите JAR мода и совместимый Forge-файл Architectury в mods нужной сборки. Настройки сделок относятся к миру или серверу, на котором работает мод. Один клиентский файл не изменит торговлю на чужом сервере.
Что переведено и что проверено
В варианте RU1 переведены 37 сообщений: результаты команд, ошибки полей сделки, предметов, зачарований и чтения конфигурации. Названия предметов берутся из игры и других модов; технические идентификаторы, JSON-ключи, пути и команды сохранены. Отдельный ru_ru.json здесь не используется. Перевод изменяет строковые константы классов, сохраняя инструкции методов и остальные вложения JAR.
Проверены контрольные суммы исходника, целостность архива, метаданные зависимостей и структура изменённых классов. Внутриигровая проверка не проводилась. Карты сокровищ и подозрительное рагу не заявляются рабочими возможностями: документация автора отмечает для них ограничения.
Если сделки не появились
Проверьте каталог custom trades, синтаксис JSON, идентификаторы предметов и профессию. Затем прочитайте сообщения Custom Villager Trades (CVT) в latest.log. Отдельно проверьте уровень жителя и сохранённые у него предложения. Наличие нового варианта в общем наборе не означает, что он появится у каждого жителя при каждом выборе.
Для поиска нужного торговца в той же версии Minecraft полезны метки профессий Merchant Markers: они помогают различать жителей, а Custom Villager Trades задаёт их предложения. Эти задачи дополняют друг друга; Merchant Markers не является обязательной зависимостью.