ItemsAdder
Обзор
ItemsAdder позволяет добавлять на сервер пользовательские блоки, мебель, предметы, культуры, HUD и сущности с помощью ресурспака. Это расширение делает всё это доступным в TypeWriter. Квест может попросить игроков сломать пользовательскую руду или поставить пользовательскую лампу, диалог может реагировать на то, что игрок сидит у вашей мебели, а criteria может проверять, что игрок держит ваш пользовательский меч.
Везде используется id с пространством имён ItemsAdder (namespace:id, например my_pack:ruby_ore). Здесь ничего не создаётся: блоки, мебель и предметы по-прежнему определяются в ItemsAdder, а затем их id используются в записях TypeWriter.
Возможности
- События блоков и мебели — триггеры при разрушении, установке или взаимодействии с пользовательским блоком или мебелью.
- Событие перед установкой — триггер, срабатывающий непосредственно перед появлением мебели.
- Смерть пользовательской сущности — триггер, когда игрок убивает пользовательскую сущность ItemsAdder.
- Считающие цели — разрушение или установка пользовательских блоков и мебели как цель квеста.
- Инструменты инвентаря для предметов — выдача или удаление предметов ItemsAdder и реакция на их подбор, выброс или использование.
- Факты о предметах и мире — предмет в руке, количество предметов, оставшиеся использования и прочность, блок, на который смотрят или на котором стоят, мебель, на которую смотрят.
- Факты о культурах и HUD — стадия роста культуры, созрела ли она и виден ли именованный HUD.
- Переменные — id и свойства предметов в руке, блоков и мебели, глифы изображений шрифта и списки реестра, готовые для любого текста.
- Запись звука — используйте id звука ItemsAdder везде, где TypeWriter запрашивает звук.
Установка
- Установите ItemsAdder и позвольте ему сгенерировать свой ресурспак. Без него это расширение не загружается.
- Убедитесь, что установлены расширения TypeWriter Quest и Basic.
- Скачайте расширение в магазинах (см. кнопки в панели выше) и положите JAR-файл в
plugins/Typewriter/extensions/. - Перезапустите сервер.
Быстрый старт
В этом руководстве создаётся квест, в котором игрока просят сломать три блока пользовательской руды.
- В веб-панели создайте квест с помощью расширения Quest и факт для хранения прогресса (хороший выбор — постоянный факт).
- На странице manifest добавьте цель Break Block.
- Задайте
questравным вашему квесту, аfact— факту прогресса. Задайтеitemравным id блока, напримерmy_pack:ruby_ore, аamountравным3. Оставьтеitemпустым, чтобы считать любой пользовательский блок. - Задайте
displayстроку, показываемую в трекере квестов, напримерMine ruby ore. Прогресс(1/3)добавляется автоматически. - По желанию свяжите
onCompleteс последовательностью, выдающей награду, например через Give Item сitemIdmy_pack:ruby_pendant. - Опубликуйте, начните квест и сломайте блок.
Чтобы среагировать один раз вместо подсчёта, используйте событие: добавьте запись On Custom Block Break на страницу sequence, заполните blockId и свяжите её triggers с записями, которые нужно выполнить.
Выведите то, что загружено в 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
- Itemsadder Give Item ActionGive an ItemsAdder item to the player
- Itemsadder Remove Item ActionRemove an ItemsAdder item from the player
События11
- Itemsadder on Item Consume EventTriggers when the player consumes an ItemsAdder item
- Itemsadder on Item Drop EventTriggers when the player drops an ItemsAdder item
- Itemsadder on Item Pickup EventTriggers when the player picks up an ItemsAdder item
- On Custom Entity Death EventTriggers when a custom entity is killed by the player
- On Customblock Break EventTriggers when a custom block is broken
- On Customblock Interact EventTriggers when a custom block is interacted with
- On Customblock Place EventTriggers when a custom block is placed
- On Furniture Break EventTriggers when a furniture is broken
- On Furniture Interact EventTriggers when a furniture is interacted with
- On Furniture Place EventTriggers when a furniture is placed
- On Furniture Pre Place EventTriggers just before a furniture is placed
Цели4
- Break Customblock ObjectiveAn objective to break blocks
- Break Furniture ObjectiveAn objective to break furniture
- Place Customblock ObjectiveAn objective to place blocks
- Place Furniture ObjectiveAn objective to place furniture
Факты10
- Itemsadder Crop Age FactGrowth stage of the ItemsAdder crop the player is looking at
- Itemsadder Crop Fully Grown FactWhether the ItemsAdder crop the player is looking at is ripe
- Itemsadder Holding Item FactWhether the player is holding an ItemsAdder item
- Itemsadder HUD Visible FactWhether a named ItemsAdder HUD is visible to the player
- Itemsadder Item Count FactHow many of an ItemsAdder item the player carries
- Itemsadder Item Durability FactCustom durability left on the held ItemsAdder item
- Itemsadder Item Usages FactUses left on the held ItemsAdder item
- Itemsadder Looking at Block FactWhether the player is looking at an ItemsAdder block
- Itemsadder Looking at Furniture FactWhether the player is looking at ItemsAdder furniture
- Itemsadder Standing on Block FactWhether the player is standing on an ItemsAdder block
Переменные7
- Itemsadder Font Image VariableThe characters that render an ItemsAdder font image
- Itemsadder Item in Hand ID VariableThe ItemsAdder ID of the item the player holds
- Itemsadder Item Property VariableA property of the ItemsAdder item the player holds
- Itemsadder Looking at Block ID VariableThe ItemsAdder ID of the block the player is looking at
- Itemsadder Looking at Furniture ID VariableThe ItemsAdder ID of the furniture the player is looking at
- Itemsadder Registry Ids VariableThe list of IDs ItemsAdder has loaded
- Itemsadder Standing on Block ID VariableThe ItemsAdder ID of the block the player stands on
Звуки1
- Itemsadder SoundItemsAdder Sound
Устранение неполадок
Расширение не появляется в панели. 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 — такая же интеграция для других плагинов пользовательского контента.