Пользовательские чары без модов: формат чар, управляемый данными
Чары теперь представлены в виде JSON-файлов в пакетах данных, поэтому для создания пользовательских чар не нужен мод. Здесь описана структура файла, компоненты эффектов, которые что-то делают, и как сделать чары доступными.
Раньше чары были жёстко закодированы. Теперь они являются данными пакетов данных, что означает, что по-настоящему пользовательские чары — с новым названием, новым эффектом, новой кривой стоимости — это JSON-файл.
Где это находится
data/<namespace>/enchantment/lightning_strike.json
Единственный enchantment/, как и любая другая категория пакетов данных после переименования.
Минимальный файл
{
"description": { "translate": "enchantment.my_pack.lightning_strike" },
"supported_items": "#minecraft:enchantable/sword",
"weight": 2,
"max_level": 3,
"min_cost": { "base": 10, "per_level_above_first": 10 },
"max_cost": { "base": 50, "per_level_above_first": 10 },
"anvil_cost": 4,
"slots": ["mainhand"]
}
Этого достаточно, чтобы получить настоящие чары, которые появляются на Чародейском столе и отображаются на предмете. Пока они ничего не делают — поведение определяется отдельно.
weight— это редкость на Чародейском столе. В ванильной версии 10 для обычных, 1 для очень редких. Это относительное значение, а не процент.slotsопределяет, где чары активны:mainhand,offhand,armor,headи так далее. Если опустить, чары никогда не будут применены.supported_itemsпринимает тег предмета или список. Теги#minecraft:enchantable/*уже существуют для логичных групп.
Заставляем это что-то делать
effects прикрепляет поведение:
"effects": {
"minecraft:post_attack": [{
"effect": { "type": "minecraft:run_function", "function": "my_pack:strike" },
"requirements": { "condition": "minecraft:random_chance", "chance": 0.25 }
}]
}
run_function — это запасной выход — всё, что может сделать функция, могут сделать и чары. Встроенные типы эффектов охватывают урон, Отдачу, прочность, выпадение предметов и атрибуты, не требуя функции вообще, и они дешевле.
requirements принимает любой предикат, поэтому ограничение по типу Мишени, погоде или случайному шансу — это один блок JSON.
Название
description — это текстовый компонент, поэтому жёстко закодированное имя работает:
"description": { "text": "Lightning Strike", "color": "gold" }
но ключ translate плюс языковой файл в пакете ресурсов — это то, что позволяет правильно читать его игрокам на других языках — по той же причине этот сайт берёт игровые термины из собственных переводов Mojang.
Как сделать это доступным
Три пути, и обычно вам нужно более одного:
- Чародейский стол — автоматически, как только установлены
weightи кривая стоимости. - Таблицы лута —
enchant_randomlyс вашими чарами в списке, илиenchant_with_levels, если они должны конкурировать по стоимости. - Крестьянин торгует — Чародейская книга с вашими чарами в предмете торговли.
Добавление его в #minecraft:in_enchanting_table — это то, что вообще заставляет стол предлагать его; тег легко забыть, и это приводит к тому, что чары существуют, но никогда не появляются.
Создайте JSON-файл чар и его аналог для отделки Брони, с установленными тегами и слотами, в Custom Enchantment & Trim Builder.