# triumphteam/triumph-gui architecture

> Architecture diagram of the GitHub repository triumphteam/triumph-gui, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/triumphteam/triumph-gui
- Repository: https://github.com/triumphteam/triumph-gui

## Overview

triumph-gui is a Java library for creating and managing Minecraft inventory GUIs through Bukkit/Paper. A plugin developer configures a GUI or item builder, creates a GUI, and opens it for a player; GUI variants support pagination, scrolling, and persistent storage. The library also provides slot filling and item metadata/NBT utilities. The README is brief, and only selected source was sampled, so some runtime event wiring and feature-specific calls are not asserted here.

Main entry points: [`core/src/main/java/dev/triumphteam/gui/builder/gui/StorageBuilder.java`](https://github.com/triumphteam/triumph-gui/blob/master/core/src/main/java/dev/triumphteam/gui/builder/gui/StorageBuilder.java) (Storage builder), [`core/src/main/java/dev/triumphteam/gui/builder/item/ItemBuilder.java`](https://github.com/triumphteam/triumph-gui/blob/master/core/src/main/java/dev/triumphteam/gui/builder/item/ItemBuilder.java) (Item builders), [`core/src/main/java/dev/triumphteam/gui/guis/StorageGui.java`](https://github.com/triumphteam/triumph-gui/blob/master/core/src/main/java/dev/triumphteam/gui/guis/StorageGui.java) (Storage GUI), [`core/src/main/java/dev/triumphteam/gui/guis/BaseGui.java`](https://github.com/triumphteam/triumph-gui/blob/master/core/src/main/java/dev/triumphteam/gui/guis/BaseGui.java) (Base GUI)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["GUI and Item API"]
  node_entry["Library setup<br/>[TriumphGui.java]"]
  node_chestbuilder["Chest builders"]
  node_typedbuilder["Typed builders"]
  node_pagebuilder["Pagination builder"]
  node_scrollbuilder["Scrolling builder"]
  node_storagebuilder["Storage builder"]
  node_itembuilder["Item builders<br/>[ItemBuilder.java]"]
end

subgraph group_runtime["GUI Runtime"]
  node_container["Inventory container<br/>[GuiContainer.java]"]
  node_basegui["Base GUI<br/>[BaseGui.java]"]
  node_paginated["Paginated GUI<br/>[PaginatedGui.java]"]
  node_scrolling["Scrolling GUI<br/>[ScrollingGui.java]"]
  node_storage["Storage GUI<br/>[StorageGui.java]"]
  node_listener["GUI listener<br/>[GuiListener.java]"]
  node_filler["Slot filling<br/>[GuiFiller.java]"]
  node_guiitem["GUI item<br/>[GuiItem.java]"]
end

subgraph group_items["Item Support"]
  node_namehandler["Name and lore"]
  node_paperhandler["Paper metadata"]
  node_nbt["NBT utilities<br/>[NbtWrapper.java]"]
  node_itemnbt["Item NBT<br/>[ItemNbt.java]"]
end

node_developer(("Plugin developer"))
node_player(("Player"))
node_bukkit{{"Bukkit/Paper"}}

node_developer -->|"initializes"| node_entry
node_developer -->|"configures"| node_chestbuilder
node_developer -->|"configures"| node_typedbuilder
node_developer -->|"configures"| node_pagebuilder
node_developer -->|"configures"| node_scrollbuilder
node_developer -->|"configures"| node_storagebuilder
node_developer -->|"builds items"| node_itembuilder
node_storagebuilder -->|"creates from"| node_container
node_storagebuilder -->|"creates"| node_storage
node_player -->|"opens"| node_storage
node_storage -->|"opens inventory"| node_bukkit
node_bukkit -->|"dispatches events"| node_listener
node_filler -->|"sets slots"| node_basegui
node_basegui -->|"holds items"| node_guiitem
node_itembuilder -->|"sets metadata"| node_namehandler
node_itembuilder -.->|"sets metadata"| node_paperhandler
node_itemnbt -->|"uses wrapper"| node_nbt

click node_entry "https://github.com/triumphteam/triumph-gui/blob/master/core/src/main/java/dev/triumphteam/gui/TriumphGui.java"
click node_chestbuilder "https://github.com/triumphteam/triumph-gui/blob/master/core/src/main/java/dev/triumphteam/gui/builder/gui/ChestGuiBuilder.java"
click node_typedbuilder "https://github.com/triumphteam/triumph-gui/blob/master/core/src/main/java/dev/triumphteam/gui/builder/gui/TypedGuiBuilder.java"
click node_pagebuilder "https://github.com/triumphteam/triumph-gui/blob/master/core/src/main/java/dev/triumphteam/gui/builder/gui/PaginatedBuilder.java"
click node_scrollbuilder "https://github.com/triumphteam/triumph-gui/blob/master/core/src/main/java/dev/triumphteam/gui/builder/gui/ScrollingBuilder.java"
click node_storagebuilder "https://github.com/triumphteam/triumph-gui/blob/master/core/src/main/java/dev/triumphteam/gui/builder/gui/StorageBuilder.java"
click node_itembuilder "https://github.com/triumphteam/triumph-gui/blob/master/core/src/main/java/dev/triumphteam/gui/builder/item/ItemBuilder.java"
click node_container "https://github.com/triumphteam/triumph-gui/blob/master/core/src/main/java/dev/triumphteam/gui/components/GuiContainer.java"
click node_basegui "https://github.com/triumphteam/triumph-gui/blob/master/core/src/main/java/dev/triumphteam/gui/guis/BaseGui.java"
click node_paginated "https://github.com/triumphteam/triumph-gui/blob/master/core/src/main/java/dev/triumphteam/gui/guis/PaginatedGui.java"
click node_scrolling "https://github.com/triumphteam/triumph-gui/blob/master/core/src/main/java/dev/triumphteam/gui/guis/ScrollingGui.java"
click node_storage "https://github.com/triumphteam/triumph-gui/blob/master/core/src/main/java/dev/triumphteam/gui/guis/StorageGui.java"
click node_listener "https://github.com/triumphteam/triumph-gui/blob/master/core/src/main/java/dev/triumphteam/gui/guis/GuiListener.java"
click node_filler "https://github.com/triumphteam/triumph-gui/blob/master/core/src/main/java/dev/triumphteam/gui/components/util/GuiFiller.java"
click node_guiitem "https://github.com/triumphteam/triumph-gui/blob/master/core/src/main/java/dev/triumphteam/gui/guis/GuiItem.java"
click node_namehandler "https://github.com/triumphteam/triumph-gui/blob/master/core/src/main/java/dev/triumphteam/gui/builder/item/BukkitNameLoreHandler.java"
click node_paperhandler "https://github.com/triumphteam/triumph-gui/blob/master/paper/src/main/java/dev/triumphteam/gui/builder/item/PaperNameLoreHandler.java"
click node_nbt "https://github.com/triumphteam/triumph-gui/blob/master/core/src/main/java/dev/triumphteam/gui/components/nbt/NbtWrapper.java"
click node_itemnbt "https://github.com/triumphteam/triumph-gui/blob/master/core/src/main/java/dev/triumphteam/gui/components/util/ItemNbt.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_entry,node_chestbuilder,node_typedbuilder,node_pagebuilder,node_scrollbuilder,node_storagebuilder,node_itembuilder toneBlue
class node_container,node_basegui,node_paginated,node_scrolling,node_storage,node_listener,node_filler,node_guiitem toneAmber
class node_namehandler,node_paperhandler,node_nbt,node_itemnbt toneMint
class node_developer,node_player,node_bukkit toneIndigo
```

## Components

### GUI and Item API

- [Library setup](https://github.com/triumphteam/triumph-gui/blob/master/core/src/main/java/dev/triumphteam/gui/TriumphGui.java): `core/src/main/java/dev/triumphteam/gui/TriumphGui.java`
- [Chest builders](https://github.com/triumphteam/triumph-gui/blob/master/core/src/main/java/dev/triumphteam/gui/builder/gui/ChestGuiBuilder.java): `core/src/main/java/dev/triumphteam/gui/builder/gui/ChestGuiBuilder.java`
- [Typed builders](https://github.com/triumphteam/triumph-gui/blob/master/core/src/main/java/dev/triumphteam/gui/builder/gui/TypedGuiBuilder.java): `core/src/main/java/dev/triumphteam/gui/builder/gui/TypedGuiBuilder.java`
- [Pagination builder](https://github.com/triumphteam/triumph-gui/blob/master/core/src/main/java/dev/triumphteam/gui/builder/gui/PaginatedBuilder.java): `core/src/main/java/dev/triumphteam/gui/builder/gui/PaginatedBuilder.java`
- [Scrolling builder](https://github.com/triumphteam/triumph-gui/blob/master/core/src/main/java/dev/triumphteam/gui/builder/gui/ScrollingBuilder.java): `core/src/main/java/dev/triumphteam/gui/builder/gui/ScrollingBuilder.java`
- [Storage builder](https://github.com/triumphteam/triumph-gui/blob/master/core/src/main/java/dev/triumphteam/gui/builder/gui/StorageBuilder.java): `core/src/main/java/dev/triumphteam/gui/builder/gui/StorageBuilder.java`
- [Item builders](https://github.com/triumphteam/triumph-gui/blob/master/core/src/main/java/dev/triumphteam/gui/builder/item/ItemBuilder.java): `core/src/main/java/dev/triumphteam/gui/builder/item/ItemBuilder.java`

### GUI Runtime

- [Inventory container](https://github.com/triumphteam/triumph-gui/blob/master/core/src/main/java/dev/triumphteam/gui/components/GuiContainer.java): `core/src/main/java/dev/triumphteam/gui/components/GuiContainer.java`
- [Base GUI](https://github.com/triumphteam/triumph-gui/blob/master/core/src/main/java/dev/triumphteam/gui/guis/BaseGui.java): `core/src/main/java/dev/triumphteam/gui/guis/BaseGui.java`
- [Paginated GUI](https://github.com/triumphteam/triumph-gui/blob/master/core/src/main/java/dev/triumphteam/gui/guis/PaginatedGui.java): `core/src/main/java/dev/triumphteam/gui/guis/PaginatedGui.java`
- [Scrolling GUI](https://github.com/triumphteam/triumph-gui/blob/master/core/src/main/java/dev/triumphteam/gui/guis/ScrollingGui.java): `core/src/main/java/dev/triumphteam/gui/guis/ScrollingGui.java`
- [Storage GUI](https://github.com/triumphteam/triumph-gui/blob/master/core/src/main/java/dev/triumphteam/gui/guis/StorageGui.java): `core/src/main/java/dev/triumphteam/gui/guis/StorageGui.java`
- [GUI listener](https://github.com/triumphteam/triumph-gui/blob/master/core/src/main/java/dev/triumphteam/gui/guis/GuiListener.java): `core/src/main/java/dev/triumphteam/gui/guis/GuiListener.java`
- [Slot filling](https://github.com/triumphteam/triumph-gui/blob/master/core/src/main/java/dev/triumphteam/gui/components/util/GuiFiller.java): `core/src/main/java/dev/triumphteam/gui/components/util/GuiFiller.java`
- [GUI item](https://github.com/triumphteam/triumph-gui/blob/master/core/src/main/java/dev/triumphteam/gui/guis/GuiItem.java): `core/src/main/java/dev/triumphteam/gui/guis/GuiItem.java`

### Item Support

- [Name and lore](https://github.com/triumphteam/triumph-gui/blob/master/core/src/main/java/dev/triumphteam/gui/builder/item/BukkitNameLoreHandler.java): `core/src/main/java/dev/triumphteam/gui/builder/item/BukkitNameLoreHandler.java`
- [Paper metadata](https://github.com/triumphteam/triumph-gui/blob/master/paper/src/main/java/dev/triumphteam/gui/builder/item/PaperNameLoreHandler.java): `paper/src/main/java/dev/triumphteam/gui/builder/item/PaperNameLoreHandler.java`
- [NBT utilities](https://github.com/triumphteam/triumph-gui/blob/master/core/src/main/java/dev/triumphteam/gui/components/nbt/NbtWrapper.java): `core/src/main/java/dev/triumphteam/gui/components/nbt/NbtWrapper.java`
- [Item NBT](https://github.com/triumphteam/triumph-gui/blob/master/core/src/main/java/dev/triumphteam/gui/components/util/ItemNbt.java): `core/src/main/java/dev/triumphteam/gui/components/util/ItemNbt.java`

### Other components

- **Plugin developer**
- **Player**
- **Bukkit/Paper**

## Connections

- Plugin developer → Library setup: initializes
- Plugin developer → Chest builders: configures
- Plugin developer → Typed builders: configures
- Plugin developer → Pagination builder: configures
- Plugin developer → Scrolling builder: configures
- Plugin developer → Storage builder: configures
- Plugin developer → Item builders: builds items
- Storage builder → Inventory container: creates from
- Storage builder → Storage GUI: creates
- Player → Storage GUI: opens
- Storage GUI → Bukkit/Paper: opens inventory
- Bukkit/Paper → GUI listener: dispatches events
- Slot filling → Base GUI: sets slots
- Base GUI → GUI item: holds items
- Item builders → Name and lore: sets metadata
- Item builders → Paper metadata: sets metadata
- Item NBT → NBT utilities: uses wrapper
