# shigure-ruiseki/okbackpack architecture

> Architecture diagram of the GitHub repository shigure-ruiseki/okbackpack, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-12). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/shigure-ruiseki/okbackpack
- Repository: https://github.com/shigure-ruiseki/okbackpack

## Overview

OKBackpack is a Minecraft mod providing wearable and placeable inventory backpacks, configurable storage, modular upgrade slots, and player-facing interactions. The main workflow is that a player opens or uses a backpack; its wrapper and item handlers expose storage and upgrades to the GUI, while game events and upgrade wrappers provide automated or player effects. Separate branches cover rendering, sleeping bags, tool swapping, audio, and optional integrations. Some feature links are documented in the README; unsampled implementations are represented only by supported directories, and uncertain wiring is omitted.

Main entry points: [`src/main/java/ruiseki/okbackpack/common/block/BackpackWrapper.java`](https://github.com/shigure-ruiseki/okbackpack/blob/master/src/main/java/ruiseki/okbackpack/common/block/BackpackWrapper.java) (Storage Wrapper), [`src/main/java/ruiseki/okbackpack/client/gui/container/BackPackContainer.java`](https://github.com/shigure-ruiseki/okbackpack/blob/master/src/main/java/ruiseki/okbackpack/client/gui/container/BackPackContainer.java) (Backpack Container), [`src/main/java/ruiseki/okbackpack/common/item`](https://github.com/shigure-ruiseki/okbackpack/tree/master/src/main/java/ruiseki/okbackpack/common/item) (Upgrade Behavior), [`src/main/java/ruiseki/okbackpack/api/IStorageWrapper.java`](https://github.com/shigure-ruiseki/okbackpack/blob/master/src/main/java/ruiseki/okbackpack/api/IStorageWrapper.java) (Storage Contract)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_core["Backpack Core"]
  node_mod["Mod Bootstrap<br/>[OKBackpack.java]"]
  node_config["Mod Configuration<br/>[GeneralConfig.java]"]
  node_backpack["Backpack Blocks<br/>[BlockBackpack.java]"]
  node_storage["Storage Wrapper"]
  node_entity["Backpack Lookup"]
  node_storage_api["Storage Contract"]
end

subgraph group_interface["Player Interface"]
  node_container["Backpack Container"]
  node_item_handler["Inventory Handler"]
  node_sync["Upgrade Sync"]
  node_gui["Backpack GUI"]
end

subgraph group_upgrades["Upgrades And Effects"]
  node_events["Game Events"]
  node_upgrade_wrappers["Upgrade Behavior"]
  node_upgrade_api["Upgrade Contracts"]
  node_sleeping["Sleeping Bag"]
end

subgraph group_client["Client Features"]
  node_render["Backpack Rendering"]
  node_tool_swap["Tool Swapping"]
  node_audio["Jukebox Audio"]
end

subgraph group_integrations["Integrations"]
  node_sorter["Sorter Compatibility"]
  node_compat["Mod Compatibility"]
end

node_player(("Player"))
node_game(("Minecraft"))
node_external_mods["Optional Mods"]

node_mod -->|"registers config"| node_config
node_mod -->|"registers integrations"| node_compat
node_player -->|"uses"| node_backpack
node_backpack -.->|"provides storage"| node_storage
node_entity -->|"resolves wrapper"| node_storage
node_storage -.->|"implements contract"| node_storage_api
node_player -->|"opens"| node_container
node_container -.->|"uses inventory"| node_item_handler
node_item_handler -->|"checks storage"| node_storage_api
node_container -.->|"presents"| node_gui
node_gui -.->|"synchronizes slots"| node_sync
node_sync -->|"marks dirty"| node_storage_api
node_storage -.->|"hosts upgrades"| node_upgrade_wrappers
node_upgrade_wrappers -.->|"implements contracts"| node_upgrade_api
node_game -->|"dispatches events"| node_events
node_events -->|"visits backpacks"| node_entity
node_player -->|"sleeps in"| node_sleeping
node_player -->|"wears backpack"| node_render
node_player -.->|"triggers swap"| node_tool_swap
node_upgrade_wrappers -.->|"plays records"| node_audio
node_player -.->|"sorts backpack"| node_sorter
node_sorter -->|"sorts slots"| node_container
node_external_mods -.->|"optional integration"| node_compat

click node_mod "https://github.com/shigure-ruiseki/okbackpack/blob/master/src/main/java/ruiseki/okbackpack/OKBackpack.java"
click node_config "https://github.com/shigure-ruiseki/okbackpack/blob/master/src/main/java/ruiseki/okbackpack/GeneralConfig.java"
click node_backpack "https://github.com/shigure-ruiseki/okbackpack/blob/master/src/main/java/ruiseki/okbackpack/common/block/BlockBackpack.java"
click node_storage "https://github.com/shigure-ruiseki/okbackpack/blob/master/src/main/java/ruiseki/okbackpack/common/block/BackpackWrapper.java"
click node_entity "https://github.com/shigure-ruiseki/okbackpack/blob/master/src/main/java/ruiseki/okbackpack/common/helpers/BackpackEntityHelpers.java"
click node_storage_api "https://github.com/shigure-ruiseki/okbackpack/blob/master/src/main/java/ruiseki/okbackpack/api/IStorageWrapper.java"
click node_events "https://github.com/shigure-ruiseki/okbackpack/blob/master/src/main/java/ruiseki/okbackpack/common/event/BackpackEventHandler.java"
click node_upgrade_wrappers "https://github.com/shigure-ruiseki/okbackpack/tree/master/src/main/java/ruiseki/okbackpack/common/item"
click node_upgrade_api "https://github.com/shigure-ruiseki/okbackpack/blob/master/src/main/java/ruiseki/okbackpack/api/wrapper/IUpgradeWrapper.java"
click node_sleeping "https://github.com/shigure-ruiseki/okbackpack/blob/master/src/main/java/ruiseki/okbackpack/common/block/BlockSleepingBag.java"
click node_container "https://github.com/shigure-ruiseki/okbackpack/blob/master/src/main/java/ruiseki/okbackpack/client/gui/container/BackPackContainer.java"
click node_item_handler "https://github.com/shigure-ruiseki/okbackpack/blob/master/src/main/java/ruiseki/okbackpack/client/gui/handler/BackpackItemStackHandler.java"
click node_sync "https://github.com/shigure-ruiseki/okbackpack/blob/master/src/main/java/ruiseki/okbackpack/client/gui/syncHandler/DelegatedStackHandlerSH.java"
click node_gui "https://github.com/shigure-ruiseki/okbackpack/tree/master/src/main/java/ruiseki/okbackpack/client/gui"
click node_render "https://github.com/shigure-ruiseki/okbackpack/blob/master/src/main/java/ruiseki/okbackpack/client/renderer/BackpackContentHandler.java"
click node_tool_swap "https://github.com/shigure-ruiseki/okbackpack/blob/master/src/main/java/ruiseki/okbackpack/client/key/ToolSwapHandler.java"
click node_audio "https://github.com/shigure-ruiseki/okbackpack/blob/master/src/main/java/ruiseki/okbackpack/client/audio/BackpackJukeboxSoundManager.java"
click node_sorter "https://github.com/shigure-ruiseki/okbackpack/blob/master/src/main/java/ruiseki/okbackpack/compat/bogosorter/BackpackBogoSorterClientCompat.java"
click node_compat "https://github.com/shigure-ruiseki/okbackpack/tree/master/src/main/java/ruiseki/okbackpack/compat"

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_mod,node_config,node_backpack,node_storage,node_entity,node_storage_api toneBlue
class node_container,node_item_handler,node_sync,node_gui toneAmber
class node_events,node_upgrade_wrappers,node_upgrade_api,node_sleeping toneMint
class node_render,node_tool_swap,node_audio toneRose
class node_sorter,node_compat,node_player,node_game,node_external_mods toneIndigo
```

## Components

### Backpack Core

- [Mod Bootstrap](https://github.com/shigure-ruiseki/okbackpack/blob/master/src/main/java/ruiseki/okbackpack/OKBackpack.java): `src/main/java/ruiseki/okbackpack/OKBackpack.java`
- [Mod Configuration](https://github.com/shigure-ruiseki/okbackpack/blob/master/src/main/java/ruiseki/okbackpack/GeneralConfig.java): `src/main/java/ruiseki/okbackpack/GeneralConfig.java`
- [Backpack Blocks](https://github.com/shigure-ruiseki/okbackpack/blob/master/src/main/java/ruiseki/okbackpack/common/block/BlockBackpack.java): `src/main/java/ruiseki/okbackpack/common/block/BlockBackpack.java`
- [Storage Wrapper](https://github.com/shigure-ruiseki/okbackpack/blob/master/src/main/java/ruiseki/okbackpack/common/block/BackpackWrapper.java): `src/main/java/ruiseki/okbackpack/common/block/BackpackWrapper.java`
- [Backpack Lookup](https://github.com/shigure-ruiseki/okbackpack/blob/master/src/main/java/ruiseki/okbackpack/common/helpers/BackpackEntityHelpers.java): `src/main/java/ruiseki/okbackpack/common/helpers/BackpackEntityHelpers.java`
- [Storage Contract](https://github.com/shigure-ruiseki/okbackpack/blob/master/src/main/java/ruiseki/okbackpack/api/IStorageWrapper.java): `src/main/java/ruiseki/okbackpack/api/IStorageWrapper.java`

### Player Interface

- [Backpack Container](https://github.com/shigure-ruiseki/okbackpack/blob/master/src/main/java/ruiseki/okbackpack/client/gui/container/BackPackContainer.java): `src/main/java/ruiseki/okbackpack/client/gui/container/BackPackContainer.java`
- [Inventory Handler](https://github.com/shigure-ruiseki/okbackpack/blob/master/src/main/java/ruiseki/okbackpack/client/gui/handler/BackpackItemStackHandler.java): `src/main/java/ruiseki/okbackpack/client/gui/handler/BackpackItemStackHandler.java`
- [Upgrade Sync](https://github.com/shigure-ruiseki/okbackpack/blob/master/src/main/java/ruiseki/okbackpack/client/gui/syncHandler/DelegatedStackHandlerSH.java): `src/main/java/ruiseki/okbackpack/client/gui/syncHandler/DelegatedStackHandlerSH.java`
- [Backpack GUI](https://github.com/shigure-ruiseki/okbackpack/tree/master/src/main/java/ruiseki/okbackpack/client/gui): `src/main/java/ruiseki/okbackpack/client/gui`

### Upgrades And Effects

- [Game Events](https://github.com/shigure-ruiseki/okbackpack/blob/master/src/main/java/ruiseki/okbackpack/common/event/BackpackEventHandler.java): `src/main/java/ruiseki/okbackpack/common/event/BackpackEventHandler.java`
- [Upgrade Behavior](https://github.com/shigure-ruiseki/okbackpack/tree/master/src/main/java/ruiseki/okbackpack/common/item): `src/main/java/ruiseki/okbackpack/common/item`
- [Upgrade Contracts](https://github.com/shigure-ruiseki/okbackpack/blob/master/src/main/java/ruiseki/okbackpack/api/wrapper/IUpgradeWrapper.java): `src/main/java/ruiseki/okbackpack/api/wrapper/IUpgradeWrapper.java`
- [Sleeping Bag](https://github.com/shigure-ruiseki/okbackpack/blob/master/src/main/java/ruiseki/okbackpack/common/block/BlockSleepingBag.java): `src/main/java/ruiseki/okbackpack/common/block/BlockSleepingBag.java`

### Client Features

- [Backpack Rendering](https://github.com/shigure-ruiseki/okbackpack/blob/master/src/main/java/ruiseki/okbackpack/client/renderer/BackpackContentHandler.java): `src/main/java/ruiseki/okbackpack/client/renderer/BackpackContentHandler.java`
- [Tool Swapping](https://github.com/shigure-ruiseki/okbackpack/blob/master/src/main/java/ruiseki/okbackpack/client/key/ToolSwapHandler.java): `src/main/java/ruiseki/okbackpack/client/key/ToolSwapHandler.java`
- [Jukebox Audio](https://github.com/shigure-ruiseki/okbackpack/blob/master/src/main/java/ruiseki/okbackpack/client/audio/BackpackJukeboxSoundManager.java): `src/main/java/ruiseki/okbackpack/client/audio/BackpackJukeboxSoundManager.java`

### Integrations

- [Sorter Compatibility](https://github.com/shigure-ruiseki/okbackpack/blob/master/src/main/java/ruiseki/okbackpack/compat/bogosorter/BackpackBogoSorterClientCompat.java): `src/main/java/ruiseki/okbackpack/compat/bogosorter/BackpackBogoSorterClientCompat.java`
- [Mod Compatibility](https://github.com/shigure-ruiseki/okbackpack/tree/master/src/main/java/ruiseki/okbackpack/compat): `src/main/java/ruiseki/okbackpack/compat`

### Other components

- **Player**
- **Minecraft**
- **Optional Mods**

## Connections

- Mod Bootstrap → Mod Configuration: registers config (evidence: `src/main/java/ruiseki/okbackpack/OKBackpack.java`)
- Mod Bootstrap → Mod Compatibility: registers integrations (evidence: `src/main/java/ruiseki/okbackpack/OKBackpack.java`)
- Player → Backpack Blocks: uses
- Backpack Blocks → Storage Wrapper: provides storage
- Backpack Lookup → Storage Wrapper: resolves wrapper (evidence: `src/main/java/ruiseki/okbackpack/common/helpers/BackpackEntityHelpers.java`)
- Storage Wrapper → Storage Contract: implements contract
- Player → Backpack Container: opens
- Backpack Container → Inventory Handler: uses inventory
- Inventory Handler → Storage Contract: checks storage (evidence: `src/main/java/ruiseki/okbackpack/client/gui/handler/BackpackItemStackHandler.java`)
- Backpack Container → Backpack GUI: presents (evidence: `src/main/java/ruiseki/okbackpack/client/gui/container/BackPackContainer.java`)
- Backpack GUI → Upgrade Sync: synchronizes slots (evidence: `src/main/java/ruiseki/okbackpack/client/gui/widget/updateGroup/AdvancedJukeboxStorageSlotGroupFactory.java`)
- Upgrade Sync → Storage Contract: marks dirty (evidence: `src/main/java/ruiseki/okbackpack/client/gui/syncHandler/DelegatedStackHandlerSH.java`)
- Storage Wrapper → Upgrade Behavior: hosts upgrades
- Upgrade Behavior → Upgrade Contracts: implements contracts
- Minecraft → Game Events: dispatches events (evidence: `src/main/java/ruiseki/okbackpack/common/event/BackpackEventHandler.java`)
- Game Events → Backpack Lookup: visits backpacks (evidence: `src/main/java/ruiseki/okbackpack/common/event/BackpackEventHandler.java`)
- Player → Sleeping Bag: sleeps in
- Player → Backpack Rendering: wears backpack
- Player → Tool Swapping: triggers swap
- Upgrade Behavior → Jukebox Audio: plays records
- Player → Sorter Compatibility: sorts backpack
- Sorter Compatibility → Backpack Container: sorts slots (evidence: `src/main/java/ruiseki/okbackpack/compat/bogosorter/BackpackBogoSorterClientCompat.java`)
- Optional Mods → Mod Compatibility: optional integration
