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

Создание предметов

webapp_banner.jpg

Создание Кастомных предметов

Что такое Кастомные предметы?

Кастомные предметы — это предметы, определённые EliteMobs через конфигурационные файлы. Вы можете настраивать несколько аспектов этих предметов, таких как уровень предмета, зачарования, имя, лор, текстура и многое другое!

Webapp

Вы можете легко и быстро создавать Кастомную добычу здесь!

Прежде чем начать

Куда помещаются Кастомные предметы?

Файлы кастомных предметов помещаются в конфигурационную папку ~/plugins/EliteMobs/customitems

Можно создавать подпапки, такие как ~/plugins/EliteMobs/customitems/myitems. Это рекомендуется для поддержания порядка.

Файлы хранятся в формате файлов .yml, и Notepad++ — рекомендуемое ПО для редактирования файлов при работе с конфигурацией. Один файл определяет одного босса, хотя можно спавнить одного и того же босса несколько раз и даже задавать несколько мест спавна для одного файла босса.

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

Минимально возможная конфигурация

Обратите внимание, что минимально возможный конфигурационный файл для Кастомного предмета:

Обратите внимание, что это просто пустой файл. По умолчанию это будет деревянный меч под названием «Default name». Всё на этой странице необязательно!

Пример предмета

Давайте посмотрим на пример того, как выглядит файл предмета.

Пример
isEnabled: true
material: WOODEN_AXE
name: '&4Test item'
lore:
- This is a cool item
- It has cool lore
enchantments:
- DAMAGE_ALL,4
- FLAMETHROWER,1
potionEffects:
- FAST_DIGGING,0,self,onHit
- POISON,0,target,onHit
- GLOWING,0,self,continuous
dropWeight: dynamic
scalability: scalable
itemType: custom

Настройки Кастомного предмета

Ниже приведён список всего, что вы можете настроить для кастомных предметов:


isEnabled

Задаёт, включён ли предмет. Не влияет на уже сгенерированные предметы.

KeyValuesDefault
isEnabledtrue / falsetrue
Пример
isEnabled: true

material

Задаёт материал предмета.

KeyValuesDefault
materialВыберите из этого списка!WOODEN_SWORD
Пример
material: DIAMOND_SWORD

level

Задаёт уровень предмета.

KeyValuesDefault
levelInteger0

Если оставить значение по умолчанию 0, EliteMobs выведет уровень из материала вместо использования фиксированного.

Учтите, что эта настройка не релевантна, если вы задаёте scalability предмета равной scalable, поскольку уровень тогда полностью берётся от босса. Если вы зададите её равной limited, это будет наивысший возможный уровень предмета.

У материалов брони также есть встроенная базовая защита, выраженная в виде уровня: кожа и золото считаются за 3, кольчуга — за 5, железо — за 6, алмаз — за 7, а незерит — за 8. Уровень, который вы задаёте здесь, всегда является тем, что хранится на предмете и показывается в его лоре, но задание его ниже собственного значения материала не даёт вообще никакого элитного бонуса к защите — деталь просто работает как обычный ванильный материал.

Пример
level: 100

name

Задаёт отображаемое имя предмета.

KeyValuesDefault
nameString с цветовыми кодами"Default name"
Пример
name: "&2Cool item"

create_item_name.jpg


lore

Задаёт лор предмета.

KeyValuesDefault
loreList с цветовыми кодамиnone
Пример
lore:
- "&2This is the coolest sword"
- "&2of all time!"

create_item_lore.jpg


enchantments

Задаёт зачарования на предмете.

KeyValuesDefault
enchantmentsList с зачарованиями Minecraft или Кастомными зачарованиями EliteMobsnone

Учтите, что эти записи следуют формату enchantmentName,enchantmentLevel. Смотрите пример ниже!

Пример
enchantments: 
- "DAMAGE_UNDEAD,8"
- "DURABILITY,4"
- "DAMAGE_ALL,7"
- "LOUD_STRIKES,3"

create_item_enchantments.jpg

Также учтите, что зачарования вроде остроты (sharpness) по умолчанию становятся элитной остротой, если уровень начинает превышать лимиты ванильного Minecraft.

Имейте в виду, что предметы со scalable и limited перетасовывают уровни своих зачарований при каждом выпадении. Общее количество уровней зачарований, которое вы настроили, сохраняется, но случайным образом перераспределяется между перечисленными вами зачарованиями, поэтому две копии одного и того же предмета могут получить разные разбивки. Только предметы со scalability равной fixed всегда используют точные уровни, записанные в файле.


