Phù phép tùy chỉnh không cần mod: định dạng phù phép dựa trên dữ liệu
Phù phép giờ đây là JSON datapack, nên một phù phép tùy chỉnh không cần mod. Đây là cấu trúc tệp, các thành phần hiệu ứng thực sự có tác dụng, và cách để có được nó.
Phù phép trước đây được mã hóa cứng. Giờ chúng là dữ liệu datapack, nghĩa là một phù phép tùy chỉnh thực sự — tên mới, hiệu ứng mới, đường cong chi phí mới — chỉ là một tệp JSON.
Nơi lưu trữ
data/<namespace>/enchantment/lightning_strike.json
Số ít enchantment/, giống như mọi danh mục datapack khác kể từ lần đổi tên.
Tệp tối thiểu
{
"description": { "translate": "enchantment.my_pack.lightning_strike" },
"supported_items": "#minecraft:enchantable/melee_weapon",
"weight": 2,
"max_level": 3,
"min_cost": { "base": 10, "per_level_above_first": 10 },
"max_cost": { "base": 50, "per_level_above_first": 10 },
"anvil_cost": 4,
"slots": ["mainhand"]
}
Chừng đó đã tạo ra một phù phép thực sự được tải và hiển thị trên vật phẩm. Nó chưa làm gì cả — hành vi là phần riêng — và bàn phù phép sẽ không đề xuất nó cho đến khi nó được gắn thẻ (bên dưới).
weightlà độ hiếm tại bàn phù phép. Bản gốc dùng 10 cho phổ biến, 1 cho rất hiếm. Đây là giá trị tương đối, không phải phần trăm.slotsquyết định nơi phù phép hoạt động:mainhand,offhand,armor,head, v.v. Đây là trường bắt buộc: bỏ qua nó và tệp sẽ không tải được.supported_itemsnhận một thẻ vật phẩm hoặc một danh sách. Các thẻ#minecraft:enchantable/*đã có sẵn cho những nhóm hợp lý —melee_weapon,sharp_weapon,mining,armorv.v. Không cóenchantable/sword; một thẻ không tồn tại sẽ làm tệp bị lỗi.
Làm cho nó có tác dụng
effects gắn hành vi:
"effects": {
"minecraft:post_attack": [{
"enchanted": "attacker",
"affected": "victim",
"effect": { "type": "minecraft:run_function", "function": "my_pack:strike" },
"requirements": { "condition": "minecraft:random_chance", "chance": 0.25 }
}]
}
post_attack cần biết phù phép thuộc về ai (enchanted) và hiệu ứng tác động lên ai (affected) — cả hai đều bắt buộc. run_function là lối thoát — bất cứ điều gì một hàm có thể làm, phù phép cũng có thể làm. Các loại hiệu ứng tích hợp sẵn bao gồm sát thương, đánh bật lùi, độ bền, vật phẩm rơi và thuộc tính mà không cần hàm nào cả, và chúng rẻ hơn.
requirements nhận bất kỳ vị từ nào, nên việc giới hạn theo loại của mục tiêu, thời tiết, hoặc một xác suất ngẫu nhiên chỉ là một khối JSON.
Đặt tên cho nó
description là một thành phần văn bản, nên một tên mã hóa cứng vẫn hoạt động:
"description": { "text": "Lightning Strike", "color": "gold" }
nhưng một khóa translate cộng với tệp ngôn ngữ trong resource pack mới là thứ khiến nó hiển thị đúng cho người chơi ở các ngôn ngữ khác — cùng lý do trang này lấy thuật ngữ trò chơi từ chính bản dịch của Mojang.
Làm cho nó có thể đạt được
Ba con đường, và bạn thường muốn nhiều hơn một:
- Bàn phù phép — một khi
weightvà đường cong chi phí được đặt và phù phép nằm trong#minecraft:in_enchanting_table. - Bảng chiến lợi phẩm —
enchant_randomlyvới phù phép của bạn được liệt kê, hoặcenchant_with_levelsnếu nó nên cạnh tranh về chi phí. - Dân làng trao đổi — một Sách được phù phép với phù phép của bạn trong vật phẩm trao đổi.
Thêm nó vào #minecraft:in_enchanting_table là thứ khiến bàn phù phép đề xuất nó; thẻ này dễ bị quên và tạo ra một phù phép tồn tại nhưng không bao giờ xuất hiện.
Tạo tệp JSON phù phép và bản đối chiếu armor-trim của nó, với các thẻ và ô được đặt, trong Custom Enchantment & Trim Builder.