Ten sam czerwony tekst psuje się inaczej na Java i Bedrock
Kod koloru, który działa bez zarzutu w jednym pluginie, w kolejnym wyświetla się jako dosłowne ampersandy. Powód leży w formacie, nie w pluginie.
Kod § i tag MiniMessage mogą opisywać ten sam kolor, a mimo to ten sam serwer je odrzuci. Kolorowy tekst na serwerze to nie jeden format — to co najmniej pięć, a pluginy nie zgadzają się co do tego, które z nich przyjmują.
Pięć dialektów
| Dialekt | Wygląda jak | Gdzie przetrwa |
|---|---|---|
| Znacznik sekcji (legacy section) | §cHello | Czat vanilla, starsze pluginy |
| Znacznik ampersanda (ampersand legacy) | &cHello | Pliki konfiguracyjne, wiele pluginów |
| Hex BungeeCord | &x&f&f&0&0&0&0 | Pluginy proxy, część czatu |
| MiniMessage | <red>Hello</red> | Nowoczesne pluginy Paper |
| Komponent JSON | {"text":"Hello","color":"red"} | Komendy vanilla, /tellraw |
Forma z ampersandem wcale nie jest kodem koloru, dopóki coś jej nie przetłumaczy. Wklej &c do pluginu, który oczekuje MiniMessage, a gracze zobaczą dosłowne znaki.
Kody legacy kończą się na kolorach
System ze znakiem sekcji niesie ze sobą stały zestaw liter kolorów oraz przełączników formatowania. Nie ma w nim sposobu na wyrażenie dowolnego koloru. Hex pojawił się później, a forma BungeeCord koduje go znak po znaku — &x, po którym następuje sześć cyfr hex z przedrostkiem &, i dlatego wygląda tak długo.
MiniMessage przyjmuje #ff0000 bezpośrednio. JSON przyjmuje ten sam hex jako wartość tekstową.
Java i Bedrock się nie zgadzają
Bedrock również używa znaku sekcji, ale jego zestaw kolorów i sposób obsługi resetowania formatowania różnią się od Java. Tekst, który poprawnie renderuje się na serwerze Java, może pokazywać przypadkowe znaki u klientów Bedrock, a proxy cross-play często tłumaczą między oboma formatami, zamiast przekazywać tekst dalej. Jeśli twój serwer przyjmuje graczy Bedrock, testuj wynik na obu.
Pułapka zagnieżdżania
Kody legacy są stanowe: kod koloru resetuje formatowanie, więc §l§cBold to czerwony i pogrubiony, ale §c§lBold jest pogrubiony na czerwono tylko do następnego kodu koloru, który czyści pogrubienie. MiniMessage to drzewo — <red><bold>text</bold></red> zamyka się czysto. Konwersja zagnieżdżonego tekstu MiniMessage na kody legacy gubi strukturę, bo legacy nie ma tagu zamykającego.
Escapowanie
MiniMessage traktuje < jako składnię. Gracz o nicku <Steve> psuje każdy plugin, który parsuje jego nick jako komponent. Formaty legacy mają ten sam problem z &, dlatego wiele pluginów wymaga && lub flagi w konfiguracji, aby go escapować.
Napisz tekst raz, wybierz dialekt, który faktycznie parsuje twój plugin, i skopiuj dokładny tekst z Server Text Studio.