Tekst JSON w /tellraw: clickEvent, hoverEvent i dlaczego Twoja wiadomość się nie wyświetla
Jeden źle postawiony nawias sprawia, że tellraw zawodzi po cichu. Oto prawidłowa struktura komponentu, akcje kliknięcia i najechania, które faktycznie działają na czacie, oraz zasada ucieczki, którą ludzie często pomijają.
/tellraw przyjmuje komponent tekstowy JSON, a tryb awarii jest mało pomocny: źle sformułowany komponent nie generuje żadnej wiadomości ani błędu. Wszystko poniżej dotyczy prawidłowego ułożenia struktury za pierwszym razem.
Trzy prawidłowe struktury
"plain string"
{"text":"one component"}
["joined ",{"text":"list","color":"gold"}]
Forma listy jest tą, której należy używać do wszystkiego, co interesujące, ponieważ każdy element może mieć własne formatowanie. Formatowanie pierwszego elementu jest dziedziczone przez resztę, chyba że zostanie ono nadpisane — dlatego ludzie otrzymują całą wiadomość niespodziewanie złotą. Aby tego uniknąć, rozpocznij listę pustym ciągiem:
/tellraw @a ["",{"text":"Warning: ","color":"red"},{"text":"low health"}]
Akcje kliknięcia
clickEvent przyjmuje akcję i wartość:
| Akcja | Wartość | Uwaga |
|---|---|---|
run_command | /spawn | Uruchamia jako Gracz, na jego poziomie uprawnień |
suggest_command | /msg Steve | Wypełnia pole czatu, nie wysyła |
open_url | https://… | Pyta przed otwarciem |
copy_to_clipboard | dowolny tekst | Najbardziej przyjazna opcja do udostępniania współrzędnych |
change_page | numer strony | Tylko Książki |
run_command to ta z pułapką: wykonuje się z uprawnieniami klikającego Gracza, a nie Bloku poleceń. Menu, które wywołuje /gamemode creative, nic nie robi dla zwykłego Gracza.
Akcje najechania
"hoverEvent":{"action":"show_text","contents":["Click to teleport"]}
show_text, show_item i show_entity. Zwróć uwagę na contents — starsze poradniki używają value, który został zastąpiony i teraz zawodzi po cichu. Ta pojedyncza zmiana nazwy odpowiada za wiele niedziałających podpowiedzi po najechaniu, skopiowanych z samouczków.
Ucieczka to miejsce, gdzie się psuje
Cały komponent jest jednym argumentem polecenia, więc cudzysłowy wewnątrz muszą przetrwać parser poleceń. W Bloku poleceń wpisz go bezpośrednio. W pliku funkcji ucieczka za pomocą ukośnika odwrotnego nie jest potrzebna. W /give Zapisanej książce JSON jest ciągiem znaków wewnątrz ciągu znaków i potrzebuje ucieczki — to jest przypadek, który generuje nieczytelne ściany \".
Zasada kciuka: jeśli zagnieżdżasz komponenty tekstowe w komponencie przedmiotu, zbuduj go za pomocą narzędzia, a nie ręcznie.
Selektory w tekście
{"selector":"@p","separator":{"text":", "}}
rozwiązuje się do nazw Graczy w momencie wysyłania. {"score":{"name":"@s","objective":"Kills"}} pobiera wartość z tablicy wyników. Obie metody są lepsze niż samodzielne próby łączenia wartości.
Klucze tłumaczeń podróżują między językami
{"translate":"block.minecraft.crafting_table"}
renderuje się w języku każdego Gracza — 제작대 dla klienta koreańskiego, 作業台 dla japońskiego. Dla serwera wielojęzycznego jest to zdecydowanie lepsze niż twarde kodowanie angielskiego.
Zbuduj komponent wizualnie, z akcjami kliknięcia i najechania w ich obecnej formie, w Kreatorze poleceń tekstowych i wyświetlających.