▶️ ЗАБЕРИ СВОИ 8 ПОДАРКОВ 🎁 ПРИ СОЗДАНИИ СВОЕГО МАЙНКРАФТ СЕРВЕРА
Моды/Cobblemon Trainer Battle Commands
Cobblemon Trainer Battle Commands

Cobblemon Trainer Battle Commands

Мод для управления тренерами и начала битв в Cobblemon. Предоставляет команды для создания кастомных сражений между игроками и NPC-тренерами. Идеально подходит для картоделов и разработчиков модпаков.

Оцените первым
153.5K
27

Cobblemon Trainer Battle Commands (TBCS)

Cobblemon Trainer Battle Commands (сокращённо TBCS) - это серверный мод для Minecraft, который добавляет мощные команды для управления тренерами и организации битв покемонов из мода Cobblemon. Если вы создаёте приключенческие карты или сборки модов с упором на покемонов, этот мод станет незаменимым инструментом. Он позволяет привязывать тренеров к любым сущностям (например, к NPC из Easy NPC), задавать формат битвы, правила использования предметов и даже цепочки сражений с разными наградами.

Мод в первую очередь рассчитан на картоделов и разработчиков модпаков.

Команды

  • tbcs
    • attach <trainerId> <entity> - привязывает указанного тренера к заданной сущности (тренер может быть привязан только к одной сущности). Привязка не сохраняется после перезапуска сервера.
    • battle <battleFormat> <participants1>... vs <participants2>... [rules <battleRules>] [onwin <winCommands>] - начинает битву между указанными участниками с заданным форматом, правилами и командами при победе (последние два опциональны).
    • reload <trainerId> - позволяет перезагрузить одного тренера из любого настроенного пути тренеров (используйте стандартную команду /reload для перезагрузки всех тренеров).

Важно: Начиная с версии 0.14.0-beta, команда attach остаётся рабочей, но рекомендуется использовать аргумент as <trainerId> (см. раздел "Участники").

Все команды требуют уровня доступа 2.

Участники

Команда battle поддерживает несколько типов аргументов для указания участников: одиночные селекторы сущностей (например @s, @e[...,limit=1] или @p), UUID сущностей и идентификаторы тренеров.

Дополнительно можно использовать опциональный аргумент as <trainerId>, чтобы сразу привязать тренера к выбранной сущности при старте битвы:

  • Этот аргумент может следовать за любым селектором сущности и позволяет указать ID тренера, который будет привязан к сущности в начале битвы.
  • Использование этого аргумента равносильно вызову attach для целевой сущности и делает явный вызов attach ненужным (хотя attach + battle всё ещё работает, рекомендуется использовать battle ... <entity> as <trainerId>).
  • При использовании с селектором игрока (например @s as <trainerId>) игрок вступит в битву с временной копией команды этого тренера (отлично подходит для создания головоломок).
  • При использовании с другим ID тренера (например <trainerId_1> as <trainerId_2>) trainerId_2 будет привязан к той же сущности, к которой привязан trainerId_1 (если это возможно).

Аргумент as <trainerId> доступен с версии 0.14.0-beta.

Правила битвы

Правила битвы описываются JSON-объектом со следующими свойствами:

  • maxItemUses - указывает, сколько предметов каждый участник может использовать в битве.

Да, пока что это единственное свойство.

Команды при победе

Команды при победе тоже описываются JSON-объектом, но с более динамичной структурой. Объект может определять свойство для каждой стороны битвы (то есть 1 или 2), содержащее массив команд для выполнения в случае победы соответствующей стороны (см. примеры ниже).

Кроме того, любая команда при победе имеет доступ к специальным селекторам (похожим на @s или @e), которые позволяют выбрать любого участника битвы внутри команды. Эти селекторы имеют структуру @<n>, где <n> указывает позицию участника относительно стороны, для которой выполняется команда.

