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

Enchantment Creator

Пользовательские зачарования с более чем 70 готовыми эффектами, книгами, добычей и обменом. Дополнительные плагины не нужны.

Бесплатныеv0.11RPG и прогресс
ТребуетсяTypeWriter0.9Paper1.21+Basic extension

Обзор​

Enchantment Creator добавляет на ваш сервер настоящие зачарования, которые полностью определяются в веб-панели TypeWriter. Они регистрируются в собственном реестре зачарований Minecraft в пространстве имён typewriter, поэтому отображаются на предметах, в наковальнях и в столе зачарований так же, как ванильные, без ресурспака и дополнительных плагинов.

Вы описываете зачарование в записи-определении (название, цвет, поддерживаемые предметы, максимальный уровень, стоимость, активные слоты), а затем задаёте ему поведение. Для этого есть два способа: стандартное определение запускает триггеры TypeWriter, пока зачарованный предмет надет или находится в руке, а пользовательское определение перечисляет механики, каждая из которых реагирует на игровое событие (атака, разрушение блока, выстрел из лука, урон от падения...) и выполняет действия. В комплекте с расширением идёт более 70 готовых записей-действий (кража жизни, жилковый шахтёр, самонаводящиеся стрелы, замороженная броня...), которые вы подключаете к механикам.

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

  • Настоящие зачарования — регистрируются в реестре зачарований сервера, с цветным названием, максимальным уровнем, стоимостью в наковальне, весом и стоимостью в столе зачарований.
  • Два типа определений — на основе триггеров (enchantment_definition) или на основе механик (custom_enchantment_definition).
  • 16 игровых событий — атака, защита, разрушение блока, выстрел из лука, попадание снаряда, урон от падения, повреждение предмета, надевание брони, перемещение, приседание, бег и другие.
  • Более 70 готовых эффектов — действия для брони, лука, боя, инструментов и особые, у каждого свои поля.
  • Зачарованные книги — выдавайте книги из действия или командой, с пользовательским названием и описанием (lore).
  • Интеграция с миром — книги появляются в сгенерированных сундуках с добычей (treasureChance) и в обмене с библиотекарями (tradeChance).
  • Стол зачарований и наковальня — пользовательские зачарования могут предлагаться столом зачарований, ограничиваться поддерживаемыми предметами и быть взаимоисключающими в наковальне.
  • Чёрный список ванильных — уберите выбранные ванильные зачарования из стола зачарований.
  • Шанс и уровень для каждой механики — запускайте механику только в части случаев или только на одном уровне зачарования.
  • Клиентские частицы — действие с частицами, которое видит только игрок.

Установка​

  1. Используйте сервер Paper 1.21 или новее с Java 21. Расширение создаёт зачарования через реестр сервера, поэтому на старых версиях оно не работает.
  2. Убедитесь, что установлено расширение Basic для TypeWriter (см. документацию TypeWriter).
  3. Поместите JAR-файл Enchantment Creator в plugins/Typewriter/extensions/ и перезапустите сервер.

Других плагинов не требуется.

Начало работы​

Создайте зачарование для меча «Vampiric Strike», которое лечит владельца при каждом ударе:

  1. В веб-панели TypeWriter откройте страницу manifest и добавьте Custom Enchantment Definition.
  2. Задайте name равным Vampiric Strike, displayName равным Vampiric Strike, nameColor равным dark_red, maxLevel равным 3 и добавьте материалы мечей в supportedItems.
  3. Добавьте запись-действие Lifesteal на страницу sequence и задайте healPercentage равным 0.2.
  4. Вернитесь к определению и добавьте механику в mechanics. Задайте event равным PLAYER_ATTACK и выберите запись Lifesteal в actions.
  5. Добавьте действие Give Enchantment Book, выберите своё определение в customEnchantment и задайте level. Опубликуйте.
  6. Запустите действие, чтобы получить книгу, либо выполните /enchantcreator give <player> Vampiric_Strike 2 после добавления Enchantment Command Manifest. Объедините книгу с мечом в наковальне и ударьте моба.
подсказка

Эффект сам по себе не масштабируется с уровнем зачарования. Чтобы сделать уровень 3 сильнее, добавьте несколько механик с runOnLevel, равным 1, 2 и 3, каждая из которых выполняет действие с разными значениями. runOnLevel равный 0 означает любой уровень.

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

Расширение проверяет каждого игрока в сети каждые 5 тиков (четверть секунды), чтобы узнать, какие из ваших зачарований он использует. Учитываются только основная рука, вторая рука и броня, и только предметы, материал которых указан в supportedItems. Используется наивысший найденный уровень. Поэтому между надеванием предмета и началом действия его эффектов может пройти небольшая задержка.

Два типа определений работают по-разному:

  • Стандартное определение (enchantment_definition) запускает activeTriggers для текущего уровня. Если включён cooldownEnabled, они запускаются снова каждые cooldown, пока зачарование активно; если выключен — запускаются один раз, когда оно становится активным. inactiveTriggers запускаются, когда оно перестаёт действовать. criteria должны выполняться.
  • Пользовательское определение (custom_enchantment_definition) запускает свои механики, когда происходит соответствующее игровое событие.

Записи-действия считывают игровое событие, которое их запустило. Действие что-то делает только тогда, когда используется в механике с тем событием, для которого оно написано (например, Vein Miner работает только на BLOCK_BREAK).

События зачарований​

event механики — одно из следующих:

