MC Toolkit

Hướng dẫn / Xây dựng & tài nguyên

Gói skin Bedrock gồm bốn tệp, và hai kiểu lỗi của nó diễn ra âm thầm

Hai UUID bắt buộc phải khác nhau, một tệp lang không phải là tùy chọn, và khóa skin bị loại bỏ dấu câu — nên 'My Skin!' và 'My Skin?' trở thành một skin mà không hề báo lỗi.

Một .mcpack là một tệp zip với phần mở rộng khác, và một gói skin bên trong nó cần đúng bốn loại tệp:

manifest.json      a header and a skin_pack module, each with its own UUID
skins.json         one entry per skin: texture, geometry, and a KEY
texts/en_US.lang   the display names — skins.json holds only keys
*.png              the textures themselves

Ba trong bốn loại thì dễ làm đúng. Những lỗi thú vị đều đến từ mối quan hệ giữa chúng.

Hai UUID phải khác nhau

manifest.json mang một UUID trong header của nó và một UUID khác trong mô-đun skin_pack:

{
  "format_version": 1,
  "header":  { "name": "…", "uuid": "…", "version": [1, 0, 0] },
  "modules": [ { "type": "skin_pack", "uuid": "…", "version": [1, 0, 0] } ]
}

Chúng là hai danh tính riêng biệt — gói, và thứ nằm bên trong gói — và dùng lại một giá trị cho cả hai là một lỗi thực sự, dù không có gì phàn nàn lúc build.

Có một hệ quả thứ hai, tinh tế hơn: nhập lại với cùng UUID sẽ được coi là cùng một gói, và Minecraft âm thầm giữ lại bản sao nó đã có. Chỉnh sửa một gói, build lại với cùng các định danh rồi nhập lại trông như thể chẳng có gì xảy ra. Mọi bản build từ trang này đều nhận UUID mới chính vì lý do đó, và cũng vì thế mà nhập lại một gói đã chỉnh sửa cần tải xuống bản mới thay vì zip lại bản cũ.

Tệp lang không phải là tùy chọn

skins.json không bao giờ chứa tên hiển thị. Nó chứa một khóa, và texts/en_US.lang ánh xạ khóa đó thành văn bản:

skinpack.<PackKey>=My Pack
skin.<PackKey>.<SkinKey>=My First Skin

Xuất gói mà thiếu tệp lang thì không có lỗi nào xảy ra — mọi skin chỉ đơn giản xuất hiện trong game dưới khóa thô của nó. Đây là lý do phổ biến nhất khiến một gói tự lắp ráp trông hỏng trong khi vẫn validate bình thường.

Khóa loại bỏ dấu câu, và các bản trùng sẽ gộp lại

Một khóa phải là chữ và số. Mọi thứ khác đều bị xóa:

tên của bạnkhóa
My Skin!MySkin
My Skin?MySkin
Skin #2Skin2
!!!Skin1 (dự phòng, theo vị trí)

Hai hàng đầu chính là cái bẫy. Hai skin được con người đặt tên khác hẳn nhau trở thành một khóa, và một khóa trùng không hề báo lỗi — nó âm thầm gộp thành một skin duy nhất trong game. Bạn tải lên mười hai skin, nhận được mười một, và không có gì cho bạn biết cái nào đã biến mất.

Trình tạo ở đây chống lại điều đó bằng cách thêm một bộ đếm vào bất kỳ khóa nào đã được dùng, nên MySkin thứ hai trở thành MySkin2. Đáng để biết nếu bạn tự lắp ráp gói: thứ bạn cần kiểm tra là các tên sau khi đã lược bỏ, chứ không phải tên bạn đã gõ.

Một cái tên hoàn toàn là dấu câu sẽ chẳng còn lại gì, nên nó rơi về Skin cộng với vị trí của nó trong danh sách.

Slim cần đúng chuỗi hình học

Mỗi mục nêu tên một mô hình, và có hai loại:

  • geometry.humanoid.custom — cổ điển, tay 4 pixel
  • geometry.humanoid.customSlim — slim, tay 3 pixel

Làm sai điều này là nguyên nhân thường gặp của việc một skin với tỉ lệ Alex lại xuất hiện với cánh tay khối vuông của Steve. Texture vẫn ổn; mô hình mới là thứ đang bị yêu cầu. Trình tạo gói đoán nó từ hai cột mà một cánh tay slim để trống (x 54–55) và cho phép bạn sửa lại theo từng mục, nhưng một skins.json viết tay thì phải nói rõ ra, và hai chuỗi này khác nhau bốn ký tự ở cuối.

Các mục còn mang "type": "free", và áo choàng là một tệp PNG phụ tùy chọn được tham chiếu từ chính mục đó — áo choàng đi kèm bên trong gói skin chứ không phải như một bản tải xuống riêng.

Trình tạo skin pack →

Hướng dẫn khác

Xem tất cả →