Przejdź do treści

Własne tło GUI w DeluxeMenus z ItemsAdder

Minecraft nie ma ustawienia na obrazek w tle menu, a mimo to wiele serwerów ma menu skrzyni, które wyglądają jak własne ekrany. Cały trik to font image w tytule menu: ItemsAdder zamienia twój plik PNG w znak, a ujemne offsety przesuwają ten znak nad skrzynię. Ten poradnik pokazuje krok po kroku, jak ustawić to w DeluxeMenus.

Aktualizacja:

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:

plugins/ItemsAdder/contents/mymenus/configs/gui_shop.yml
info:
  namespace: mymenus
font_images:
  gui_shop:
    path: gui/shop
    show_in_gui: false
    suggest_in_command: false
    scale_ratio: 254
    y_position: 45

Sam obrazek trafia do plugins/ItemsAdder/contents/mymenus/resourcepack/assets/mymenus/textures/gui/shop.png.

  • scale_ratio to wysokość, w jakiej obraz jest rysowany. Użyj prawdziwej wysokości PNG w pikselach, żeby nic się nie rozciągnęło.
  • y_position przesuwa obraz w pionie. ItemsAdder wymaga, żeby wartość była mniejsza lub równa scale_ratio, bo gra nie pozwala na więcej.
  • show_in_gui: false sprawia, ż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.

plugins/DeluxeMenus/gui_menus/shop.yml
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'
  1. &f na początku zachowuje prawdziwe kolory obrazka. Bez tego obraz zostanie zabarwiony kolorem tytułu.
  2. %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.
  3. %img_gui_shop% to samo tło.
  4. Drugi offset cofa kursor, więc &8Shop pojawia 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:

plugins/DeluxeMenus/config.yml
gui_menus:
  shop:
    file: shop.yml
  1. Wpisz /iazip, żeby ItemsAdder przebudował paczkę zasobów z nowym obrazkiem.
  2. Wpisz /dm reload. Otwórz menu raz przez /dm open shop, żeby je sprawdzić.
  3. register_command: true rejestruje /shop jako prawdziwą komendę, ale dopiero przy starcie serwera. Po dodaniu nowego menu zrestartuj serwer jeden raz.
  4. Wejdź ponownie na serwer, zaakceptuj paczkę zasobów i otwórz menu.

Typowe błędy i rozwiązania

Co widziszPrzyczyna i rozwiązanie
Tytuł pokazuje %img_gui_shop% jako tekstBrakuje PlaceholderAPI albo nazwa jest błędna. Placeholder używa nazwy font image z configu, bez namespace.
Pusty kwadrat albo zły symbol zamiast obrazkaPaczka nie została przebudowana albo gracz ma starą paczkę. Wpisz /iazip i wejdź ponownie.
U części graczy w ogóle nie ma obrazkaOdrzucili paczkę zasobów serwera. Sprawdź hosting paczki i ustawienia serwera w kliencie.
Obrazek jest przesuniętyPierwszy offset albo y_position nie pasuje do marginesów PNG. Wyeksportuj jeszcze raz zamiast zgadywać liczby.
Obrazek jest szary albo ciemniejszyBrakuje &f przed obrazkiem.
/shop to nieznana komendaSerwer nie został zrestartowany po dodaniu menu albo menu brakuje w config.yml.
ItemsAdder odrzuca font imagey_position jest większe niż scale_ratio albo obrazek jest większy niż 256×256.

Najczęstsze pytania

Czy gracze muszą coś pobrać, żeby zobaczyć własne tło GUI?

Tak, paczkę zasobów serwera, którą buduje ItemsAdder. Bez niej tytuł pokazuje kwadrat zastępczy albo nic. ItemsAdder może wysyłać paczkę automatycznie przy wejściu na serwer.

Dlaczego tytuł w DeluxeMenus pokazuje %img_…% jako tekst?

Placeholder nie jest zamieniany. Sprawdź, czy PlaceholderAPI jest zainstalowane, czy ItemsAdder się załadował i czy nazwa po img_ to dokładnie nazwa font image z twojego configu.

Czy mogę użyć tego samego tła w menu z mniejszą liczbą rzędów?

Tylko jeśli obrazek pasuje do rzędów. Skrzynia z trzema rzędami jest niższa niż z sześcioma, więc potrzebuje własnego PNG i własnego scale_ratio. Kreator GUI eksportuje właściwą wysokość dla każdej liczby rzędów.

Czy to działa bez ItemsAdder?

Ten sam trik działa z glifami Nexo albo Oraxen. Bez żadnego pluginu do paczek zasobów nadal zbudujesz czytelne menu z kolorowymi szybami, które Kreator GUI eksportuje z opcją „Brak”.

Źródła

Sprawdzone w oficjalnej dokumentacji: