Иконка ресурса

Инструкция MythicMobs - учимся создавать своих мобов и боссов!

Поддерживаемые версии
1.16
Я НЕ ГУРУ ПЛАГИНА, Я САМ ТОЛЬКО УЧУСЬ. ПОЭТОМУ ПРОШУ ДОКИДЫВАТЬ ИНФУ ИЛИ ПРАВИТЬ ЕСЛИ НАЙДЕТЕ ОШИБКИ. КИДАЙТЕ ПРАВКИ В "ОБСУДИТЬ РЕСУРС". СПАСИБО!

Привет всем. Я, SNR93, решил рассказать вам об одном плагине. Сегодня мы будем учиться пользоваться таким гибким плагином, как MythicMobs. Он позволяет создавать своих мобов с особенностями, способностями и наворотами. Плагин достаточно давно развивается и все еще поддерживается. Итак, поехали. Я буду рассматривать бесплатную версию, т.к. платной у меня нет, да и в бесплатной функционала навалом.


Где его скачать? Тут: https://www.spigotmc.org/resources/⚔-mythicmobs-free-version-►the-1-custom-mob-creator◄.5702/

Английский мануал: https://www.mythicmobs.net/manual/doku.php

Давайте рассмотрим конфиг, я вам перевел его на русский для более простого понимания
Отдельный привет разрабам MM, у которых в WIKI не переведены или отсутствуют некоторые моменты, которые приходится додумывать самому
YAML:
# For more information, check out the plugin manual or join us on Discord:
# http://www.mythicmobs.net
#
Configuration:
  Version: 4.9
  General:
#разрешить отправлять метрику создателям?
    AllowMetrics: false
#проверять обновления?
    CheckForUpdates: false
#
    CompatibilityMode: false
#уровень отладки
    DebugLevel: 0
#записывать ошибки в файл?
    ErrorLogging: true
#язык по умолчанию
    Language: enUS
#Активация доп функций(например для создания пользовательского ИИ)
    UseVolatileFeatures: true
  Clock:
#самый низкий интервал для применения и кулдауна способностей
    ClockInterval: 1
#интервал в минутах, для сохранения всего, что связано с MM
    SaveInterval: 5
#Минимальное время в секундах для спавна мобов
    SpawnsInterval: 2
#Интервал в секундах, когда будут сканироваться неактивные мобы, например когда рядом нет игрока
    ScannerInterval: 10
#инвервал в секундах, когда неактивные мобы будут удалены
    CleanupInterval: 600
  Components:
#спавить ли мобов, созданных в папке Mobs, у которых есть флаг спавна в мире
    CustomSpawners: true
#спавнить ли мобов, созданных в папке RandomSpawns
    RandomSpawning: true
  Mobs:
#Удалять их с карты по той же логике, что и обычные мобы
    DespawnByDefault: true
#включить ли пользовательские ИИ у мобов
    EnableAIModifiers: true
#включить ли навыки, завязанные на таймерах
    EnableTimerSkills: true
#включить таблицы угроз?
    EnableThreatTables: true
#не совсем понял
    EnablePlayerFactions: true
#не совсем понял
    EnableLegacySkills: false
#префикс сообщений, если был убит MM моб(если такое сообщение вообще установлено)
    KillMessagePrefix: ''
#убрать прочий дроп по умолчанию. Например кость из скелета
    PreventOtherDropsByDefault: false
#рассчеты
    Scaling:
      Default:
        Enabled: false
#запретить спавн MM мобов в блоках от спавна
        PerBlocksFromSpawn: 250
#в мире WORLD
      world:
        Enabled: true
        PerBlocksFromSpawn: 250
#в незере
      world_nether:
        Enabled: false
        PerBlocksFromSpawn: 100
#НЕ РАЗОБРАЛСЯ. рассчет усиления моба за уровень?
    ScalingEquations:
      Health: V * ((1.05)^(L-1))
      Damage: V * ((1.05)^(L-1))
#характеристики мобов по умолчанию
    DefaultLevelModifiers:
#здоровье
      Health: 0.1
#броня
      Armor: 0
#урон
      Damage: 0.01
#сопротивление отбрасыванию
      KnockbackResistance: 0
#сила
      Power: 0
#рандомный спавн мобов
  RandomSpawning:
#запретить спавниться обычным ванильным мобам
    DisableVanillaSpawns: false
#генерировать точки спавна
    GenerateSpawnPoints: false
#максимальное число мобов на 1 чанк
    MaxMobsPerChunk: 2
#радиус спавна вокруг игрока
    SpawnRadiusPerPlayer: 64
#НЕ РАЗОБРАЛСЯ
    SpawnRadiusPerPlayerY: 32
#удалять неактивных мобов, например рядом с которыми нет игроком
    DespawnLazyRandomMobs: true
#НЕ РАЗОБРАЛСЯ
    MaxGenerationTime: 20
#НЕ РАЗОБРАЛСЯ
    PointsPerSecond:
      Land: 5
      Air: 0
      Sea: 2
      Lava: 0
      Ground: 0
#Совместимость с плагинами. Тут думаю переводить не нужно:)
  Compatibility:
    Heroes:
      Enabled: false
    McMMO:
      Enabled: false
      ShowXPMessage: true
      XPMessageFormat: '&7You receive <drop.amount> experience for slaying <dropper.name>'
    SkillAPI:
      Enabled: false
      ShowXPMessage: true
      XPMessageFormat: '&7You receive <drop.amount> experience for slaying <dropper.name>'
    Vault:
      Enabled: true
      ShowMoneyMessage: true
      MoneyMessageFormat: '&7You receive <drop.amount> currency for slaying <dropper.name>'