potionEffects

Задаёт эффекты зелий, которые будет иметь предмет. Они могут применяться к игроку или к сущности, получившей урон от игрока.

KeyValuesDefault
potionEffectsList с эффектами зелий Minecraftnone

Кроме того, эффекты зелий используют особый формат, который позволяет администраторам выбирать, на кого и когда влияет эффект:

SettingDescriptionValuesDefault
Уровень эффекта зельяЗадаёт уровень эффекта зелья. Эффекты зелий начинаются с уровня 0!Integernone
Затрагиваемая сущностьЗадаёт, на кого влияет эффект зелья.self (игрок) / target (сущность, по которой ударили)none
Метод примененияЗадаёт, когда применяется эффект зелья.onHit / continuous (постоянно применяется заново)none

Формат для эффектов зелий — potionEffectName,potionEffectLevel,affectedEntity,applicationMethod. Последние два параметра (affectedEntity и applicationMethod) необязательны и по умолчанию равны self и continuous, если не указаны. Смотрите пример ниже!

Длительность эффектов зелий:

  • Постоянные эффекты обновляются каждую секунду, пока предмет держится или надет (каждое применение длится 2 секунды, поэтому эффект никогда не прерывается)
  • Ночное зрение получает особую длительность 15 секунд
  • Эффекты при ударе используют длительности на основе конфигурации сервера

При осмотре предмета с эффектами зелий вы увидите значки, указывающие, как применяется эффект:

  • ☠️ Череп — нацелен на врагов.
  • 🛡️ Щит — нацелен на пользователя/игрока.
  • ⚔️ Мечи — активируется при ударе.
  • 🔄 Повторяющийся круг — применяется постоянно, пока предмет надет или держится.

EliteMobs также включает кастомные предметы, функционирующие как обереги. Эти предметы не делают ничего другого, кроме как дают игроку эффекты зелий, пока предмет держится или экипирован в слоте.

ПРЕДУПРЕЖДЕНИЕ: использование эффекта зелья INSTANT_DAMAGE будет исцелять мобов-нежить при попадании, поскольку это стандартная механика в ванильном Minecraft.

Эффекты, которые не работают:

  • ABSORPTION и HEALTH_BOOST полностью пропускаются системой эффектов зелий на предметах. Они никогда не применяются, независимо от того, задали ли вы им continuous или onHit.
  • LEVITATION, SLOWNESS и BLINDNESS, применяемые к target при ударе, игнорируются, когда сущность, по которой вы ударили, является элитным мобом с множителем здоровья выше 1, что охватывает практически всех Кастомных боссов. На обычных элитных мобах и на ванильных мобах они по-прежнему работают.
Пример
potionEffects: 
- "POISON,0,target,onHit"
- "HEAL,1,self,onHit"
- "NIGHT_VISION,0,self,continuous"

create_item_potion_effects.jpg

С этим набором эффектов зелий будет происходить следующее:

При ударе эффект зелья яда (уровень 1) будет применён к сущности, по которой ударил игрок. Кроме того, игрок будет затронут эффектом мгновенного исцеления 2-го уровня.

Постоянно игрок будет получать ночное зрение. Это означает, что у игрока будет ночное зрение до тех пор, пока он носит или держит предмет.


scalability

Задаёт, как уровень предмета растёт с уровнем босса, который его роняет.

KeyValuesDefault
scalabilityfixed, limited или scalable. Смотрите ниже!scalable

Изучите этот список, чтобы понять, что делают разные варианты!

SettingDescription
fixedУровень предмета всегда будет равен уровню, заданному в конфигурационном файле.
limitedМаксимальный уровень предмета будет ограничен заданным в конфигурационном файле или уровнем босса, в зависимости от того, что меньше.
scalableУровень предмета будет полностью основан на уровне босса, который его роняет.

Учтите, что у предметов с dropWeight всегда будет fixed scalability.

Пример
scalability: "scalable"

itemType

Задаёт, откуда вы можете получить предмет.

KeyValuesDefault
itemTypecustom, unique или droppable. Смотрите ниже!custom

Есть три типа предметов:

SettingDescription
customПредмет сможет выпадать с любого моба EliteMobs, способного ронять добычу, и будет в кастомном магазине.
uniqueПредмет не будет ронять ни один босс, и его не будет в кастомном магазине. Единственный способ получить его — настроить Кастомного босса на его дроп через его uniqueLootList!
droppableПредмет попадает в пул случайного элитного дропа так же, как custom, но исключается из магазинов — игроки могут найти его как обычный элитный дроп, но никогда не могут просто купить. Полезно для предметов, которые должны ощущаться заработанными, но не обязаны быть привязаны к конкретному боссу.
Пример
itemType: "unique"

