# flashyreese/sodium-extra architecture

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

## Overview

Sodium Extra is a client-side Minecraft mod that adds configurable rendering, particle, interface, and debug-HUD options around Sodium. The player-facing workflow is to set options, which runtime hooks consult or apply while the game runs; loader entry points register the shared debug entries. Protected gameplay fog is a documented capability: server authorization involves a resource pack and Greenlight. The excerpts show representative hooks and configuration access, not every feature’s wiring, so uncertain links are omitted.

Main entry points: [`common/src/main/java/me/flashyreese/mods/sodiumextra/client/config/SodiumExtraGameOptions.java`](https://github.com/flashyreese/sodium-extra/blob/26.3/dev/common/src/main/java/me/flashyreese/mods/sodiumextra/client/config/SodiumExtraGameOptions.java) (Game options), [`common/src/main/java/me/flashyreese/mods/sodiumextra/client/SodiumExtraClientMod.java`](https://github.com/flashyreese/sodium-extra/blob/26.3/dev/common/src/main/java/me/flashyreese/mods/sodiumextra/client/SodiumExtraClientMod.java) (Client mod services), [`common/src/main/java/me/flashyreese/mods/sodiumextra/client/fog`](https://github.com/flashyreese/sodium-extra/tree/26.3/dev/common/src/main/java/me/flashyreese/mods/sodiumextra/client/fog) (Fog controls), [`common/src/main/java/me/flashyreese/mods/sodiumextra/mixin/fog`](https://github.com/flashyreese/sodium-extra/tree/26.3/dev/common/src/main/java/me/flashyreese/mods/sodiumextra/mixin/fog) (Fog hooks)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_options["Options and setup"]
  node_client_mod["Client mod services"]
  node_game_options["Game options"]
  node_config_io["Config file I/O<br/>[ConfigFileIO.java]"]
  node_mixin_config["Mixin options"]
end

subgraph group_render["Rendering features"]
  node_fog["Fog controls"]
  node_fog_hooks["Fog hooks"]
  node_particle_hooks["Particle controls"]
  node_render_hooks["Render options"]
  node_other_hooks["Other game hooks"]
  node_policy["Protected fog policy"]
end

subgraph group_interface["HUD and interface"]
  node_hud["Debug HUD"]
  node_toast_filter["Toast filtering<br/>[ToastFilter.java]"]
end

subgraph group_platform["Loader integration"]
  node_fabric["Fabric initializer"]
  node_neoforge["NeoForge initializer"]
end

node_player(("Player"))
node_game["Minecraft client"]
node_resource_pack["Server resource pack"]
node_greenlight["Greenlight"]

node_player -->|"plays"| node_game
node_client_mod -->|"loads options"| node_game_options
node_game_options -->|"persists settings"| node_config_io
node_client_mod -->|"builds mixin options"| node_mixin_config
node_game_options -->|"controls particles"| node_particle_hooks
node_game_options -->|"configures fog"| node_fog
node_fog_hooks -->|"adjusts fog rendering"| node_fog
node_game_options -->|"controls features"| node_other_hooks
node_game_options -->|"configures toast filters"| node_toast_filter
node_game -->|"ticks and renders"| node_hud
node_fabric -->|"registers debug entries"| node_client_mod
node_neoforge -->|"registers debug entries"| node_client_mod
node_player -->|"sets preferences"| node_game_options
node_resource_pack -.->|"supplies policy"| node_policy
node_greenlight -.->|"authorizes controls"| node_policy
node_policy -.->|"permits protected changes"| node_fog

click node_client_mod "https://github.com/flashyreese/sodium-extra/blob/26.3/dev/common/src/main/java/me/flashyreese/mods/sodiumextra/client/SodiumExtraClientMod.java"
click node_game_options "https://github.com/flashyreese/sodium-extra/blob/26.3/dev/common/src/main/java/me/flashyreese/mods/sodiumextra/client/config/SodiumExtraGameOptions.java"
click node_config_io "https://github.com/flashyreese/sodium-extra/blob/26.3/dev/common/src/main/java/me/flashyreese/mods/sodiumextra/client/config/ConfigFileIO.java"
click node_mixin_config "https://github.com/flashyreese/sodium-extra/blob/26.3/dev/common/src/main/java/net/caffeinemc/caffeineconfig/CaffeineConfig.java"
click node_fog "https://github.com/flashyreese/sodium-extra/tree/26.3/dev/common/src/main/java/me/flashyreese/mods/sodiumextra/client/fog"
click node_fog_hooks "https://github.com/flashyreese/sodium-extra/tree/26.3/dev/common/src/main/java/me/flashyreese/mods/sodiumextra/mixin/fog"
click node_particle_hooks "https://github.com/flashyreese/sodium-extra/tree/26.3/dev/common/src/main/java/me/flashyreese/mods/sodiumextra/mixin/particle"
click node_render_hooks "https://github.com/flashyreese/sodium-extra/tree/26.3/dev/common/src/main/java/me/flashyreese/mods/sodiumextra/mixin/render"
click node_other_hooks "https://github.com/flashyreese/sodium-extra/tree/26.3/dev/common/src/main/java/me/flashyreese/mods/sodiumextra/mixin"
click node_hud "https://github.com/flashyreese/sodium-extra/tree/26.3/dev/common/src/main/java/me/flashyreese/mods/sodiumextra/client/gui"
click node_toast_filter "https://github.com/flashyreese/sodium-extra/blob/26.3/dev/common/src/main/java/me/flashyreese/mods/sodiumextra/client/util/ToastFilter.java"
click node_fabric "https://github.com/flashyreese/sodium-extra/blob/26.3/dev/fabric/src/main/java/me/flashyreese/mods/sodiumextra/SodiumExtraFabricClientModInitializer.java"
click node_neoforge "https://github.com/flashyreese/sodium-extra/blob/26.3/dev/neoforge/src/main/java/me/flashyreese/mods/sodiumextra/SodiumExtraNeoForgeClientMod.java"
click node_policy "https://github.com/flashyreese/sodium-extra/blob/26.3/dev/common/src/main/java/me/flashyreese/mods/sodiumextra/client/config/SodiumExtraGameOptions.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_client_mod,node_game_options,node_config_io,node_mixin_config,node_game toneBlue
class node_fog,node_fog_hooks,node_particle_hooks,node_render_hooks,node_other_hooks,node_policy toneAmber
class node_hud,node_toast_filter,node_resource_pack toneMint
class node_fabric,node_neoforge toneRose
class node_player,node_greenlight toneIndigo
```

## Components

### Options and setup

- [Client mod services](https://github.com/flashyreese/sodium-extra/blob/26.3/dev/common/src/main/java/me/flashyreese/mods/sodiumextra/client/SodiumExtraClientMod.java): `common/src/main/java/me/flashyreese/mods/sodiumextra/client/SodiumExtraClientMod.java`
- [Game options](https://github.com/flashyreese/sodium-extra/blob/26.3/dev/common/src/main/java/me/flashyreese/mods/sodiumextra/client/config/SodiumExtraGameOptions.java): `common/src/main/java/me/flashyreese/mods/sodiumextra/client/config/SodiumExtraGameOptions.java`
- [Config file I/O](https://github.com/flashyreese/sodium-extra/blob/26.3/dev/common/src/main/java/me/flashyreese/mods/sodiumextra/client/config/ConfigFileIO.java): `common/src/main/java/me/flashyreese/mods/sodiumextra/client/config/ConfigFileIO.java`
- [Mixin options](https://github.com/flashyreese/sodium-extra/blob/26.3/dev/common/src/main/java/net/caffeinemc/caffeineconfig/CaffeineConfig.java): `common/src/main/java/net/caffeinemc/caffeineconfig/CaffeineConfig.java`

### Rendering features

- [Fog controls](https://github.com/flashyreese/sodium-extra/tree/26.3/dev/common/src/main/java/me/flashyreese/mods/sodiumextra/client/fog): `common/src/main/java/me/flashyreese/mods/sodiumextra/client/fog`
- [Fog hooks](https://github.com/flashyreese/sodium-extra/tree/26.3/dev/common/src/main/java/me/flashyreese/mods/sodiumextra/mixin/fog): `common/src/main/java/me/flashyreese/mods/sodiumextra/mixin/fog`
- [Particle controls](https://github.com/flashyreese/sodium-extra/tree/26.3/dev/common/src/main/java/me/flashyreese/mods/sodiumextra/mixin/particle): `common/src/main/java/me/flashyreese/mods/sodiumextra/mixin/particle`
- [Render options](https://github.com/flashyreese/sodium-extra/tree/26.3/dev/common/src/main/java/me/flashyreese/mods/sodiumextra/mixin/render): `common/src/main/java/me/flashyreese/mods/sodiumextra/mixin/render`
- [Other game hooks](https://github.com/flashyreese/sodium-extra/tree/26.3/dev/common/src/main/java/me/flashyreese/mods/sodiumextra/mixin): `common/src/main/java/me/flashyreese/mods/sodiumextra/mixin`
- [Protected fog policy](https://github.com/flashyreese/sodium-extra/blob/26.3/dev/common/src/main/java/me/flashyreese/mods/sodiumextra/client/config/SodiumExtraGameOptions.java): `common/src/main/java/me/flashyreese/mods/sodiumextra/client/config/SodiumExtraGameOptions.java`

### HUD and interface

- [Debug HUD](https://github.com/flashyreese/sodium-extra/tree/26.3/dev/common/src/main/java/me/flashyreese/mods/sodiumextra/client/gui): `common/src/main/java/me/flashyreese/mods/sodiumextra/client/gui`
- [Toast filtering](https://github.com/flashyreese/sodium-extra/blob/26.3/dev/common/src/main/java/me/flashyreese/mods/sodiumextra/client/util/ToastFilter.java): `common/src/main/java/me/flashyreese/mods/sodiumextra/client/util/ToastFilter.java`

### Loader integration

- [Fabric initializer](https://github.com/flashyreese/sodium-extra/blob/26.3/dev/fabric/src/main/java/me/flashyreese/mods/sodiumextra/SodiumExtraFabricClientModInitializer.java): `fabric/src/main/java/me/flashyreese/mods/sodiumextra/SodiumExtraFabricClientModInitializer.java`
- [NeoForge initializer](https://github.com/flashyreese/sodium-extra/blob/26.3/dev/neoforge/src/main/java/me/flashyreese/mods/sodiumextra/SodiumExtraNeoForgeClientMod.java): `neoforge/src/main/java/me/flashyreese/mods/sodiumextra/SodiumExtraNeoForgeClientMod.java`

### Other components

- **Player**
- **Minecraft client**
- **Server resource pack**
- **Greenlight**

## Connections

- Player → Minecraft client: plays
- Client mod services → Game options: loads options
- Game options → Config file I/O: persists settings
- Client mod services → Mixin options: builds mixin options
- Game options → Particle controls: controls particles
- Game options → Fog controls: configures fog
- Fog hooks → Fog controls: adjusts fog rendering
- Game options → Other game hooks: controls features
- Game options → Toast filtering: configures toast filters
- Minecraft client → Debug HUD: ticks and renders
- Fabric initializer → Client mod services: registers debug entries
- NeoForge initializer → Client mod services: registers debug entries
- Player → Game options: sets preferences
- Server resource pack → Protected fog policy: supplies policy
- Greenlight → Protected fog policy: authorizes controls
- Protected fog policy → Fog controls: permits protected changes
