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 |
| Hex BungeeCord | &x&f&f&0&0&0&0 | Plugin proxy, sebagian chat |
| MiniMessage | <red>Hello</red> | Plugin Paper modern |
| Komponen JSON | {"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 karakternya secara literal.
Kode legacy kehabisan warna
Sistem section-sign membawa set huruf warna tetap plus tombol format. Tidak ada cara untuk menyatakan 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 penanganannya terhadap reset format berbeda dari Java. String yang tampil benar di server Java bisa menampilkan karakter aneh di klien Bedrock, dan proxy cross-play sering menerjemahkan antara keduanya alih-alih meneruskan teks apa adanya. Jika server Anda menerima pemain Bedrock, uji hasilnya di keduanya.
Jebakan penyarangan
Kode legacy bersifat stateful: kode warna mereset format, jadi §l§cBold adalah merah dan tebal, tetapi §c§lBold hanya merah tebal sampai kode warna berikutnya, yang menghapus tebalnya. MiniMessage adalah pohon — <red><bold>text</bold></red> menutup dengan bersih. Mengonversi string MiniMessage yang tersarang 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 oleh plugin Anda, dan salin string persisnya dari Server Text Studio.