dropWeight

Задаёт таблицу добычи, в которую попадёт предмет.

KeyValuesDefault
dropWeightdynamic или значение Double.dynamic

В EliteMobs есть 5 разных таблиц добычи для кастомных предметов, не считая тех, что настраиваются напрямую, как uniqueLootList на Кастомных боссах.

Они таковы:

Loot tableDescriptionDefault weight
Процедурно сгенерированные предметыПредметы, генерируемые случайно на основе конфигурационных файлов сервера90.0
Взвешенные предметыПредметы, у которых вес отличается от dynamic1.0
Фиксированные предметыПредметы с фиксированной (fixed) scalability10.0
Ограниченные предметыПредметы с ограниченной (limited) scalability3.0
Масштабируемые предметыПредметы, которые масштабируемы (scalable)6.0

Когда босс умирает, один предмет из этих таблиц выбирается на основе конфигурационного файла ItemSettings.yml. Значения по умолчанию для весов указаны выше в Default weight. Чем выше вес, тем вероятнее, что предмет выпадет.

У Взвешенных предметов маленький Default weight, то есть они будут выпадать не очень часто. Предметы с dropWeight, отличным от dynamic, задуманы редкими и используются только в значениях по умолчанию для оберегов, которые роняют боссы, — предметов, используемых не для прямого боя, а скорее для усиления игроков эффектами зелий.

dropWeight, который вы здесь задаёте, задаёт шанс выпадения конкретного Взвешенного предмета из списка Взвешенных предметов. Он не увеличивает шанс выпадения Взвешенных предметов.

Если вы запутались и просто хотите делать оружие и броню, пропустите эту настройку, так как она корректно по умолчанию равна dynamic.

Взвешенные предметы обычно имеют вес 1.0.

Учтите, что задание числового dropWeight принудительно помещает предмет в пулы фиксированного и взвешенного дропа, даже если его itemType равен unique. Если вам нужен предмет только для босса, оставьте dropWeight равным dynamic.

Пример
dropWeight: "dynamic"

customModelID

Примечание: эта настройка была удалена. Она больше не читается из конфигурационных файлов. Используйте customModelV2 вместо неё — это единственная настройка ID модели, распознаваемая начиная с Minecraft 1.21.4+ (EliteMobs 9.1.13+). Любые существующие записи customModelID в ваших конфигурационных файлах будут проигнорированы.

Задаёт текстуру предмета. Требует использования валидной текстуры из ресурс-пака!

KeyValuesDefault
customModelIDIntegernone
Пример (больше не работает)
material: DIAMOND_SWORD
customModelID: 1

Эта настройка больше не работает. Перейдите на customModelV2 вместо неё.


customModelV2

Начиная с версии Minecraft 1.21.4 (EM 9.1.13), это новая обязательная настройка для конфигурации ID кастомных моделей предметов. Задаёт текстуру предмета. Требует использования валидной текстуры из ресурс-пака!

KeyValuesDefault
customModelV2Stringnone

Автоматические уровни скинов: если вы оставите незаданными и эту настройку, и equipmentModelID, EliteMobs применит собственные скины на основе уровня из ресурс-пака EliteMobs. Уровень выбирается по уровню предмета:

Минимальный уровень предметаУровень скина
20bronze
40palladium
60corrupted
80living
100ultimatium

Предметы ниже 20 уровня не получают скина уровня. Уровни применяются только к мечам, топорам, мотыгам (которые отрисовываются как косы), лукам, арбалетам, шлемам, нагрудникам, поножам и ботинкам. Трезубцы намеренно исключены.

Задание либо customModelV2, либо equipmentModelID выводит предмет из этой автоматической системы: заданный вами ключ используется как есть, а тот, который вы не задали, откатывается к модели уровня для уровня предмета. Предметы, использующие собственные ключи моделей, также пропускают ванильное масштабирование атрибутов, применяемое системой уровней, — это влияет только на ванильные числа урона от атаки, скорости атаки, брони, прочности и сопротивления отбрасыванию, а не на собственные значения урона и защиты EliteMobs.

Пример
customModelV2: elitemobs:equipment/magmaguys_toothpick

