# tortugolen/ostrea architecture

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

- Interactive diagram: https://gitdiagram.com/tortugolen/ostrea
- Repository: https://github.com/tortugolen/ostrea

## Overview

Ostrea is a Minecraft Forge mod adding oyster-themed blocks, materials, crafting altars, equipment, effects, world generation, and loot behavior. The principal player workflow is gathering or crafting mod materials, arranging inputs at an altar, and receiving a recipe result; combat and pearl-based effect mechanics are a separate gameplay branch. Sampled code confirms altar recipe lookup and result handling, registry startup, aragonite placement, and several effect interactions. Other subsystem links are limited to what the tree and README support.

Main entry points: [`src/main/java/com/tortugolen/ostrea/Ostrea.java`](https://github.com/tortugolen/ostrea/blob/1.20.1/src/main/java/com/tortugolen/ostrea/Ostrea.java) (Mod entry point), [`src/main/java/com/tortugolen/ostrea/Recipes/AbstractCultRecipes.java`](https://github.com/tortugolen/ostrea/blob/1.20.1/src/main/java/com/tortugolen/ostrea/Recipes/AbstractCultRecipes.java) (Altar recipes), [`src/main/java/com/tortugolen/ostrea/BlockEntities/DeepslateAltarBlockEntity.java`](https://github.com/tortugolen/ostrea/blob/1.20.1/src/main/java/com/tortugolen/ostrea/BlockEntities/DeepslateAltarBlockEntity.java) (Deepslate altar), [`src/main/java/com/tortugolen/ostrea/Init/InitBlocks.java`](https://github.com/tortugolen/ostrea/blob/1.20.1/src/main/java/com/tortugolen/ostrea/Init/InitBlocks.java) (Block registry)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_crafting["Crafting and Machines"]
  node_altar_be["Deepslate altar"]
  node_cult_recipes["Altar recipes"]
  node_recipe_types["Recipe families"]
  node_machines["Oyster machines"]
  node_machine_ui["Machine menus"]
end

subgraph group_world["World and Content"]
  node_init_blocks["Block registry<br/>[InitBlocks.java]"]
  node_init_items["Item registry<br/>[InitItems.java]"]
  node_aragonite["Aragonite growth"]
  node_aragonite_gen["Aragonite worldgen"]
  node_oyster_worldgen["Oyster worldgen<br/>[OysterFeature.java]"]
  node_loot["Loot modifiers"]
end

subgraph group_combat["Combat and Effects"]
  node_gear["Pearl equipment"]
  node_pearl_tips["Pearl projectiles"]
  node_enchants["Enchantments"]
  node_game_events["Gameplay events"]
  node_triggers["Advancement triggers"]
end

subgraph group_integration["Interfaces and Integration"]
  node_init_runtime["Runtime registries"]
  node_machine_screens["Machine screens"]
  node_jei_views["Recipe displays"]
end

node_player(("Player"))
node_forge(("Forge runtime"))
node_jei_service(("JEI"))
node_ostrea["Mod entry point<br/>[Ostrea.java]"]

node_forge -->|"loads mod"| node_ostrea
node_ostrea -->|"registers"| node_init_blocks
node_ostrea -->|"registers"| node_init_items
node_ostrea -->|"registers"| node_init_runtime
node_player -->|"uses altar"| node_altar_be
node_altar_be -->|"looks up recipe"| node_cult_recipes
node_altar_be -->|"applies result"| node_cult_recipes
node_cult_recipes -->|"defines family"| node_recipe_types
node_player -->|"opens machine"| node_machine_ui
node_machine_ui -->|"presents UI"| node_machine_screens
node_player -->|"gathers material"| node_aragonite
node_aragonite_gen -->|"places blocks"| node_init_blocks
node_aragonite -->|"checks blocks"| node_init_blocks
node_player -->|"equips and uses"| node_gear
node_gear -->|"launches projectile"| node_pearl_tips
node_game_events -->|"checks enchantments"| node_enchants
node_game_events -->|"fires trigger"| node_triggers
node_player -->|"defeats entities"| node_loot
node_jei_service -.->|"loads plugin"| node_jei_views
node_jei_views -.->|"displays recipes"| node_cult_recipes

click node_ostrea "https://github.com/tortugolen/ostrea/blob/1.20.1/src/main/java/com/tortugolen/ostrea/Ostrea.java"
click node_init_blocks "https://github.com/tortugolen/ostrea/blob/1.20.1/src/main/java/com/tortugolen/ostrea/Init/InitBlocks.java"
click node_init_items "https://github.com/tortugolen/ostrea/blob/1.20.1/src/main/java/com/tortugolen/ostrea/Init/InitItems.java"
click node_init_runtime "https://github.com/tortugolen/ostrea/tree/1.20.1/src/main/java/com/tortugolen/ostrea/Init"
click node_altar_be "https://github.com/tortugolen/ostrea/blob/1.20.1/src/main/java/com/tortugolen/ostrea/BlockEntities/DeepslateAltarBlockEntity.java"
click node_cult_recipes "https://github.com/tortugolen/ostrea/blob/1.20.1/src/main/java/com/tortugolen/ostrea/Recipes/AbstractCultRecipes.java"
click node_recipe_types "https://github.com/tortugolen/ostrea/tree/1.20.1/src/main/java/com/tortugolen/ostrea/Recipes"
click node_machines "https://github.com/tortugolen/ostrea/tree/1.20.1/src/main/java/com/tortugolen/ostrea/BlockEntities"
click node_machine_ui "https://github.com/tortugolen/ostrea/tree/1.20.1/src/main/java/com/tortugolen/ostrea/GUIs/Menus"
click node_machine_screens "https://github.com/tortugolen/ostrea/tree/1.20.1/src/main/java/com/tortugolen/ostrea/GUIs/Screens"
click node_aragonite "https://github.com/tortugolen/ostrea/blob/1.20.1/src/main/java/com/tortugolen/ostrea/Blocks/AragoniteShardBlock.java"
click node_aragonite_gen "https://github.com/tortugolen/ostrea/blob/1.20.1/src/main/java/com/tortugolen/ostrea/Features/AragoniteFeature.java"
click node_oyster_worldgen "https://github.com/tortugolen/ostrea/blob/1.20.1/src/main/java/com/tortugolen/ostrea/Features/OysterFeature.java"
click node_gear "https://github.com/tortugolen/ostrea/tree/1.20.1/src/main/java/com/tortugolen/ostrea/Items"
click node_pearl_tips "https://github.com/tortugolen/ostrea/tree/1.20.1/src/main/java/com/tortugolen/ostrea/Entities/PearlTips"
click node_enchants "https://github.com/tortugolen/ostrea/tree/1.20.1/src/main/java/com/tortugolen/ostrea/Enchantments"
click node_game_events "https://github.com/tortugolen/ostrea/tree/1.20.1/src/main/java/com/tortugolen/ostrea/Events"
click node_triggers "https://github.com/tortugolen/ostrea/tree/1.20.1/src/main/java/com/tortugolen/ostrea/Triggers"
click node_loot "https://github.com/tortugolen/ostrea/tree/1.20.1/src/main/java/com/tortugolen/ostrea/LootModifiers"
click node_jei_views "https://github.com/tortugolen/ostrea/tree/1.20.1/src/main/java/com/tortugolen/ostrea/JEI"

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_altar_be,node_cult_recipes,node_recipe_types,node_machines,node_machine_ui toneBlue
class node_init_blocks,node_init_items,node_aragonite,node_aragonite_gen,node_oyster_worldgen,node_loot toneAmber
class node_gear,node_pearl_tips,node_enchants,node_game_events,node_triggers toneMint
class node_init_runtime,node_machine_screens,node_jei_views toneRose
class node_player,node_forge,node_jei_service toneIndigo
class node_ostrea toneTeal
```

## Components

### Crafting and Machines

- [Deepslate altar](https://github.com/tortugolen/ostrea/blob/1.20.1/src/main/java/com/tortugolen/ostrea/BlockEntities/DeepslateAltarBlockEntity.java): `src/main/java/com/tortugolen/ostrea/BlockEntities/DeepslateAltarBlockEntity.java`
- [Altar recipes](https://github.com/tortugolen/ostrea/blob/1.20.1/src/main/java/com/tortugolen/ostrea/Recipes/AbstractCultRecipes.java): `src/main/java/com/tortugolen/ostrea/Recipes/AbstractCultRecipes.java`
- [Recipe families](https://github.com/tortugolen/ostrea/tree/1.20.1/src/main/java/com/tortugolen/ostrea/Recipes): `src/main/java/com/tortugolen/ostrea/Recipes`
- [Oyster machines](https://github.com/tortugolen/ostrea/tree/1.20.1/src/main/java/com/tortugolen/ostrea/BlockEntities): `src/main/java/com/tortugolen/ostrea/BlockEntities`
- [Machine menus](https://github.com/tortugolen/ostrea/tree/1.20.1/src/main/java/com/tortugolen/ostrea/GUIs/Menus): `src/main/java/com/tortugolen/ostrea/GUIs/Menus`

### World and Content

- [Block registry](https://github.com/tortugolen/ostrea/blob/1.20.1/src/main/java/com/tortugolen/ostrea/Init/InitBlocks.java): `src/main/java/com/tortugolen/ostrea/Init/InitBlocks.java`
- [Item registry](https://github.com/tortugolen/ostrea/blob/1.20.1/src/main/java/com/tortugolen/ostrea/Init/InitItems.java): `src/main/java/com/tortugolen/ostrea/Init/InitItems.java`
- [Aragonite growth](https://github.com/tortugolen/ostrea/blob/1.20.1/src/main/java/com/tortugolen/ostrea/Blocks/AragoniteShardBlock.java): `src/main/java/com/tortugolen/ostrea/Blocks/AragoniteShardBlock.java`
- [Aragonite worldgen](https://github.com/tortugolen/ostrea/blob/1.20.1/src/main/java/com/tortugolen/ostrea/Features/AragoniteFeature.java): `src/main/java/com/tortugolen/ostrea/Features/AragoniteFeature.java`
- [Oyster worldgen](https://github.com/tortugolen/ostrea/blob/1.20.1/src/main/java/com/tortugolen/ostrea/Features/OysterFeature.java): `src/main/java/com/tortugolen/ostrea/Features/OysterFeature.java`
- [Loot modifiers](https://github.com/tortugolen/ostrea/tree/1.20.1/src/main/java/com/tortugolen/ostrea/LootModifiers): `src/main/java/com/tortugolen/ostrea/LootModifiers`

### Combat and Effects

- [Pearl equipment](https://github.com/tortugolen/ostrea/tree/1.20.1/src/main/java/com/tortugolen/ostrea/Items): `src/main/java/com/tortugolen/ostrea/Items`
- [Pearl projectiles](https://github.com/tortugolen/ostrea/tree/1.20.1/src/main/java/com/tortugolen/ostrea/Entities/PearlTips): `src/main/java/com/tortugolen/ostrea/Entities/PearlTips`
- [Enchantments](https://github.com/tortugolen/ostrea/tree/1.20.1/src/main/java/com/tortugolen/ostrea/Enchantments): `src/main/java/com/tortugolen/ostrea/Enchantments`
- [Gameplay events](https://github.com/tortugolen/ostrea/tree/1.20.1/src/main/java/com/tortugolen/ostrea/Events): `src/main/java/com/tortugolen/ostrea/Events`
- [Advancement triggers](https://github.com/tortugolen/ostrea/tree/1.20.1/src/main/java/com/tortugolen/ostrea/Triggers): `src/main/java/com/tortugolen/ostrea/Triggers`

### Interfaces and Integration

- [Runtime registries](https://github.com/tortugolen/ostrea/tree/1.20.1/src/main/java/com/tortugolen/ostrea/Init): `src/main/java/com/tortugolen/ostrea/Init`
- [Machine screens](https://github.com/tortugolen/ostrea/tree/1.20.1/src/main/java/com/tortugolen/ostrea/GUIs/Screens): `src/main/java/com/tortugolen/ostrea/GUIs/Screens`
- [Recipe displays](https://github.com/tortugolen/ostrea/tree/1.20.1/src/main/java/com/tortugolen/ostrea/JEI): `src/main/java/com/tortugolen/ostrea/JEI`

### Other components

- **Player**
- **Forge runtime**
- **JEI**
- [Mod entry point](https://github.com/tortugolen/ostrea/blob/1.20.1/src/main/java/com/tortugolen/ostrea/Ostrea.java): `src/main/java/com/tortugolen/ostrea/Ostrea.java`

## Connections

- Forge runtime → Mod entry point: loads mod
- Mod entry point → Block registry: registers
- Mod entry point → Item registry: registers
- Mod entry point → Runtime registries: registers
- Player → Deepslate altar: uses altar
- Deepslate altar → Altar recipes: looks up recipe
- Deepslate altar → Altar recipes: applies result
- Altar recipes → Recipe families: defines family
- Player → Machine menus: opens machine
- Machine menus → Machine screens: presents UI
- Player → Aragonite growth: gathers material
- Aragonite worldgen → Block registry: places blocks
- Aragonite growth → Block registry: checks blocks
- Player → Pearl equipment: equips and uses
- Pearl equipment → Pearl projectiles: launches projectile
- Gameplay events → Enchantments: checks enchantments
- Gameplay events → Advancement triggers: fires trigger
- Player → Loot modifiers: defeats entities
- JEI → Recipe displays: loads plugin
- Recipe displays → Altar recipes: displays recipes
