# aidan99davis/spectrobesmod architecture

> Architecture diagram of the GitHub repository aidan99davis/spectrobesmod, 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/aidan99davis/spectrobesmod
- Repository: https://github.com/aidan99davis/spectrobesmod

## Overview

Spectrobes Mod is a Minecraft mod adding Spectrobe team management, entities, fossils, equipment, and interactive shop and healer blocks. The visible player workflow includes managing a team through the Prizmod, viewing Spectrobe details, and seeing team and player status in the HUD; separate client screens support shop and healer interactions. Client render managers register visual handlers for Spectrobes, Krawl, attacks, and blocks. The README is generic Forge setup material, not product documentation, and the sampled files omit most gameplay implementations, so uncertain links between gameplay stages are not shown.

Main entry points: [`src/main/java/com/spectrobes/spectrobesmod/SpectrobesMod.java`](https://github.com/aidan99davis/spectrobesmod/blob/develop/src/main/java/com/spectrobes/spectrobesmod/SpectrobesMod.java) (Mod entry), [`src/main/java/com/spectrobes/spectrobesmod/common/packets/networking/SpectrobePacketHandler.java`](https://github.com/aidan99davis/spectrobesmod/blob/develop/src/main/java/com/spectrobes/spectrobesmod/common/packets/networking/SpectrobePacketHandler.java) (Packet handling), [`src/main/java/com/spectrobes/spectrobesmod/events/ClientEvents.java`](https://github.com/aidan99davis/spectrobesmod/blob/develop/src/main/java/com/spectrobes/spectrobesmod/events/ClientEvents.java) (Screen registration), [`src/main/java/com/spectrobes/spectrobesmod/client/gui/prizmod/PrizmodScreen.java`](https://github.com/aidan99davis/spectrobesmod/blob/develop/src/main/java/com/spectrobes/spectrobesmod/client/gui/prizmod/PrizmodScreen.java) (Prizmod menu)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_team["Team and status"]
  node_prizmod["Prizmod menu<br/>[PrizmodScreen.java]"]
  node_prizmod_menu["Prizmod container"]
  node_details["Spectrobe details"]
  node_hud["Team HUD<br/>[HUDHandler.java]"]
  node_packets["Packet handling"]
end

subgraph group_interactions["World interactions"]
  node_shop["Cyrus shop"]
  node_shop_menu["Shop container"]
  node_sell["Mineral selling"]
  node_healer["Healer screen<br/>[HealerScreen.java]"]
  node_blocks["World blocks"]
end

subgraph group_entities["Entities and combat"]
  node_spectrobes["Spectrobe entities"]
  node_krawl["Krawl entities<br/>[KrawlEntities.java]"]
  node_attacks["Attack entities"]
end

subgraph group_client["Client presentation"]
  node_spectrobe_render["Spectrobe renderers"]
  node_krawl_render["Krawl renderers"]
  node_attack_render["Attack renderers"]
  node_block_render["Block renderers"]
  node_client_events["Screen registration<br/>[ClientEvents.java]"]
end

node_player(("Player"))
node_mod["Mod entry<br/>[SpectrobesMod.java]"]

node_player -->|"opens"| node_prizmod
node_player -->|"uses"| node_shop
node_player -->|"uses"| node_healer
node_prizmod -->|"uses menu"| node_prizmod_menu
node_shop -->|"uses menu"| node_shop_menu
node_sell -->|"removes mineral; grants currency"| node_player
node_player -->|"sends packet"| node_sell
node_player -->|"provides status"| node_hud
node_mod -.->|"loads client"| node_spectrobe_render
node_mod -.->|"loads client"| node_krawl_render
node_mod -.->|"loads client"| node_attack_render
node_mod -.->|"loads client"| node_block_render
node_spectrobe_render -->|"registers renderers"| node_spectrobes
node_krawl_render -->|"registers renderers"| node_krawl
node_attack_render -->|"registers renderer"| node_attacks
node_block_render -->|"registers renderers"| node_blocks
node_client_events -->|"registers screen"| node_prizmod_menu
node_client_events -->|"registers screen"| node_shop_menu
node_client_events -->|"registers screen"| node_healer
node_packets -->|"opens screen"| node_prizmod
node_packets -->|"opens screen"| node_details
node_packets -->|"opens screen"| node_shop

click node_mod "https://github.com/aidan99davis/spectrobesmod/blob/develop/src/main/java/com/spectrobes/spectrobesmod/SpectrobesMod.java"
click node_prizmod "https://github.com/aidan99davis/spectrobesmod/blob/develop/src/main/java/com/spectrobes/spectrobesmod/client/gui/prizmod/PrizmodScreen.java"
click node_prizmod_menu "https://github.com/aidan99davis/spectrobesmod/blob/develop/src/main/java/com/spectrobes/spectrobesmod/client/container/PrizmodContainer.java"
click node_details "https://github.com/aidan99davis/spectrobesmod/blob/develop/src/main/java/com/spectrobes/spectrobesmod/client/gui/spectrobes_details/SpectrobeDetailsScreen.java"
click node_hud "https://github.com/aidan99davis/spectrobesmod/blob/develop/src/main/java/com/spectrobes/spectrobesmod/client/gui/hud/HUDHandler.java"
click node_packets "https://github.com/aidan99davis/spectrobesmod/blob/develop/src/main/java/com/spectrobes/spectrobesmod/common/packets/networking/SpectrobePacketHandler.java"
click node_shop "https://github.com/aidan99davis/spectrobesmod/blob/develop/src/main/java/com/spectrobes/spectrobesmod/client/gui/cyrus_shop/CyrusShopScreen.java"
click node_shop_menu "https://github.com/aidan99davis/spectrobesmod/blob/develop/src/main/java/com/spectrobes/spectrobesmod/client/container/CyrusShopContainer.java"
click node_sell "https://github.com/aidan99davis/spectrobesmod/blob/develop/src/main/java/com/spectrobes/spectrobesmod/common/packets/networking/packets/server/SSellMineralPacket.java"
click node_healer "https://github.com/aidan99davis/spectrobesmod/blob/develop/src/main/java/com/spectrobes/spectrobesmod/client/gui/healer/HealerScreen.java"
click node_blocks "https://github.com/aidan99davis/spectrobesmod/tree/develop/src/main/java/com/spectrobes/spectrobesmod/common/blocks"
click node_spectrobes "https://github.com/aidan99davis/spectrobesmod/blob/develop/src/main/java/com/spectrobes/spectrobesmod/client/entity/spectrobes/SpectrobesEntities.java"
click node_krawl "https://github.com/aidan99davis/spectrobesmod/blob/develop/src/main/java/com/spectrobes/spectrobesmod/client/entity/krawl/KrawlEntities.java"
click node_attacks "https://github.com/aidan99davis/spectrobesmod/blob/develop/src/main/java/com/spectrobes/spectrobesmod/client/entity/attacks/AttackEntities.java"
click node_spectrobe_render "https://github.com/aidan99davis/spectrobesmod/blob/develop/src/main/java/com/spectrobes/spectrobesmod/client/entity/spectrobes/SpectrobeRendererManager.java"
click node_krawl_render "https://github.com/aidan99davis/spectrobesmod/blob/develop/src/main/java/com/spectrobes/spectrobesmod/client/entity/krawl/KrawlRendererManager.java"
click node_attack_render "https://github.com/aidan99davis/spectrobesmod/blob/develop/src/main/java/com/spectrobes/spectrobesmod/client/entity/attacks/AttackRendererManager.java"
click node_block_render "https://github.com/aidan99davis/spectrobesmod/blob/develop/src/main/java/com/spectrobes/spectrobesmod/client/blocks/BlockRendererManager.java"
click node_client_events "https://github.com/aidan99davis/spectrobesmod/blob/develop/src/main/java/com/spectrobes/spectrobesmod/events/ClientEvents.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_prizmod,node_prizmod_menu,node_details,node_hud,node_packets toneBlue
class node_shop,node_shop_menu,node_sell,node_healer,node_blocks toneAmber
class node_spectrobes,node_krawl,node_attacks toneMint
class node_spectrobe_render,node_krawl_render,node_attack_render,node_block_render,node_client_events toneRose
class node_player toneIndigo
class node_mod toneTeal
```

## Components

### Team and status

- [Prizmod menu](https://github.com/aidan99davis/spectrobesmod/blob/develop/src/main/java/com/spectrobes/spectrobesmod/client/gui/prizmod/PrizmodScreen.java): `src/main/java/com/spectrobes/spectrobesmod/client/gui/prizmod/PrizmodScreen.java`
- [Prizmod container](https://github.com/aidan99davis/spectrobesmod/blob/develop/src/main/java/com/spectrobes/spectrobesmod/client/container/PrizmodContainer.java): `src/main/java/com/spectrobes/spectrobesmod/client/container/PrizmodContainer.java`
- [Spectrobe details](https://github.com/aidan99davis/spectrobesmod/blob/develop/src/main/java/com/spectrobes/spectrobesmod/client/gui/spectrobes_details/SpectrobeDetailsScreen.java): `src/main/java/com/spectrobes/spectrobesmod/client/gui/spectrobes_details/SpectrobeDetailsScreen.java`
- [Team HUD](https://github.com/aidan99davis/spectrobesmod/blob/develop/src/main/java/com/spectrobes/spectrobesmod/client/gui/hud/HUDHandler.java): `src/main/java/com/spectrobes/spectrobesmod/client/gui/hud/HUDHandler.java`
- [Packet handling](https://github.com/aidan99davis/spectrobesmod/blob/develop/src/main/java/com/spectrobes/spectrobesmod/common/packets/networking/SpectrobePacketHandler.java): `src/main/java/com/spectrobes/spectrobesmod/common/packets/networking/SpectrobePacketHandler.java`

### World interactions

- [Cyrus shop](https://github.com/aidan99davis/spectrobesmod/blob/develop/src/main/java/com/spectrobes/spectrobesmod/client/gui/cyrus_shop/CyrusShopScreen.java): `src/main/java/com/spectrobes/spectrobesmod/client/gui/cyrus_shop/CyrusShopScreen.java`
- [Shop container](https://github.com/aidan99davis/spectrobesmod/blob/develop/src/main/java/com/spectrobes/spectrobesmod/client/container/CyrusShopContainer.java): `src/main/java/com/spectrobes/spectrobesmod/client/container/CyrusShopContainer.java`
- [Mineral selling](https://github.com/aidan99davis/spectrobesmod/blob/develop/src/main/java/com/spectrobes/spectrobesmod/common/packets/networking/packets/server/SSellMineralPacket.java): `src/main/java/com/spectrobes/spectrobesmod/common/packets/networking/packets/server/SSellMineralPacket.java`
- [Healer screen](https://github.com/aidan99davis/spectrobesmod/blob/develop/src/main/java/com/spectrobes/spectrobesmod/client/gui/healer/HealerScreen.java): `src/main/java/com/spectrobes/spectrobesmod/client/gui/healer/HealerScreen.java`
- [World blocks](https://github.com/aidan99davis/spectrobesmod/tree/develop/src/main/java/com/spectrobes/spectrobesmod/common/blocks): `src/main/java/com/spectrobes/spectrobesmod/common/blocks`

### Entities and combat

- [Spectrobe entities](https://github.com/aidan99davis/spectrobesmod/blob/develop/src/main/java/com/spectrobes/spectrobesmod/client/entity/spectrobes/SpectrobesEntities.java): `src/main/java/com/spectrobes/spectrobesmod/client/entity/spectrobes/SpectrobesEntities.java`
- [Krawl entities](https://github.com/aidan99davis/spectrobesmod/blob/develop/src/main/java/com/spectrobes/spectrobesmod/client/entity/krawl/KrawlEntities.java): `src/main/java/com/spectrobes/spectrobesmod/client/entity/krawl/KrawlEntities.java`
- [Attack entities](https://github.com/aidan99davis/spectrobesmod/blob/develop/src/main/java/com/spectrobes/spectrobesmod/client/entity/attacks/AttackEntities.java): `src/main/java/com/spectrobes/spectrobesmod/client/entity/attacks/AttackEntities.java`

### Client presentation

- [Spectrobe renderers](https://github.com/aidan99davis/spectrobesmod/blob/develop/src/main/java/com/spectrobes/spectrobesmod/client/entity/spectrobes/SpectrobeRendererManager.java): `src/main/java/com/spectrobes/spectrobesmod/client/entity/spectrobes/SpectrobeRendererManager.java`
- [Krawl renderers](https://github.com/aidan99davis/spectrobesmod/blob/develop/src/main/java/com/spectrobes/spectrobesmod/client/entity/krawl/KrawlRendererManager.java): `src/main/java/com/spectrobes/spectrobesmod/client/entity/krawl/KrawlRendererManager.java`
- [Attack renderers](https://github.com/aidan99davis/spectrobesmod/blob/develop/src/main/java/com/spectrobes/spectrobesmod/client/entity/attacks/AttackRendererManager.java): `src/main/java/com/spectrobes/spectrobesmod/client/entity/attacks/AttackRendererManager.java`
- [Block renderers](https://github.com/aidan99davis/spectrobesmod/blob/develop/src/main/java/com/spectrobes/spectrobesmod/client/blocks/BlockRendererManager.java): `src/main/java/com/spectrobes/spectrobesmod/client/blocks/BlockRendererManager.java`
- [Screen registration](https://github.com/aidan99davis/spectrobesmod/blob/develop/src/main/java/com/spectrobes/spectrobesmod/events/ClientEvents.java): `src/main/java/com/spectrobes/spectrobesmod/events/ClientEvents.java`

### Other components

- **Player**
- [Mod entry](https://github.com/aidan99davis/spectrobesmod/blob/develop/src/main/java/com/spectrobes/spectrobesmod/SpectrobesMod.java): `src/main/java/com/spectrobes/spectrobesmod/SpectrobesMod.java`

## Connections

- Player → Prizmod menu: opens
- Player → Cyrus shop: uses
- Player → Healer screen: uses
- Prizmod menu → Prizmod container: uses menu
- Cyrus shop → Shop container: uses menu
- Mineral selling → Player: removes mineral; grants currency
- Player → Mineral selling: sends packet
- Player → Team HUD: provides status
- Mod entry → Spectrobe renderers: loads client
- Mod entry → Krawl renderers: loads client
- Mod entry → Attack renderers: loads client
- Mod entry → Block renderers: loads client
- Spectrobe renderers → Spectrobe entities: registers renderers
- Krawl renderers → Krawl entities: registers renderers
- Attack renderers → Attack entities: registers renderer
- Block renderers → World blocks: registers renderers
- Screen registration → Prizmod container: registers screen
- Screen registration → Shop container: registers screen
- Screen registration → Healer screen: registers screen
- Packet handling → Prizmod menu: opens screen
- Packet handling → Spectrobe details: opens screen
- Packet handling → Cyrus shop: opens screen
