Gói skin Bedrock gồm bốn tệp và hai lỗi không hiển thị
Hai UUID phải khác nhau, tệp ngôn ngữ không thể thiếu và khóa skin loại bỏ dấu câu – vì vậy 'My Skin!' và 'My Skin?' trở thành một skin mà không 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 chính xác 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 số bốn loại tệp này rất dễ làm đúng. Các 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 và một UUID khác trong mô-đun skin_pack của nó:
{
"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ứ bên trong gói – và việc sử dụng lại một giá trị cho cả hai là một lỗi thực sự mặc dù không có gì phàn nàn trong quá trình xây dựng.
Có một hệ quả thứ hai, tinh tế hơn: việc nhập lại với cùng UUID được coi là cùng một gói, và Minecraft âm thầm giữ lại bản sao mà nó đã có. Việc chỉnh sửa một gói, xây dựng lại nó với cùng các định danh và nhập lại trông như thể không có gì xảy ra. Mọi bản dựng từ trang này đều nhận được UUID mới vì lý do đó, đó cũng là lý do tại sao việc nhập lại một gói đã chỉnh sửa cần một bản tải xuống mới thay vì nén lại bản cũ.
Tệp ngôn ngữ không thể thiếu
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 đó tới văn bản:
skinpack.<PackKey>=My Pack
skin.<PackKey>.<SkinKey>=My First Skin
Nếu bạn gửi gói mà không có tệp ngôn ngữ, sẽ không có lỗi nào – mọi skin chỉ đơn giản xuất hiện trong trò chơi dưới dạng khóa thô của nó. Đây là lý do phổ biến nhất khiến một gói được lắp ráp thủ công trông bị hỏng trong khi vẫn được xác thực tốt.
Khóa loại bỏ dấu câu và các bản sao bị gộp lại
Một khóa phải là chữ và số. Mọi thứ khác đều bị loại bỏ:
| Tên của bạn | Khóa |
|---|---|
My Skin! | MySkin |
My Skin? | MySkin |
Skin #2 | Skin2 |
!!! | Skin1 (dự phòng, theo vị trí) |
Hai hàng đầu tiên là cái bẫy. Hai skin được đặt tên khác nhau bởi con người trở thành một khóa, và một khóa trùng lặp không gây lỗi – nó âm thầm gộp lại thành một skin duy nhất trong trò chơi. 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 bảo vệ 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 nó đã sử dụng, vì vậy MySkin thứ hai trở thành MySkin1. Điều đáng biết nếu bạn tự lắp ráp một gói: kiểm tra bạn cần là trên các tên đã loại bỏ, chứ không phải những tên bạn đã nhập.
Một tên hoàn toàn là dấu câu sẽ không để lại gì cả, vì vậy nó sẽ quay lại Skin cộng với vị trí của nó trong danh sách.
Slim cần chuỗi hình học phù hợp
Mỗi mục đặt tên một mô hình, và có hai loại:
geometry.humanoid.custom– cổ điển, cánh tay 4 pixelgeometry.humanoid.customSlim– mảnh mai (slim), cánh tay 3 pixel
Việc làm sai điều này là nguyên nhân thông thường khiến một skin có tỷ lệ Alex xuất hiện với cánh tay thô của Steve. Kết cấu vẫn ổn; mô hình là cái đang được yêu cầu. Trình tạo gói suy luận nó bằng cách lấy mẫu cột cánh tay thứ tư, nhưng một skins.json viết tay phải nói rõ điều đó, và hai chuỗi khác nhau bốn ký tự ở cuối.
Các mục cũng mang "type": "free", và một áo choàng (cape) là một tệp PNG tùy chọn bổ sung được tham chiếu từ cùng một mục – áo choàng đi kèm bên trong gói skin chứ không phải là một bản tải xuống riêng biệt.