Hướng dẫn chơi Minecraft: Tạo data pack


Hướng dẫn chơi Minecraft: Tạo data pack

Bài viết này sẽ hướng dẫn bạn cách tạo data pack.

Bắt đầu

Data packs được dùng để chèn thêm hoặc định dạng các functionsloot tables, cấu trúc của thế giới (world structures), advancementsrecipes, và tags.

Những việc không nên làm

Có một số việc mà bạn không nên làm trước khi tạo data pack. Đó là:

  • Làm bất cứ điều gì vi phạm các điều khoản sử dụng Mojang với Minecraft.
  • Phát hành phiên bản Minecraft hoặc sửa đổi cho phép người chơi khác chơi mà không cần mua Minecraft từ Mojang.
  • Phát hành mã nguồn dịch ngược của Minecraft theo bất kỳ cách nào.

Tạo data pack

Để tạo data pack, bắt đầu bằng cách điều hướng folder datapacks vào bên trong folder world.

Để tìm folder world, xác định vị trí của folder saves trong cây thư mục game của bạn, với tên mặc định là.minecraft.

  • Trong singleplayer, chọn world mà bạn muốn , chọn “Edit”, rồi chọn “Open world folder”.
  • Trên server, bạn có thể đi tới thư mục gốc của nó (là nơi propertiesở), rồi vào cây thư mục world.

Khi đã ở thư mục datapacks, tạo một thư mục với tên tùy chọn. Sau đó đó nhấn enter để vào thư mục.

Điều đầu tiên cần làm sau khi vào thư mục là tạo file pack.mcmeta. Bước này sẽ giúp  Minecraft định data pack của bạn

Tạo file MCMETA

Để tạo file MCMETA, nhấp chuột phải vào folder data pack vào tạo text document mới. Đặt tên “pack.mcmeta”.

Lưu ý

Hãy chắn chắn rằng phần mở rộng của file là .mcmeta chứ không phải là .txt khi bạn làm bước đổi tên! Nói cách khác, hãy loại bỏ phần mở rộng . Bạn có thể sẽ nhận được cảnh báo rằng đổi phần mở rộng sẽ làm file không hoạt động được. Tuy nhiên, bạn nên hiểu rằng đó cũng là thông báo để báo hiệu rằng bạn đã đổi tên file pack.mcmeta đúng.

Nếu bạn sử dụng Microsoft Windows và không thấy phần mở rộng, bạn nên vào menu View và check vào box file name extensions.

FileExtensions.png

Text editor

Phần mềm text editor nào cũng hoạt động, nhưng chúng tôi khuyên bạn nên dùng Notepad++. Vì nó là phần mềm text editor miễn phí, với cú pháp highlighting cho nhiều ngôn ngữ lập trình, bao gồm JSON, là format của phần mở rộng mcmeta và hầu hết file trong data pack. Notepad++ có thể được download tại [1].

Lưu ý: phần lớn các phần mềm text editor không nhận phần mở rộng mcmeta  như JSON. Vì vậy, bạn cần định dạng thủ công phần mềm soạn thảo.

Nội dung pack.mcmeta 

Mở pack.mcmeta trong phần mềm text editor và paste hoặc type đoạn bên dưới:

{
  "pack": {
    "pack_format": 4,
    "description": "Tutorial Data Pack"
  }
}

pack_format có thể là bất kỳ số nào vì hiện tại nó không được thi hành. Phần description có thể là một chuỗi hoặc 1 đoạn raw JSON text thô. . Nó sẽ hiển thị khi bạn di chuột qua data pack của bạn trong output từ list /datapack.

Lưu ý

File này được viết trong JSON! Hướng dẫn này không đi sâu vào chi tiết cụ thể về việc định dạng, nhưng hãy lưu ý về cách mọi thứ được trình bày. Hãy cẩn thận đừng quên dấu ngoặc kép, dấu hai chấm, và dấu ngoặc nhọn hoặc vuông. Thiếu một trong số chúng sẽ có thể dẫn đến việc data pack của bạn không hoạt động chính xác! Để kiểm tra các file, bạn có thể sử dụng trình xác nhận JSON, chẳng hạn như tệp được tìm thấy trên JSONLint.