Немного о переменной DebugLevel. У нее есть 5 вариантов от 0 до 4. Давайте разберемся:
0:
- отладка выключена
1:
- включает отображение огненного партикля, показывая точки спавна мобов
- при старте сервера показывает отчет о всех успешно загруженных точках спавна
2:
- показывает логи, когда использован навык, моб умирает, парсится таблица дропа и т.п.
- отображает все предметы, навыки и таблицы дропа при перезагрузке
3:
- тяжело (дословный перевод с офф вики)
4:
- очень много информации (дословный перевод с офф вики)

Итак, с конфигом более менее разобрались.

Теперь давайте разберемся со всеми возможностями для создания своего моба
YAML:
internal_mobname - имя моба в конфиге. должно быть уникальным
  Type - тип моба(зомби, скелет, паук и т.п.)
  Display - отображаемое имя
  Health - количество здоровья
  Damage - урон в ближнем бою(в дальнем бою не изменить)
  Armor - броня
  BossBar - надпись в БоссБаре(где показывается урон эндер дракона)
  Faction - фракция моба. Полезно, если нужно сделать ИИ для мобов, например чтобы мобы одной фракции воевали с другой. Например моб, созданный MM с фракцией ELITE_ZOMBIE может быть агрессивен только к фракции мобов ELITE_SKELETON
  Mount - устанавливается маунт для этого моба(на ком он будет ездить)
  Options - опции
  Modules - модули
  AIGoalSelectors - позволяет настроить ИИ моба при нахождении в покое или при агрессии на сущность
  AITargetSelectors - позволяет настроить ИИ моба для нападений и целей
  Drops - дроп с моба
  DamageModifiers - изменения наносимого урона мобу. Например можно его сделать неуязвимым к урону от ближников, но увеличить урон от дальников
  Equipment - указывается во что моб будет одет
  KillMessages - сообщение об убийстве мобом игрока
  LevelModifiers - позволяет настраивать различные характеристики в зависимости от уровня
  Disguise - изменяет облик моба. Например выглядит как скелет, а ведет себя как зомби. Нужен плагин LibsDisguises
  Skills - способности, которые будет име моб
Это скелет моба, его основа. Теперь давайте разбираться глубже

Давайте разбираться, что может хранить в себе DamageModifiers
Не обязательно использовать все пункты. Так-же можно вообще не использовать модификаторы урона.
Значения:
отрицательноепри получении данного типа урона моб будет получать здоровье. это не работает на мобов, невосприимчивых к этому урону по умолчанию. например железный голем не боится огня
от 0 до 1уменьшенное получение урона
1стандартное получение урона
от 1 до ~повышенное получение урона

DROWNINGурон от нехватки воздуха, если моб под водой
BLOCK_EXPLOSIONурон от нахождения рядом с взрывающимся блоком
ENTITY_EXPLOSIONповреждение от взрыва мобов. например кримера
VOIDурон от падения в пустоту
LIGHTNINGурон от попадания молнии
SUICIDEурон от самоубийства
STARVATIONурон от голода, когда у моба нет еды
POISONурон от ядов, которые действуют некоторое время
MAGICурон от зелья без таймера наложения бафа\дебаффа или заклинания
DRAGON_BREATHурон от дыхания дракона
WITHERурон от увядания
FALLING_BLOCKурон от падающих блоков, наносящих урон. Например наковальня
THORNSурон, если моб ударил кого либо под эффектом шипов
CUSTOMурон, вызванный другими плагинами
LAVAурон от лавы
MELTINGурон от таяния снеговика
FIRE_TICKурон из за горения
FIREурон от огня
HOT_FLOORурон от блоком магмы
FALLурон от падения, если расстояние падения более 3 блоков
SUFFOCATIONурон от удушья, например когда моба завалило песком
PROJECTILEурон при попадании снаряда
ENTITY_ATTACKурон от прочих мобов
CONTACTурон от блоков, наносящих урон при прикосновении. Например кактус


Так-же нам понадобятся заполнители(плейсхолдеры) для создания сообщений, имен мобов да и много чего еще. И вот они все, перевел вам для удобства.

