Jak działa GUI z teksturą
Menu skrzyni pokazuje tytuł w lewym górnym rogu. Tytuł to tekst, a tekst może zawierać znaki z paczki zasobów serwera. ItemsAdder potrafi zamienić dowolny PNG w taki znak, nazywany font image. Wstaw duży font image do tytułu, a klient narysuje go nad ekranem skrzyni.
Żeby wszystko się zgrało, potrzebne są jeszcze dwa elementy. Ujemny offset przesuwa kursor w lewo przed obrazkiem, więc obraz zaczyna się przy lewej krawędzi skrzyni, a nie za wcięciem tytułu. y_position font image przesuwa go w górę lub w dół, aż zakryje całe menu.
Sloty zostają zwykłymi slotami. Tam, gdzie obrazek pokazuje przycisk, menu ma pusty, klikalny slot z material: air i własnymi akcjami po kliknięciu.
Czego potrzebujesz
- DeluxeMenus i PlaceholderAPI na serwerze Spigot lub Paper.
- ItemsAdder, który buduje paczkę zasobów i udostępnia placeholdery
%img_…%. - Działające dostarczanie paczki zasobów, żeby gracze faktycznie ją pobrali (ItemsAdder oferuje self-hosting i inne opcje hostingu).
- Obrazek tła w PNG. Minecraft nie pozwala na glify większe niż 256×256 pikseli, więc obraz musi się w tym zmieścić.
Krok 1: Przygotuj obrazek tła
Zaprojektuj menu w Kreatorze GUI: wybierz liczbę rzędów, motyw albo szablon i narysuj duże przyciski na kilku slotach. Jako eksport wybierz ItemsAdder, wpisz swój namespace (na przykład mymenus) i nazwę menu (na przykład shop).
Wyeksportowany PNG ma 256 pikseli szerokości. Wysokość zależy od liczby rzędów: od 164 pikseli przy jednym rzędzie do 254 pikseli przy sześciu. Dodatkowe miejsce wokół skrzyni pozwala ramkom i ozdobom wystawać poza zwykły obrys menu.
Krok 2: Zarejestruj font image w ItemsAdder
Skopiuj PNG do swojego namespace i dodaj wpis font_images. Tak wygląda eksport z Kreatora GUI dla menu z sześcioma rzędami:
info:
namespace: mymenus
font_images:
gui_shop:
path: gui/shop
show_in_gui: false
suggest_in_command: false
scale_ratio: 254
y_position: 45Sam obrazek trafia do plugins/ItemsAdder/contents/mymenus/resourcepack/assets/mymenus/textures/gui/shop.png.
scale_ratioto wysokość, w jakiej obraz jest rysowany. Użyj prawdziwej wysokości PNG w pikselach, żeby nic się nie rozciągnęło.y_positionprzesuwa obraz w pionie. ItemsAdder wymaga, żeby wartość była mniejsza lub równascale_ratio, bo gra nie pozwala na więcej.show_in_gui: falsesprawia, że tło nie pojawia się na liście emoji ItemsAdder.
Krok 3: Wstaw obrazek do tytułu menu DeluxeMenus
DeluxeMenus przetwarza placeholdery PlaceholderAPI w menu_title. ItemsAdder udostępnia %img_<nazwa>% dla obrazka i %img_offset_<piksele>% dla pustego miejsca, które może być ujemne.
menu_title: '&f%img_offset_-48%%img_gui_shop%%img_offset_-201%&8Shop'
open_command: 'shop'
register_command: true
size: 54
items:
button_1_buy:
material: air
slots: [10, 11, 19, 20]
priority: 1
click_commands:
- '[openguimenu] shop_buy'&fna początku zachowuje prawdziwe kolory obrazka. Bez tego obraz zostanie zabarwiony kolorem tytułu.%img_offset_-48%przesuwa kursor o 48 pikseli w lewo przed obrazkiem. Kreator GUI używa tej wartości dla swojego płótna: 8 pikseli na wcięcie tytułu skrzyni plus 40 pikseli marginesu, który dodaje z każdej strony.%img_gui_shop%to samo tło.- Drugi offset cofa kursor, więc
&8Shoppojawia się na obrazku tam, gdzie powinien być tytuł. Jego wartość zależy od szerokości obrazka; Kreator GUI oblicza ją za ciebie.
Jeśli w Kreatorze GUI wtopisz tytuł w obrazek, tytuł kończy się na placeholderze tła i nie ma drugiego offsetu.
Krok 4: Zarejestruj menu i przebuduj paczkę
DeluxeMenus wczytuje tylko menu wpisane w jego config.yml:
gui_menus:
shop:
file: shop.yml- Wpisz
/iazip, żeby ItemsAdder przebudował paczkę zasobów z nowym obrazkiem. - Wpisz
/dm reload. Otwórz menu raz przez/dm open shop, żeby je sprawdzić. register_command: truerejestruje/shopjako prawdziwą komendę, ale dopiero przy starcie serwera. Po dodaniu nowego menu zrestartuj serwer jeden raz.- Wejdź ponownie na serwer, zaakceptuj paczkę zasobów i otwórz menu.
Typowe błędy i rozwiązania
| Co widzisz | Przyczyna i rozwiązanie |
|---|---|
Tytuł pokazuje %img_gui_shop% jako tekst | Brakuje PlaceholderAPI albo nazwa jest błędna. Placeholder używa nazwy font image z configu, bez namespace. |
| Pusty kwadrat albo zły symbol zamiast obrazka | Paczka nie została przebudowana albo gracz ma starą paczkę. Wpisz /iazip i wejdź ponownie. |
| U części graczy w ogóle nie ma obrazka | Odrzucili paczkę zasobów serwera. Sprawdź hosting paczki i ustawienia serwera w kliencie. |
| Obrazek jest przesunięty | Pierwszy offset albo y_position nie pasuje do marginesów PNG. Wyeksportuj jeszcze raz zamiast zgadywać liczby. |
| Obrazek jest szary albo ciemniejszy | Brakuje &f przed obrazkiem. |
/shop to nieznana komenda | Serwer nie został zrestartowany po dodaniu menu albo menu brakuje w config.yml. |
| ItemsAdder odrzuca font image | y_position jest większe niż scale_ratio albo obrazek jest większy niż 256×256. |