Un predicato con una sola condizione non ha wrapper, e si tratta di un vero cambio di struttura
Una condizione è l'oggetto stesso. Due o più vengono racchiuse in all_of o any_of. In più gli otto tipi di condizioni, e perché invertire è un wrapper anziché un flag.
Un predicato di un data pack è un file JSON che descrive una condizione, e la sua struttura cambia a seconda di quante condizioni si hanno. Questa è la parte che trae in inganno chi copia un esempio e lo estende.
Uno non è una lista di uno
| condizioni | struttura dell'output |
|---|---|
| 0 | {} |
| 1 | l'oggetto condizione stesso |
| 2+ | { "condition": "minecraft:all_of", "terms": [ … ] } |
Non c'è alcun wrapper attorno a una singola condizione. Aggiungine una seconda e l'intero file cambia forma — la condizione originale diventa il primo elemento di un terms array under a new root. Anything that reads or generates these has to handle both forms, and an example built from one condition does not show you the shape you will need the moment you add another.
any_of is the alternative combinator: tutti termini devono essere soddisfatti, oppure uno qualsiasi di essi.
Anche l'inversione è un wrapper, non un flag
Non c'è alcun "invert": true field. A negated condition is wrapped:
{ "condition": "minecraft:inverted", "term": { …the original condition… } }
Nota term, singular — inverted takes exactly one, where all_of and any_of take a terms array. Two similar-looking keys with different shapes, and inversion applies per condition, so a predicate can mix inverted and plain terms freely inside one all_of.
Gli otto tipi di condizione
entity_properties random_chance
value_check random_chance_with_looting
weather_check time_check
location_check match_tool
random_chance_with_looting is the one worth pausing on: it takes a base chance e a looting_multiplier, so the probability scales with the killer's Looting level. That makes it meaningful only where a killer exists in context — it is a drop-rate condition, not a general-purpose random gate. Plain random_chance is the one to reach for everywhere else.
value_check compares a number against one of three sources: livello di incantesimo, fortuna, o un'espressione personalizzata che modifichi a mano nel JSON dopo aver copiato.
I selettori corrispondono esattamente ai set vanilla
Utile da sapere quando verifichi se l'ID di un bioma o di una struttura è reale: i menu a discesa del builder non sono un campione selezionato.
- 66 biomi — ogni bioma nel gioco, senza nulla di mancante e nulla di inventato
- 34 strutture — altrettanto
- 18 tag di blocchi e 15 oggetti, che sono un sottoinsieme funzionante
È stato verificato rispetto ai dati del registro del gioco anziché presunto, quindi se un ID è assente dall'elenco dei biomi o delle strutture, l'ID non esiste. Per i tag di blocchi e gli oggetti vale il contrario: l'assenza significa solo che il selettore non lo elenca, e inserire l'ID manualmente va benissimo.