Aller au contenu principal

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ètreTypeDescription
menuT extends AbstractContainerMenuLe menu container (source de vérité des slots)
playerInventoryInventoryInventaire du joueur (requis par vanilla)
titleComponentTitre affiché dans la barre de titre
panelWidthintLargeur du panneau (imageWidth vanilla)
panelHeightintHauteur du panneau (imageHeight vanilla)
Dimensions définies dans le constructeur

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

ChampDescription
this.leftPosPosition X gauche du panneau dans l'écran
this.topPosPosition Y haute du panneau dans l'écran
this.menuLe 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

AspectComportement
Rendu vanillaLes slots sont dessinés par AbstractContainerScreen.render() après renderBg()
SlotGridDessine les fonds des slots — doit être appelé dans buildLayout avant que les items ne soient dessinés par vanilla
PauseisPauseScreen() retourne false

Voir aussi