Важные вопросы: кто выполняет команду? И где она выполняется? Обычно команды при победе выполняются сервером в центре всех участников битвы. Однако можно сделать так, чтобы любой участник стал исполнителем команды - тогда она выполняется на позиции этого участника.

Теперь перейдём к примерам.

Примеры

Важно: Тренеры в следующих командах (например tbcs:mytrainer1) - это просто примеры. Вам нужно предоставить своих собственных тренеров или установить другой мод, который их добавляет (см. раздел Тренеры ниже).


tbcs attach tbcs:mytrainer1 @e[type=minecraft:villager,limit=1,sort=nearest]

Привязывает tbcs:mytrainer1 к ближайшему жителю.


tbcs battle GEN_9_SINGLES @s vs tbcs:mytrainer1

Начинает битву между игроком, выполнившим команду, и tbcs:mytrainer1 (должен быть привязан к сущности).


tbcs battle GEN_9_SINGLES @s vs tbcs:mytrainer1 rules {maxItemUses: 1}

То же самое, но ограничивает использование предметов каждой стороны до 1.


tbcs battle GEN_9_SINGLES @s vs tbcs:mytrainer1 rules {maxItemUses: 1} onwin {1: ['give @1 minecraft:diamond']}

Ещё один пример - теперь игрок получает алмаз при победе (первый участник первой стороны).


tbcs battle GEN_9_SINGLES @s vs tbcs:mytrainer1 onwin {1: ['loot spawn ~ ~ ~ loot minecraft:chests/simple_dungeon']}

Альтернатива использованию give (часто с большим количеством наград, но зависит от таблицы лута). Команда выполняется сервером в центре всех участников. Чтобы выполнить её от лица игрока (то есть заспавнить лут прямо над ним), можно добавить перед командой @1 (см. следующий пример).


tbcs battle GEN_9_MULTI @s tbcs:mytrainer1 vs tbcs:mytrainer2 tbcs:mytrainer3 onwin {1: ['give @1 minecraft:diamond', '@2 say We got them!']}

Пример позиционных селекторов. Игрок получит алмаз, а tbcs:mytrainer1 скажет "We got them!" при победе первой стороны (стороны игрока). Также показывает, как команда может выполняться от другого источника - вторая команда будет выполнена сущностью, к которой привязан tbcs:mytrainer1.


tbcs battle GEN_9_MULTI @s tbcs:mytrainer1 vs tbcs:mytrainer2 tbcs:mytrainer3 onwin {1: ['give @1 minecraft:diamond', '@2 say We got them!'], 2: ['@3 tp ~ ~10 ~']}

Расширяем предыдущий пример - добавляем команды при победе второй стороны (если сторона игрока проигрывает). Напоминание: позиционные аргументы отсчитываются относительно стороны выполнения команды слева направо. Для команд со второй стороны селекторы отображаются так:

  • @1 -> tbcs:mytrainer2
  • @2 -> tbcs:mytrainer3
  • @3 -> @s
  • @4 -> tbcs:mytrainer1

Для команд с первой стороны:

  • @1 -> @s
  • @2 -> tbcs:mytrainer1
  • @3 -> tbcs:mytrainer2
  • @4 -> tbcs:mytrainer3

Таким образом, команда второй стороны "накажет" игрока при проигрыше его стороны - телепортирует его на 10 блоков вверх относительно его позиции (команда выполняется игроком).


tbcs battle GEN_9_SINGLES @s vs tbcs:mytrainer1 onwin {1: ['@2 say Not bad, but are you ready for this?!', 'tbcs attach tbcs:mytrainer2 @2', 'tbcs battle GEN_9_SINGLES @1 vs tbcs:mytrainer2 onwin {1: [\'give @1 minecraft:diamond\']}']}

Этот пример связывает одну битву за другой. Разберём по шагам (все выполняются при победе игрока):

  • первая команда заставляет сущность тренера tbcs::mytrainer1 сказать "Not bad, but are you ready for this?!";
  • вторая команда привязывает другого тренера (tbcs:mytrainer2) к той же сущности;
  • третья команда сразу же начинает новую битву между игроком и tbcs:mytrainer2, которая тоже имеет свои команды при победе - награждает игрока алмазом.

