Перейти к содержимому

VillagersTradingPlus

Добавляйте, заменяйте или удаляйте сделки любого жителя, меняйте валюту, ставьте условия для сделок и меняйте их цены — всё это через датапак.

FabricNeoForgeForge
Загрузчики
FabricNeoForgeForge
Скачиваний на Modrinth
69,3 тыс.
Подписчиков на Modrinth
7
версий
12
Обновлён
22 октября 202622 окт.
Опубликован
в 2026

Коротко о моде

Работает на Fabric, NeoForge и Forge
Для Minecraft 1.21–1.21.1, 1.21.6–1.21.8 …
Нужен и в игре, и на сервере
Последняя версия — 1.1.0+mc1.21.8-neoforge от 22 октября 2026
Лицензия GPL-3.0-only — бесплатно
Где нужен
В игреобязателенНа сервереобязателен

Нужен и в игре, и на сервере

Версии игры1.20–1.20.1, 1.21–1.21.1, 1.21.6–1.21.8
Описание переведено автоматическиПоказать оригинал (EN)

VillagerTradingPlus позволяет полностью настроить торговлю с жителями для вашего мира.

Добавляйте, заменяйте или удаляйте сделки любого жителя, меняйте валюту, ставьте условия для появления сделок и меняйте их цены — всё это через датапак.

Версии: 1.20–1.20.1, 1.21–1.21.1, 1.21.6–1.21.8

Поддержите мою работу на

Patreon

Buy me a coffee

* ## Что это такое VillagerTradingPlus — это **библиотека. Сама по себе она не добавляет ни жителей, ни блоков, ни предметов: она заменяет механику торговли с жителями, чтобы моды и датапаки могли задавать сделки в JSON. Устанавливайте её, если какой-то мод её требует или если вы хотите переписать торговлю с жителями в своём паке. VillagersPlus — эталонный мод, построенный на её основе. ## Что с ней можно делать * Добавлять, удалять или перезаписывать сделки для любой профессии жителя, включая ванильные. * Менять валюту с изумрудов на любой предмет. * Задавать количество, максимальное число использований, опыт жителя и поведение цены для каждой сделки. * Ставить условия для сделок: биом, измерение, погода, время суток, фаза луны, игровое правило, блок рабочего места или флаг в конфиге. * Четырнадцать типов сделок: от простой продажи предмета до взвешенных пулов, карт структур и зачарованных книг из заданного вами взвешенного списка. * Объединять несколько датапаков, изменяющих одного и того же жителя, вместо того чтобы побеждал последний. * Настраивать странствующего торговца так же, с отдельными обычными и редкими уровнями. * ## Конфигурация config/villagertradingplus/villagertradingplus-1.0-config.json5 Эти настройки применяются к каждой сделке, которую строит библиотека, независимо от того, какой мод или датапак её задал. ### Сделки | Параметр | По умолчанию | Что делает | | --- | --- | --- | | trade_offers_per_level | 2 | Максимум новых сделок, которые житель получает за уровень. | | trade_offers_wandering_trader | 5 | Максимум сделок, которые предлагает странствующий торговец. | | trade_price_multiplier_scale | 1.0 | Насколько сильно цены колеблются от спроса и репутации. 0.0 замораживает и то и другое. **Не меняет начальную цену сделки. | | trade_cost_scale | 1.0 | Умножает базовую стоимость каждой сделки (только первый слот входа). 2.0 удваивает все цены. Результат ограничен диапазоном 1 .. один стак. | | enable_conditional_trades | true | Проверяются ли сделки с условиями. false делает так, что каждая сделка появляется всегда. | | enable_time_of_day_pricing | false | Случайно подправляет стоимость сделки в зависимости от игрового времени, когда она открывается. Цена фиксируется при открытии и больше не меняется. | | time_of_day_price_variance | 0.15 | Насколько сильной может быть эта подправка, как доля от стоимости. Используется только когда включён параметр выше. | ### Управление экраном торговли Все три параметра allow_ по умолчанию выключены. Каталог открыт любому игроку. Кнопки переброса и управление уровнем требуют уровня разрешений из reroll_permission_level. Они предназначены для творческой стройки и тестирования, а не для серверов на выживание. | Параметр | По умолчанию | Что делает | | --- | --- | --- | | allow_trade_reroll | false | Кнопки для переброса сделок жителя или странствующего торговца — все сразу или по одному уровню. | | allow_set_villager_level | false | Управление для установки уровня жителя (1-5) и пересоздания его сделок. У странствующих торговцев нет уровней, они его игнорируют. | | reroll_permission_level | 0 | Уровень разрешений команды (0-4), нужный игроку для кнопок переброса и управления уровнем. 0 — любой игрок, 2 — игровые мастера. | | allow_view_all_trades | false | Кнопка, открывающая панель каталога только для чтения со списком всех сделок, которые житель мог бы получить на выбранном уровне, с весами, шансами и условиями. | * ## Создание датапака Файлы сделок кладутся в датапак в **ваше собственное пространство имён. Читаются три папки: | Папка | Что делает | | --- | --- | | `data//default_villager_trades/.json| Полностью заменяет сделки профессии. | |data//villager_trades/.json| Добавляет к сделкам профессии. | |data//wandering_trader_trades/.json| Сделки странствующего торговца. | Файл профессии указывает профессию и содержит пять массивов уровней: ```json { "profession": "minecraft:butcher", "trades": { "novice": [], "apprentice": [], "journeyman": [], "expert": [], "master": [] } } ``` Каждый фрагмент ниже — это один объект сделки, который кладётся в один из этих пяти массивов. _Замечание: ванильные сделки пока не представлены в виде JSON, поэтому для их замены придётся выписать уровни, которые вы хотите сохранить._ *** ## Поля, которые принимает каждый тип сделки Они опущены в примерах ниже, чтобы те были короче: | Поле | Значение | | --- | --- | |max_uses| Сколько раз можно использовать сделку до её блокировки. | |villager_experience| Опыт, который житель получает за использование. | |price_multiplier| Насколько сильно репутация и Герой деревни влияют на цену этой сделки. | |demand| Задаёт ванильное ценообразование по спросу: стоимость растёт с использованием и со временем спадает. | |conditions/logic| См. **Условия** ниже. | Типы сделок имеют пространство имёнvillagertradingplus:. Старое пространство имён villagersplus:` всё ещё принимается для датапаков, написанных до разделения, но при загрузке выдаёт предупреждение об устаревании, так что пишите новые файлы под новым. *** ## Типы сделок ### sell_item Житель продаёт предмет за цену.
{
  "type": "villagertradingplus:sell_item",
  "sell": { "item": "minecraft:oxeye_daisy", "count": 1 },
  "priceIn": { "item": "minecraft:emerald", "count": 2 }
}

