Poradniki / Rozwiązywanie problemów
Paczka danych się nie ładuje? Struktura folderów i trzy nazwy, które muszą się zgadzać
Paczka danych, która nie pojawia się na liście /datapack list, ma problem ze ścieżką, a nie z kodem. Oto dokładne drzewo, zasada przestrzeni nazw i foldery, których nazwy zostały zmienione.
/datapack list nic nie pokazuje albo pokazuje paczkę jako wyłączoną. Prawie zawsze JSON jest w porządku, a foldery są złe.
Drzewo
world/datapacks/my_pack/
├── pack.mcmeta
└── data/
├── my_namespace/
│ ├── function/ one .mcfunction per file
│ ├── recipe/
│ ├── loot_table/
│ ├── advancement/
│ └── predicate/
└── minecraft/
└── tags/
└── function/
└── load.json
Trzy nazwy muszą się zgadzać, a jedna z nich nie jest oczywista:
pack.mcmetaw katalogu głównym paczki — obokdata/, a nie wewnątrz niego.data/<namespace>/— twoja przestrzeń nazw, małymi literami, bez spacji. Staje się ona prefiksem wmy_namespace:my_function.- Nazwy folderów kategorii, które się zmieniły i są zwykle winowajcą.
Foldery przemianowano na liczbę pojedynczą
To zepsuło wiele paczek i wiele poradników:
| Stare | Obecne |
|---|---|
functions/ | function/ |
recipes/ | recipe/ |
loot_tables/ | loot_table/ |
advancements/ | advancement/ |
predicates/ | predicate/ |
structures/ | structure/ |
Paczka używająca nazw w liczbie mnogiej ładuje się — pojawia się w /datapack list — i po prostu nic nie robi, co jest najbardziej mylącym trybem awarii z całego zestawu. tags/ pozostał w liczbie mnogiej, ale foldery w jego wnętrzu przeszły na liczbę pojedynczą razem ze wszystkim innym — tags/functions/ to teraz tags/function/. Tak, to niespójne.
Uruchamianie czegoś automatycznie
Dwa specjalne tagi:
data/minecraft/tags/function/load.json → runs once on load/reload
data/minecraft/tags/function/tick.json → runs every tick
Zwróć uwagę na data/minecraft/, a nie na własną przestrzeń nazw — tag należy do Minecrafta, a funkcje, na które wskazuje, należą do ciebie:
{ "values": ["my_namespace:setup"] }
Diagnozowanie po kolei
/datapack list— jeśli paczka w ogóle nie jest wymieniona, brakujepack.mcmeta, jest on błędnie sformatowany albo o jeden poziom za głęboko.- Wymieniona, ale wyłączona —
/datapack enable "file/my_pack". Zwróć uwagę na prefiksfile/i cudzysłowy. - Wymieniona i włączona, ale bez efektu — nazwy folderów w liczbie mnogiej albo tag ładowania we własnej przestrzeni nazw zamiast
minecraft. /reloadi przeczytaj log (logs/latest.logalbo wynik z launchera). Funkcja z błędem składni jest tam pomijana z komunikatem „Failed to load function …”; czat mówi tylko, że przeładowanie się zakończyło.
Spakowane czy nie
Oba sposoby działają. Spakowane oznacza pack.mcmeta w katalogu głównym zipa, dokładnie tak jak w przypadku paczek zasobów. Forma folderowa jest łatwiejsza podczas tworzenia, bo /reload podchwytuje zmiany bez ponownego pakowania.
Umieszczanie na serwerze
Na serwerze ścieżka to <world>/datapacks/, gdzie <world> to wartość level-name w server.properties — a nie katalog główny serwera. Wrzucenie paczki do folderu serwera to najczęstszy błąd po stronie serwera.
Złóż paczkę z aktualnymi nazwami folderów i prawidłowym pack.mcmeta, a następnie pobierz ją gotową do wrzucenia, za pomocą Datapack Studio — i umieść swój tag ładowania w data/minecraft/tags/function/, jak wyżej.