Такую цепочку можно повторять бесконечно. Обратите внимание: чем глубже вложенность команд при победе, тем больше обратных слешей (\) требуется для экранирования апострофов (') вокруг команд.


tbcs battle GEN_9_SINGLES @s vs tbcs:mytrainer1 onwin {2: ['@1 say You need to practice more @2!'], 1: ['@2 say You got me. Take this @1', 'loot spawn ~ ~ ~ loot minecraft:chests/end_city_treasure']}

Ещё один пример из тестов.

Тренеры

Структура

Тренеры определяются в json формате. Схема тренера предоставляется RCTApi, поэтому структура в основном такая же, как у мода Radical Cobblemon Trainers (исключения: identity, которого нет в этом моде, а также battleFormat и battleRules, которые являются аргументами команд). Подробнее и пример можно найти в соответствующей документации.

Расположение

При загрузке мира файлы тренеров ищутся во всех путях из списка trainerPaths, которые указываются относительно папки мира. Все тренеры регистрируются с ID, который берётся из имени файла. Например:

mods
config
trainers
  bug_catcher.json
saves
  My Cool World
    Strong Trainers
      Ash Ketchum.json
  Boring World
...

Если trainerPaths заданы как ["Strong Trainers", "../../trainers"], то:

  • При загрузке мира "My Cool World" будут зарегистрированы тренеры tbcs:bug_catcher и tbcs:ash_ketchum.
  • При загрузке мира "Boring World" будет зарегистрирован только тренер tbcs:bug_catcher.

Если тренер с одинаковым ID встречается несколько раз (например из разных папок с одинаковым именем файла), то к ID последующих добавляется счётчик (_n).

Совместимость

Мод совместим с другими модами, которые также используют RCTApi. Копии тренеров из этих модов автоматически регистрируются в TBCS при их установке (см. конфиг).

Конфигурация

Файл конфига находится по пути config/tbcs-server.toml:

[Trainers]
  #━━━━━━━━━━
  #Список путей относительно папки мира для поиска json-файлов тренеров при загрузке/перезагрузке мира.
  #По умолчанию: ["trainers", "../trainers", "../../trainers"]
  trainerPaths = ["trainers", "../trainers", "../../trainers"]
  #━━━━━━━━━━
  #Список ID модов от других модов, использующих RCTApi для определения тренеров.
  #Копии тренеров из указанных модов также будут зарегистрированы в TBCS.
  #По умолчанию: ["rctmod"]
  trainerMods = ["rctmod"]

[Commands]
  #━━━━━━━━━━
  #Повышенный уровень доступа для команд при победе.
  #По умолчанию: 2; диапазон: 1 ~ 4.
  winCommandsPermission = 2

Серверное API (только серверная сторона)

Начиная с версии 0.14.0-beta, вместе с обычным модом распространяется API-версия (с суффиксом api в имени файла, например tbcs-api):

  • Все функции API работают только на серверной стороне; их можно установить вместе с любым релизом tbcs-api (клиентам не нужно устанавливать TBCS).
  • Если на сервере установлен обычный TBCS мод, то устанавливать tbcs-api рядом не нужно - TBCS уже содержит API (иначе клиентам тоже придётся устанавливать TBCS).
  • API-версия мода не предоставляет никаких команд - сама по себе она ничего не делает; она лишь предлагает функционал для других модов, которые могут зависеть от TBCS.

Зависимости

Часто задаваемые вопросы

Совместимость

Minecraft: Java Edition

1.21.x

Платформы

Поддерживаемые окружения

Клиент и сервер

Зависимости

Ссылки


Создатели

Детали

Лицензия:
Опубликован:1 год назад
Обновлён:3 месяца назад
Главная