buy_item

Житель покупает предмет и платит вам.

{
  "type": "villagertradingplus:buy_item",
  "buy": { "item": "minecraft:wheat_seeds", "count": 4 },
  "reward": { "item": "minecraft:emerald", "count": 1 }
}

sell_tagged_item

Продаёт одного случайного представителя тега предметов. Представитель выбирается при генерации предложения, поэтому два жителя с такой торговлей обычно продают разные вещи. Ванильные сделки соответствуют конкретному предмету, так что это не совпадение «любой из» у прилавка.

{
  "type": "villagertradingplus:sell_tagged_item",
  "sell": { "tag": "minecraft:saplings", "count": 1 },
  "priceIn": { "item": "minecraft:emerald", "count": 3 }
}

buy_tagged_item

Та же идея, но для покупки.

{
  "type": "villagertradingplus:buy_tagged_item",
  "buy": { "tag": "minecraft:flowers", "count": 8 },
  "reward": { "item": "minecraft:emerald", "count": 1 }
}

process_item

Берёт convertible плюс priceIn и возвращает sell — классическая сделка «принеси мне сырьё».

{
  "type": "villagertradingplus:process_item",
  "convertible": { "item": "minecraft:dead_tube_coral", "count": 1 },
  "priceIn": { "item": "minecraft:emerald", "count": 5 },
  "sell": { "item": "minecraft:tube_coral", "count": 1 }
}

multi_input

Два входа, один выход. В ванилле ровно два слота покупки, поэтому один из двух входов является валютой.

{
  "type": "villagertradingplus:multi_input",
  "input_a": { "item": "minecraft:emerald", "count": 5 },
  "input_b": { "item": "minecraft:book", "count": 1 },
  "sell": {
    "item": "minecraft:enchanted_book",
    "enchantments": [ { "id": "minecraft:mending", "lvl": 1 } ]
  }
}

