MC Toolkit

Panduan / Bangunan & Sumber Daya

Slim atau klasik: game membaca akunmu, dan alat harus menebak dari 24 piksel

Game mengambil slim atau klasik dari pengaturan skin akunmu, bukan dari PNG. Alat yang hanya diberi PNG harus menebak dari dua kolom yang dikosongkan lengan slim. Plus peta UV lengkap dan mengapa skin lama 64×32 dicerminkan.

Tidak ada apa pun di dalam PNG skin yang menyatakan "slim". Tidak ada flag dan tidak ada konvensi nama file — dan game tidak pernah melihat pikselnya untuk mengetahuinya. Game mengambil model dari pengaturan model yang dilampirkan akunmu pada skin tersebut (pilihan yang kamu buat saat mengunggahnya), dan profil tanpa skin mendapat salah satu dari 18 skin bawaan, 9 slim dan 9 klasik, dipilih dari UUID-nya.

Hanya alat yang diberi PNG mentah — editor, pembuat paket, penampil — yang harus menyimpulkan modelnya, dan caranya dengan melihat persegi panjang 2 × 12 tertentu lalu menghitung berapa banyak pikselnya yang benar-benar terisi.

Ujinya

sample  x 54–55, y 20–31        — 2 wide, 12 tall = 24 pixels
count   pixels with alpha > 0
slim    if fewer than 6 are opaque

Lengan klasik lebarnya 4 piksel; lengan slim 3. Sisi-sisi lengan slim dikemas satu piksel lebih sempit, sehingga sisi samping dan sisi belakang bergeser ke kiri dan dua kolom terakhir blok lengan, x 54–55, dibiarkan kosong. Pada skin bawaan Mojang sendiri, persegi panjang itu berisi 0 dari 24 piksel opak pada kesembilan skin slim dan 24 dari 24 pada kesembilan skin klasik — dua puluh empat piksel cukup untuk membedakannya.

Ambangnya adalah 6 dari 24, bukan 1 — seperempat kolom harus terisi sebelum dianggap klasik. Toleransi itu penting: skin slim dengan beberapa piksel nyasar di kolom mati tetap terbaca sebagai slim, dan memang itu yang diinginkan, karena piksel nyasar itu hampir selalu kecelakaan saat mengedit, bukan kesengajaan.

Ini juga berarti mode kegagalannya senyap. Jika kamu menggambar skin klasik tetapi hanya sedikit memakai kolom-kolom itu — garis tepi tipis, beberapa piksel bayangan — kamu bisa berada di bawah 6 dan terdeteksi otomatis sebagai slim, kehilangan satu piksel lebar lengan tanpa penjelasan apa pun. Jika sebuah skin keluar dengan model yang salah di suatu alat, kolom-kolom itulah tempat mencarinya — dan di dalam game, pengaturan di akunmu adalah jawabannya.

Peta UV, selengkapnya

Setiap bagian skin adalah persegi panjang tetap, dan masing-masing punya lapisan overlay di tempat lain pada lembar tersebut:

bagiandasaroverlayoffsetukuran
kepala(8, 8)topi (40, 8)32 ke kanan8 × 8
badan(20, 20)jaket (20, 36)16 ke bawah8 × 12
lengan kanan(44, 20)lengan baju (44, 36)16 ke bawah4 × 12
kaki kanan(4, 20)celana (4, 36)16 ke bawah4 × 12
lengan kiri(36, 52)lengan baju (52, 52)16 ke kanan4 × 12
kaki kiri(20, 52)celana (4, 52)16 ke kiri4 × 12

Lima dari enam overlay berada tepat 16 piksel dari dasarnya — tetapi tidak ke arah yang sama. Tiga bagian asli bergeser 16 ke bawah. Lengan kiri dan kaki kiri, yang ditambahkan belakangan dan dijejalkan ke paruh bawah karena tidak ada ruang di bawahnya, justru bergeser 16 ke samping — dan ke arah yang berlawanan satu sama lain.

Topi adalah satu-satunya yang tidak berjarak 16 sama sekali: topi berada 32 ke kanan, pada baris yang sama dengan kepala.

Jadi "overlay ada di bawah dasar" adalah aturan yang hanya berlaku untuk separuh lembar. Menyalin persegi panjang dasar lalu menggesernya ke bawah untuk menemukan overlay-nya berhasil untuk badan, lengan kanan, dan kaki kanan, tetapi diam-diam mendarat di bagian yang salah untuk tiga bagian lainnya.

Pada skin slim, setiap persegi panjang lengan selebar 4 dibaca sebagai lebar 3. Sisi depannya tidak bergeser, tetapi semua yang setelahnya bergeser: sisi samping dan sisi belakang masing-masing mulai satu piksel lebih ke kiri, dan sisi belakang menjadi satu piksel lebih sempit, itulah yang membuat x 54–55 kosong.

Format lama 64 × 32 tidak punya sisi kiri sama sekali

Skin pra-1.8 berukuran 64 × 32 — paruh bawah lembar tersebut sama sekali tidak ada, padahal di situlah lengan kiri dan kaki kiri berada. Tidak ada apa pun untuk menggambarnya.

Solusinya adalah pencerminan: kaki kanan (0, 16) disalin ke (16, 48) dan lengan kanan (40, 16) ke (32, 48), keduanya dibalik secara horizontal. Itulah sebabnya skin lama sepenuhnya simetris sementara skin modern tidak harus demikian — asimetri adalah satu hal yang tidak bisa diungkapkan format 64 × 32, dan skin lama apa pun yang kamu konversi akan dipaksakan simetri padanya mau tidak mau.

File editor 128 × 128 adalah tata letak yang sama, dua kali ukurannya

Java menerima 64 × 64 atau 64 × 32 lama dan menolak yang lain. Editor skin Bedrock di situs ini bekerja pada 128 × 128 dan tidak menerima yang lain — tetapi file itu adalah tata letak UV yang sama yang digambar pada resolusi dua kali lipat, setiap bagian pada koordinat Java dua kali lipat, bukan format yang berbeda.

Dindingnya ada di alatnya, bukan di tata letaknya. Saluran tekstur setiap build editor disesuaikan dengan angkanya masing-masing, sehingga keduanya tidak akan membuka file milik yang lain, dan PNG 128 × 128 yang diberikan ke Java akan ditolak alih-alih ditampilkan pada setengah ukuran. Konversinya adalah penskalaan 2× yang mekanis, itulah sebabnya editor skin memperlakukan keduanya sebagai build terpisah alih-alih satu kanvas.

Pembuat avatar →

Panduan lainnya

Lihat semua →