Ten sam czerwony tekst psuje się na Java i Bedrock
Kod koloru, który działa bez zarzutu w jednym pluginie, w następnym wyświetla się jako dosłowne ampersandy. Powodem jest format, nie plugin.
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 akceptują.
Pięć dialektów
| Dialekt | Wygląda jak | Gdzie przetrwa |
|---|---|---|
| Legacy section | §cHello | Vanilla chat, starsze pluginy |
| Ampersand legacy | &cHello | Pliki konfiguracyjne, wiele pluginów |
| BungeeCord hex | &x&f&f&0&0&0&0 | Pluginy proxy, niektóre czaty |
| MiniMessage | <red>Hello</red> | Nowoczesne pluginy Paper |
| JSON component | {"text":"Hello","color":"red"} | Vanilla commands, /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 z znakiem sekcji niesie ze sobą stały zestaw liter kolorów oraz przełączniki 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 prefiksem &, 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 obsługa resetowania formatowania różnią się od Java. Tekst, który wyświetla się poprawnie na serwerze Java, może pokazywać zbłąkane znaki u klientów Bedrock, a proxy cross-play często tłumaczą między tymi dwoma formatami, zamiast przekazywać tekst dalej. Jeśli twój serwer przyjmuje graczy Bedrock, przetestuj wynik na obu.
Pułapka zagnieżdżania
Kody legacy są stanowe: kod koloru resetuje formatowanie, więc §c§lBold jest czerwony i pogrubiony, ale §l§cBold jest tylko czerwony — kod koloru po pogrubieniu go czyści. Najpierw kolor, potem formatowanie. MiniMessage to drzewo — <red><bold>text</bold></red> zamyka się czysto. Konwersja zagnieżdżonego tekstu MiniMessage na kody legacy gubi strukturę, ponieważ 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.