Guides / Commands & Data

Đầu người chơi tùy chỉnh lưu URL được gói trong JSON base64, không phải hình ảnh

Thành phần hồ sơ chứa base64 của {textures:{SKIN:{url:…}}}. Đó là lý do tại sao hình dáng của một chiếc đầu được cố định tại thời điểm nó được tạo ra, và tại sao cơ sở dữ liệu có thể có hàng chục nghìn mục.

Một Đầu người chơi tùy chỉnh không chứa hình ảnh. Nó chứa một mã băm texture (texture hash), được gói trong JSON, sau đó được gói trong base64, nằm bên trong thành phần hồ sơ của vật phẩm.

Các lớp

Bắt đầu từ một mã băm, lệnh được xây dựng như sau:

1. hash        e3b0c44298fc1c149afbf4c8996fb924…
2. JSON        {"textures":{"SKIN":{"url":"http://textures.minecraft.net/texture/<hash>"}}}
3. base64      eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6…
4. component   /give @p player_head[profile={properties:[{name:"textures",value:"<base64>"}]}]

Bốn lớp để nói "chiếc đầu này trông giống hình ảnh đó". Thuộc tính luôn được đặt tên là textures, và giá trị luôn là base64 của hình dạng JSON đó.

Hai điều trực tiếp theo sau:

Một chiếc đầu là một ảnh chụp nhanh, không phải là một liên kết đến một người. URL trỏ đến một tệp texture bất biến, không phải đến một tài khoản. Bất cứ điều gì mà mã băm đó giải quyết được khi chiếc đầu được tạo ra thì nó sẽ luôn hiển thị như vậy.

Dữ liệu rất nhỏ. Một mục đầu người chơi bao gồm một tên, một mã băm và một số thẻ — hoàn toàn không có byte hình ảnh nào. Đó là lý do tại sao một danh mục có thể chứa hàng chục nghìn đầu người chơi dưới dạng JSON tĩnh đơn giản mà vẫn tải nhanh chóng.

Tại sao danh mục tải theo danh mục

Cơ sở dữ liệu ở đây là bộ sưu tập đầu người chơi CC0 của TheSilentPro, và nó được tìm nạp từng danh mục một thay vì tất cả cùng lúc. Một chỉ mục liệt kê các danh mục và số lượng của chúng; chọn một danh mục chỉ tìm nạp tệp đó.

Đó không phải là kỹ thuật lười biếng, đó là hình dạng duy nhất hoạt động ở kích thước này. Toàn bộ bộ sưu tập dưới dạng một JSON duy nhất sẽ là một bản tải xuống lớn đối với một người chỉ muốn ba chiếc đầu từ một danh mục.

Giới hạn hiển thị 300 mục là giới hạn của DOM, không phải giới hạn tìm kiếm

Kết quả được hiển thị tối đa 300 mục một lần. Tìm kiếm vẫn chạy trên mọi thứ trong danh mục đã tải — giới hạn áp dụng cho số lượng được chuyển thành các nút DOM, không phải số lượng được xem xét.

Sự khác biệt này quan trọng khi một tìm kiếm nói rằng nó đang hiển thị 300 mục đầu tiên: các mục bị thiếu đã được tìm thấy và đang bị giữ lại khỏi trang, chứ không phải bị loại trừ khỏi truy vấn. Thu hẹp tìm kiếm sẽ đưa chúng vào phạm vi thay vì tìm kiếm kỹ hơn.

Hiển thị hàng chục nghìn phần tử cùng một lúc là điều mà giới hạn này tồn tại để ngăn chặn, và đó là một giới hạn thực tế chứ không phải là một số tròn phòng thủ — một lưới lớn như vậy sẽ ngừng cuộn được rất lâu trước khi nó ngừng hiển thị được.

Không có gì ở đây tải lên bất cứ thứ gì

Dữ liệu đầu người chơi là JSON tĩnh cùng nguồn gốc. Yêu cầu bên thứ ba duy nhất là bản xem trước <img> từ mc-heads.net, giải quyết một mã băm thành một hình ảnh để hiển thị. Lệnh /give được lắp ráp cục bộ từ mã băm, vì vậy lệnh hoạt động cho dù bản xem trước đó có tải được hay không.

Kho đầu người chơi →

More guides

Browse all →

Cần thêm công cụ Minecraft khác?

Bộ công cụ tạo, xem và chuyển đổi chạy ngay trên trình duyệt — tất cả đều miễn phí.