server-icon.png: persyaratan persisnya, dan API manajemen yang tidak pernah dipakai siapa pun
64x64, PNG, di direktori utama server — salah satu dari ketiganya saja meleset, ikonnya diam-diam tidak muncul. Ditambah API manajemen JSON-RPC yang menggantikan pembacaan layar konsol.
Ikon server adalah fitur kecil Minecraft yang paling tidak pemaaf, karena setiap mode kegagalannya terlihat sama persis: tidak ada ikon, tidak ada error.
Tiga persyaratan, semuanya wajib
- Tepat 64×64 piksel. Bukan 63, bukan 128. Server tidak mengubah ukuran.
- Format PNG. Benar-benar PNG, bukan JPG yang diganti nama.
- Bernama
server-icon.png, di direktori utama server — di sampingserver.properties, bukan di dalam folder world.
Melesetkan salah satunya saja dan server tetap menyala normal lalu menampilkan ikon bawaan. Ukuran yang salah atau berkas yang sebenarnya bukan PNG memang mencatat satu baris saat startup — Couldn't load server icon — tetapi berkas yang salah nama atau salah tempat tidak mencatat apa pun. (Tanpa server-icon.png sama sekali, server akan memakai icon.png milik world itu sendiri jika ada.)
Hal-hal lain yang juga merusaknya
- PNG interlaced. Sebagian editor menyimpan secara interlaced sebagai bawaan; pembaca Minecraft menolaknya. Ekspor ulang secara non-interlaced.
- Kedalaman warna 16-bit. Simpan sebagai 8-bit per kanal.
- Profil warna. Profil ICC yang tertanam kadang membuat parser tersandung. Hapus metadata saat mengekspor.
- Transparansi tidak masalah dan dirender dengan benar di daftar server.
Server hanya membacanya sekali
Server memuat server-icon.png saat menyala dan tidak pernah lagi. Mengganti berkasnya di server yang sedang berjalan tidak mengubah apa pun sampai di-restart — itulah sebabnya menguji perubahan ikon tanpa restart akan membuat Anda yakin bahwa perubahan itu tidak berhasil. Setelah restart, klien akan mengambil ikon baru pada penyegaran daftar server berikutnya.
API manajemen
Versi server terbaru menyediakan antarmuka manajemen JSON-RPC, yang merupakan pengganti resmi untuk mengurai keluaran konsol atau menempelkan plugin.
Aktifkan di server.properties:
management-server-enabled=true
management-server-host=localhost
management-server-port=25585
management-server-tls-enabled=false
TLS aktif secara bawaan dan memerlukan keystore (management-server-tls-keystore), jadi arahkan ke salah satunya atau — hanya di localhost — matikan seperti di atas; dengan TLS aktif dan tanpa keystore, server manajemen tidak akan menyala. Port-nya juga tidak punya bawaan (25585 hanya contoh).
Lalu buka WebSocket ke port tersebut, kirim management-server-secret dari server.properties sebagai Authorization: Bearer <secret>, dan bicaralah dalam JSON-RPC:
{ "jsonrpc": "2.0", "id": 1, "method": "minecraft:players" }
Metodenya mencakup daftar pemain, status server, allowlist dan ban list, gamerule, pengaturan, serta pasangan save/stop. Masing-masing mengembalikan JSON terstruktur alih-alih satu baris teks yang harus Anda regex.
Ikat ke localhost
Bawaannya adalah localhost dan sebaiknya tetap begitu. Antarmuka ini tidak dimaksudkan untuk menghadap internet — siapa pun yang mencapainya dengan secret bisa menghentikan server Anda, dan secret itu hanya seaman server.properties Anda. Paparkan melalui terowongan SSH atau reverse proxy dengan autentikasi jika Anda butuh akses jarak jauh, jangan pernah dengan mengubah host menjadi 0.0.0.0.
Mengapa ini penting
Dasbor, bot Discord, dan pemantau uptime selama ini bekerja dengan membaca log konsol atau memakai RCON, yang keduanya rapuh. API yang bertipe berarti widget jumlah pemain tidak rusak saat format baris log berubah.
Konversikan gambar apa pun menjadi server-icon.png yang sesuai dan jelajahi metode JSON-RPC di Server Icon & API Tools.