Poradniki / Budowanie i zasoby
Niestandardowe obrazy i płyty wymagają dwóch paczek, a instalacja tylko jednej to typowa przyczyna porażki
Datapack rejestruje zawartość; resource pack dostarcza teksturę i dźwięk. Sam datapack sprawia, że zawartość jest zarejestrowana, ale nie ma czego wyświetlić. Do tego limit 16×16 i to, co tak naprawdę kontroluje długość płyty.
Obrazy i płyty muzyczne to w nowoczesnej Java prawdziwe rejestry, co oznacza, że możesz je dodawać, a nie zastępować waniliowe. Nic, co dodasz, nie wypiera istniejącego obrazu ani płyty.
Haczyk polega na tym, że zawartość jest rozdzielona między dwa różne typy paczek, a każda z nich osobno jest bezużyteczna.
Co gdzie trafia
Datapack rejestruje rzecz:
data/<ns>/painting_variant/<id>.json asset_id, width, height, title, author
data/<ns>/jukebox_song/<id>.json sound_event, description, length_in_seconds, comparator_output
Resource pack dostarcza to, co widzisz i słyszysz:
assets/<ns>/textures/painting/<id>.png
assets/<ns>/sounds/<id>.ogg
assets/<ns>/sounds.json
Zainstaluj sam datapack, a zawartość zarejestruje się poprawnie — istnieje, /give ją znajdzie, tyle że po prostu nie ma tekstury ani dźwięku. To znacznie bardziej mylący rezultat niż jednoznaczna porażka i to typowa przyczyna tego, że niszowy obraz „nie działa". Narzędzie na tej stronie dostarcza obie paczki w jednym zipie specjalnie po to, żeby nie dało się ich rozdzielić.
Zwróć uwagę na dwa pliki pack.mcmeta. To osobne paczki o osobnych tożsamościach; nie istnieje format łączony, który mieściłby obie.
Identyfikatory rejestru są surowsze niż nazwy plików
Identyfikator może zawierać wyłącznie a-z, 0-9, _, . i - (plus / dla podfolderów). Cokolwiek innego i gra pomija ten plik z linią „Invalid path" w logu — paczka się ładuje, a wpis po prostu nigdy nie istnieje, co trudniej zauważyć niż błąd. Wielkie litery i spacje to dwa przypadki, które najczęściej łapią ludzi, bo oba są zupełnie zwyczajne w nazwie pliku, który przeciągnąłeś.
Obrazy: do 16×16, a 17 psuje paczkę
Waniliowe obrazy mają od 1 × 1 do 4 × 4 bloków i to narzędzie oferuje ten sam zakres. Format pozwala na więcej: 26.3 odczytuje width i height jako całe bloki od 1 do 16, a obraz 16 × 16 ładuje się, wisi i utrzymuje na każdej ścianie z 16 × 16 blokami miejsca — testowane na serwerze 26.3. O tym, czy obraz się utrzyma, decyduje miejsce, nie rozmiar: ten, który się nie mieści tam, gdzie wisi, wypada jako przedmiot, a waniliowy 1 × 1 bez niczego za sobą wypada dokładnie tak samo.
Powyżej 16 gra nie ogranicza liczby, tylko ją odrzuca. "width": 17 kończy się błędem „Value must be within range [1;16]", całe ładowanie rejestru zatrzymuje się razem z nim, a świat nie otworzy się, dopóki paczka nie zostanie usunięta.
Rozmiar jest deklarowany w JSON jako width i height, w blokach. Nie jest wywnioskowany z PNG, więc obraz 3 × 1, którego tekstura jest kwadratowa, to poprawny plik, który wyświetla się rozciągnięty.
Długość płyty to nie etykietka
length_in_seconds to moment, w którym gra uznaje, że utwór się skończył. Sekundę po zadeklarowanej długości szafa grająca ucina dźwięk, zatrzymuje nuty muzyczne i wyłącza sygnał redstone, który wydaje, gdy gra piosenka — pełna moc, do bloków wokół niej, dokładnie tak długo, jak długo jej zdaniem utwór jeszcze trwa.
Niedokładna długość to więc nie kosmetyczny błąd. Zadeklaruj 200-sekundowy utwór jako 100, a muzyka zostanie ucięta w połowie, a sygnał zniknie w tym samym momencie; zadeklaruj jako 300, a szafa grająca utrzyma sygnał przez 100 sekund ciszy. Tak czy inaczej, redstone czekający na koniec płyty zadziała w złym momencie. To narzędzie odczytuje rzeczywisty czas trwania z pliku, zamiast prosić cię o jego wpisanie, właśnie z tego powodu.
Komparator odczytuje coś innego: comparator_output, jedną stałą liczbę od 0 do 15, która utrzymuje się tak długo, jak płyta siedzi w szafie grającej — grając czy skończona. Nie rośnie w trakcie utworu i długość jej nie zmienia — wanilia używa jej do rozróżniania płyt (13 daje 1, Kot 2, blocks 3).
Utwory zapisuje się też z "stream": true w sounds.json. Muzyka jest długa, a wczytanie całego utworu do pamięci przed odtworzeniem powoduje zacinanie — strumieniowanie to właściwy domyślny wybór dla wszystkiego o długości płyty i zły dla krótkiego efektu dźwiękowego.