MC Toolkit

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:

  1. pack.mcmeta w katalogu głównym paczki — obok data/, a nie wewnątrz niego.
  2. data/<namespace>/ — twoja przestrzeń nazw, małymi literami, bez spacji. Staje się ona prefiksem w my_namespace:my_function.
  3. 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:

StareObecne
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

  1. /datapack list — jeśli paczka w ogóle nie jest wymieniona, brakuje pack.mcmeta, jest on błędnie sformatowany albo o jeden poziom za głęboko.
  2. Wymieniona, ale wyłączona — /datapack enable "file/my_pack". Zwróć uwagę na prefiks file/ i cudzysłowy.
  3. Wymieniona i włączona, ale bez efektu — nazwy folderów w liczbie mnogiej albo tag ładowania we własnej przestrzeni nazw zamiast minecraft.
  4. /reload i przeczytaj log (logs/latest.log albo 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.

Datapack Studio →

Więcej poradników

Zobacz wszystkie →