ApocalyContainerScreen<T>
Classe de base pour les écrans qui affichent des slots Minecraft (items déplaçables au curseur). Hérite de AbstractContainerScreen<T> et y ajoute le style Apocaly.
→ Pour les UIs sans slots : ApocalyScreen
→ Pour les UIs multi-panneaux : ApocalyMultiScreen
Constructeur
ApocalyContainerScreen(
T menu,
Inventory playerInventory,
Component title,
int panelWidth,
int panelHeight
)
| Paramètre | Type | Description |
|---|---|---|
menu | T extends AbstractContainerMenu | Le menu container (source de vérité des slots) |
playerInventory | Inventory | Inventaire du joueur (requis par vanilla) |
title | Component | Titre affiché dans la barre de titre |
panelWidth | int | Largeur du panneau (imageWidth vanilla) |
panelHeight | int | Hauteur du panneau (imageHeight vanilla) |
panelWidth et panelHeight doivent être passés au super() dans le constructeur, pas dans init(). Vanilla calcule leftPos et topPos à partir de imageWidth/imageHeight avant d'appeler init(). Si tu les modifies après, le panneau sera mal positionné.
Méthode abstraite
protected abstract void buildLayout(Row root);
Reçoit une Row (pas une Column). La Row représente la zone de contenu du panneau. Elle est appelée après que leftPos et topPos aient été calculés par vanilla — tu peux les utiliser dans buildLayout.
Champs utiles hérités
| Champ | Description |
|---|---|
this.leftPos | Position X gauche du panneau dans l'écran |
this.topPos | Position Y haute du panneau dans l'écran |
this.menu | Le container menu — accès à this.menu.slots |
Ces champs sont disponibles dans buildLayout (après super.init()).
Exemple complet
package ca.monmod.client.screen;
import ca.tawess123.apocalyinterface.api.layout.Row;
import ca.tawess123.apocalyinterface.api.screen.ApocalyContainerScreen;
import ca.tawess123.apocalyinterface.api.widget.SlotGrid;
import net.minecraft.network.chat.Component;
import net.minecraft.world.entity.player.Inventory;
public final class CoffreGuildeScreen extends ApocalyContainerScreen<CoffreGuildeMenu> {
public CoffreGuildeScreen(CoffreGuildeMenu menu, Inventory playerInventory) {
super(menu, playerInventory,
Component.translatable("monmod.screen.coffre"),
220, 120); // largeur, hauteur
}
@Override
protected void buildLayout(Row root) {
// leftPos et topPos sont disponibles ici
root.add(SlotGrid.builder()
.slots(this.menu.slots)
.screenOrigin(this.leftPos, this.topPos)
.build());
}
}
Pour un exemple complet avec le AbstractContainerMenu et l'enregistrement du MenuType via DeferredRegister, voir la recette marchand à slots.
Comportement automatique
| Aspect | Comportement |
|---|---|
| Rendu vanilla | Les slots sont dessinés par AbstractContainerScreen.render() après renderBg() |
SlotGrid | Dessine les fonds des slots — doit être appelé dans buildLayout avant que les items ne soient dessinés par vanilla |
| Pause | isPauseScreen() retourne false |
Voir aussi
- Référence SlotGrid — dessiner les fonds de slots
- Guide : Screen vs ContainerScreen
- Recette : Marchand à slots — exemple complet avec menu