Thử Pack

Khi đã tạo xong file pack.mcmeta của mình, hãy thử test nó trong game! Mở world của bạn, hoặc nếu bạn đang mở nó sẵn, hãy gõ /reload, rồi gõ /datapack list. Nó sẽ list ra 2 vật thể. Một nên là [vanilla], cái còn lại nên có tên [file/(your data pack’s name)], tên data pack của bạn sẽ nằm ở (your data pack’s name). Khi bạn di chuột qua mục entry data pack, bạn sẽ thấy mô tả về gói dữ liệu của mình như bạn đã viết ở description của pack.mcmeta.

Khi pack của bạn xuất hiện, bạn đã sẵn sàng để tiếp tục.

Xử lý sự cố

Nếu bạn không thấy pack của mình trong list, hãy đảm bảo file pack.mcmeta chính xác. Tìm các lỗi thiếu các dấu như {}, ,,:, “”, hoặc []. Hãy nhớ, có mở ngoặc thì phải đóng ngoặc.

Đặt tên

Tạo một thư mục tên data  trong thư mục data pack, nơi có file pack.mcmeta. Trong folder data , bạn phải tạo một thư mục sẽ hoạt động như namespace của bạn

Các vật thể trong data packs có ID namespaced IDs trong namespace:path. Các file tương ứng sẽ được đặt tại data/namespace/(data_type)/path.(suffix). Lưu ý rằng dấu / trong đường dẫn sẽ được dịch thành into directory separators.

Một vài ví dụ:

  • item tagcủa ID dummy:foo_proof/bar được đặt ở data/dummy/tags/item/foo_proof/bar.json
  • functioncủa ID foo:handler/bar_call được đặt ở data/foo/functions/handler/bar_call.mcfunction

Kí tự hợp pháp

Tên các folder và file Namespaces, paths trong data pack chỉ được chứa các kí tự bên dưới:

  • 0123456789Các con số
  • abcdefghijklmnopqrstuvwxyzCác kí tự viết thường
  • _Dấu gạch dưới
  • -Dấu gạch ngang
  • /Dấu phân cách, dấu gạch chéo / thư mục (Không thể sử dụng trong namespace)
  • .Dấu chấm (Không thể sử dụng trong namespace)

Quy ước đặt tên là chữ viết thường với dấu gạch dưới (lower_case_with_underscores).

Namespace

Hầu hết các đối tượng trong trò chơi đều có một ID namespaced để ngăn chặn xung đột nội dung tiềm ẩn hoặc ghi đè không chủ ý.

Ví dụ, nếu data pack thêm hai cơ chế minigame mới vào Minecraft và cả hai đều có một function tên start. Không có namespaces, hai functions sẽ đụng độ  với nhau và các minigame sẽ bị phá vỡ. Nhưng nếu chúng có 2 minigame riêng biệt là minigame_one và minigame_two,  các functions sẽ trở thành minigame_one:start và minigame_two:start, và không bị conflict.

Thương thì Minecraft sẽ yêu cầu ID, như cho/function, bạn nên cung cấp namespace ngoài đường dẫn. Nếu bạn không chỉ định namespace, sẽ có namespace dự phòng minecraft.

Hãy luôn sử dụng namespace riêng cho mọi thứ bạn thêm vào, và chỉ sử dụng các namespace khác nếu bạn ghi đè lên một thứ khác, hoặc, trong trường hợp các tags, nối vào thứ khác

Ví dụ, Minecraft dùng namespace minecraft, nghĩa là namespace này chỉ được sử dụng khi gói dữ liệu cần ghi đè lên dữ liệu Minecraft hiện có hoặc thêm các entry của nó vào các tag vanilla.

Functions

Functions là một chuỗi các câu lệnh chạy theo thứ tự.

Để thêm functions, tạo folder tên functions trong folder namespace. Sau đó, tạo file tên (function_name).mcfunction trong folder đó hoặc 1 folder con trong đó. Đó sẽ là file function. Function nên được đặt tên là (namespace):(name) hoặc(namespace):(subfolder1)/(subfolder2)/…/(name) trong game nếu như được đặt trong một folder con.