Эта настройка назначает предмету конкретную текстуру. Вот как это работает:

  • elitemobs: — основной каталог в папке assets ресурс-пака.
  • equipment — подкаталог внутри assets/elitemobs/models.
  • magmaguys_toothpick — файл модели, расположенный в assets/elitemobs/models/equipment в ресурс-паке.

Полный путь к файлу модели в этом примере был бы: \.minecraft\resourcepacks\elitemobs_resource_pack\assets\elitemobs\models\equipment\magmaguys_toothpick.json

Это будет использовать кастомную текстуру magmaguys_toothpick из ресурс-пака EliteMobs, который использует игрок. Рекомендуется настроить сервер на выдачу игрокам ресурс-паков при входе, если вы хотите использовать эту функцию правильно.


equipmentModelID

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

KeyValuesDefault
equipmentModelIDStringnone

Как и в случае с customModelV2, задание этого ключа выводит предмет из автоматических уровней скинов на основе уровня.

Пример
equipmentModelID: elitemobs:equipment/helmet_texture

Это задаёт конкретную текстуру, появляющуюся, когда предмет надет, отдельно от вида предмета в инвентаре.


scriptedItem

Связывает предмет со скриптовым предметом FreeMinecraftModels. Когда задано, предмет получает 3D-модель FMM и поведение Lua-скрипта, сохраняя при этом все системы имени, лора, зачарований, уровня и привязки к душе из EliteMobs.

Это требует установленного на сервере FreeMinecraftModels. Если FMM не установлен, эта настройка молча игнорируется, и предмет функционирует нормально без модели или скрипта.

Значение — это ID предмета FMM, то есть имя файла YML-конфигурации модели в папке models FMM, без расширения .yml. Например, если у FMM есть конфигурация модели в plugins/FreeMinecraftModels/models/flame_blade.yml с material: IRON_SWORD и scripts: [flame_blade.lua], вы бы сослались на неё как на flame_blade.

Когда задано scriptedItem, оно имеет приоритет над customModelV2 и equipmentModelID — EliteMobs пропустит свою собственную систему моделей и использует модель FMM вместо неё.

KeyValuesDefault
scriptedItemString (ID предмета FMM)none
Пример
material: IRON_SWORD
name: "&cFlame Blade"
lore:
- "&7Burns with eternal fire"
enchantments:
- "FIRE_ASPECT,2"
- "DAMAGE_ALL,5"
scalability: scalable
scriptedItem: flame_blade

В этом примере:

  • EliteMobs контролирует имя предмета, лор, зачарования, масштабирование уровня и поведение привязки к душе
  • FMM предоставляет 3D-модель предмета и выполняет скрипт flame_blade.lua (например, эффекты частиц при экипировке, кастомное поведение атаки)
  • material: IRON_SWORD используется EliteMobs как базовый тип предмета

showSource

Примечание: эта настройка в настоящее время ничего не делает. Ключ по-прежнему читается из конфигурационного файла без ошибок, но ни одна часть плагина не читает полученное значение, поэтому установка его в false не скроет лор с источником предмета.

Появляется ли строка источника вообще, вместо этого контролируется плейсхолдером $itemSource в списке itemLoreStructureV2 файла ItemSettings.yml. Уберите этот плейсхолдер, чтобы убрать строку источника со всех элитных предметов.

KeyValuesDefault
showSourceBooleantrue

permission

Задаёт право, необходимое для получения предмета.

KeyValuesDefault
permissionStringnone

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

Право проверяется только в момент, когда предмет генерируется или выпадает для игрока. Ничто не перепроверяет узел впоследствии, поэтому обмен или выбрасывание предмета всё ещё может передать его игроку, у которого нет этого права. Практичный способ этому помешать — оставить включённой настройку soulbound.

Пример
permission: "elitemobs.cool.permission"

С этой настройкой только игроки с правом elitemobs.cool.permission смогут получить этот предмет.


soulbound

Задаёт, должен ли предмет быть привязан к душе при дропе.

KeyValuesDefault
soulboundBooleantrue
Пример
soulbound: true

Тестирование вашего предмета

Две админские команды генерируют настроенный предмет по запросу, что избавляет от необходимости фармить босса каждый раз, когда вы правите файл:

КомандаЧто она делает
/em loot give <player> <filename>Выдаёт предмет с уровнем, записанным в его конфигурационном файле.
/em loot reward <player> <filename>Выдаёт предмет, отмасштабированный под боевой уровень целевого игрока.

Обе требуют право elitemobs.loot.admin.