# athlaeos/valhallammo architecture

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

- Interactive diagram: https://gitdiagram.com/athlaeos/valhallammo
- Repository: https://github.com/athlaeos/valhallammo

## Overview

ValhallaMMO is a Minecraft server plugin that makes player skill and progression affect crafting, equipment, combat, and other gameplay. The principal flow is player gameplay through skill/stat progression into modified items and gameplay outcomes; server administrators can additionally configure recipes and loot through editor tools. The graph preserves the README’s major capability branches. Several implementation paths are represented by exact paths in the source index or enclosing directories; unsampled wiring is not asserted.

Main entry points: [`core/src/main/java/me/athlaeos/valhallammo/ValhallaMMO.java`](https://github.com/athlaeos/valhallammo/blob/master/core/src/main/java/me/athlaeos/valhallammo/ValhallaMMO.java) (Plugin lifecycle), [`core/src/main/java/me/athlaeos/valhallammo/playerstats/AccumulativeStatManager.java`](https://github.com/athlaeos/valhallammo/blob/master/core/src/main/java/me/athlaeos/valhallammo/playerstats/AccumulativeStatManager.java) (Stat aggregation), [`core/src/main/java/me/athlaeos/valhallammo/skills/skills/Skill.java`](https://github.com/athlaeos/valhallammo/blob/master/core/src/main/java/me/athlaeos/valhallammo/skills/skills/Skill.java) (Skills & trees), [`core/src/main/java/me/athlaeos/valhallammo/crafting/CustomRecipeRegistry.java`](https://github.com/athlaeos/valhallammo/blob/master/core/src/main/java/me/athlaeos/valhallammo/crafting/CustomRecipeRegistry.java) (Recipe system)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["Plugin Runtime"]
  node_plugin["Plugin lifecycle<br/>[ValhallaMMO.java]"]
  node_config["Configuration"]
  node_nms["Version adapters"]
  node_localization["Translations"]
end

subgraph group_progression["Progression &amp; Social"]
  node_profiles["Player profiles<br/>[PowerProfile.java]"]
  node_stats["Stat aggregation"]
  node_skills["Skills &amp; trees<br/>[Skill.java]"]
  node_parties["Parties<br/>[PartyManager.java]"]
  node_leaderboards["Leaderboards"]
  node_database[("Persistence<br/>[Database.java]")]
end

subgraph group_items["Items &amp; Crafting"]
  node_recipes["Recipe system"]
  node_modifiers["Item modifiers<br/>[ItemRarity.java]"]
  node_itembuilder["Item construction<br/>[ItemBuilder.java]"]
  node_recipeeditor["Recipe editor"]
end

subgraph group_world["World Systems"]
  node_loot["Loot tables"]
  node_looteditor["Loot editing"]
  node_enemies["Enemy progression"]
  node_effects["Potion effects"]
  node_digging["Mining behavior<br/>[DigPacketInfo.java]"]
end

node_players(("Players"))
node_admins(("Server admins"))

node_players -->|"play on"| node_plugin
node_admins -->|"edit recipes"| node_recipeeditor
node_admins -->|"edit loot"| node_looteditor
node_plugin -->|"loads config"| node_config
node_plugin -->|"registers"| node_parties
node_plugin -->|"initializes"| node_enemies
node_plugin -.->|"selects adapter"| node_nms
node_players -->|"gain skills"| node_skills
node_players -->|"build stats"| node_stats
node_stats -->|"reads profile"| node_profiles
node_stats -->|"provides progression"| node_parties
node_profiles -.->|"persists data"| node_database
node_stats -.->|"ranks progress"| node_leaderboards
node_skills -->|"influences crafting"| node_recipes
node_recipes -.->|"applies modifiers"| node_modifiers
node_modifiers -->|"customizes items"| node_itembuilder
node_recipeeditor -.->|"edits recipes"| node_recipes
node_looteditor -.->|"edits tables"| node_loot
node_loot -->|"populates vault loot"| node_nms
node_skills -->|"scales enemies"| node_enemies
node_stats -->|"supplies stats"| node_enemies
node_players -->|"mine blocks"| node_digging
node_stats -->|"affects mining"| node_digging
node_players -->|"use effects"| node_effects
node_plugin -->|"initializes translations"| node_localization

click node_plugin "https://github.com/athlaeos/valhallammo/blob/master/core/src/main/java/me/athlaeos/valhallammo/ValhallaMMO.java"
click node_config "https://github.com/athlaeos/valhallammo/tree/master/core/src/main/java/me/athlaeos/valhallammo/configuration"
click node_nms "https://github.com/athlaeos/valhallammo/blob/master/v1_21_R1/src/main/java/me/athlaeos/valhallammo/nms/VaultLootListener.java"
click node_profiles "https://github.com/athlaeos/valhallammo/blob/master/core/src/main/java/me/athlaeos/valhallammo/playerstats/profiles/implementations/PowerProfile.java"
click node_stats "https://github.com/athlaeos/valhallammo/blob/master/core/src/main/java/me/athlaeos/valhallammo/playerstats/AccumulativeStatManager.java"
click node_skills "https://github.com/athlaeos/valhallammo/blob/master/core/src/main/java/me/athlaeos/valhallammo/skills/skills/Skill.java"
click node_parties "https://github.com/athlaeos/valhallammo/blob/master/core/src/main/java/me/athlaeos/valhallammo/parties/PartyManager.java"
click node_leaderboards "https://github.com/athlaeos/valhallammo/blob/master/core/src/main/java/me/athlaeos/valhallammo/playerstats/LeaderboardManager.java"
click node_database "https://github.com/athlaeos/valhallammo/blob/master/core/src/main/java/me/athlaeos/valhallammo/persistence/Database.java"
click node_recipes "https://github.com/athlaeos/valhallammo/blob/master/core/src/main/java/me/athlaeos/valhallammo/crafting/CustomRecipeRegistry.java"
click node_modifiers "https://github.com/athlaeos/valhallammo/blob/master/core/src/main/java/me/athlaeos/valhallammo/crafting/dynamicitemmodifiers/implementations/item_misc/ItemRarity.java"
click node_itembuilder "https://github.com/athlaeos/valhallammo/blob/master/core/src/main/java/me/athlaeos/valhallammo/item/ItemBuilder.java"
click node_recipeeditor "https://github.com/athlaeos/valhallammo/blob/master/core/src/main/java/me/athlaeos/valhallammo/gui/implementations/GridRecipeEditor.java"
click node_loot "https://github.com/athlaeos/valhallammo/blob/master/core/src/main/java/me/athlaeos/valhallammo/loot/LootTableRegistry.java"
click node_looteditor "https://github.com/athlaeos/valhallammo/blob/master/core/src/main/java/me/athlaeos/valhallammo/commands/valhallasubcommands/ManageLootTablesCommand.java"
click node_enemies "https://github.com/athlaeos/valhallammo/blob/master/core/src/main/java/me/athlaeos/valhallammo/entities/MonsterScalingManager.java"
click node_effects "https://github.com/athlaeos/valhallammo/blob/master/core/src/main/java/me/athlaeos/valhallammo/potioneffects/PotionEffectRegistry.java"
click node_digging "https://github.com/athlaeos/valhallammo/blob/master/core/src/main/java/me/athlaeos/valhallammo/block/DigPacketInfo.java"
click node_localization "https://github.com/athlaeos/valhallammo/blob/master/core/src/main/java/me/athlaeos/valhallammo/localization/TranslationManager.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_plugin,node_config,node_nms,node_localization toneBlue
class node_profiles,node_stats,node_skills,node_parties,node_leaderboards,node_database toneAmber
class node_recipes,node_modifiers,node_itembuilder,node_recipeeditor,node_admins toneMint
class node_loot,node_looteditor,node_enemies,node_effects,node_digging toneRose
class node_players toneIndigo
```

## Components

### Plugin Runtime

- [Plugin lifecycle](https://github.com/athlaeos/valhallammo/blob/master/core/src/main/java/me/athlaeos/valhallammo/ValhallaMMO.java): `core/src/main/java/me/athlaeos/valhallammo/ValhallaMMO.java`
- [Configuration](https://github.com/athlaeos/valhallammo/tree/master/core/src/main/java/me/athlaeos/valhallammo/configuration): `core/src/main/java/me/athlaeos/valhallammo/configuration`
- [Version adapters](https://github.com/athlaeos/valhallammo/blob/master/v1_21_R1/src/main/java/me/athlaeos/valhallammo/nms/VaultLootListener.java): `v1_21_R1/src/main/java/me/athlaeos/valhallammo/nms/VaultLootListener.java`
- [Translations](https://github.com/athlaeos/valhallammo/blob/master/core/src/main/java/me/athlaeos/valhallammo/localization/TranslationManager.java): `core/src/main/java/me/athlaeos/valhallammo/localization/TranslationManager.java`

### Progression & Social

- [Player profiles](https://github.com/athlaeos/valhallammo/blob/master/core/src/main/java/me/athlaeos/valhallammo/playerstats/profiles/implementations/PowerProfile.java): `core/src/main/java/me/athlaeos/valhallammo/playerstats/profiles/implementations/PowerProfile.java`
- [Stat aggregation](https://github.com/athlaeos/valhallammo/blob/master/core/src/main/java/me/athlaeos/valhallammo/playerstats/AccumulativeStatManager.java): `core/src/main/java/me/athlaeos/valhallammo/playerstats/AccumulativeStatManager.java`
- [Skills & trees](https://github.com/athlaeos/valhallammo/blob/master/core/src/main/java/me/athlaeos/valhallammo/skills/skills/Skill.java): `core/src/main/java/me/athlaeos/valhallammo/skills/skills/Skill.java`
- [Parties](https://github.com/athlaeos/valhallammo/blob/master/core/src/main/java/me/athlaeos/valhallammo/parties/PartyManager.java): `core/src/main/java/me/athlaeos/valhallammo/parties/PartyManager.java`
- [Leaderboards](https://github.com/athlaeos/valhallammo/blob/master/core/src/main/java/me/athlaeos/valhallammo/playerstats/LeaderboardManager.java): `core/src/main/java/me/athlaeos/valhallammo/playerstats/LeaderboardManager.java`
- [Persistence](https://github.com/athlaeos/valhallammo/blob/master/core/src/main/java/me/athlaeos/valhallammo/persistence/Database.java): `core/src/main/java/me/athlaeos/valhallammo/persistence/Database.java`

### Items & Crafting

- [Recipe system](https://github.com/athlaeos/valhallammo/blob/master/core/src/main/java/me/athlaeos/valhallammo/crafting/CustomRecipeRegistry.java): `core/src/main/java/me/athlaeos/valhallammo/crafting/CustomRecipeRegistry.java`
- [Item modifiers](https://github.com/athlaeos/valhallammo/blob/master/core/src/main/java/me/athlaeos/valhallammo/crafting/dynamicitemmodifiers/implementations/item_misc/ItemRarity.java): `core/src/main/java/me/athlaeos/valhallammo/crafting/dynamicitemmodifiers/implementations/item_misc/ItemRarity.java`
- [Item construction](https://github.com/athlaeos/valhallammo/blob/master/core/src/main/java/me/athlaeos/valhallammo/item/ItemBuilder.java): `core/src/main/java/me/athlaeos/valhallammo/item/ItemBuilder.java`
- [Recipe editor](https://github.com/athlaeos/valhallammo/blob/master/core/src/main/java/me/athlaeos/valhallammo/gui/implementations/GridRecipeEditor.java): `core/src/main/java/me/athlaeos/valhallammo/gui/implementations/GridRecipeEditor.java`

### World Systems

- [Loot tables](https://github.com/athlaeos/valhallammo/blob/master/core/src/main/java/me/athlaeos/valhallammo/loot/LootTableRegistry.java): `core/src/main/java/me/athlaeos/valhallammo/loot/LootTableRegistry.java`
- [Loot editing](https://github.com/athlaeos/valhallammo/blob/master/core/src/main/java/me/athlaeos/valhallammo/commands/valhallasubcommands/ManageLootTablesCommand.java): `core/src/main/java/me/athlaeos/valhallammo/commands/valhallasubcommands/ManageLootTablesCommand.java`
- [Enemy progression](https://github.com/athlaeos/valhallammo/blob/master/core/src/main/java/me/athlaeos/valhallammo/entities/MonsterScalingManager.java): `core/src/main/java/me/athlaeos/valhallammo/entities/MonsterScalingManager.java`
- [Potion effects](https://github.com/athlaeos/valhallammo/blob/master/core/src/main/java/me/athlaeos/valhallammo/potioneffects/PotionEffectRegistry.java): `core/src/main/java/me/athlaeos/valhallammo/potioneffects/PotionEffectRegistry.java`
- [Mining behavior](https://github.com/athlaeos/valhallammo/blob/master/core/src/main/java/me/athlaeos/valhallammo/block/DigPacketInfo.java): `core/src/main/java/me/athlaeos/valhallammo/block/DigPacketInfo.java`

### Other components

- **Players**
- **Server admins**

## Connections

- Players → Plugin lifecycle: play on
- Server admins → Recipe editor: edit recipes
- Server admins → Loot editing: edit loot
- Plugin lifecycle → Configuration: loads config (evidence: `core/src/main/java/me/athlaeos/valhallammo/ValhallaMMO.java`)
- Plugin lifecycle → Parties: registers (evidence: `core/src/main/java/me/athlaeos/valhallammo/parties/PartyManager.java`)
- Plugin lifecycle → Enemy progression: initializes (evidence: `core/src/main/java/me/athlaeos/valhallammo/entities/MonsterScalingManager.java`)
- Plugin lifecycle → Version adapters: selects adapter (evidence: `v1_21_R1/src/main/java/me/athlaeos/valhallammo/nms/VaultLootListener.java`)
- Players → Skills & trees: gain skills
- Players → Stat aggregation: build stats
- Stat aggregation → Player profiles: reads profile (evidence: `core/src/main/java/me/athlaeos/valhallammo/playerstats/AccumulativeStatManager.java`)
- Stat aggregation → Parties: provides progression (evidence: `core/src/main/java/me/athlaeos/valhallammo/parties/PartyManager.java`)
- Player profiles → Persistence: persists data
- Stat aggregation → Leaderboards: ranks progress
- Skills & trees → Recipe system: influences crafting
- Recipe system → Item modifiers: applies modifiers
- Item modifiers → Item construction: customizes items (evidence: `core/src/main/java/me/athlaeos/valhallammo/crafting/dynamicitemmodifiers/implementations/item_misc/ItemRarity.java`)
- Recipe editor → Recipe system: edits recipes
- Loot editing → Loot tables: edits tables
- Loot tables → Version adapters: populates vault loot (evidence: `v1_21_R1/src/main/java/me/athlaeos/valhallammo/nms/VaultLootListener.java`)
- Skills & trees → Enemy progression: scales enemies (evidence: `core/src/main/java/me/athlaeos/valhallammo/entities/MonsterScalingManager.java`)
- Stat aggregation → Enemy progression: supplies stats (evidence: `core/src/main/java/me/athlaeos/valhallammo/entities/MonsterScalingManager.java`)
- Players → Mining behavior: mine blocks
- Stat aggregation → Mining behavior: affects mining (evidence: `core/src/main/java/me/athlaeos/valhallammo/block/DigPacketInfo.java`)
- Players → Potion effects: use effects
- Plugin lifecycle → Translations: initializes translations (evidence: `core/src/main/java/me/athlaeos/valhallammo/localization/TranslationManager.java`)