Bảng Loot

Bảng Loot sẽ báo cho Minecraft biết nên drop cái gì khi một mob bị giết, hoặc các vật chứa, chẳng hạn như rương sẽ chứa cái gì trong lần mở đầu tiên.

Để add bảng loot, tạo thư mục tên loot_tables trong folder namespace. Sau đó, tạo file tên (loot_table_name).json trong folder đó hoặc folder con của nó. File đó sẽ là file bảng loot. Bảng loot nên được đặt tên là (namespace):(name) hoặc (namespace):(subfolder1)/(subfolder2)/…/(name) trong game nếu nó nằm ở thư mục con.

Đây là ví dụ về bảng loot của bò, nó có thể được sử dụng như một tài liệu tham khảo:

{
        "pools": [
            {
                "rolls": 1,
                "entries": [
                    {
                        "type": "item",
                        "name": "minecraft:leather",
                        "weight": 1,
                        "functions": [
                            {
                                "function": "set_count",
                                "count": {
                                    "min": 0,
                                    "max": 2
                                }
                            },
                            {
                                "function": "looting_enchant",
                                "count": {
                                    "min": 0,
                                    "max": 1
                                }
                            }
                        ]
                    }
                ]
            },
            {
                "rolls": 1,
                "entries": [
                    {
                        "type": "item",
                        "name": "minecraft:beef",
                        "weight": 1,
                        "functions": [
                            {
                                "function": "set_count",
                                "count": {
                                    "min": 1,
                                    "max": 3
                                }
                            },
                            {
                                "function": "furnace_smelt",
                                "conditions": [
                                    {
                                        "condition": "entity_properties",
                                        "entity": "this",
                                        "properties": {
                                            "on_fire": true
                                        }
                                    }
                                ]
                            },
                            {
                                "function": "looting_enchant",
                                "count": {
                                    "min": 0,
                                    "max": 1
                                }
                            }
                        ]
                    }
                ]
            }
        ]
    }

Để hiểu từng tab có nghĩa gì, đọc Loot tables. Bài viết đó liệt kê một list bảng vanilla loot.

Cấu trúc

Cấu trúc có thể được sử dụng với structure blocks và jigsaw blocks và/hoặc có thể viết lại các cấu trúc vanilla nhất định trông như thế nào trong Minecraft. Nó được save dưới định dạng NBT. Bạn có thể tạo file NBT bằng cách sử dụng structure block hoặc export một kiến trúc sử dụng chương trình thứ ba như MCEdit.

Để add cấu trúc vào data pack, tạo folder tên structures trong folder namespace. Sau đó, chuyển file cấu trúc vào folder đó hoặc folder con của nó. Cấu trúc nên được đặt tên là (namespace):(name) hoặc (namespace):(subfolder1)/(subfolder2)/…/(name) trong game nếu nó nằm ở thư mục con.

Các thành tựu

Người chơi có thể hoàn thành các thành tựu và nhận được nhiều phần thưởng.

Để add thành tựu, tạo folder advancements trong folder namespace. Sau đó, tạo file tên (advancement_name).json (bạn không được cách khoảng khi đặt tên) trong folder vừa tạo hoặc folder con của nó. Đó là file advancement của bạn. Thành tựu mà bạn tạo nên được đặt tên là (namespace):(name) hoặc (namespace):(subfolder1)/(subfolder2)/…/(name) trong game nếu nó là thư mục con.

Công thức

Player dùng công thức để craft vật phẩm.

Để add công thức, tạo folder tên recipes trong folder namespace. Sau đó tạo file tên (recipe_name).json trong folder  vừa tạo hoặc trong folder  con của nó. Đó là file công thức của bạn. Công thứ của bạn sẽ được đặt tên là (namespace):(name) hoặc (namespace):(subfolder1)/(subfolder2)/…/(name) trong game nếu nó nằm trong thư mục con.

Chế tạo hình khối

Kiểu phổ biến đầu tiên là tạo hình khối.