weighted_pool

Выбирает одну из нескольких сделок по весу при генерации предложения. Ниже маргаритка в десять раз вероятнее розы иссушения.

{
  "type": "villagertradingplus:weighted_pool",
  "pool": [
    {
      "weight": 10,
      "trade": {
        "type": "villagertradingplus:sell_item",
        "sell": { "item": "minecraft:oxeye_daisy", "count": 1 },
        "priceIn": { "item": "minecraft:emerald", "count": 1 }
      }
    },
    {
      "weight": 1,
      "trade": {
        "type": "villagertradingplus:sell_item",
        "sell": { "item": "minecraft:wither_rose", "count": 1 },
        "priceIn": { "item": "minecraft:emerald", "count": 8 }
      }
    }
  ]
}

sell_potion

Берёт convertible плюс priceIn и возвращает sell — для сделок в виде зелий. sell.count задаёт размер стака.

{
  "type": "villagertradingplus:sell_potion",
  "convertible": { "item": "minecraft:potion", "count": 3 },
  "priceIn": { "item": "minecraft:emerald", "count": 5 },
  "sell": { "item": "minecraft:splash_potion", "count": 1 }
}

sell_map

Продаёт заполненную карту, указывающую на структуру. structure_id — это тег структур. name — ключ перевода; оставьте его пустым, чтобы сохранить ванильное название карты.

{
  "type": "villagertradingplus:sell_map",
  "structure_id": "minecraft:on_woodland_explorer_maps",
  "name": "filled_map.mansion",
  "buy": { "item": "minecraft:compass", "count": 1 },
  "priceIn": { "item": "minecraft:emerald", "count": 2 },
  "price_multiplier": 0.2
}

sell_enchanted_tool

Продаёт инструмент со случайным зачарованием, в ванильном стиле. Цена зависит от того, что выпало.

{
  "type": "villagertradingplus:sell_enchanted_tool",
  "sell": { "item": "minecraft:diamond_pickaxe", "count": 1 },
  "basePriceIn": { "item": "minecraft:emerald", "count": 2 }
}

sell_specific_enchanted_tool

Продаёт инструмент с фиксированным зачарованием фиксированного уровня — гарантированный результат, а не случайный. enchantment по умолчанию minecraft:fortune, level — 1.

{
  "type": "villagertradingplus:sell_specific_enchanted_tool",
  "sell": { "item": "minecraft:diamond_pickaxe", "count": 1 },
  "basePriceIn": { "item": "minecraft:emerald", "count": 32 },
  "enchantment": "minecraft:efficiency",
  "level": 4
}

sell_enchanted_book

Продаёт случайно зачарованную книгу, в ванильном стиле.

{
  "type": "villagertradingplus:sell_enchanted_book",
  "currency": { "item": "minecraft:emerald" },
  "price_multiplier": 0.2
}

sell_specific_enchanted_book

Продаёт книгу с фиксированным зачарованием и уровнем. Поля sell нет, предмет всегда книга. enchantment по умолчанию minecraft:unbreaking, level — 1.

{
  "type": "villagertradingplus:sell_specific_enchanted_book",
  "basePriceIn": { "item": "minecraft:emerald", "count": 20 },
  "enchantment": "minecraft:mending",
  "level": 1
}

sell_enchanted_book_from_list

Продаёт зачарованную книгу из взвешенного списка, который вы задаёте, так что вы точно контролируете, какие зачарования может предложить библиотекарь. Стоимость — base_cost + cost_per_level * level, умноженная на treasure_multiplier для сокровищных зачарований.

{
  "type": "villagertradingplus:sell_enchanted_book_from_list",
  "currency": { "item": "minecraft:emerald" },
  "enchantments": [
    { "id": "minecraft:sharpness",  "min_level": 1, "max_level": 3, "weight": 5 },
    { "id": "minecraft:unbreaking", "min_level": 1, "max_level": 3, "weight": 5 },
    { "id": "minecraft:mending",    "min_level": 1, "max_level": 1, "weight": 1 }
  ],
  "base_cost": 2,
  "cost_per_level": 3,
  "treasure_multiplier": 2,
  "price_multiplier": 0.2
}

Conditions

