Własne zaklęcia bez modów: format zaklęć oparty na danych
Zaklęcia stały się danymi paczek danych, więc własne zaklęcie nie wymaga moda. Oto kształt pliku, komponenty efektów, które faktycznie coś robią, oraz jak uczynić je osiągalnym.
Zaklęcia były kiedyś zaszyte na sztywno w kodzie. Teraz są danymi paczek danych, co oznacza, że naprawdę własne zaklęcie — nowa nazwa, nowy efekt, nowa krzywa kosztów — to plik JSON.
Gdzie to leży
data/<namespace>/enchantment/lightning_strike.json
W liczbie pojedynczej enchantment/, tak jak każda inna kategoria paczek danych od czasu zmiany nazwy.
Minimalny plik
{
"description": { "translate": "enchantment.my_pack.lightning_strike" },
"supported_items": "#minecraft:enchantable/melee_weapon",
"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"]
}
To wystarczy, by powstało prawdziwe zaklęcie, które się wczytuje i wyświetla na przedmiocie. Na razie nic nie robi — zachowanie jest osobne — a stół nie zaproponuje go, dopóki nie zostanie otagowane (poniżej).
weightto rzadkość przy stole do zaklinania. Vanilla używa 10 dla pospolitych, 1 dla bardzo rzadkich. Jest to wartość względna, nie procentowa.slotsdecyduje, gdzie zaklęcie jest aktywne:mainhand,offhand,armor,headi tak dalej. Jest wymagane: pomiń je, a plik się nie wczyta.supported_itemsprzyjmuje tag przedmiotu lub listę. Tagi#minecraft:enchantable/*już istnieją dla sensownych grup —melee_weapon,sharp_weapon,mining,armori tak dalej. Nie maenchantable/sword; tag, który nie istnieje, powoduje błąd pliku.
Jak sprawić, by coś robiło
effects przypisuje zachowanie:
"effects": {
"minecraft:post_attack": [{
"enchanted": "attacker",
"affected": "victim",
"effect": { "type": "minecraft:run_function", "function": "my_pack:strike" },
"requirements": { "condition": "minecraft:random_chance", "chance": 0.25 }
}]
}
post_attack musi wiedzieć, czyim zaklęciem jest (enchanted) i na kogo działa efekt (affected) — oba są wymagane. run_function to furtka — wszystko, co potrafi funkcja, potrafi też zaklęcie. Wbudowane typy efektów obejmują obrażenia, odrzut, wytrzymałość, upuszczane przedmioty i atrybuty bez potrzeby używania funkcji, i są tańsze.
requirements przyjmuje dowolny predykat, więc warunkowanie na typ celu, pogodę lub losową szansę to jeden blok JSON.
Nazywanie
description to komponent tekstowy, więc zaszyta na sztywno nazwa działa:
"description": { "text": "Lightning Strike", "color": "gold" }
ale klucz translate plus plik językowy w paczce zasobów to coś, co sprawia, że czyta się poprawnie dla graczy w innych językach — z tego samego powodu ta strona bierze terminy z gry z własnych tłumaczeń Mojanga.
Jak uczynić je osiągalnym
Trzy drogi, a zwykle chcesz więcej niż jednej:
- Stół do zaklinania — gdy
weighti krzywa kosztów są ustawione, a zaklęcie jest w#minecraft:in_enchanting_table. - Tabele łupów —
enchant_randomlyz twoim zaklęciem na liście lubenchant_with_levels, jeśli ma konkurować kosztem. - Osadnik handluje — zaklęta książka z twoim zaklęciem w przedmiocie handlu.
Dodanie go do #minecraft:in_enchanting_table sprawia, że stół w ogóle je zaproponuje; o tagu łatwo zapomnieć, a skutkuje to zaklęciem, które istnieje, ale nigdy się nie pojawia.
Zbuduj JSON zaklęcia i jego odpowiednik dla zdobień zbroi, z ustawionymi tagami i slotami, w Kreatorze własnych zaklęć i zdobień.