<caster.uuid>возвращает UUID атакующего
<caster.level>Возвращает уровень атакующего
<caster.name>Возвращает имя атакующего
<caster.hp>Возвращает здоровье атакующего
<caster.mhp>
<caster.php>
<caster.thp>
<caster.tt.top>
<caster.l.w>возвращает название мира, где находится атакующий
<caster.l.x>возвращает координату X атакующего
<caster.l.x.#>возвращает координату X атакующего с погрешностью # в точности
<caster.l.y>возвращает координату Y атакующего
<caster.l.y.#>возвращает координату Y атакующего с погрешностью # в точности
<caster.l.z>возвращает координату Z атакующего
<caster.l.z.#>возвращает координату Z атакующего с погрешностью # в точности
<caster.l.yaw>
<caster.l.pitch>
<caster.stance>возвращает текущую позицию атакующего
<caster.owner.name>возвращает имя владельца
<caster.owner.uuid>возвращает UUID владельца
ЗАПОЛНИТЕЛИПЕРЕМЕННЫЕ
<caster.var.[name]>
<skill.var.[name]>возвращает значение переменной способности
<skill.var.damage-amount>возвращает значение переменной общего урона
<skill.var.damage-type>возвращает значение переменной типа нанесенного урона
ЦЕЛЕВЫЕЗАПОЛНИТЕЛИ
Возвращает значение цели моба.
<target.uuid>возвращает UUID цели
<target.name>возвращает имя цели
<target.hp>возвращает здоровье цели
<target.threat>
<target.l.w>возвращает название мира, где находится цель
<target.l.x>возвращает координату X где находится цель
<target.l.x.#>возвращает координату X цели с погрешностью # в точности
<target.l.y>возвращает координату Y где находится цель
<target.l.y.#>возвращает координату Y цели с погрешностью # в точности
<target.l.z>возвращает координату Z где находится цель
<target.l.z.#>
возвращает координату Z цели с погрешностью # в точности
ТРИГГЕРНЫЕЗАПОЛНИТЕЛИ
<trigger.uuid>возвращает UUID игрока, активировавшего навык
<trigger.name>возвращает имя игрока, активировавшего навык
<trigger.hp>возвращает здоровье игрока, активировавшего навык
<trigger.threat>
<trigger.l.w>возвращает название мира, где находится игрок, активировавший навык
<trigger.l.x>возвращает координату X, где находится игрок, активировавший навык
<trigger.l.x.#>возвращает координату X, где находится игрок, активировавший навык с погрешностью # в точности
<trigger.l.y>возвращает координату Y, где находится игрок, активировавший навык
<trigger.l.y.#>возвращает координату Y, где находится игрок, активировавший навык с погрешностью # в точности
<trigger.l.z>
возвращает координату Z, где находится игрок, активировавший навык
<trigger.l.z.#>возвращает координату Z, где находится игрок, активировавший навык с погрешностью # в точности
РАЗЛИЧНЫЕ ЗАПОЛНИТЕЛИ
<drops.xp>возвращает количество очков опыта, полученного с помощью плагинов Heroes или SkillAPI
<drops.money>возвращает количество полученных денег
СПЕЦИАЛЬНЫЕЗАПОЛНИТЕЛИ
<caster.score.objective>
<target.score.objective>
<trigger.score.objective>
<global.score.objective>
<score.objective.dummyname>
<random.#-#>
ОСОБЫЕСИМВОЛЫ
<&co>:
<&sq>'
<&da>-
<&bs>\
<&fs>/
<&sp>пробел
<&cm>,
<&sc>;
<&eq>=
<&ss>§
<&dq>
<&rb>]
<&lb>[
<&rc>}
<&lc>{
<&nl>переход на новую строку
ЦВЕТОВЫЕКОДЫ
&0черный
&1темно синий
&2темно зеленый
&3аква
&4темно красный
&5темно фиолетовый
&6золотой
&7серый
&8темно серый
&9голубой
&Aзеленый
&Bаква
&Cкрасный
&Dсветло фиолетовый
&Eжелтый
&Fбелый
&Kмагический
&Lжирный
&Mперечеркнутый
&Nподчеркнутый
&Oнаклонный
&Rсброс форматирования

Итак. Теперь мы знаем, что какие есть заполнители у плагина, и благодаря им мы и сможем гибко настраивать мобов и события.

Дальше нам нужно узнать, что же списывать в Options, чтобы задать дополнительные особенности мобу. Поехали.
ДЛЯ ВСЕХМОБОВ
AlwaysShowName: [true/false]должно ли имя моба отображаться всегда
AttackSpeed: [число]скорость атаки моба
ApplyInvisibility: [true/false]будет ли моб постоянно невидим
Collidable: [true/false]будет ли моб сталкиваться с чем либо
Despawn: [true/false]будет ли моб исчезать, если рядом нет игрока
FollowRange: [число]расстояние, на котором моб будет агриться на игрока
Glowing: [true/false]будет ли моб светиться
Invincible: [true/false]будет ли моб непобедимый
Interactable: [true/false]будет ли моб взаимодействовать с чем либо
LockPitch: [true/false]будет ли моб смотреть вверх\вниз
KnockbackResistance: [число]сопротивление отбрасыванию. 1 = 100%, 0.1 = 10%. При этом мобы будут отбрасываться, если их атаковать оружием, зачарованным на отбрасывание или взрыв
MaxCombatDistance: [число]максимальное расстояние в блоках, на котором игроки могут нанести урон мобу
MovementSpeed: [число]скорость передвижения. По умолчанию значение 0.2
NoAI: [true/false]выключает ИИ моба, несмотря на то, что написано в AIGoalSelectors
NoDamageTicks:[число]задержка в тиках, сколько времени игрок не может наносить урон мобу после того, как он его нанес
NoGravity: [true/false]будет ли выключена гравитация для моба
Persistent: [true/false]моб не будет умирать, если использовать команду /mm m killall, но умрет, если использовать команду /butcher, /mm m kill X или /minecraft:kill
PreventItemPickup: [true/false]запрещает мобу подбирать предметы
PreventLeashing: [true/false]запрещает накидывание поводка на моба
PreventMobKillDrops: [true/false]запрещает выкидывание лута, если моб убит другим мобом MM
PreventOtherDrops: [true/false]запрещает дроп стандартного лута. например кости из скелета
PreventRandomEquipment: [true/false]разрешает мобу появляться со случайным снаряжением
PreventRenaming: [true/false]запрещает переименование моба с помощью тега nametag
PreventSunburn: [true/false]запрещает мобу гореть на солнце
RepeatAllSkills: [true/false]разрешает снова использовать навыки, зависящие от здоровья моба, если он вылечился выше порога для использования навыка
ShowHealth: [true/false]разрешает отображение здоровья моба, транслирующиеся через сообщения
Silent: [true/false]запрещает использовать мобам свои стандартные звуки

Ух, отлично. Но это еще не все. Так-же у мобов можно включить логику поведения самого опасного игрока. Что это дает? Честный бой! Для примера есть босс, и вокруг него 5 игроков, которые его дубасят. По логике ИИ стандартного майна моб будет ходить за тем, кто его сагрил до того момента, пока цель не выйдет за его радиус атаки, ну или пока моб или игрок не умрет. А это значит, что пока 1 игрок бегает от босса, остальные могут безнаказанно его атаковать. Не честно? Не честно! И это можно исправить! В MM есть механика угрозы. Там можно сделать так, чтобы моб атаковал самого опасного игрока, то есть того, кто наносит больше всего урона! Вот мы и подобрались к пункту Modules
Итак, для начала включаем сам модуль:
Код:
Modules:
ThreatTable: true
а потом в описании способностей моба мы пишем

Код:
 Skills:
- threat{amount=10000} @NearestPlayer ~onSpawn
Итак, это значит, что при спавне моба(~onSpawn) мы ищем самого ближайшего игрока(@NearestPlayer) и присваиваем ему некий уровень опасности(threat{amount=10000}). Т.к. на момент спавна моба у ближайшего игрока уровень опасности становится 10000, а у остальных 0, т.к. они дальше, то моб будет атаковать ближайшего игрока.

Но вы наверное спросите "Воу воу, а что такое onSpawn и @NearestPlayer"? А это триггеры и и цели!
Триггер, это событие, которое запускает какой-либо процесс. Триггеры используются только в описании навыком моба!
Ну а что такое цель я думаю вы и так знаете.
Сейчас я покажу, какие они вообще бывают!
onCombatобычный триггер, который срабатывает при агре моба
onAttackкогда моб ударяет кого-либо
onDamagedкогда что-то наносит мобу урон
onSpawnкогда моб спавнится
onDespawnкогда моб деспавнится(например умирает, если рядом никого нет)
onFirstSpawnкогда моб спавнится из спавнера
onDeathкогда моб умирает
onTimer:#задает таймер в тиках
onInteractкогда по мобу нажимают ПКМ
onKillPlayerкогда моб убивает игрока
onPlayerDeathкогда игрок рядом умирает по любой причине
onEnterCombatкогда моб вступает в бой
onDropCombatкогда моб покидает бой
onChangeTargetкогда моб меняет цель
onExplodeкогда моб взрывается
onTeleportкогда моб телепортируется
onSignalНЕ РАЗОБРАЛСЯ
onSignal:[signal]НЕ РАЗОБРАЛСЯ
onShootкогда моб стреляет снарядами

С триггерами все понятно. А что с целями? А вот они!
ОДИНОЧНЫЕ ЦЕЛИ
@Selfсам моб
@Targetатакуемая сущность мобом
@Triggerцелью становится тот, кто запустил навык
@NearestPlayer{r=#}цель ближайший игрок в радиусе #. По умолчанию # = 5
@WolfOwnerцель хозяин волка
@Ownerцель хозяин моба, если он есть
@Mountцель сущность, на которой едет цель
@Parentцель моб, который призвал этого моба
@ChildrenНацеливается на любые дочерние сущности, вызванные целью
@Passengerцель тот, кто едет на какой-либо сущности
МУЛЬТИ-ОБЪЕКТНЫЕЦЕЛИ
@LivingInCone{a=90,0;r=16,0;rot=0,0}цели все живые существа в конусе с углом а и длиной r с направлением взгляда моба
@LivingInWorldцели все живые существа в мире, где находится цель
@LivingEntitiesInRadius{r=#}цель все существа в радиусе #
@MobsInRadius{r=#; types=X, X, X}цель все мобы определенного типа(Х) в радиусе #
@EntitiesInRadius{r=#; types=X, X, X}цель все живые объекты каких-либо типов(Х) в радиусе #
@PlayersInWorldцель все игроки в текущем мире
@PlayersOnServerцель все игроки на сервере
@PlayersInRing{min=#; max=#}цель все игроки в заданном диапазоне блоков
ЦЕЛИТАБЛИЦА УГРОЗ
@RandomThreatTargetцель случайный игрок в таблице угроз
@Threatableцель все игроки в таблице угроз
ЦЕЛИМЕСТОПОЛОЖЕНИЯ
@SelfLocationцель местоположение моба
@Forward{f=5;y=0.0}цель 5 блоков в сторону взгляда моба
@TargetLocationцель местоположение цели(на кого агрится моб)
@Location{c=x, y, z}цель указанные координаты
@Spawner{s=[название]}цель спавнер MM с определенным названием. Можно использовать ряд спавнеров. Например есть spawner1 spawner2 spawner3 и т.п. и чтобы их все не писать можно написать spawner*
МНОГОПОЗИЦИОННЫЕЦЕЛИ
@PlayerLocationsInRadius{r=#}НЕ РАЗОБРАЛСЯ
@Ring{radius=#; points=#}НЕ РАЗОБРАЛСЯ
@Cone{angle=#;points=#;range=#;rotation=#;}НЕ РАЗОБРАЛСЯ
@EntitiesInCone{angle=#;range=#;rotation=#;}цель все объекты внутри конуса

Ты еще не устал читать? Отлично! Тогда продолжаем!

Теперь давай поговорим о такой вещи, как AIGoalSelectors!
Этим мы можем заставить моба вести себя так, как нам захочется! Ну, почти как захочется! Есть несовместимые события, но их мало. Например есть событие "EatGrass", это заставляет моба есть траву! Но если мы применим это, например, к зомби, мы получим ошибку, т.к. этот моб не ест траву.
Итак, поехали разбираться, как же настроить ИИ моба!
Можно указывать несколько типов поведения. Например:
YAML:
 AIGoalSelectors:
# моб будет просто ходить. Удаляем ему ИИ
- 0 clear
#но если рядом будет враг, моб пойдет его атаковать
- 1 meleeattack
#и будет смотреть по сторонам, если он не нацелен на врага
- 2 randomstroll
Как видишь, все достаточно просто. Но давай разберем все возможные варианты
ДЛЯ ВСЕХМОБОВ
clearудаляет ИИ моба
breakdoorsмоб будет ломать дверь, если она будет на его пути
eatgrassмоб будет жевать траву
floatмоб будет плавать и не тонуть
lookatplayersмоб будет смотреть на ближайшего игрока
opendoorsмоб будет открывать двери, входить и закрывать дверь
closedoorsНЕ РАЗОБРАЛСЯ
randomlookaroundмоб будет беспорядочно оглядываться
ТОЛЬКОСУЩЕСТВА
avoidcreepersмоб будет избегать криперов
avoidskeletonsмоб будет избегать скелетов
avoidzombiesмоб будет избегать зомби
fleesunмоб будет избегать солнечного света
meleeattackмоб будет атаковать в ближнем бою
movetowardstargetмоб будет двигаться к своей цели
randomstrollмоб будет беспорядочно ходить вокруг
restrictsunмоб будет пытаться не попадать под солнечный свет
fleeplayersмоб будет избегать игроков
fleegolemsмоб будет избегать големов
fleevillagersмоб будет избегать деревенских жителей
spiderattackмоб будет использовать атаку, как у пауков
leapattargetмоб будет бросаться на свою цель
moveindoorsНЕ РАЗОБРАЛСЯ
movethroughvillageНЕ РАЗОБРАЛСЯ
movetowardsrestrictionНЕ РАЗОБРАЛСЯ
patrol x1,y1,z1;x2,y2,z2;x3,y3,z3;…моб будет патрулировать зону по координатам
gotolocation x,y,zмоб будет идти на указанные координаты
gotoparentмоб будет двигаться к другому мобу, который его породил
ТОЛЬКО ДАЛЬНОБОЙНЫЕСУЩНОСТИ
arrowattackмоб атакует снарядами(дальний бой)
skeletonbowattackмоб использует новый ИИ, как у скелетов

Ну и сразу давай сделаем логику для атак моба! Для этого нам нужен пункт AITargetSelectors
Например напишем так:

YAML:
  AITargetSelectors:
  - 0 clear
  - 1 players
  - 2 golems
Это значит что по умолчанию ни на кого не нападаем(если никого рядом нет)
Но если есть игрок, то нападаем на него
И если есть голем нападаем на него. Но не нападаем на голема пока есть рядом игрок, т.к. игрок выше голема по приоритетам. Все возможные события для AITargetSelectors
clearочищаем ИИ моба
attackerцель любой, кто атакует моба
monstersцель любой моб монстр
playersцель игрок
villagersцель деревенский житель
golemsцель голем
OtherFactionцель любая сущность в другой фракции
OtherFactionMonstersцель любой моб в другой фракции
OtherFactionVillagersцель любой деревенский житель в другой фракции
SpecificFaction [имя фракции]цель любые сущности из 1 определенной фракции
SpecificFactionMonsters [имя фракции]цель монстры из 1 определенной фракции

Все. Закончили настраивать ИИ мобов!
Теперь давайте создадим список того, что будет падать с моба при убийстве, ведь это самое главное для игрока - награда!
Вид записи дропа имеет следующий:

YAML:
  Drops:
  - <предмет/опыт/таблица дропа> <количество> <шанс>
Итак, что может быть дропом
champions-expочки опыта для плагина Champions
skillapi-expочки опыта для плагина SkillAPI
heroesexpочки опыта для плагина Heroes
mcmmo-expочки опыта для плагина MCMMO
expобычные очки опыта MINECRAFT
moneyденьги, нужно плагин Vault
mythicdrop <предмет>предмет из плагина MythicDrops
phatloot <предмет>предмет из плагина PhatLoot
cmdвыполнится какая-либо команда. Пример выполнения
- cmd{c="warp <trigger.name> spawn"}
mmoitemsпредмет из плагина MMOItems

Так, дроп есть, но, я думаю нужно еще нарядить во что-то моба, а то чего он голый бегает?
Для этого нам понадобится пункт Equipment
В конфиге это будет выглядеть так:

YAML:
  Equipment:
  - <предмет> <слот на мобе>
Что туда может входить? Все что угодно из обычных вещей MINECRAFT и любая вещь из вещей, созданных в MM.
Например:
Код:
  Equipment:
  - awesome_boss_helmet HEAD
  - diamond_sword HAND
Это значит что на голову мы одели предмет awesome_boss_helmet, а в руку дали алмазный меч. Про создание вещей в MM поговорим позже.

На что может быть одето:
HEADголова
CHESTтело
LEGSноги
FEETступни
HANDрука
OFFHANDвторая рука

Ну и для завершения моба осталось только сделать ему способности!
Давайте же приступим! В конфиге это будет выглядеть так:
YAML:
Skills:
  - механика 1
  - механика 2
  - и т.д.
Все механики имеют следующий вид:
- mechanic{option=value} @[targeter] ~on[trigger] [health_modifier] [chance]
Свиду сложно, но это не так! Давайте разберем строку.
Код:
- mechanic{option=value} @[targeter] ~on[trigger] [health_modifier] [chance]

mechanic =  способность
option=value = значение способности
@[targeter] = цель или цели
~on[trigger] - триггер
[health_modifier] - модификатор здоровья у моба. Может иметь разные условия, например:
=90% - моб выполнит заклинание 1 раз, когда у него будет 90% здоровья
<50% - моб будет использовать навык только если у него от 1 до 50% здоровья
=30%-50% - моб будет использовать навык только когда его здоровье от 30 до 50%
<2000 - моб будет использовать навык только если у него менее 2000 здоровья
>500 - моб будет использовать навык только если у него более 500 здоровья
[chance] - шанс от 0 до 1, где 0 = 0, 0.5 = 50%, 1 = 100%
Пример:
YAML:
  Skills:
  - ignite{ticks=100} @target ~onAttack <50% 0.4
Мы используем способность ignite на 5 секунд(100 тиков = 5 секунд. 1 секунда = 20 тикам) на атакуемую мобом сущность во время удара, когда у моба меньше 50% здоровья с шансом в 40%
Как видите все очень даже просто.
Какие бывают способности:
СПОСОБНОСТЬУСЛОВИЯОПИСАНИЕ
activatespawner{spawner=имя} - активирует спавнер с определенным именем
{spawner=g:имя} - активирует всю группу спавнеров по имени
{spawner=имя*} - активирует ряд спавнеров. Например имя1, имя2, имя3
активирует спавнер, заставляя его порождать мобов
animatearmorstand{d=10;leftarm=90,0,0;rightarm=270,0,0;ignoreempty=false;smart =true}
d - время анимации в тиках
smart - сделать анимацию более плавной
ignoreempty - не будет делать анимацию для пустых конечностей
задает движение стенду для брони
arrowvolley{a=20;s=25;v=10;f=50;rd=200}
a - количество стрел
s - угол разброса
v- скорость
f - огненные стрелы. Значение в тиках, на сколько поджечь цель при попадании
rd - время, в течении которого стрелы не исчезнут с земли
запускает ряд стрел в цель
auraremove{aura=Ice;stacks=10}
aura - название ауры
stacks - не совсем разобрался
удаляет ауру с цели
barCreate{name="MyBossBar";display="<caster.name> - <caster.hp>";value=1.0;color=BLUE;style=SEGMENTED_6}
name - имя БоссБара
display - текст БоссБара
value - % заполненности БоссБара. От 0 до 1
color - цвет БоссБара. Доступны следующие цвета: PINK, BLUE, RED, GREEN, YELLOW, PURPLE, WHITE.
style - стиль БоссБара. Доступны следующие стили: SOLID, SEGMENTED_6, SEGMENTED_10, SEGMENTED_12, SEGMENTED_20
создает BossBar
barSet{name="MyBossBar";display="<caster.name> - <caster.hp>";value=1.0}
name - имя существующего БоссБара
display - текст БоссБара
value - % заполненности БоссБара. От 0 до 1
модифицирует существующий BossBar
barRemove{name="MyBossBar"}
name - имя существующего БоссБара
удаляет существующий BossBar
breakblock{forcesync=true} @location{c=100,64,100}
требует, чтобы в конфиге была включена forcesync
@location - местоположение блока
ломает блок по определенным координатам
closeinventory{forcesync=true}
требует, чтобы в конфиге была включена forcesync
закроет инвентарь игроку. Требуется чтобы целью был игрок
command{c="minecraft:tp <target.name> <mob.uuid>"}
ВАЖНО! В нельзя использовать символы двоеточия, фигурных скобок и т.п. Нужно заменять их плейсхолдерами. Например " заменяется на <&dq>
Пример правильной команды:
command{c="minecraft:summon Zombie ~ ~ ~ {NoAI:true,CustomName:<&dq>Зомби помощник<&dq>}"}
Пример неправильной команды:
command{c="minecraft:summon Zombie ~ ~ ~ {NoAI:true,CustomName:"Зомби помощник"}"}
выполняет какую либо команду
consume{d=1000;h=20}
d - наносимый урон
h - кол-во восстанавливаемого здоровья
pi - игнорировать ил иммунитеты
ia - игнорировать ли броню

Пример:
consume{d=1000;h=20} @MobsInRadius{type=ZOMBIE;r=20}
наносит урон по местности и исцеляет себя от нанесенного урона по кому-либо
disengageНЕ РАЗОБРАЛСЯ
disguise{d=SHEEP}
d - в какую сущность превратить моба

{type=player;player=&7Jeb;skin=Notch}
type - тип, в кого превратиться
player - имя игрока
skin - скин игрока


требует плагина Lib's Disguises
Превращает моба в кого-либо
disguisetargetПримеры:
disguisetarget{d=SHEEP} @target
превратит цель в овцу

disguisetarget{type=player;player=&7Jeb;skin=Notch} @target
превратит цель в игрока с ником Jeb и скином игрока Notch

требует плагина Lib's Disguises
превращает в кого-либо цель
undisguiseПример:
undisguise ~onInteract

требует плагина Lib's Disguises
удаляет активную маскировку на мобе, если она есть
dismountзаставляет спрыгнуть кого-либо с транспорта(лошадь, осел, вагонетка...)
currencygive{amount=20}
amount - количество.

Пример:
currencygive{amount=20} @pir{r=25} ~onSpawn 0.3
с шансом 30% при появлении выдаст по 20 монет в радиусе 25 блоков

Требует плагин Vault и включение его в конфиге MM
выдает деньги игроку или игрокам
currencytake{amount=20}
amount - количество.

Требует плагин Vault и включение его в конфиге MM
забирает деньги у игрока или игроков
damage{amount=20;ignoreArmor=true}

amount - колтчество урона
ignoreArmor - игнорировать ли броню
pi - игнорировать ли иммунитеты
наносит урон
basedamage{m=1.5}
m - процент урона, где 1 = 100%, 0.5 = 50% 1.5 = 150%
ia - игнорировать ли броню
pi - игнорировать ли иммунитеты
наносит % урона от своего показателя урона на данный момент
damagepercent{percent=0.5}
percent - процент наносимого урона
ia - игнорировать ли броню
pi - игнорировать ли иммунитеты
наносит урон, равный % максимального здоровья игрока
decapitateроняет голову целевой сущности
dopplegangerПример:
doppleganger @NearestPlayer ~onSpawn
моб скопирует внешний вид самого ближайшего игрока при спавне

требует плагина Lib's Disguises
моб копирует внешний вид игрока
dropitem{i=diamond_sword,diamond}
{i=SkeletonKingDrops}
предметы, которые нужно бросить. Это может быть разделенный запятыми список элементов или таблица дропа
ejectpassengerзаставляет всех слезть сч транспорта
equipПримеры:
equip{item=diamond_sword HAND}
зкипирует моба алмазным мечом
equip{item=KingsCrown HEAD}
экипирует моба шлемом KingsCrown из списка предметов MM
экипирует моба чем либо
explosiony - сила взрыва, по умолчанию 0.013
bd - повредит ли взрыв блоки
ft - останется ли после взрыва огонь
позволяет создать взрыв возле кого-либо
feeda - сколько еды восстанавливать
s - сколько выдать насыщения
o - разрешить ли перекармливание
позволяет накормить игрока. перекармливание превращается в насыщение
flyd - время действия в тиках. По умолчанию 200заставляет игрока летать, подобно команде /fly
forcepulls - радиус.

Пример:
forcepull{s=5} @EntitiesInRadius{r=30}
телепортирует всех в радиусе 30 блоков к боссу в радиусе 5 блоков
телепортирует сущности в неком радиусе вокруг моба
effect:glowc - цвет свечения
d - время свечения в тиках. По умолчанию 100
заставляет сущность светиться
giveitem{i=diamond_sword;a=1}
i - предмет
a - количество
дает игроку предмет
heal{amount=20;overheal=true}
amount - количество
overheal - разрешить лечиться выше максимального здоровья. Это значит, что если это применяется на моба, и у него, например, 20 здоровья из 20 и мы применяем на него лечение, то оно прибавится и будет выше максимального. То есть 40.
лечит сущность на некоторое количество здоровья
healpercentmultiplier - % лечения
overheal - разрешить лечиться выше максимального здоровья
лечит сущность на некоторый % от ее максимального здоровья
igniteticks - время горения в тикахподжигает цель
jsonmessagem - сообщение

Пример:
jsonmessage{m="[{'text':'&7Если на меня навести, я покажу сообщение','hoverEvent':{'action':'show_text','value':{'text':'&aЯ событие наведения:)'}}}]"} @trigger ~onInteract
позволяет отправить игроку JSON сообщение
jumpv - скорость прыжка. По умолчанию 1заставляет прыгать сущность
leapv - скорость прыжка. По умолчанию 100заставляет прыгнуть цель к сущности
lightningd - урон. По умолчанию 0.01337

Пример
lightning{d=0.02} @EntitiesInRadius{r=10} ~onTimer:100
бьет молнией по цели или местности
look{headOnly=true;immediately=true}
headOnly - повернуть только голову
immediately - моментально повернуться, без анимации
заставляет моба посмотреть на цель
lunge{velocity=15;velocityY=5}
velocity - горизонтальная скорость
velocityY - вертикальная скорость
заставляет сделать рывок к цели
message{m="<mob.name>&f<&co> Хаха! Я умею говорить!"}
m - сообщение
позволяет отправить сообщение
mountmount{type=UndeadMount}
type - тип маунта


маунты должны быть созданы в MM
позволяет призвать маунта для моба и сесть на него
mountmeзаставляет цель сесть на моба
mounttargetпозволяет мобу сесть на цель
posearmorstand{head=45,0,0}
head - голова
body - тело
leftarm - левая рука
rightarm - правая рука
leftleg - левая нога
rightleg - правая нога
задает позу для стойки брони
potion{type=SLOW;duration=200;level=4}



type - тип зелья
duration - время действия в тиках
level - уровень зелья. Минимум 0
force - нужно ли переопределить эффект, если он уже есть
hasParticles - отображать ли эффект частиц
hasIcon - показывать ли значок состояния
накладывает эффекты зелий на цель
prison{material=IRON_BLOCK;duration=200;breakable=true}

material - материал блока
duration - время заточения
breakable - можно ли сломать блоки
позволяет поместить сущность в клетку из блоков
pullvelocity - базовая скорость тягипритягивает к мобу все цели с ускорением
pushbutton{x=15;y=67;z=-213}нажимает кнопку по указанным координатам
rally{types=Guard,Knight;radius=30;ot=false}

types - типы мобов
radius - радиус поиска
ot - нужно ли сплачивать мобов, у которых уже есть цель?
vradius - вертикальный радиус
hradius - горизонтальный радиус
заставляет мобов определенных типов атаковать цель омба если у них нет цели
randommessage{m="это сообщение","или это","а может это";}отправляет игроку случайное сообщение из списка
remountзаставляет мобов садиться на маунтов, которых они породили
remove{delay=200}

delay - задержка в тиках
удаляет моба
consumeHeldItemamount - количествоудаляет вещь из руки
actionmessage{m="<mob.name>&f кастует заклинание!"}позволяет показать сообщение в экшенбаре
sendresourcepack{url="https://mysite.com/file.zip"}


url - адрес ресурспака
позволяет отправить игроку ресурспак
sendtitle{title="Внимание!";subtitle="Кастуется опасное заклинание!";d=20}

title - заголовок
subtitle - сообщение
d - время в тиках
fadeIn - время появления в тиках
fadeOut - время затухания в тиках
показывает сообщение по центру экрана
sendtoast{icon=DIAMOND; iconnbt={CustomModelData:1};message="Босс убит!";frame=challenge}

icon - иконка. Может быть любым предметом minecraft
iconnbt - NBT иконка
message - сообщение
frame - тип окошка. Может быть: challenge, task,goal
показывает сообщение в окошке достижений
setblock{m=STONE;md=0}

m - блок
md - ID блока на который заменить
изменяет тип блока
setgamemode{m=CREATIVE;sync=true}

требует, чтобы в конфиге было включено sync=true
изменяет режим игры игроку
setgliding{g=true}заставляет парить сущность, если у нее есть надкрылки и она в воздухе
setgravity{g=false}влияет ли гравитация на сущность
sethealtha - количество здоровьяустанавливает количество здоровья цели
setlevela - математическое действие
l - уровень

Примеры:
setlevel{a=set;l=3} ~onSpawn
при спавне сделает моба 3 уровня


setlevel{a=add;l=1} ~onKillPlayer
будет добавлять 1 уровень каждый раз, когда убивает игрока
устанавливает уровень моба
setmaxhealthamount - количество
mode - тип установки здоровья

Примеры:
setmaxhealth{amount=5;mode=STATIC} @self ~onInteract
Установит 5 здоровья. Если у игрока было больше у него станет 5 из 5 здоровья


setmaxhealth{amount=5;mode=SCALE} @self ~onInteract
установит 5 здоровья, но если у игрока было не полное здоровье, то высчитается %. Например у игрока было 15 из 20 здоровья, то станет 3 из 5.
позволяет установить максимальное количество здоровья
setcolorcolor - светпозволяет задать цвет моба
setnamename - имя мобаустанавливает имя мобу
setspeed{speed=2;type=walking}
speed - скорость
type - что изменяем: walking - хотьба, flying - полет
задает скорость ходьбы и полета
shieldНЕ РАЗОБРАЛСЯ
shieldPercent
НЕ РАЗОБРАЛСЯ
shootfireballyield - мощность шара
velocity - скорость шара
incendiary - оставит ли после себя огонь
fireTicks - время огня в тиках
smallfireball - использует маленький шар ифрита
playsound - звук огненного шара при его создании
кидает огненный шар в цель или на местность
shootpotion{type=SLOW;duration=200;level=4;velocity=5}

type - эффект зелья
duration - время действия в тиках
level - уровень зелья
velocity - скорость полета зелья
hasParticles - отображение частиц
hasIcon - показывать ли значок эффекта состояния
позволяет кинуть зелье в цель или на местность
shootskullyield - сила взрыва черепа
playsound - создавать ли звук черепа при создании
стреляет увязающим черепом
springtype - тип. Может быть water или lava
duration - время в тиках
создает лужу из воды или лавы у цели или на местности
stunduration - продолжительность стана
facing - может ли застаненная сущность шевелиться
сущность получает стан
suicideзаставляет моба умереть
summon{type=WITHER_SKELETON;amount=5;radius=4}

type -тип моба
amount - количество
level - уровень
radius - радиус вокруг цели для призыва
onSurface - следует ли порождать мобов только на твердых блоках
copyThreatTable - саммоны копируют таблицу опасностей родителя
inheritThreatTable - родитель копирует таблицу опасностей от саммонов
inheritFaction - саммоны будут иметь ту же фракцию, что и родитель
призывает определенный тип мобов вокруг цели
teleport{spreadh=5;spreadv=0}
spreadh - горизонтальный разброс
spreadv - вертикальный разброс
телепортирует моба в некотором количестве блоков от цели
teleportto{location=190,64,200}

location - координаты куда телепортировать
world - мир, куда телепортировать
телепортирует всех в указанное место
threat{amount=10000}

amount - количество
mode - логическое действие. Может быть:
Add / Remove / Multiply / Divide / Set / Reset / Forcetop

значения Set/reset/forcetop не требуют переменной amount
устанавливает уровень угрозы цели
throw{velocity=5;velocityY=5}

velocity - горизонтальная сила отбрасывания
velocityY - вертикальная сила отбрасывания
отбрасывает сущности от моба
togglelever{duration=600;x=15;y=67;z=-213}переключает рычаг в определенном месте на определенное время в тиках. После этого возвращает рычаг в исходное положение
weather{type=storm;duration=6000}

type - тип погоды. Может быть:
sunny, rainy, “stormy
duration - продолжительность в тиках
устанавливает погоду
speak{radius=30;message=" Я появился!";chatprefix=<caster.name>&f<&co>}

radius - радиус, на котором игроки увидят сообщение
message - сообщение
chatprefix - префикс сообщения в чате
позволяет вывести речь моба с некоторыми настройками

Так-же можно украсить каст навыков эффектами. Это полезно, если вы хотите сделать действительное красивое использование способностей.
Синтаксис использования у них такой-же, как и у способностей:

YAML:
Skills:
- effect:flames @target
- effect:lightning @self
- effect:ender @PlayersInRadius{r=20}
А вот и список всех эффектов
НАЗВАНИЕУСЛОВИЯОПИСАНИЕ
blackscreen
d - продолжительность в тикахзатемняет экран игрока
blockmask

material - материал
data - ID data блока(например блок 35:2 вот число 2 вписывать сюда)
radius - радиус создания
noise - позволяет делать маску не полностью заполненной. По умолчанию 0 = заполнить полностью
duration - продолжительность в тиках
shape - форма(Sphere/Cube )
noair - заполнение без воздуха
создает видимую фигуру из блоков(не физическую)
blockunmask
r - радиусотменяет действие команды blockmask
blockwave
material - материал
data - ID data блока(например блок 35:2 вот число 2 вписывать сюда)
radius - радиус
radiusy - задает разброс
duration - продолжительность в тиках
shape - форма(Sphere/Cube )
velocity - скорость
создает волну разлетающихся блоков(не физических)
bloodyScreen
duration - время в тиках
cancel - отменяет прочие красные экраны, если они есть
показывает красный экран как при сильном повреждении
enderэффект частиц эндера
enderbeamduration время в тикахэффект полета эндер кристалла
explosionсоздает эффект взрыва
flamesэффект пламени
geysertype - тип жидкости(water,lava)
height - высота
speed - скорость
эффект выброса жидкости из под земли
glowduration - время в тиках
color - свет

требует плагин GlowAPI
заставляет цель светиться
lightninglocalized - звук будет слышан только в радиусе действия
localizedradius - радиус действия
эффект удара молнии
particlesparticle - тип частиц
amount - количество
hSpread - горизонтальное расположение
vSpread - вертикальное расположение
speed - скорость
yOffset - смещение частиц к цели
viewDistance - дистанция видимости
Size - размер
color - цвет
создает частицы в определенном месте или на цели
particlebox
particle - тип частиц
radius - радиус
создание коробки из частиц
particlelinedistanceBetween - растояние между частицами в линии.(0.25 по умолчанию)создание линии частиц от моба к цели
particleringparticle - тип частиц
points - количество точек частиц
radius - радиус
amount - количество
hS - горизонтальное расположение
vS - вертикальное расположение


создает кольцо из частиц
particletornado
Автор
SNR93
Просмотры
588
Первый выпуск
Обновление
Рейтинг
0.00 звезд Оценок: 0

Комнаты в чате

Верх Низ