СобытиеСрабатывает, когда
PLAYER_ATTACKИгрок напрямую бьёт сущность.
PLAYER_DEFENDИгроку наносит урон сущность.
SHIELD_BLOCKИгрока бьют, пока он блокирует щитом.
BLOCK_BREAKИгрок разрушает блок.
BOW_SHOOTИгрок стреляет из лука или арбалета.
PROJECTILE_HITСнаряд, выпущенный игроком, во что-то попадает.
ITEM_CONSUMEИгрок ест или пьёт.
PLAYER_DEATHИгрок умирает.
PLAYER_INTERACTИгрок кликает правой или левой кнопкой.
ARMOR_EQUIPИгрок надевает или снимает броню.
ITEM_DAMAGEПредмет теряет прочность.
FALL_DAMAGEИгрок получает урон от падения.
ENVIRONMENTAL_DAMAGEИгрок получает урон, не вызванный сущностью (срабатывает и при уроне от падения).
PLAYER_MOVEИгрок перемещается на другой блок (проверяется каждый четвёртый тик).
SNEAKИгрок начинает приседать.
SPRINTИгрок начинает бежать.
примечание

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

Готовые действия​

Все записи-действия используются внутри механики (actions) или из любой последовательности. У каждой есть стандартные поля criteria, modifiers и triggers, а также собственные поля: см. страницы записей. Столбец «Событие» показывает, какое event механики нужно действию.

ГруппаДействияСобытие
БойArmor Pierce, Beheading, Bleed, Blindness Strike, Cleave, Disarm, Executioner, Freeze Strike, Lifesteal, Lightning Strike, Poison Strike, Silence, Vampiric Aura, Wither StrikePLAYER_ATTACK
Броня, при получении удараDeflect, Enlightened Armor, Evasion, Frozen Armor, Molten Armor, Regeneration Aura, Resistance Aura, Thorns Advanced, Toxic Aura, Voodoo Armor, GearingPLAYER_DEFEND
Броня, уронAngel WingsFALL_DAMAGE
Броня, уронImplosion Armor, Curse of Vulnerabilityлюбое событие урона (PLAYER_DEFEND, FALL_DAMAGE, ENVIRONMENTAL_DAMAGE)
Броня, надеваниеAnti Knockback, Health BoostARMOR_EQUIP
Броня, прочностьHardened ArmorITEM_DAMAGE
Лук, выстрелHoming Arrow, Volley ArrowBOW_SHOOT
Лук, попаданиеExplosive Arrow, Teleport ArrowPROJECTILE_HIT
Лук, уронEnder Arrow, Healing Arrow, Lightning Arrow, Piercing Shot, Pull Arrow, Push Arrow, Sniper Arrow, Venom Arrow, Web Arrow, Wither ArrowPLAYER_ATTACK (только прямые попадания, см. примечание)
ИнструментыArea Miner, Auto Smelt, Experience Boost, Haste, Indestructible, Magnet, Oxygenate, Spawners Silk Touch, Telepathy, Timber, Treasure Hunter, Vein MinerBLOCK_BREAK
ИнструментыBedrock Breaker, Green Thumb, Night VisionPLAYER_INTERACT
ИнструментыAgricultural HarvestBLOCK_BREAK; собирает созревший урожай вокруг сломанного блока (до radius 8)
ОсобыеAquatic Speed, Feeder, Lava WalkerPLAYER_MOVE
ОсобыеElytra Boost, LaunchPLAYER_INTERACT
ОсобыеCurse of SluggishnessPLAYER_ATTACK
ОсобыеElytra ShieldENVIRONMENTAL_DAMAGE
ОсобыеSoulboundPLAYER_DEATH
СлужебныеClient Particle Effect, Give Enchantment Bookлюбое

Команды​

Команда задаётся записью Enchantment Command Manifest, которую вы создаёте. Её название, право и сообщения — это поля записи; показаны значения по умолчанию.

КомандаОписание
/enchantcreator give <player> <enchant> [level]Выдать зачарованную книгу игроку в сети. <enchant> — это name или displayName записи, с подчёркиваниями вместо пробелов. Уровень по умолчанию — 1.

Права​

ПравоЧто даёт
enchantcreator.admin/enchantcreator give (поле adminPermission записи).

Записи​

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

Действия71
Команды1
Манифесты3

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

Эффект ничего не делает. Действие должно соответствовать event механики (см. таблицу выше): действие, считывающее событие разрушения блока, ничего не делает на PLAYER_ATTACK. Предмет должен быть в supportedItems, находиться в руке или быть надетым как броня, а criteria, chance и runOnLevel механики должны выполняться. Механика с runOnLevel 2 запускается только тогда, когда наивысший уровень равен ровно 2.

Зачарования нет в игре. Определения регистрируются при запуске расширения, при входе игрока и при выдаче книги. Проверьте консоль на наличие Failed to reflectively register или Failed to register enchantments during pre-login и убедитесь, что сервер — Paper 1.21 или новее.

Книгу нельзя применить к моему предмету. В наковальне книгу можно применить только к предметам, перечисленным в supportedItems. Два зачарования, указанные в exclusiveWith друг у друга, нельзя совмещать: результат в наковальне убирается. Это взаимоисключение действует только в наковальне.

Игроки никогда не видят моё зачарование в столе зачарований. В столе weight используется как процент: 1 означает около 1% шанса за бросок. Увеличьте его или задайте treasureChance и tradeChance, чтобы раздавать книги через добычу и библиотекарей. weight равный 0 отключает предложение в столе.

/enchantcreator give сообщает, что зачарование неизвестно. Имя сопоставляется с name или displayName записи, приведённым к нижнему регистру, с пробелами, замёнными на подчёркивания. Используйте точное название из записи и сначала опубликуйте страницу.

Ванильное зачарование всё равно появляется. Чёрный список убирает предложения только из стола зачарований; наковальни, добыча и обмен не затрагиваются. Консоль сообщает Unable to resolve vanilla enchantments for blacklist, если имя указано неверно.