Một điều kiện không có lớp bọc, và đó là một thay đổi hình dạng thực sự
Một điều kiện là chính đối tượng đó. Hai hoặc nhiều hơ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 tại sao đảo ngược là một lớp bọc chứ không phải là một cờ.
Một predicate (vị ngữ) 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 thuộc vào số lượng điều kiện bạn có. Đây là phần khiến mọi người gặp khó khăn khi sao chép một ví dụ và mở rộng nó.
Một không phải là một danh sách gồm một
| điều kiện | hình 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 xung quanh một điều kiện duy nhất. Thêm một điều kiện thứ hai và toàn bộ tệp sẽ thay đổ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 tạo ra các điều kiện này đều phải xử lý cả hai dạng, và một ví dụ được xây dựng từ một điều kiện sẽ không cho bạn thấy hình dạng bạn sẽ cần ngay khi bạn thêm một điều kiện khác.
any_of là bộ kết hợp thay thế: tất cả các điều khoản phải vượt qua, hoặc bất kỳ một trong số chúng.
Đảo ngược cũng là một lớp bọc, không phải là một cờ
Không có trường "invert": true. Một điều kiện phủ định được bọc:
{ "condition": "minecraft:inverted", "term": { …the original condition… } }
Lưu ý term, số ít — inverted chỉ nhận chính xác một, trong khi all_of và any_of nhận một mảng terms. Hai khóa trông tương tự nhưng có hình dạng khác nhau, và việc đảo ngược áp dụng cho mỗi điều kiện, vì vậy một predicate có thể tự do kết hợp các điều khoản đảo ngược và điều khoản thông thường bên trong một all_of.
Tám loại điều kiện
entity_properties random_chance
value_check random_chance_with_looting
weather_check time_check
location_check match_tool
random_chance_with_looting là điều đáng để dừng lại: nó nhận một cơ hội cơ bản và một looting_multiplier, vì vậy xác suất sẽ tăng theo cấp độ Nhặt (Looting) của kẻ giết người. Điều đó làm cho nó có ý nghĩa chỉ khi có kẻ giết người trong ngữ cảnh — đó là một điều kiện tỷ lệ rơi đồ, không phải là một cổng ngẫu nhiên đa năng. random_chance thông thường là cái để sử dụng ở mọi nơi khác.
value_check so sánh một số với một trong ba nguồn: cấp độ phù phép, may mắn (luck), hoặc một biểu thức tùy chỉnh mà bạn tự chỉnh sửa vào JSON sau khi sao chép.
Các bộ chọn chính xác là các bộ mặc định của vanilla
Điều đáng biết khi bạn kiểm tra xem một id quần xã (biome) hoặc cấu trúc có thật hay không: các danh sách thả xuống của trình tạo không phải là một mẫu được chọn lọc.
- 66 quần xã — mọi quần xã trong trò chơi, không thiếu gì và không có gì được tạo ra
- 34 cấu trúc — tương tự
- 18 thẻ khối và 15 vật phẩm, là một tập hợp con đang hoạt động
Điều này đã được xác minh dựa trên dữ liệu đăng ký của trò chơi chứ không phải giả định, vì vậy nếu một id không có trong danh sách quần xã hoặc cấu trúc, thì id đó không tồn tại. Đối với các thẻ khối và vật phẩm thì ngược lại: không có nghĩa là bộ chọn không liệt kê nó, và việc tự gõ id vẫn ổn.