Predikat dengan satu kondisi tidak punya pembungkus, dan itu perubahan bentuk yang nyata
Satu kondisi adalah objek itu sendiri. Dua atau lebih dibungkus dalam all_of atau any_of. Plus delapan tipe kondisi, dan mengapa pembalikan adalah pembungkus, bukan flag.
Predikat datapack adalah file JSON yang mendeskripsikan suatu kondisi, dan strukturnya berubah tergantung pada berapa banyak kondisi yang kamu miliki. Itulah bagian yang sering menjebak orang yang menyalin contoh lalu memperluasnya.
Satu bukan berarti daftar berisi satu
| conditions | bentuk keluaran |
|---|---|
| 0 | {} |
| 1 | objek kondisi itu sendiri |
| 2+ | { "condition": "minecraft:all_of", "terms": [ … ] } |
Tidak ada pembungkus di sekitar satu kondisi. Tambahkan kondisi kedua dan seluruh file berubah bentuk — kondisi asli menjadi elemen pertama dari array terms di bawah root baru. Apa pun yang membaca atau menghasilkan ini harus menangani kedua bentuk, dan contoh yang dibangun dari satu kondisi tidak menunjukkan bentuk yang kamu perlukan begitu kamu menambahkan kondisi lain.
any_of adalah kombinator alternatifnya: semua term harus lolos, atau salah satu di antaranya.
Pembalikan juga pembungkus, bukan flag
Tidak ada field "invert": true. Kondisi yang dinegasikan dibungkus:
{ "condition": "minecraft:inverted", "term": { …the original condition… } }
Perhatikan term, bentuk tunggal — inverted hanya menerima satu, sedangkan all_of dan any_of menerima array terms. Dua kunci yang terlihat mirip dengan bentuk berbeda, dan pembalikan berlaku per kondisi, jadi sebuah predikat bisa mencampur term yang dibalik dan term biasa dengan bebas di dalam satu all_of.
Delapan tipe kondisi yang ditawarkan builder
entity_properties random_chance
int_value_check random_chance_with_enchanted_bonus
weather_check time_check
location_check match_tool
Game ini memiliki dua puluh tipe kondisi; ini adalah delapan yang dicakup oleh pemilih builder. Dua di antaranya berganti nama, dan builder masih menulis id lama — random_chance_with_looting dan value_check — yang ditolak oleh versi terkini, jadi ganti nama keduanya di output.
random_chance_with_enchanted_bonus adalah yang perlu diperhatikan: ia menerima peluang tanpa enchantment dan sebuah enchanted_chance yang berskala dengan level enchantment (Penjarahan, dalam tabel vanilla sendiri), jadi probabilitasnya bergantung pada apa yang dipegang oleh pembunuhnya. Itu membuatnya bermakna hanya ketika ada pembunuh dalam konteks — ini kondisi laju drop, bukan gerbang acak serbaguna. random_chance biasa adalah yang sebaiknya dipakai di tempat lain.
int_value_check (dan float_value_check) menguji apakah suatu angka berada dalam rentang tertentu. Pemeriksaan nilai di builder menawarkan sumber level enchantment atau ekspresi kustom yang kamu edit ke dalam JSON secara manual setelah menyalinnya.
Pemilihnya persis sama dengan set vanilla
Perlu diketahui saat kamu memeriksa apakah id bioma atau struktur itu nyata: dropdown di builder bukanlah sampel pilihan.
- 66 bioma — semua bioma hingga 26.2;
dappled_forestdari 26.3 tidak ada, jadi ketik manual - 34 struktur — sama, hingga 26.2; 18 struktur
abandoned_camp_*yang ditambahkan 26.3 tidak terdaftar - 18 tag blok dan 15 item, yang memang subset yang berfungsi
Itu diverifikasi terhadap data registri game itu sendiri, bukan diasumsikan, jadi jika suatu id tidak ada dalam daftar bioma atau struktur dan bukan salah satu tambahan 26.3, id tersebut tidak ada. Untuk tag blok dan item justru sebaliknya: ketidakhadiran hanya berarti pemilih tidak mendaftarkannya, dan mengetik id sendiri tidak masalah.