# zapaska007/advanced-corpses architecture

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

## Overview

Advanced Corpses is a Minecraft Forge mod that turns a player's death into a persistent, inspectable corpse holding their equipment. The main flow is death handling, item transfer and corpse spawning, then opening a corpse inventory to retrieve items; corpses also expire according to configuration. Client rendering and the inventory screen provide the corresponding presentation and controls. Curios support is optional. Source excerpts show the main wiring, but some entity behavior is only partially sampled, so uncertain interactions are omitted.

Main entry points: [`src/main/java/online/zapaska007/advancedcorpses/entity/CorpseEntity.java`](https://github.com/zapaska007/advanced-corpses/blob/main/src/main/java/online/zapaska007/advancedcorpses/entity/CorpseEntity.java) (Corpse entity), [`src/main/java/online/zapaska007/advancedcorpses/AdvancedCorpses.java`](https://github.com/zapaska007/advanced-corpses/blob/main/src/main/java/online/zapaska007/advancedcorpses/AdvancedCorpses.java) (Mod registration), [`src/main/java/online/zapaska007/advancedcorpses/event/DeathEventHandler.java`](https://github.com/zapaska007/advanced-corpses/blob/main/src/main/java/online/zapaska007/advancedcorpses/event/DeathEventHandler.java) (Death handler), [`src/main/java/online/zapaska007/advancedcorpses/menu/CorpseMenu.java`](https://github.com/zapaska007/advanced-corpses/blob/main/src/main/java/online/zapaska007/advancedcorpses/menu/CorpseMenu.java) (Corpse menu)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_lifecycle["Mod lifecycle"]
  node_mod["Mod registration"]
  node_config["Lifetime config<br/>[ModConfig.java]"]
end

subgraph group_death["Death and storage"]
  node_deathhandler["Death handler"]
  node_corpse["Corpse entity<br/>[CorpseEntity.java]"]
end

subgraph group_inventory["Corpse inventory"]
  node_menu["Corpse menu<br/>[CorpseMenu.java]"]
end

subgraph group_client["Client presentation"]
  node_screen["Corpse screen<br/>[CorpseScreen.java]"]
  node_renderer["Corpse renderer"]
end

node_player(("Player"))
node_game["Minecraft world"]
node_curios["Curios API"]
node_skinservice["Ely.by skins"]

node_mod -->|"registers handler"| node_deathhandler
node_mod -->|"registers entity"| node_corpse
node_mod -->|"registers menu"| node_menu
node_mod -->|"registers renderer"| node_renderer
node_mod -->|"registers screen"| node_screen
node_mod -->|"registers config"| node_config
node_game -->|"fires death event"| node_deathhandler
node_deathhandler -->|"reads inventory"| node_player
node_deathhandler -->|"creates and fills"| node_corpse
node_deathhandler -->|"spawns entity"| node_game
node_deathhandler -.->|"copies optional items"| node_curios
node_corpse -->|"reads lifetime"| node_config
node_corpse -->|"discards on expiry"| node_game
node_corpse -->|"creates menu"| node_menu
node_menu -->|"reads and updates"| node_corpse
node_screen -->|"dispatches buttons"| node_menu
node_menu -->|"transfers retrieved items"| node_player
node_renderer -->|"reads owner data"| node_corpse
node_renderer -.->|"requests skin"| node_skinservice

click node_mod "https://github.com/zapaska007/advanced-corpses/blob/main/src/main/java/online/zapaska007/advancedcorpses/AdvancedCorpses.java"
click node_config "https://github.com/zapaska007/advanced-corpses/blob/main/src/main/java/online/zapaska007/advancedcorpses/config/ModConfig.java"
click node_deathhandler "https://github.com/zapaska007/advanced-corpses/blob/main/src/main/java/online/zapaska007/advancedcorpses/event/DeathEventHandler.java"
click node_corpse "https://github.com/zapaska007/advanced-corpses/blob/main/src/main/java/online/zapaska007/advancedcorpses/entity/CorpseEntity.java"
click node_menu "https://github.com/zapaska007/advanced-corpses/blob/main/src/main/java/online/zapaska007/advancedcorpses/menu/CorpseMenu.java"
click node_screen "https://github.com/zapaska007/advanced-corpses/blob/main/src/main/java/online/zapaska007/advancedcorpses/client/CorpseScreen.java"
click node_renderer "https://github.com/zapaska007/advanced-corpses/blob/main/src/main/java/online/zapaska007/advancedcorpses/client/CorpseRenderer.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_mod,node_config toneBlue
class node_deathhandler,node_corpse toneAmber
class node_menu,node_curios toneMint
class node_screen,node_renderer toneRose
class node_player,node_game,node_skinservice toneIndigo
```

## Components

### Mod lifecycle

- [Mod registration](https://github.com/zapaska007/advanced-corpses/blob/main/src/main/java/online/zapaska007/advancedcorpses/AdvancedCorpses.java): `src/main/java/online/zapaska007/advancedcorpses/AdvancedCorpses.java`
- [Lifetime config](https://github.com/zapaska007/advanced-corpses/blob/main/src/main/java/online/zapaska007/advancedcorpses/config/ModConfig.java): `src/main/java/online/zapaska007/advancedcorpses/config/ModConfig.java`

### Death and storage

- [Death handler](https://github.com/zapaska007/advanced-corpses/blob/main/src/main/java/online/zapaska007/advancedcorpses/event/DeathEventHandler.java): `src/main/java/online/zapaska007/advancedcorpses/event/DeathEventHandler.java`
- [Corpse entity](https://github.com/zapaska007/advanced-corpses/blob/main/src/main/java/online/zapaska007/advancedcorpses/entity/CorpseEntity.java): `src/main/java/online/zapaska007/advancedcorpses/entity/CorpseEntity.java`

### Corpse inventory

- [Corpse menu](https://github.com/zapaska007/advanced-corpses/blob/main/src/main/java/online/zapaska007/advancedcorpses/menu/CorpseMenu.java): `src/main/java/online/zapaska007/advancedcorpses/menu/CorpseMenu.java`

### Client presentation

- [Corpse screen](https://github.com/zapaska007/advanced-corpses/blob/main/src/main/java/online/zapaska007/advancedcorpses/client/CorpseScreen.java): `src/main/java/online/zapaska007/advancedcorpses/client/CorpseScreen.java`
- [Corpse renderer](https://github.com/zapaska007/advanced-corpses/blob/main/src/main/java/online/zapaska007/advancedcorpses/client/CorpseRenderer.java): `src/main/java/online/zapaska007/advancedcorpses/client/CorpseRenderer.java`

### Other components

- **Player**
- **Minecraft world**
- **Curios API**
- **Ely.by skins**

## Connections

- Mod registration → Death handler: registers handler
- Mod registration → Corpse entity: registers entity
- Mod registration → Corpse menu: registers menu
- Mod registration → Corpse renderer: registers renderer
- Mod registration → Corpse screen: registers screen
- Mod registration → Lifetime config: registers config
- Minecraft world → Death handler: fires death event
- Death handler → Player: reads inventory
- Death handler → Corpse entity: creates and fills
- Death handler → Minecraft world: spawns entity
- Death handler → Curios API: copies optional items
- Corpse entity → Lifetime config: reads lifetime
- Corpse entity → Minecraft world: discards on expiry
- Corpse entity → Corpse menu: creates menu
- Corpse menu → Corpse entity: reads and updates
- Corpse screen → Corpse menu: dispatches buttons
- Corpse menu → Player: transfers retrieved items
- Corpse renderer → Corpse entity: reads owner data
- Corpse renderer → Ely.by skins: requests skin
