Teks merah yang sama rusak di Java dan Bedrock
Kode warna yang tampil sempurna di satu plugin muncul sebagai ampersand literal di plugin berikutnya. Formatnya yang jadi penyebab, bukan pluginnya.
Kode § dan tag MiniMessage bisa mendeskripsikan warna yang sama namun tetap ditolak oleh server yang sama. Teks server berwarna bukanlah satu format — setidaknya ada lima, dan tiap plugin berbeda pendapat soal mana yang mereka terima.
Lima dialek
| Dialek | Bentuknya | Di mana bertahan |
|---|---|---|
| Legacy section | §cHello | Chat Vanilla, plugin lama |
| Ampersand legacy | &cHello | File konfigurasi, banyak plugin |
| BungeeCord hex | &x&f&f&0&0&0&0 | Plugin proxy, sebagian chat |
| MiniMessage | <red>Hello</red> | Plugin Paper modern |
| JSON component | {"text":"Hello","color":"red"} | Perintah Vanilla, /tellraw |
Bentuk ampersand sama sekali bukan kode warna sampai ada yang menerjemahkannya. Tempel &c ke plugin yang mengharapkan MiniMessage dan pemain akan membaca karakter literalnya.
Kode legacy kehabisan warna
Sistem section-sign membawa set huruf warna tetap plus tombol format. Tidak ada cara untuk mengekspresikan warna sembarang di dalamnya. Hex datang belakangan, dan bentuk BungeeCord mengodekannya satu karakter demi satu karakter — &x diikuti enam digit hex berawalan &, itulah sebabnya bentuknya terlihat sangat panjang.
MiniMessage menerima #ff0000 secara langsung. JSON menerima hex yang sama sebagai nilai string.
Java dan Bedrock tidak sepakat
Bedrock juga memakai section sign, tetapi set warnanya dan penanganan reset formatnya berbeda dari Java. String yang tampil benar di server Java bisa menampilkan karakter liar di klien Bedrock, dan proxy cross-play sering menerjemahkan antara keduanya alih-alih meneruskan teks apa adanya. Jika server Anda menerima pemain Bedrock, uji outputnya di keduanya.
Jebakan penyarangan
Kode legacy bersifat stateful: kode warna mereset format, jadi §c§lBold berwarna merah dan tebal, tetapi §l§cBold hanya merah — kode warna setelah tebal menghapusnya. Warna dulu, baru format. MiniMessage adalah pohon — <red><bold>text</bold></red> menutup dengan rapi. Mengonversi string MiniMessage bersarang ke kode legacy menghilangkan strukturnya, karena legacy tidak punya tag penutup.
Escaping
MiniMessage memperlakukan < sebagai sintaks. Pemain bernama <Steve> merusak plugin apa pun yang mengurai namanya sebagai komponen. Format legacy punya masalah yang sama dengan &, itulah sebabnya banyak plugin mewajibkan && atau flag konfigurasi untuk meng-escape-nya.
Tulis teksnya sekali, pilih dialek yang benar-benar diurai plugin Anda, dan salin string persisnya dari Server Text Studio.