Menüs schreiben
Erstes Menü #
Jede .yml-Datei unter plugins/CrossMenu/menus/ ist ein Menü. Der Pfad ohne .yml wird zu seiner ID.
title: "&8Shop"
rows: 3
open-commands: [shop]
items:
diamonds:
slot: 13
material: DIAMOND
name: "&bDiamonds"
lore:
- "&7Click to buy"
left-actions:
- "[console] give {player} diamond 1"
- "[message] &aPurchased."Verwende type: confirm oder type: input für Bestätigungs- und Texteingabemenüs. Bedrock-Spieler erhalten native Formulare, wenn Geyser oder Floodgate verfügbar ist. Java-Dialoge werden verwendet, wenn der Server sie unterstützt; andernfalls öffnet CrossMenu die Truhenversion.
Ein Menü ohne Befehl öffnen #
Neben open-commands kann sich ein Menü öffnen, wenn ein Spieler beitritt oder mit einem bestimmten Gegenstand klickt:
open-triggers:
join: true # open shortly after joining
join-delay-ticks: 40 # default 20, allowed 1-1200
item:
material: COMPASS # the item in the main hand
name: "&aServer menu" # optional; colour codes are ignored when comparing
click: right # right (default), left or anyopen-permission, open-requirement und das Öffnungs-Ratenlimit des Menüs gelten wie gewohnt. Ein passender Klick wird abgebrochen, der Gegenstand tut also nichts anderes. Nur ein Menü kann einen Auslöser beanspruchen: Beanspruchen zwei Menüs denselben Beitritt oder denselben Gegenstand samt Klick, gewinnt das Menü, dessen ID zuerst kommt, und die Konsole meldet das. Gib einem Citizens-NPC den Spielerbefehl crossmenu open <menu>.
Komponenten #
Lege gemeinsame Definitionen in eine beliebige .yml-Datei unter plugins/CrossMenu/components/. Jeder Schlüssel der obersten Ebene ist eine Komponente.
# components/common.yml
close-button:
material: BARRIER
name: "&cClose"
actions: ["[close]"]
dark-pane:
material: BLACK_STAINED_GLASS_PANE
name: " "Verwende eine Komponente in einem Menü und überschreibe nur, was sich ändert:
items:
close:
component: close-button
slot: 22
back:
extends: [close-button, dark-pane]
slot: 18
name: "&eBack"Komponenten werden von links nach rechts zusammengeführt. Im Menü geschriebene Schlüssel gewinnen immer. Listen und Skalarwerte werden als Ganzes ersetzt. Ein leerer lokaler Schlüssel entfernt den geerbten Wert. Unbekannte Namen, Schleifen und Typkonflikte werden mit Quelldatei und Zeile gemeldet.
Matrix-Layouts #
Eine Matrix macht Inventar-Layouts lesbar. Jede Zeile muss genau neun Zeichen enthalten. . und Leerzeichen sind leere Zellen.
rows: 3
matrix:
- "OOOOOOOOO"
- "O..S.C..O"
- "OOOOOOOOO"
items:
shop:
symbol: S
material: EMERALD
name: "&aShop"
close:
symbol: C
component: close-button
fill-item:
material: GRAY_STAINED_GLASS_PANE
name: " "fill-item deckt Zellen ab, die kein sichtbarer Gegenstand belegt, und wird immer hinter normalen Gegenständen gezeichnet. Slot- Nummern und Symbole können im selben Menü verwendet werden.
Aktionen und Bedingungen #
Zu den gängigen Aktionen gehören Spieler- und Konsolenbefehle, Nachrichten, Broadcasts, Sounds, Titel, Menü- Navigation, Schließen, Aktualisieren, Verbinden, Wirtschaftsänderungen und Gegenstandsänderungen.
left-actions:
- "[takemoney] 250"
- "[console] give {player} diamond 1"
- "[sound] entity.player.levelup"
left-click-requirement:
requirements:
funds:
type: has money
amount: 250
deny-actions:
- "[message] &cYou need $250."Bedingungen decken Berechtigungen, Geld, Erfahrung, Gegenstände, Vergleiche, Java-/Bedrock-Erkennung, Welt, Spielmodus, Datum/Uhrzeit und logische Gruppen ab. DeluxeMenus-Aliase wie perm, hasitem, equals, greater than, not equal to und != werden akzeptiert.
[player] führt den Befehl genau so aus, wie er geschrieben steht. Registriert kein Plugin diesen Befehl, passiert nichts, und der Spieler sieht keine Nachricht (DeluxeMenus zeigt hier das „Unknown command“ des Servers). Tippe einen neuen Befehl einmal selbst ein, um zu prüfen, ob er existiert.
Klicktypen, Seitenwechsel, Animationen, Berechnungen, generierte Listen, Sprachvarianten, Abklingzeiten und Nutzungslimits findest du in den mitgelieferten Beispielmenüs.