Công thức tùy chỉnh: có hình dạng, không hình dạng và sử dụng thẻ thay vì liệt kê từng loại gỗ
Một công thức có hình dạng thường không thể chế tạo được do khóa bị sai hoặc mẫu bị đệm. Dưới đây là JSON, mẹo thẻ giúp gộp tám công thức thành một và cách kiểm tra.
Các công thức là một trong những tệp datapack dễ viết nhất và cũng dễ mắc lỗi tinh vi nhất, bởi vì một công thức bị hỏng sẽ thất bại trong im lặng — lưới chế tạo đơn giản là không làm gì cả.
Có hình dạng (Shaped)
{
"type": "minecraft:crafting_shaped",
"pattern": [ "SSS", "S S", "SSS" ],
"key": { "S": "minecraft:stone" },
"result": { "id": "minecraft:furnace", "count": 1 }
}
Ba quy tắc gây ra hầu hết các lỗi:
- Mọi ký tự trong
patternphải tồn tại trongkey, ngoại trừ dấu cách, có nghĩa là trống. - Mẫu là tương đối, không phải tuyệt đối. Một công thức 2×2 nên được viết thành hai hàng hai, không được đệm thành 3×3 bằng dấu cách. Đệm khiến nó chỉ có thể chế tạo được ở góc chính xác đó của lưới.
- Tất cả các hàng phải có cùng độ dài.
["SS", "S"]là không hợp lệ.
Không hình dạng (Shapeless)
{
"type": "minecraft:crafting_shapeless",
"ingredients": ["minecraft:stone", "minecraft:coal"],
"result": { "id": "minecraft:torch", "count": 4 }
}
Thứ tự không liên quan. Các mục trùng lặp phải được liệt kê mỗi mục một lần — hai Than có nghĩa là hai mục nhập.
Thẻ gộp một họ thành một công thức
Thay vì tám công thức cho tám loại ván gỗ:
"key": { "P": "#minecraft:planks" }
# đánh dấu một thẻ vật phẩm (item tag). #minecraft:planks, #minecraft:logs, #minecraft:wool, #minecraft:stone_crafting_materials và hàng chục thẻ khác đã tồn tại. Định nghĩa thẻ của riêng bạn chỉ cần một tệp:
data/<namespace>/tags/item/my_metals.json
{ "values": ["minecraft:iron_ingot", "minecraft:gold_ingot"] }
Lưu ý tags/item/ — số ít item, số nhiều tags. Sự không nhất quán đó là có thật.
Kết quả với các thành phần
"result": {
"id": "minecraft:diamond_sword",
"count": 1,
"components": { "minecraft:custom_name": "\"Excalibur\"", "minecraft:enchantments": { "sharpness": 5 } }
}
Đây là cách một vật phẩm tùy chỉnh trở nên có thể chế tạo được mà không cần mod.
Các loại công thức khác
crafting_shaped và crafting_shapeless là hai trong số nhiều loại. Cũng có sẵn: smelting, blasting, smoking, campfire_cooking, stonecutting, smithing_transform và smithing_trim. Các loại nấu ăn cần cookingtime và experience; cắt đá (stonecutting) cần một nguyên liệu duy nhất và một số lượng.
Kiểm tra
/reload sau đó thử lưới. Nếu không có gì xảy ra:
- Kiểm tra cuộc trò chuyện khi tải lại — JSON bị định dạng sai sẽ được báo cáo ở đó.
/recipe give @s <namespace>:<recipe>— nếu ID công thức sai, điều này sẽ gây lỗi,
cho bạn biết tệp không được đọc chút nào.
- Mở khóa công thức (recipe unlocking) tách biệt với việc công thức tồn tại. Một công thức hoạt động trong lưới ngay cả khi
nó không bao giờ xuất hiện trong Quyển sách công thức (recipe book).
Xây dựng JSON công thức, vị ngữ (predicate) và bộ công cụ (kit) với các khóa và thẻ đã được kiểm tra trong Datapack JSON Builders.