Guida
Come creare un plugin Minecraft con menu GUI
Aggiornato il 18 ottobre 2026
I menu del server (warp, negozi, kit, impostazioni) sono inventari a cassa che il plugin apre e controlla. Ogni slot contiene un oggetto che fa da pulsante. Sembrano semplici, ma un menu che non annulla ogni tipo di clic permette ai giocatori di portarsi a casa i pulsanti. Questa guida spiega come funzionano i menu e come farne creare e provare uno.
Parti da questo esempio.
Generalo con CodexePasso per passo
1.Disegna il menu
Un menu a cassa ha da 1 a 6 righe da 9 slot (da 9 a 54). Scrivi quale oggetto va in quale slot, cosa fa ogni clic e quali slot sono solo decorazione, come i pannelli di vetro.
2.Crea l'inventario con un holder
Aprilo con
Bukkit.createInventory(holder, size, title), usando una tua classeInventoryHolder. L'holder è il modo in cui il plugin capisce che un clic è avvenuto nel suo menu e non in una cassa normale.3.Gestisci i clic
In
InventoryClickEventcontrolla l'holder, annulla l'evento, poi esegui l'azione di quello slot. Dopo l'azione chiudi il menu o aggiornalo.4.Blocca ogni altro modo di spostare oggetti
Annulla anche
InventoryDragEvente gestisci shift-clic, tasti numerici e clic nell'inventario del giocatore mentre il menu è aperto.5.Aggiungi le pagine se la lista è lunga
Per warp od oggetti del negozio che non ci stanno, riserva l'ultima riga ai pulsanti indietro, avanti e chiudi.
6.Aprilo da un comando
Per esempio
/warps, oppure da un oggetto o da un NPC. Dai un permesso al comando se il menu non è per tutti.7.Compila e cliccaci dentro
Lascia che Codexe compili il plugin, entra nel server di prova e clicca ogni pulsante. Anche i giocatori di prova possono aprire il menu e cliccare gli slot al posto tuo.
Le regole che rendono sicuro un menu
- Riconosci il menu dal suo holder, mai dal titolo: il titolo lo può copiare qualsiasi cassa rinominata.
- Annulla il clic prima di fare qualsiasi altra cosa, così un errore nell'azione non lascia mai l'oggetto sul cursore del giocatore.
- Annulla i trascinamenti e gli shift-clic dall'inventario del giocatore, altrimenti si possono spingere oggetti dentro il menu.
- Non fidarti dell'oggetto nello slot: cerca l'azione in base al numero dello slot o a un tag sull'oggetto.
- Esegui il lavoro lento (letture dal database, richieste web) fuori dal thread principale e aggiorna il menu quando ha finito.
Menu dalla configurazione
Ai proprietari dei server piace cambiare i menu senza una nuova build. Chiedi che ogni menu sia definito in un file di configurazione, con dimensione, titolo e, per ogni pulsante, slot, materiale, nome, lore e azione:
| Chiave | Esempio | Cosa fa |
|---|---|---|
size | 27 | Numero di slot, un multiplo di 9 |
slot | 13 | Dove va il pulsante, contando da 0 |
material | ENDER_PEARL | L'oggetto mostrato |
action | warp:spawn | Cosa fa un clic: un warp, un comando, un altro menu |
Esempio di descrizione
"Un plugin per Paper 1.21.4 chiamato WarpMenu. /warps apre un menu da 6 righe con un pulsante per ogni warp, 45 per pagina, con i pulsanti indietro, avanti e chiudi nell'ultima riga. Gli admin aggiungono i warp con /setwarp <name> <material> e li tolgono con /delwarp. Cliccando un warp si viene teletrasportati dopo un'attesa di 3 secondi che si annulla se ci si muove. I giocatori non possono prendere né spostare nessun oggetto del menu. Warp salvati in warps.yml, titolo del menu, nomi dei pulsanti e messaggi in config.yml."
Provare i menu con i giocatori di prova
I giocatori di prova di Codexe possono aprire un menu e cliccare uno slot, poi controllare che si sia aperto un menu, sia comparso un messaggio o sia stato dato un oggetto. Aggiungi un test con parole tue, come "un giocatore normale esegue /warps, clicca lo slot 0 e vede il messaggio di teletrasporto", e verrà rieseguito ogni volta che Codexe consegna una modifica.
Domande
Funziona sulla 1.8?
I menu a cassa esistono in ogni versione dalla 1.8. L'API cambia nei dettagli (nomi dei materiali, titoli), quindi scrivi la versione nella richiesta.
Posso fare i menu con Skript?
Sì, con l'addon skript-gui, che il server di prova Skript di Codexe ha già installato. Per menu grandi o molto usati è meglio un plugin.
Un menu può avere una texture personalizzata?
Solo con una resource pack che cambia gli oggetti o lo sfondo dell'inventario. Lato plugin non cambia niente: slot, oggetti e clic.
Crea il tuo menu
Questo prompt si apre pronto da inviare:
“Un plugin per Paper 1.21.4 chiamato WarpMenu: /warps apre un menu da 6 righe con un pulsante per warp, 45 per pagina, pulsanti indietro/avanti/chiudi nell'ultima riga, /setwarp con nome e materiale e /delwarp per gli admin, attesa di 3 secondi prima del teletrasporto che si annulla se ci si muove, nessun oggetto si può prendere o spostare, warp salvati in warps.yml, titoli e messaggi in config.yml.”
Generalo con Codexe