Добавьте массив conditions к любой сделке, чтобы её ограничить. Логика по умолчанию — И; установите "logic": "or" у сделки, чтобы требовалось только одно из условий. Момент важен. Условия проверяются один раз, в момент генерации предложения при повышении уровня жителя, а не постоянно. Условия местоположения (biome, dimension, job_site_block, config_flag) стабильны для оседлого жителя и потому надёжны. Условия состояния мира

(weather, day_night, moon_phase, gamerule) — это снимок того момента: сделка, привязанная к night, остаётся доступной средь бела дня, как только она была сгенерирована. Условия можно отключить глобально с помощью enable_conditional_trades.

ТипПоляПример
biometag (строка) или biomes (массив){ "type": "biome", "tag": "minecraft:is_ocean" }
dimensiondimension{ "type": "dimension", "dimension": "minecraft:overworld" }
weatherstate: clear, rain, thunder{ "type": "weather", "state": "rain" }
day_nighttime: day или night{ "type": "day_night", "time": "night" }
moon_phasephases (массив от 0 до 7); по умолчанию также требует ночь, установите "require_night": false для чистого лунного дня{ "type": "moon_phase", "phases": [0] }
config_flagfield (имя булева поля конфига), необязательный value{ "type": "config_flag", "field": "allow_trade_reroll" }
gamerulerule (булево правило игры), необязательный value{ "type": "gamerule", "rule": "doInsomnia", "value": true }
job_site_blockblocks (массив) или wood_variant (строка, сверяемая с id блока){ "type": "job_site_block", "blocks": [ "villagersplus:oceanographer_table" ] }

Обратите внимание, что biomes, blocks и phases принимают массивы, а tag, dimension и wood_variant — одну строку.

{
  "type": "villagertradingplus:sell_item",
  "sell": { "item": "minecraft:heart_of_the_sea", "count": 1 },
  "priceIn": { "item": "minecraft:emerald", "count": 30 },
  "logic": "or",
  "conditions": [
    { "type": "biome", "tag": "minecraft:is_ocean" },
    { "type": "day_night", "time": "night" }
  ]
}

Ценообразование

price_multiplier и demand работают с любой сделкой и задействуют ванильный механизм цен:

  • price_multiplier — насколько сильно репутация и Герой Деревни влияют на цену этой сделки.
  • demand — задаёт ванильное отслеживание спроса. Стоимость растёт по мере использования сделки и со временем снова снижается. Оба параметра масштабируются на весь сервер через trade_price_multiplier_scale (размах колебаний) и trade_cost_scale (базовая стоимость). Скидки за репутацию и Героя Деревни применяются ванилью поверх.
{
  "type": "villagertradingplus:sell_item",
  "sell": { "item": "minecraft:diamond", "count": 1 },
  "priceIn": { "item": "minecraft:emerald", "count": 12 },
  "price_multiplier": 0.1,
  "demand": 10
}

Пользовательские предметы

Любой стак предметов в любом типе сделки принимает этот синтаксический сахар, специальный тип сделки не нужен:

ПолеЗначение
nameОтображаемое имя. Обычная строка или сырой JSON-компонент текста.
loreМассив строк описания.
enchantmentsМассив { "id": ..., "lvl": ... }.
colorHex-цвет для окрашиваемой брони.
potionid зелья для предметов-зелий.
skull_ownerИмя игрока для голов игроков.
book{ "title": ..., "author": ..., "pages": [...] } для написанных книг.
nbtСырой SNBT, применяется последним как запасной вариант.
{
  "type": "villagertradingplus:sell_item",
  "sell": {
    "item": "minecraft:diamond_sword",
    "name": "{\"text\":\"Excalibur\",\"color\":\"gold\",\"italic\":false}",
    "lore": [ "A blade of legend" ],
    "enchantments": [ { "id": "minecraft:sharpness", "lvl": 5 } ],
    "nbt": "{Unbreakable:1b}"
  },
  "priceIn": { "item": "minecraft:emerald", "count": 40 }
}

Сделки странствующего торговца

Создайте датапак со следующей структурой каталогов:

data/<namespace>/wandering_trader_trades

