Sprites
Galdur UI dessine panneaux, boutons et champs avec des sprites 9-slice en niveaux de gris, teintés par le thème. Change les couleurs dans theme.json sans toucher une image, ou redessine les formes dans un pack de ressources.
En niveaux de gris, teintés au rendu
Les sprites de assets/galdurui/textures/gui/sprites/ sont en niveaux de gris. Leur couleur vient du thème et est appliquée au rendu : un pixel blanc prend exactement la couleur du thème. Modifier les couleurs de theme.json ne demande donc aucune nouvelle image ; seule la forme (coins, relief) est dans le sprite.
Les sprites
| Sprite | Taille, bordure | Relief | Utilisé par (teinte) |
|---|---|---|---|
panel | 256, 4 | bombé | GaldurPanelLayout (background) |
button, button_hover, button_pressed, button_disabled | 64, 4 | bombé (pressed en creux) | GaldurButton, GaldurIconButton (accent selon l’état, surface désactivé) |
field | 64, 4 | creux | champ de recherche, cadre de liste, case à cocher (surface), rail de barre de progression (background) |
slot | 64, 4 | creux | GaldurItemSlot, GaldurItemGrid (background) |
tab, tab_selected | 64, 4 | bombé, ouvert en bas | GaldurTabs (surface, accent pour l’onglet actif) |
scrollbar_track, scrollbar_thumb | 32, 2 | creux / bombé | barres de défilement de GaldurScrollList et GaldurItemGrid (background, text_muted) |
Les sprites aux mêmes pixels (button / button_hover / button_disabled, field / slot, tab / tab_selected) restent séparés exprès, pour qu’un pack de ressources puisse redessiner chaque état indépendamment.
Les redessiner dans un pack de ressources
Mets des PNG aux mêmes noms dans assets/galdurui/textures/gui/sprites/ de ton pack. Garde-les en niveaux de gris si tu veux que les couleurs du thème s’appliquent.
Minecraft 1.21.1 n’étire pas les bords et le centre d’un 9-slice : il les répète par tuiles (sprite − 2 × bordure). Bords et centre doivent rester uniformes, sinon la répétition se voit. Des sprites grands limitent le nombre de tuiles ; Galdur UI envoie de toute façon toutes les tuiles d’un sprite en un seul appel de dessin.
Régénérer les sprites intégrés
Les sprites intégrés sont produits par un générateur qui décrit leur forme :
.\gradlew.bat generateSpritesLe générateur (tools/GenerateSprites.java) est compilé dans un source set à part : il ne tourne pas au build et n’est pas dans le jar du mod. La CI le relance et échoue si les PNG commités ne correspondent plus à ce qu’il produit.
Des sprites comme icônes de bouton
addIconButton accepte aussi un sprite ResourceLocation à la place d’un objet. Il est teinté avec la couleur text du thème : fournis-le aussi en niveaux de gris.