{
        "type": "crafting_shaped",
        "pattern": [
            "123",
            "231",
            "312"
        ],
        "key": {
            "1": {
                "item": "<item ID>"
            },
            "2": {
                "item": "<item ID>"
            },
            "3": {
                "item": "<item ID>"
            }
        },
        "result": {
            "item": "<item ID>",
            "count": 5
        }
    }

Đây là một ví dụ sơ bộ về công thức tạo hình khối, như được chỉ định bởi kiểu crafting_shaped. pattern là một danh sách được sử dụng để xác định hình dạng của công thức chế tạo. Nó chứa tối đa 3 chuỗi, mỗi chuỗi đại diện cho một hàng trong lưới chế tạo. Các chuỗi này cũng chứa tối đa 3 ký tự đơn cạnh nhau, mỗi ký tự đại diện cho một vị trí trong lưới chế tạo. Không nhất thiết phải tạo 3 chuỗi hoặc có đủ 3 kí tự cho một chuỗi. Nhưng mỗi chuỗi của bạn nên chứa cùng một lượng ký tự. Bạn có thể sử dụng khoảng trắng để thể hiện các khoảng trống.

key là một tổ hợp được sử dụng để chú thích mục nào sẽ được sử dụng cho ký tự nào trong pattern. Có thể chỉ định bằng cách sử dụng theo item ID của vật phẩm hoặc theo tag bằng tag của item trong data pack.

result là một tổ hợp để miêu tả kết quả. count được sử dụng để xác định số lượng item sẽ được cung cấp.

Đây là công thức tạo piston (có thể sử dụng để tham khảo):

{
        "type": "crafting_shaped",
        "pattern": [
            "TTT",
            "#X#",
            "#R#"
        ],
        "key": {
            "R": {
                "item": "minecraft:redstone"
            },
            "#": {
                "item": "minecraft:cobblestone"
            },
            "T": {
                "tag": "minecraft:planks"
            },
            "X": {
                "item": "minecraft:iron_ingot"
            }
        },
        "result": {
            "item": "minecraft:piston"
        }
    }

Chế tạo không có hình khối

Một loại công thức khác cũng khá phổ biến là công thức không có hình khối.

{
        "type": "crafting_shapeless",
        "ingredients": [
            {
                "item": "<item ID>"
            },
            {
                "item": "<item ID>"
            },
            [
                {
                    "item": "<item ID>"
                },
                {
                    "item": "<item ID>"
                }
            ]
        ],
        "result": {
            "item": "<item ID>",
            "count": 5
        }
    }

Theo quy định của kiểu crafting_shapeless, đây là công thức không có pattern. ingredients có thể được đặt trong lưới chế tạo ở bất kỳ hình dạng hoặc hình thức. Trong ví dụ này, có một danh sách bên trong tổ hợp ingredients. Bạn có thể sử dụng bất kỳ vật phẩm nào trong danh sách này.

Đây là công thức gốc của Fire Charge (dùng để tham khảo):

{
        "type": "crafting_shapeless",
        "ingredients": [
            {
                "item": "minecraft:gunpowder"
            },
            {
                "item": "minecraft:blaze_powder"
            },
            [
                {
                    "item": "minecraft:coal"
                },
                {
                    "item": "minecraft:charcoal"
                }
            ]
        ],
        "result": {
            "item": "minecraft:fire_charge",
            "count": 3
        }
    }

Các Tag

Tag được sử dụng để nhóm các khối, vật phẩm hoặc chức năng với nhau. Ngoài ra, tag chức năng minecraft:tick  được sử dụng để chạy functions cho mỗi tick và tag function minecraft:load được dùng để chạy functions mỗi khi thế giới được tải lại.

Để add tags, tạo folder tên tags trong folder namespace. Trong folder này, tạo folder tên blocks, items và functions. Sau đó, tạo file tên (tag_name).json trong một trong những folder vừa tạo, hoặc folder con của nó. Đó sẽ là file tag của bạn.  File Tag sẽ được đặt tên là (namespace):(name) hoặc (namespace):(subfolder1)/(subfolder2)/…/(name) nếu nó nằm trong folder con.

Xem bài viết gốc tại ĐÂY