Schermate Personalizzate
INFO
Questa pagina si riferisce a schermate normali, non quelle gestite - queste schermate sono quelle aperte dal giocatore sul client, non quelle gestite dal server.
Le schermate sono essenzialmente le GUI con cui il giocatore interagisce, come la schermata del titolo, la schermata di pausa ecc.
Puoi creare le tue schermate per mostrare contenuti personalizzati, un menu delle impostazioni personalizzato, e altro.
Creare una Schermata
Per creare una schermata, devi estendere la classe Screen
e fare override del metodo init
- puoi anche eventualmente fare override del metodo render
- ma assicurati di chiamare il suo metodo super altrimenti non renderizzerà lo sfondo, i widget ecc.
Dovresti prendere nota del fatto che:
- I Widget non vengono creati nel costruttore perché la schermata non è stata ancora inizializzata a quel punto - e alcune variabili, come
width
eheight
, non sono ancora disponibili o non sono ancora accurate. - Il metodo
init
viene chiamato quando lo schermo viene inizializzato, e questo è il posto migliore per creare i widget.- Si aggiungono widget usando il metodo
addDrawableChild
, che accetta qualsiasi widget disegnabile.
- Si aggiungono widget usando il metodo
- Il metodo
render
viene chiamato ogni frame - puoi accedere al contesto di disegno, e alla posizione del mouse da questo metodo.
Ad esempio, possiamo creare una semplice schermata che ha un pulsante e un'etichetta al di sopra.
java
public class CustomScreen extends Screen {
// :::3
// Add a custom widget to the screen.
// x, y, width, height
CustomWidget customWidget = new CustomWidget(40, 80, 120, 20);
this.addDrawableChild(customWidget);
// :::3
Aprire la Schermata
Puoi aprire la schermata usando il metodo setScreen
di MinecraftClient
- puoi farlo da vari posti, come un'associazione a un tasto, un comando, o un gestore dei pacchetti del client.
java
MinecraftClient.getInstance().setScreen(
new CustomScreen(Text.empty())
);
Chiudere la Schermata
Se vuoi chiudere lo schermo, semplicemente imposta la schermata a null
:
java
MinecraftClient.getInstance().setScreen(null);
Se vuoi essere sofisticato, e tornare alla schermata precedente, puoi passare la schermata corrente nel costruttore CustomScreen
e conservala in una variabile, per poi tornare alla schermata precedente usando il metodo close
.
java
public Screen parent;
public CustomScreen(Text title, Screen parent) {
super(title);
this.parent = parent;
}
@Override
public void close() {
this.client.setScreen(this.parent);
}
Ora, aprendo la schermata personalizzata, puoi passare la schermata corrente come secondo argomento - quindi quando chiami CustomScreen#close
- ritornerà alla schermata precedente.
java
Screen currentScreen = MinecraftClient.getInstance().currentScreen;
MinecraftClient.getInstance().setScreen(
new CustomScreen(Text.empty(), currentScreen)
);