Подойдёт любое имя файла. Вместо пяти уровней жителя у странствующего торговца два:

  • common — уровень 1. Выбирается несколько, количество задаётся trade_offers_wandering_trader.
  • rare — уровень 2. Выбирается ровно одна. Установите "replace": true, чтобы убрать ванильные сделки странствующего торговца и использовать только свои. Опустите его (или установите false), чтобы добавить поверх ванильных. Все типы сделок, блок условий и ценообразование работают здесь точно так же, как у жителей. Уровень без пользовательских сделок сохраняет ванильные сделки, даже если replace установлен в true.
{
  "replace": false,
  "trades": {
    "common": [
      {
        "type": "villagertradingplus:sell_item",
        "sell": { "item": "minecraft:glowstone_dust", "count": 4 },
        "priceIn": { "item": "minecraft:emerald", "count": 2 },
        "conditions": [ { "type": "day_night", "time": "night" } ],
        "max_uses": 6,
        "villager_experience": 1
      }
    ],
    "rare": [
      {
        "type": "villagertradingplus:sell_item",
        "sell": {
          "item": "minecraft:trident",
          "name": "{\"text\":\"Traveler's Trident\",\"color\":\"aqua\",\"italic\":false}",
          "enchantments": [ { "id": "minecraft:loyalty", "lvl": 3 } ],
          "nbt": "{Unbreakable:1b}"
        },
        "priceIn": { "item": "minecraft:emerald", "count": 30 },
        "max_uses": 2,
        "villager_experience": 1
      }
    ]
  }
}

Готовые примеры файлов

Внутри jar в data/villagertradingplus/available_trade_examples вы найдёте полные, готовые к копированию файлы для случаев, которые плохо показывает фрагмент:

  • full_profession.json — одна профессия на всех пяти уровнях, смешивающая множество типов сделок.
  • conditions_and_pricing.json — условия и ценообразование на реалистичных сделках.
  • wandering_trader.json — полный файл странствующего торговца.

Сообщество

Вопросы, скриншоты и помощь в Discord.


Другие моды от LithiumPlus

  • The Graveyard: структуры, мобы, блоки и босс в тематике кладбища. Версия для Forge: The Graveyard (Forge).
  • VillagersPlus: новые типы жителей, сделки и рабочие места.
  • Nyctophobia: тёмные, туманные и жуткие биомы для Верхнего мира.

  • DataDrivenVillagers (CurseForge): создавай и меняй профессии жителей через JSON-файлы или редактор прямо в игре. VanillaTales — это набор небольших независимых модов, которые добавляют маленькие истории в ванильный контент. Ставь только те, что нужны. Ссылки ведут на CurseForge.
  • Golem Patrol: железные големы патрулируют днём, стоят на страже ночью и сбегаются на звон колокола.
  • Zombie Sieges: превращает ванильную осаду зомби в настоящее событие — со звоном колокола, полосой босса и двумя волнами зомби.
  • Sherd Stories: даёт каждому украшенному горшку название и историю о том, где нашли его черепки.
  • Ghost Crews: даёт каждому затонувшему кораблю имя и команду утопленников, которые охраняют его, пока всё не разграбят.
  • Illager Scouts: разведчик разбойников следит за твоей деревней и предупреждает тебя за два дня до прихода патруля.
  • Occupied Villages: некоторые новые деревни появляются уже занятыми гарнизоном разбойников, который можно освободить.
  • Bonded Pairs: связывает двух мобов из одной группы спавна в пару, которая мстит друг за друга.
  • Raid Aftermath: жители чинят ущерб, который набег или взрыв оставили в деревне.
  • Wayfarer's Landmarks: показывает название и полезные иконки, когда ты входишь в структуру.

Частые вопросы

Как установить VillagersTradingPlus?

Установите Fabric под свою версию Minecraft, скачайте VillagersTradingPlus под ту же версию и загрузчик, положите файл в папку mods и запустите игру с профилем загрузчика.

Для каких версий Minecraft есть VillagersTradingPlus?

У VillagersTradingPlus есть сборки для Minecraft 1.20–1.20.1, 1.21–1.21.1, 1.21.6–1.21.8.

Нужен ли VillagersTradingPlus на сервере?

Нужен и в игре, и на сервере

Лицензия и источник
GNU General Public License v3.0 onlyможно использовать и распространять; изменённые версии — под той же лицензией и с исходным кодом
Оригинал — Modrinth↗Файлы — без изменений, проверены по SHA-512Это ваш мод? Правообладателям

Сайт использует cookie: необходимые — для входа и темы, а также счётчики посещений Яндекс Метрика и LiveInternet — по ним мы видим, как пользуются сайтом. Рекламных cookie у нас нет. Подробнее