# prasodym/jomender architecture

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

## Overview

Jomlua Ender is a NeoForge Minecraft technology mod. Players gather its materials and use Endarium gear, upgradeable armor, processing machines, and a multiblock uranium reactor; machine interfaces expose status and configuration. The runtime also includes world-based fluid infusion and Galaxis conversion, plus recipe discovery through JEI and transfer compatibility with other tech mods. The graph preserves these documented capability branches. Source excerpts show registration, selected event handlers, and reactor/machine details; unsampled subsystem links are included only where the README documents them.

Main entry points: [`src/main/java/de/jomender/Jomender.java`](https://github.com/prasodym/jomender/blob/master/src/main/java/de/jomender/Jomender.java) (Mod initialization), [`src/main/java/de/jomender/ModRecipes.java`](https://github.com/prasodym/jomender/blob/master/src/main/java/de/jomender/ModRecipes.java) (Recipe types), [`src/main/java/de/jomender/ModBlocks.java`](https://github.com/prasodym/jomender/blob/master/src/main/java/de/jomender/ModBlocks.java) (Blocks and ores), [`src/main/java/de/jomender/recipe/CrushingRecipe.java`](https://github.com/prasodym/jomender/blob/master/src/main/java/de/jomender/recipe/CrushingRecipe.java) (Crusher recipes)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_core["Mod foundation"]
  node_mod["Mod initialization<br/>[Jomender.java]"]
  node_blocks["Blocks and ores<br/>[ModBlocks.java]"]
  node_items["Items and materials<br/>[ModItems.java]"]
  node_blockentities["Machine registrations"]
end

subgraph group_materials["Materials and gear"]
  node_gear["Endarium gear<br/>[EndariumTools.java]"]
  node_armor["Armor upgrades"]
end

subgraph group_processing["Machines and recipes"]
  node_miner["Germanium miner"]
  node_crusher["Crusher recipes"]
  node_importer["Foreign recipe import"]
  node_infusion["Fluid infusion"]
  node_recipecatalog["Recipe types<br/>[ModRecipes.java]"]
  node_water["Infinite water"]
end

subgraph group_reactor["Reactor system"]
  node_reactorstructure["Reactor structure"]
  node_reactor["Reactor operation"]
  node_ports["Reactor ports"]
end

subgraph group_experience["Interfaces and integrations"]
  node_menutypes["Machine menus<br/>[ModMenuTypes.java]"]
  node_screens["Machine screens<br/>[ClientScreens.java]"]
  node_recipecache["Client recipe cache"]
  node_jeiplugin["JEI recipe pages"]
  node_sync["Recipe sync<br/>[RecipeSync.java]"]
  node_sideconfig["Side configuration<br/>[SideConfig.java]"]
end

node_player(("Player"))
node_world(("Minecraft world"))
node_techmods(("Tech mods"))
node_jei(("JEI"))

node_mod -->|"registers"| node_blocks
node_mod -->|"registers"| node_items
node_mod -->|"registers"| node_blockentities
node_mod -->|"registers"| node_recipecatalog
node_player -->|"gathers ores"| node_blocks
node_blocks -->|"provides materials"| node_items
node_player -->|"crafts gear"| node_gear
node_player -->|"upgrades armor"| node_armor
node_player -->|"operates"| node_miner
node_player -->|"processes items"| node_crusher
node_recipecatalog -->|"defines recipes"| node_crusher
node_importer -->|"imports recipes"| node_crusher
node_world -->|"ticks entities"| node_infusion
node_infusion -->|"matches recipes"| node_recipecatalog
node_player -->|"builds multiblock"| node_reactorstructure
node_reactor -->|"validates structure"| node_reactorstructure
node_reactor -->|"uses port state"| node_ports
node_player -->|"opens machine menu"| node_menutypes
node_menutypes -->|"registers screens"| node_screens
node_recipecatalog -->|"supplies recipes"| node_recipecache
node_recipecache -.->|"feeds recipe pages"| node_jeiplugin
node_player -->|"browses recipes"| node_jeiplugin
node_techmods -.->|"transfers resources"| node_blocks
node_player -->|"configures sides"| node_sideconfig
node_techmods -.->|"uses transfers"| node_sideconfig
node_player -->|"draws water"| node_water

click node_mod "https://github.com/prasodym/jomender/blob/master/src/main/java/de/jomender/Jomender.java"
click node_blocks "https://github.com/prasodym/jomender/blob/master/src/main/java/de/jomender/ModBlocks.java"
click node_items "https://github.com/prasodym/jomender/blob/master/src/main/java/de/jomender/ModItems.java"
click node_blockentities "https://github.com/prasodym/jomender/blob/master/src/main/java/de/jomender/ModBlockEntities.java"
click node_gear "https://github.com/prasodym/jomender/blob/master/src/main/java/de/jomender/item/EndariumTools.java"
click node_armor "https://github.com/prasodym/jomender/blob/master/src/main/java/de/jomender/armor/ArmorUpgradeEffects.java"
click node_miner "https://github.com/prasodym/jomender/blob/master/src/main/java/de/jomender/blockentity/GermaniumMinerBlockEntity.java"
click node_crusher "https://github.com/prasodym/jomender/blob/master/src/main/java/de/jomender/recipe/CrushingRecipe.java"
click node_importer "https://github.com/prasodym/jomender/blob/master/src/main/java/de/jomender/crusher/ForeignCrushingImporter.java"
click node_infusion "https://github.com/prasodym/jomender/blob/master/src/main/java/de/jomender/misc/FluidInfusionHandler.java"
click node_recipecatalog "https://github.com/prasodym/jomender/blob/master/src/main/java/de/jomender/ModRecipes.java"
click node_reactorstructure "https://github.com/prasodym/jomender/blob/master/src/main/java/de/jomender/reactor/ReactorStructure.java"
click node_reactor "https://github.com/prasodym/jomender/blob/master/src/main/java/de/jomender/reactor/ReactorControllerBlockEntity.java"
click node_ports "https://github.com/prasodym/jomender/blob/master/src/main/java/de/jomender/reactor/ReactorPortBlockEntity.java"
click node_menutypes "https://github.com/prasodym/jomender/blob/master/src/main/java/de/jomender/ModMenuTypes.java"
click node_screens "https://github.com/prasodym/jomender/blob/master/src/main/java/de/jomender/client/ClientScreens.java"
click node_recipecache "https://github.com/prasodym/jomender/blob/master/src/main/java/de/jomender/client/ClientRecipeCache.java"
click node_jeiplugin "https://github.com/prasodym/jomender/blob/master/src/main/java/de/jomender/compat/jei/JomEnderJeiPlugin.java"
click node_sync "https://github.com/prasodym/jomender/blob/master/src/main/java/de/jomender/compat/RecipeSync.java"
click node_sideconfig "https://github.com/prasodym/jomender/blob/master/src/main/java/de/jomender/sideconfig/SideConfig.java"
click node_water "https://github.com/prasodym/jomender/blob/master/src/main/java/de/jomender/blockentity/InfiniteWaterBlockEntity.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_blocks,node_items,node_blockentities toneBlue
class node_gear,node_armor toneAmber
class node_miner,node_crusher,node_importer,node_infusion,node_recipecatalog,node_water toneMint
class node_reactorstructure,node_reactor,node_ports toneRose
class node_menutypes,node_screens,node_recipecache,node_jeiplugin,node_sync,node_sideconfig,node_player,node_world,node_techmods,node_jei toneIndigo
```

## Components

### Mod foundation

- [Mod initialization](https://github.com/prasodym/jomender/blob/master/src/main/java/de/jomender/Jomender.java): `src/main/java/de/jomender/Jomender.java`
- [Blocks and ores](https://github.com/prasodym/jomender/blob/master/src/main/java/de/jomender/ModBlocks.java): `src/main/java/de/jomender/ModBlocks.java`
- [Items and materials](https://github.com/prasodym/jomender/blob/master/src/main/java/de/jomender/ModItems.java): `src/main/java/de/jomender/ModItems.java`
- [Machine registrations](https://github.com/prasodym/jomender/blob/master/src/main/java/de/jomender/ModBlockEntities.java): `src/main/java/de/jomender/ModBlockEntities.java`

### Materials and gear

- [Endarium gear](https://github.com/prasodym/jomender/blob/master/src/main/java/de/jomender/item/EndariumTools.java): `src/main/java/de/jomender/item/EndariumTools.java`
- [Armor upgrades](https://github.com/prasodym/jomender/blob/master/src/main/java/de/jomender/armor/ArmorUpgradeEffects.java): `src/main/java/de/jomender/armor/ArmorUpgradeEffects.java`

### Machines and recipes

- [Germanium miner](https://github.com/prasodym/jomender/blob/master/src/main/java/de/jomender/blockentity/GermaniumMinerBlockEntity.java): `src/main/java/de/jomender/blockentity/GermaniumMinerBlockEntity.java`
- [Crusher recipes](https://github.com/prasodym/jomender/blob/master/src/main/java/de/jomender/recipe/CrushingRecipe.java): `src/main/java/de/jomender/recipe/CrushingRecipe.java`
- [Foreign recipe import](https://github.com/prasodym/jomender/blob/master/src/main/java/de/jomender/crusher/ForeignCrushingImporter.java): `src/main/java/de/jomender/crusher/ForeignCrushingImporter.java`
- [Fluid infusion](https://github.com/prasodym/jomender/blob/master/src/main/java/de/jomender/misc/FluidInfusionHandler.java): `src/main/java/de/jomender/misc/FluidInfusionHandler.java`
- [Recipe types](https://github.com/prasodym/jomender/blob/master/src/main/java/de/jomender/ModRecipes.java): `src/main/java/de/jomender/ModRecipes.java`
- [Infinite water](https://github.com/prasodym/jomender/blob/master/src/main/java/de/jomender/blockentity/InfiniteWaterBlockEntity.java): `src/main/java/de/jomender/blockentity/InfiniteWaterBlockEntity.java`

### Reactor system

- [Reactor structure](https://github.com/prasodym/jomender/blob/master/src/main/java/de/jomender/reactor/ReactorStructure.java): `src/main/java/de/jomender/reactor/ReactorStructure.java`
- [Reactor operation](https://github.com/prasodym/jomender/blob/master/src/main/java/de/jomender/reactor/ReactorControllerBlockEntity.java): `src/main/java/de/jomender/reactor/ReactorControllerBlockEntity.java`
- [Reactor ports](https://github.com/prasodym/jomender/blob/master/src/main/java/de/jomender/reactor/ReactorPortBlockEntity.java): `src/main/java/de/jomender/reactor/ReactorPortBlockEntity.java`

### Interfaces and integrations

- [Machine menus](https://github.com/prasodym/jomender/blob/master/src/main/java/de/jomender/ModMenuTypes.java): `src/main/java/de/jomender/ModMenuTypes.java`
- [Machine screens](https://github.com/prasodym/jomender/blob/master/src/main/java/de/jomender/client/ClientScreens.java): `src/main/java/de/jomender/client/ClientScreens.java`
- [Client recipe cache](https://github.com/prasodym/jomender/blob/master/src/main/java/de/jomender/client/ClientRecipeCache.java): `src/main/java/de/jomender/client/ClientRecipeCache.java`
- [JEI recipe pages](https://github.com/prasodym/jomender/blob/master/src/main/java/de/jomender/compat/jei/JomEnderJeiPlugin.java): `src/main/java/de/jomender/compat/jei/JomEnderJeiPlugin.java`
- [Recipe sync](https://github.com/prasodym/jomender/blob/master/src/main/java/de/jomender/compat/RecipeSync.java): `src/main/java/de/jomender/compat/RecipeSync.java`
- [Side configuration](https://github.com/prasodym/jomender/blob/master/src/main/java/de/jomender/sideconfig/SideConfig.java): `src/main/java/de/jomender/sideconfig/SideConfig.java`

### Other components

- **Player**
- **Minecraft world**
- **Tech mods**
- **JEI**

## Connections

- Mod initialization → Blocks and ores: registers (evidence: `src/main/java/de/jomender/Jomender.java`)
- Mod initialization → Items and materials: registers (evidence: `src/main/java/de/jomender/Jomender.java`)
- Mod initialization → Machine registrations: registers (evidence: `src/main/java/de/jomender/Jomender.java`)
- Mod initialization → Recipe types: registers (evidence: `src/main/java/de/jomender/Jomender.java`)
- Player → Blocks and ores: gathers ores (evidence: `README.md`)
- Blocks and ores → Items and materials: provides materials (evidence: `README.md`)
- Player → Endarium gear: crafts gear (evidence: `README.md`)
- Player → Armor upgrades: upgrades armor (evidence: `README.md`)
- Player → Germanium miner: operates (evidence: `README.md`)
- Player → Crusher recipes: processes items (evidence: `README.md`)
- Recipe types → Crusher recipes: defines recipes (evidence: `src/main/java/de/jomender/recipe/CrushingRecipe.java`)
- Foreign recipe import → Crusher recipes: imports recipes (evidence: `src/main/java/de/jomender/crusher/ForeignCrushingImporter.java`)
- Minecraft world → Fluid infusion: ticks entities
- Fluid infusion → Recipe types: matches recipes (evidence: `src/main/java/de/jomender/misc/FluidInfusionHandler.java`)
- Player → Reactor structure: builds multiblock (evidence: `README.md`)
- Reactor operation → Reactor structure: validates structure (evidence: `src/main/java/de/jomender/reactor/ReactorControllerBlockEntity.java`)
- Reactor operation → Reactor ports: uses port state (evidence: `src/main/java/de/jomender/reactor/ReactorControllerBlockEntity.java`)
- Player → Machine menus: opens machine menu (evidence: `README.md`)
- Machine menus → Machine screens: registers screens (evidence: `src/main/java/de/jomender/client/ClientScreens.java`)
- Recipe types → Client recipe cache: supplies recipes (evidence: `src/main/java/de/jomender/client/ClientRecipeCache.java`)
- Client recipe cache → JEI recipe pages: feeds recipe pages
- Player → JEI recipe pages: browses recipes (evidence: `README.md`)
- Tech mods → Blocks and ores: transfers resources (evidence: `README.md`)
- Player → Side configuration: configures sides (evidence: `README.md`)
- Tech mods → Side configuration: uses transfers (evidence: `README.md`)
- Player → Infinite water: draws water (evidence: `README.md`)
