Guides / Commands & Data

Kepala Kustom Menyimpan URL dalam JSON Base64, Bukan Gambar

Komponen profil menyimpan base64 dari {textures:{SKIN:{url:…}}}. Itulah mengapa tampilan kepala sudah tetap sejak dibuat, dan mengapa database bisa berisi puluhan ribu entri.

Kepala Pemain kustom tidak berisi gambar. Ia berisi hash tekstur, yang dibungkus dalam JSON, lalu dibungkus lagi dalam base64, dan berada di dalam komponen profil item.

Lapisan-lapisan

Dimulai dari sebuah hash, perintah dibangun seperti ini:

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>"}]}]

Empat lapisan untuk mengatakan "kepala ini terlihat seperti gambar itu". Properti ini selalu bernama textures, dan nilainya selalu base64 dari bentuk JSON tersebut.

Dua hal yang langsung mengikuti:

Kepala adalah sebuah snapshot, bukan tautan ke seseorang. URL menunjuk ke file tekstur yang tidak dapat diubah, bukan ke akun. Apa pun yang diresolusi oleh hash tersebut saat kepala dibuat, itulah yang akan selalu ditampilkannya.

Datanya sangat kecil. Sebuah entri kepala adalah nama, hash, dan beberapa tag — sama sekali tidak ada byte gambar. Itulah mengapa sebuah katalog dapat menampung puluhan ribu kepala sebagai JSON statis biasa dan tetap memuat dengan cepat.

Mengapa katalog dimuat berdasarkan kategori

Database di sini adalah koleksi kepala CC0 TheSilentPro, dan diambil satu kategori pada satu waktu daripada sekaligus. Sebuah indeks mencantumkan kategori dan jumlahnya; memilih satu hanya mengambil file tersebut.

Itu bukan rekayasa malas, itu adalah satu-satunya bentuk yang berfungsi pada ukuran ini. Seluruh koleksi sebagai satu JSON tunggal akan menjadi unduhan besar bagi seseorang yang hanya menginginkan tiga kepala dari satu kategori.

Batas render 300 item adalah batas DOM, bukan batas pencarian

Hasil ditampilkan paling banyak 300 sekaligus. Pencarian masih berjalan di seluruh item dalam kategori yang dimuat — batas berlaku untuk berapa banyak yang diubah menjadi node DOM, bukan berapa banyak yang dipertimbangkan.

Perbedaan ini penting ketika pencarian mengatakan sedang menampilkan 300 pertama: entri yang hilang ditemukan dan ditahan dari halaman, bukan dikecualikan dari kueri. Mempersempit pencarian membawa mereka ke dalam jangkauan daripada mencari lebih keras.

Menggambar puluhan ribu elemen sekaligus adalah apa yang ingin dicegah oleh batas ini, dan itu adalah batas nyata daripada angka bulat defensif — kisi sebesar itu berhenti dapat digulir jauh sebelum berhenti dapat dirender.

Tidak ada yang diunggah di sini

Data kepala adalah JSON statis asal yang sama (same-origin static JSON). Satu-satunya permintaan pihak ketiga adalah pratinjau <img> dari mc-heads.net, yang mengonversi hash menjadi gambar untuk ditampilkan. Perintah /give dirakit secara lokal dari hash, sehingga perintah berfungsi terlepas dari apakah pratinjau tersebut dimuat atau tidak.

Basis data kepala pemain →

More guides

Browse all →

Cari alat Minecraft lainnya?

Kumpulan generator, penampil, dan pengonversi yang berjalan di peramban — semuanya gratis.