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

ItemsAdder

Блоки, мебель, культуры, HUD и предметы ItemsAdder в событиях, целях и фактах TypeWriter.

Платныеv1.7Интеграции
ТребуетсяTypeWriter0.9ItemsAdderQuest (TypeWriter extension)Basic (TypeWriter extension)

Обзор​

ItemsAdder позволяет добавлять на сервер пользовательские блоки, мебель, предметы, культуры, HUD и сущности с помощью ресурспака. Это расширение делает всё это доступным в TypeWriter. Квест может попросить игроков сломать пользовательскую руду или поставить пользовательскую лампу, диалог может реагировать на то, что игрок сидит у вашей мебели, а criteria может проверять, что игрок держит ваш пользовательский меч.

Везде используется id с пространством имён ItemsAdder (namespace:id, например my_pack:ruby_ore). Здесь ничего не создаётся: блоки, мебель и предметы по-прежнему определяются в ItemsAdder, а затем их id используются в записях TypeWriter.

Возможности​

  • События блоков и мебели — триггеры при разрушении, установке или взаимодействии с пользовательским блоком или мебелью.
  • Событие перед установкой — триггер, срабатывающий непосредственно перед появлением мебели.
  • Смерть пользовательской сущности — триггер, когда игрок убивает пользовательскую сущность ItemsAdder.
  • Считающие цели — разрушение или установка пользовательских блоков и мебели как цель квеста.
  • Инструменты инвентаря для предметов — выдача или удаление предметов ItemsAdder и реакция на их подбор, выброс или использование.
  • Факты о предметах и мире — предмет в руке, количество предметов, оставшиеся использования и прочность, блок, на который смотрят или на котором стоят, мебель, на которую смотрят.
  • Факты о культурах и HUD — стадия роста культуры, созрела ли она и виден ли именованный HUD.
  • Переменные — id и свойства предметов в руке, блоков и мебели, глифы изображений шрифта и списки реестра, готовые для любого текста.
  • Запись звука — используйте id звука ItemsAdder везде, где TypeWriter запрашивает звук.

Установка​

  1. Установите ItemsAdder и позвольте ему сгенерировать свой ресурспак. Без него это расширение не загружается.
  2. Убедитесь, что установлены расширения TypeWriter Quest и Basic.
  3. Скачайте расширение в магазинах (см. кнопки в панели выше) и положите JAR-файл в plugins/Typewriter/extensions/.
  4. Перезапустите сервер.

Быстрый старт​

В этом руководстве создаётся квест, в котором игрока просят сломать три блока пользовательской руды.

  1. В веб-панели создайте квест с помощью расширения Quest и факт для хранения прогресса (хороший выбор — постоянный факт).
  2. На странице manifest добавьте цель Break Block.
  3. Задайте quest равным вашему квесту, а fact — факту прогресса. Задайте item равным id блока, например my_pack:ruby_ore, а amount равным 3. Оставьте item пустым, чтобы считать любой пользовательский блок.
  4. Задайте display строку, показываемую в трекере квестов, например Mine ruby ore. Прогресс (1/3) добавляется автоматически.
  5. По желанию свяжите onComplete с последовательностью, выдающей награду, например через Give Item с itemId my_pack:ruby_pendant.
  6. Опубликуйте, начните квест и сломайте блок.

Чтобы среагировать один раз вместо подсчёта, используйте событие: добавьте запись On Custom Block Break на страницу sequence, заполните blockId и свяжите её triggers с записями, которые нужно выполнить.

Id блоков

Выведите то, что загружено в ItemsAdder, с помощью переменной Registry IDs или в игре командами ItemsAdder и скопируйте точный id с пространством имён.

Как это работает​

События несут данные о том, что произошло. Запускаемые записи могут читать id блока или мебели и их позицию, использованный клик (для взаимодействия с блоком) и предмет в руке.

Цели считают каждую позицию один раз для игрока. Повторное разрушение и установка того же блока в том же месте не увеличивают счётчик. Они считают только пока у игрока активен связанный квест. Отменённые действия (например, в защищённом регионе) не засчитываются и не запускают события.

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

Строки целей в трекере квестов строятся из двух сниппетов TypeWriter, которые можно изменить в файле сниппетов TypeWriter:

СниппетПо умолчанию
advancedQuest.display<display> <dark_gray>(<gray><current><dark_gray>/<gray><required><dark_gray>)
advancedQuest.completed<green>✔</green> <st><display></st> <dark_gray>(<gray><current><dark_gray>/<gray><required><dark_gray>)

Записи​

Записей: 35, сгенерированы из исходного кода расширения.

Действия2
События11
Цели4
Факты10
Переменные7
Звуки1

Устранение неполадок​

Расширение не появляется в панели. ItemsAdder не установлен или не включился. Каждая запись обращается к API ItemsAdder, поэтому без плагина расширение отказывается загружаться.

Событие никогда не срабатывает. Проверьте id: он должен быть полным namespace:id, а не только id. Пустой id подходит под всё. Если вы заполнили location, подходит только эта точная позиция блока. События, отменённые другим плагином (например, плагином защиты), игнорируются.

Цель не продвигается. У игрока должен быть активен связанный квест, а в цели должен быть задан fact. Одна и та же позиция блока засчитывается только один раз для игрока.

Факт всегда возвращает 0. Предмет в руке или блок не принадлежат ItemsAdder. Факты, смотрящие на блоки, проверяют только первый блок в пределах range блоков (по умолчанию 5). Факты об использованиях и прочности возвращают 0, если у предмета нет использований или пользовательской прочности.

Переменная Registry IDs пуста. ItemsAdder загружает своё содержимое в фоне. Переменная ничего не возвращает, пока ItemsAdder не сообщит, что его предметы загружены, поэтому не читайте её во время запуска.

Give Item ничего не выдаёт. itemId неизвестен ItemsAdder, поэтому предмет не создаётся и ничего не выдаётся. Действие сообщает 0 выданных. Остатки, которые не помещаются, выбрасываются под ноги игроку, если не выключен dropOverflow.

Факт HUD всегда равен 0. Id HUD должен существовать в ItemsAdder, и он должен быть у игрока. ItemsAdder не может перечислить HUD, поэтому факт проверяет только названный вами.

Связанные расширения​

  • Nexo и Craft Engine — такая же интеграция для других плагинов пользовательского контента.