Predykat z jednym warunkiem nie ma otoczki, a to prawdziwa zmiana kształtu
Jeden warunek to sam obiekt. Dwa lub więcej są opakowane w all_of lub any_of. Plus osiem typów warunków i dlaczego inwersja jest otoczką, a nie flagą.
Predykat w pakiecie danych to plik JSON opisujący warunek, a jego struktura zmienia się w zależności od liczby warunków. To właśnie ta część sprawia trudności osobom kopiującym przykład i rozszerzającym go.
Jeden to nie lista jednego
| warunki | kształt wyjściowy |
|---|---|
| 0 | {} |
| 1 | sam obiekt warunku |
| 2+ | { "condition": "minecraft:all_of", "terms": [ … ] } |
Nie ma otoczki wokół pojedynczego warunku. Dodaj drugi, a cały plik zmieni kształt — oryginalny warunek stanie się pierwszym elementem tablicy terms pod nowym korzeniem. Wszystko, co odczytuje lub generuje te dane, musi obsługiwać obie formy, a przykład zbudowany z jednego warunku nie pokaże ci kształtu, którego będziesz potrzebować w momencie dodania kolejnego.
any_of to alternatywny kombinator: wszystkie warunki muszą zostać spełnione, albo dowolny z nich.
Inwersja to też otoczka, a nie flaga
Nie ma pola "invert": true. Zanegowany warunek jest opakowany:
{ "condition": "minecraft:inverted", "term": { …the original condition… } }
Zauważ term, w liczbie pojedynczej — inverted przyjmuje dokładnie jeden, podczas gdy all_of i any_of przyjmują tablicę terms. Dwa podobnie wyglądające klucze o różnych kształtach, a inwersja dotyczy każdego warunku, więc predykat może swobodnie mieszać odwrócone i zwykłe warunki w jednym all_of.
Osiem typów warunków
entity_properties random_chance
value_check random_chance_with_looting
weather_check time_check
location_check match_tool
random_chance_with_looting to ten, na którym warto się zatrzymać: przyjmuje podstawową szansę i looting_multiplier, więc prawdopodobieństwo skaluje się z poziomem Grabieży (Looting) zabójcy. To sprawia, że ma on sens tylko tam, gdzie w kontekście istnieje zabójca — jest to warunek dotyczący szansy na wypadnięcie, a nie ogólny losowy przełącznik. Zwykły random_chance jest tym, po który należy sięgać wszędzie indziej.
value_check porównuje liczbę z jednym z trzech źródeł: poziomem zaklęcia, Szczęściem (Luck) lub niestandardowym wyrażeniem, które edytujesz ręcznie w JSON po skopiowaniu.
Selektory są dokładnie takimi samymi zestawami jak w grze
Warto wiedzieć, sprawdzając, czy identyfikator biomu lub struktury jest prawdziwy: rozwijane listy konstruktora nie są wyselekcjonowaną próbką.
- 66 biomów — każdy biom w grze, niczego nie brakuje i nic nie zostało wymyślone
- 34 struktury — podobnie
- 18 tagów bloków i 15 przedmiotów, które są działającym podzbiorem
Zostało to zweryfikowane na podstawie danych rejestru gry, a nie założone, więc jeśli identyfikator jest nieobecny na liście biomów lub struktur, identyfikator nie istnieje. W przypadku tagów bloków i przedmiotów jest odwrotnie: brak oznacza tylko, że selektor go nie wyświetla, a wpisanie identyfikatora samodzielnie jest w porządku.