Жители торгуют по готовым спискам сделок. В обычной игре вы не задаете им «что именно продавать». Но есть 3 рабочих пути, в зависимости от версии и того, хотите ли вы мод или команды.

Сначала определитесь: это ваниль или моддинг

Способ Подходит для Что получится Ограничения
Команды NBT (через summon) Java, тестовые миры Житель появится с вашей сделкой Это не «обучение», а готовая разовая настройка для конкретного NPC
Связывание профессии с торговлей через NBT Java Можно заранее задать сделку конкретному жителю Нужны правильные id предметов и формат Offers
Мод (Forge/Fabric) Модифицированный сервер Добавляете сделку в существующую профессию и она появится у новых жителей Старые NPC часто не меняются автоматически - их надо создавать заново

Способ 1. Вручную задать сделку конкретному жителю (команда summon)

Подойдет, если вам нужен один NPC, который продает нужную вещь. Логика такая: вы создаете жителя с выбранной профессией и прописываете список сделок в NBT.

Пример команды (адаптируйте profession и id предметов):

/summon villager ~ ~ ~ {VillagerData:{profession:nitwit,level:5,type:savanna},PersistenceRequired:1,Silent:1,Offers:{Recipes:[{buy:{id:sunflower,Count:5},sell:{id:diamond,Count:1},rewardExp:0b,maxUses:9999999}]}}

Что важно понять по структуре:
- sell - это то, что житель продает (продаваемая вещь).
- buy - это то, что житель покупает (в обмен).
- buy и sell должны ссылаться на корректные item id (обычно в формате типа minecraft:diamond, но в командах часто используется краткий вариант).
- maxUses задает, сколько раз можно совершать сделка.

Типичная ошибка: вы меняете sell, но не трогаете profession/level. В результате вам кажется, что «не работает», хотя сделка действительно появилась, но вы смотрите не на того жителя или он уже торгует по другой записи. Проверьте, что вы открываете интерфейс именно у созданного NPC и что он не был пересоздан.

Источник по формату подобной команды встречается в обсуждениях по NBT-торговле жителя.

Способ 2. Использовать механику профессий через мод (Forge, Java)

Если вы хотите, чтобы житель определенной профессии стабильно продавал нужную вещь, чаще делают мод: добавляют запись в список торговля соответствующей профессии. В обсуждениях по Forge встречается подход через обработчик регистрации профессий и добавление trade в карьеру профессии.

Ключевая идея:
1) найти нужную профессию по ResourceLocation,
2) получить careerId,
3) добавить trade в карьеру через addTrade.

Пример каркаса на Java из практики моддинга (подставьте свой sell/buy и нужную профессию):

VillagerRegistry.VillagerProfession cleric =
        ForgeRegistries.VILLAGER_PROFESSIONS.getValue(new ResourceLocation("minecraft", "priest"));

Random rand = new Random();
int careerId = cleric.getRandomCareer(rand);

cleric.getCareer(careerId).addTrade(1, new Trades());

И отдельный класс сделок, где вы задаете предметы. Пример показывает добавление обмена из изумруд на элитру:

public class Trades implements EntityVillager.ITradeList {
    @Override
    public void addMerchantRecipe(IMerchant merchant,
                                   MerchantRecipeList recipeList,
                                   Random random) {

        recipeList.add(new MerchantRecipe(
                new ItemStack(Items.EMERALD, 64),
                new ItemStack(Items.ELYTRA, 1)
        ));
    }
}

Важно:
- Старые жители часто не получают новые сделки автоматически. Встречается формулировка, что сделка добавляется только к новым NPC, которые появятся после загрузки мода и регистрации.
- Убедитесь, что у выбранной профессии действительно есть карьеры. Иначе при попытке получить careerId или career вы получите сбои на рантайме.

Полезный пример именно такого подхода с кодом и обсуждением его нюансов есть в сообществе разработчиков Forge.

Что можно и что нельзя в ванильной игре

  • Нельзя «заставить» обычного жителя переучиться на любую торговля только командой в игровом чате без модификации его Offers.
  • Нельзя гарантировать, что новый sell появится у всех жителей одной профессии в ваниле. В базовой игре списки сделок задаются разработчиками.
  • Можно сделать нужного NPC под себя через summon и NBT: один житель, одна конкретная сделка - это ваш контроль.

Как быстро проверить результат

1) Создайте жителя выбранным способом (команда или через новый спавн после мода).
2) Закройте интерфейс.
3) Откройте торговлю снова у того же NPC.
4) Если сделка не появилась:
- проверьте profession и level в NBT,
- проверьте item id в buy/sell,
- при моде создайте нового жителя после установки мода (если старые не обновляются).

Типичные ошибки

  • Путают buy и sell: в итоге вы видите, что житель покупает не то, что ожидали, а продает то, что прописали в buy.
  • Используют неверный item id: сервер может создать NPC, но сделка окажется пустой или невалидной.
  • Ставят мод, но смотрят на старых жителей: если сделка добавляется только при регистрации и влияет на новых NPC, старые не изменятся.
  • Проверяют интерфейс не у того NPC: при спавне рядом легко открыть торговлю другого жителя.

Полезные ссылки

  • https://forum.mcmodding.ru/threads/dobavlenie-sdelki-k-suschestvujuschej-professii-zhitelja.28021/page-2
  • https://minecraft-archive.fandom.com/ru/wiki/%D0%A2%D0%BE%D1%80%D0%B3%D0%BE%D0%B2%D0%BB%D1%8F (списки сделок по профессиям, для сверки логики торговли)
  • https://ru-minecraft.ru/forum/showtopic-23718/