Vị từ chỉ có một điều kiện thì không có lớp bọc, và đó là một thay đổi cấu trúc thực sự
Một điều kiện thì chính là đối tượng đó. Từ hai điều kiện trở lên sẽ được bọc trong all_of hoặc any_of. Cùng với tám loại điều kiện, và lý do vì sao việc đảo ngược là một lớp bọc chứ không phải một cờ.
Một vị từ (predicate) trong datapack là một tệp JSON mô tả một điều kiện, và cấu trúc của nó thay đổi tùy theo số lượng điều kiện bạn có. Đó chính là phần khiến người ta sao chép một ví dụ rồi mở rộng nó bị vấp.
Một không phải là một danh sách chỉ có một phần tử
| số điều kiện | dạng đầu ra |
|---|---|
| 0 | {} |
| 1 | chính đối tượng điều kiện đó |
| 2+ | { "condition": "minecraft:all_of", "terms": [ … ] } |
Không có lớp bọc nào quanh một điều kiện đơn lẻ. Thêm điều kiện thứ hai và cả tệp đổi hình dạng — điều kiện ban đầu trở thành phần tử đầu tiên của một mảng terms dưới một gốc mới. Bất cứ thứ gì đọc hoặc sinh ra những thứ này đều phải xử lý cả hai dạng, và một ví dụ dựng từ một điều kiện sẽ không cho bạn thấy hình dạng bạn cần ngay khi thêm một điều kiện nữa.
any_of là bộ tổ hợp thay thế: tất cả các mục phải đạt, hoặc bất kỳ một mục nào đạt.
Đảo ngược cũng là một lớp bọc, không phải một cờ
Không có trường "invert": true. Một điều kiện bị phủ định sẽ được bọc:
{ "condition": "minecraft:inverted", "term": { …the original condition… } }
Lưu ý term, số ít — inverted nhận đúng một mục, trong khi all_of và any_of nhận một mảng terms. Hai khóa trông giống nhau nhưng có hình dạng khác nhau, và việc đảo ngược áp dụng cho từng điều kiện, nên một vị từ có thể trộn lẫn các mục bị đảo ngược và mục thường một cách thoải mái trong cùng một all_of.
Tám loại điều kiện mà trình dựng cung cấp
entity_properties random_chance
int_value_check random_chance_with_enchanted_bonus
weather_check time_check
location_check match_tool
Trò chơi có hai mươi loại điều kiện; đây là tám loại mà bộ chọn của trình dựng bao phủ. Hai trong số đó đã đổi tên, và trình dựng vẫn ghi các id cũ — random_chance_with_looting và value_check — mà các phiên bản hiện tại từ chối, nên hãy đổi tên hai cái đó trong đầu ra.
random_chance_with_enchanted_bonus là cái đáng để dừng lại suy nghĩ: nó nhận một xác suất không có phù phép và một enchanted_chance tỉ lệ theo cấp độ của phù phép (Nhặt, trong chính các bảng của vanilla), nên xác suất phụ thuộc vào thứ mà kẻ giết đang cầm. Điều đó khiến nó chỉ có ý nghĩa khi tồn tại một kẻ giết trong ngữ cảnh — nó là một điều kiện tỉ lệ rơi đồ, không phải một cổng ngẫu nhiên đa dụng. random_chance thuần túy là cái để dùng ở mọi nơi khác.
int_value_check (và float_value_check) kiểm tra xem một số có nằm trong một khoảng hay không. Phép kiểm tra giá trị của trình dựng cung cấp một nguồn cấp độ phù phép hoặc một biểu thức tùy chỉnh mà bạn tự sửa vào JSON bằng tay sau khi sao chép.
Các bộ chọn chính xác là các tập hợp của vanilla
Điều đáng biết khi bạn đang kiểm tra xem một id quần xã hay cấu trúc có thật hay không: các menu thả xuống của trình dựng không phải là một mẫu được tuyển chọn kỹ càng.
- 66 quần xã — mọi quần xã tính đến 26.2;
dappled_forestcủa 26.3 bị thiếu, nên hãy tự gõ nó bằng tay - 34 cấu trúc — tương tự, tính đến 26.2; 18 cấu trúc
abandoned_camp_*mà 26.3 thêm vào không được liệt kê - 18 thẻ khối và 15 vật phẩm, những cái này thì là một tập hợp con hoạt động được
Điều đó đã được đối chiếu với chính dữ liệu đăng ký của trò chơi chứ không phải phỏng đoán, nên nếu một id vắng mặt trong danh sách quần xã hoặc cấu trúc và không phải là một trong những bổ sung của 26.3, thì id đó không tồn tại. Với thẻ khối và vật phẩm thì ngược lại: sự vắng mặt chỉ có nghĩa là bộ chọn không liệt kê nó, và tự bạn gõ id vào là hoàn toàn ổn.