# fedha99/offrizon architecture

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

- Interactive diagram: https://gitdiagram.com/fedha99/offrizon
- Repository: https://github.com/fedha99/offrizon

## Overview

Horizon is a native Rust reimplementation of Minecraft: Java Edition, with a launcher-led install and play workflow. The README documents launcher preparation from a player-owned Minecraft install, gameplay and multiplayer, packs and mods, dedicated servers, and agent control. The graph preserves those product branches; source-level links are limited to relationships visible in the supplied excerpts or SOURCE INDEX, so some runtime wiring is left unspecified.

Main entry points: [`crates/horizon-client/src/entry.rs`](https://github.com/fedha99/offrizon/blob/main/crates/horizon-client/src/entry.rs) (Game Client), [`launcher/src/main.rs`](https://github.com/fedha99/offrizon/blob/main/launcher/src/main.rs) (Launcher), [`crates/horizon-client/src/game/minecarts.rs`](https://github.com/fedha99/offrizon/blob/main/crates/horizon-client/src/game/minecarts.rs) (Gameplay Simulation), [`crates/horizon-client/src/bin/horizon-ctl/commands.rs`](https://github.com/fedha99/offrizon/blob/main/crates/horizon-client/src/bin/horizon-ctl/commands.rs) (Agent Commands)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_launch["Launch and Preparation"]
  node_launcher["Launcher<br/>[main.rs]"]
  node_preparer["Game Preparation<br/>[main.rs]"]
  node_portpack["Pack Import<br/>[pipeline.rs]"]
end

subgraph group_game["Game Runtime"]
  node_gameclient["Game Client<br/>[entry.rs]"]
  node_gameplay["Gameplay Simulation<br/>[minecarts.rs]"]
  node_worldgen["World Generation<br/>[router.rs]"]
  node_saves[("World Saves<br/>[save.rs]")]
  node_storage[("Command Storage<br/>[command_storage.rs]")]
end

subgraph group_render["Presentation and Packs"]
  node_render["Graphics Renderer<br/>[graphics.rs]"]
  node_ui["Game Interface<br/>[ui.rs]"]
  node_audio["Sound Engine<br/>[audio.rs]"]
  node_chat["Chat<br/>[chat.rs]"]
  node_packs["Resource and Shader Packs<br/>[packs.rs]"]
end

subgraph group_network["Multiplayer and Servers"]
  node_protocol["Protocol Adapters<br/>[client_session.rs]"]
  node_server["Dedicated Server<br/>[engine.rs]"]
  node_serverconfig["Server Management<br/>[config.rs]"]
end

subgraph group_extensions["Mods and Agents"]
  node_mods["Mod Support<br/>[index.rs]"]
  node_modtool["Mod Tooling<br/>[main.rs]"]
  node_ctl["Agent Commands<br/>[commands.rs]"]
  node_ctlmcp["MCP Interface<br/>[mcp.rs]"]
end

node_player(("Player"))

node_player -->|"launches"| node_launcher
node_launcher -->|"prepares game"| node_preparer
node_launcher -->|"starts client"| node_gameclient
node_launcher -->|"manages server"| node_server
node_launcher -->|"imports modpacks"| node_portpack
node_gameclient -.->|"runs simulation"| node_gameplay
node_gameclient -.->|"renders game"| node_render
node_gameclient -.->|"displays interface"| node_ui
node_gameclient -.->|"plays sounds"| node_audio
node_gameclient -.->|"displays chat"| node_chat
node_gameplay -.->|"uses world generation"| node_worldgen
node_gameplay -.->|"persists worlds"| node_saves
node_storage -->|"reads and writes"| node_saves
node_gameclient -.->|"connects via"| node_protocol
node_server -->|"uses configuration"| node_serverconfig
node_protocol -.->|"adapts connections"| node_server
node_launcher -->|"browses registry"| node_mods
node_modtool -->|"checks registry"| node_mods
node_player -->|"issues commands"| node_ctl
node_ctl -->|"serves over MCP"| node_ctlmcp
node_ctl -->|"acts as player"| node_gameclient
node_launcher -->|"installs packs"| node_packs

click node_launcher "https://github.com/fedha99/offrizon/blob/main/launcher/src/main.rs"
click node_preparer "https://github.com/fedha99/offrizon/blob/main/crates/horizon-prepare/src/main.rs"
click node_portpack "https://github.com/fedha99/offrizon/blob/main/crates/horizon-port-pack/src/pipeline.rs"
click node_gameclient "https://github.com/fedha99/offrizon/blob/main/crates/horizon-client/src/entry.rs"
click node_gameplay "https://github.com/fedha99/offrizon/blob/main/crates/horizon-client/src/game/minecarts.rs"
click node_worldgen "https://github.com/fedha99/offrizon/blob/main/crates/horizon-world/src/worldgen/router.rs"
click node_saves "https://github.com/fedha99/offrizon/blob/main/crates/horizon-client/src/save.rs"
click node_storage "https://github.com/fedha99/offrizon/blob/main/crates/horizon-client/src/command_storage.rs"
click node_protocol "https://github.com/fedha99/offrizon/blob/main/crates/horizon-protocol/src/adapter/client_session.rs"
click node_server "https://github.com/fedha99/offrizon/blob/main/crates/horizon-server/src/engine.rs"
click node_serverconfig "https://github.com/fedha99/offrizon/blob/main/crates/horizon-server/src/config.rs"
click node_render "https://github.com/fedha99/offrizon/blob/main/crates/horizon-client-render/src/graphics.rs"
click node_ui "https://github.com/fedha99/offrizon/blob/main/crates/horizon-client-render/src/ui.rs"
click node_audio "https://github.com/fedha99/offrizon/blob/main/crates/horizon-client-render/src/audio.rs"
click node_chat "https://github.com/fedha99/offrizon/blob/main/crates/horizon-client-render/src/chat.rs"
click node_packs "https://github.com/fedha99/offrizon/blob/main/crates/horizon-client-render/src/packs.rs"
click node_mods "https://github.com/fedha99/offrizon/blob/main/crates/horizon-mods/src/index.rs"
click node_modtool "https://github.com/fedha99/offrizon/blob/main/crates/cargo-horizon-mod/src/main.rs"
click node_ctl "https://github.com/fedha99/offrizon/blob/main/crates/horizon-client/src/bin/horizon-ctl/commands.rs"
click node_ctlmcp "https://github.com/fedha99/offrizon/blob/main/crates/horizon-client/src/bin/horizon-ctl/mcp.rs"

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_launcher,node_preparer,node_portpack toneBlue
class node_gameclient,node_gameplay,node_worldgen,node_saves,node_storage toneAmber
class node_render,node_ui,node_audio,node_chat,node_packs toneMint
class node_protocol,node_server,node_serverconfig toneRose
class node_mods,node_modtool,node_ctl,node_ctlmcp,node_player toneIndigo
```

## Components

### Launch and Preparation

- [Launcher](https://github.com/fedha99/offrizon/blob/main/launcher/src/main.rs): `launcher/src/main.rs`
- [Game Preparation](https://github.com/fedha99/offrizon/blob/main/crates/horizon-prepare/src/main.rs): `crates/horizon-prepare/src/main.rs`
- [Pack Import](https://github.com/fedha99/offrizon/blob/main/crates/horizon-port-pack/src/pipeline.rs): `crates/horizon-port-pack/src/pipeline.rs`

### Game Runtime

- [Game Client](https://github.com/fedha99/offrizon/blob/main/crates/horizon-client/src/entry.rs): `crates/horizon-client/src/entry.rs`
- [Gameplay Simulation](https://github.com/fedha99/offrizon/blob/main/crates/horizon-client/src/game/minecarts.rs): `crates/horizon-client/src/game/minecarts.rs`
- [World Generation](https://github.com/fedha99/offrizon/blob/main/crates/horizon-world/src/worldgen/router.rs): `crates/horizon-world/src/worldgen/router.rs`
- [World Saves](https://github.com/fedha99/offrizon/blob/main/crates/horizon-client/src/save.rs): `crates/horizon-client/src/save.rs`
- [Command Storage](https://github.com/fedha99/offrizon/blob/main/crates/horizon-client/src/command_storage.rs): `crates/horizon-client/src/command_storage.rs`

### Presentation and Packs

- [Graphics Renderer](https://github.com/fedha99/offrizon/blob/main/crates/horizon-client-render/src/graphics.rs): `crates/horizon-client-render/src/graphics.rs`
- [Game Interface](https://github.com/fedha99/offrizon/blob/main/crates/horizon-client-render/src/ui.rs): `crates/horizon-client-render/src/ui.rs`
- [Sound Engine](https://github.com/fedha99/offrizon/blob/main/crates/horizon-client-render/src/audio.rs): `crates/horizon-client-render/src/audio.rs`
- [Chat](https://github.com/fedha99/offrizon/blob/main/crates/horizon-client-render/src/chat.rs): `crates/horizon-client-render/src/chat.rs`
- [Resource and Shader Packs](https://github.com/fedha99/offrizon/blob/main/crates/horizon-client-render/src/packs.rs): `crates/horizon-client-render/src/packs.rs`

### Multiplayer and Servers

- [Protocol Adapters](https://github.com/fedha99/offrizon/blob/main/crates/horizon-protocol/src/adapter/client_session.rs): `crates/horizon-protocol/src/adapter/client_session.rs`
- [Dedicated Server](https://github.com/fedha99/offrizon/blob/main/crates/horizon-server/src/engine.rs): `crates/horizon-server/src/engine.rs`
- [Server Management](https://github.com/fedha99/offrizon/blob/main/crates/horizon-server/src/config.rs): `crates/horizon-server/src/config.rs`

### Mods and Agents

- [Mod Support](https://github.com/fedha99/offrizon/blob/main/crates/horizon-mods/src/index.rs): `crates/horizon-mods/src/index.rs`
- [Mod Tooling](https://github.com/fedha99/offrizon/blob/main/crates/cargo-horizon-mod/src/main.rs): `crates/cargo-horizon-mod/src/main.rs`
- [Agent Commands](https://github.com/fedha99/offrizon/blob/main/crates/horizon-client/src/bin/horizon-ctl/commands.rs): `crates/horizon-client/src/bin/horizon-ctl/commands.rs`
- [MCP Interface](https://github.com/fedha99/offrizon/blob/main/crates/horizon-client/src/bin/horizon-ctl/mcp.rs): `crates/horizon-client/src/bin/horizon-ctl/mcp.rs`

### Other components

- **Player**

## Connections

- Player → Launcher: launches (evidence: `README.md`)
- Launcher → Game Preparation: prepares game (evidence: `README.md`)
- Launcher → Game Client: starts client (evidence: `README.md`)
- Launcher → Dedicated Server: manages server (evidence: `README.md`)
- Launcher → Pack Import: imports modpacks (evidence: `README.md`)
- Game Client → Gameplay Simulation: runs simulation
- Game Client → Graphics Renderer: renders game
- Game Client → Game Interface: displays interface
- Game Client → Sound Engine: plays sounds
- Game Client → Chat: displays chat
- Gameplay Simulation → World Generation: uses world generation
- Gameplay Simulation → World Saves: persists worlds
- Command Storage → World Saves: reads and writes (evidence: `crates/horizon-client/src/command_storage.rs`)
- Game Client → Protocol Adapters: connects via
- Dedicated Server → Server Management: uses configuration (evidence: `crates/horizon-server/src/engine.rs`)
- Protocol Adapters → Dedicated Server: adapts connections
- Launcher → Mod Support: browses registry (evidence: `README.md`)
- Mod Tooling → Mod Support: checks registry (evidence: `crates/cargo-horizon-mod/src/main.rs`)
- Player → Agent Commands: issues commands (evidence: `README.md`)
- Agent Commands → MCP Interface: serves over MCP (evidence: `README.md`)
- Agent Commands → Game Client: acts as player (evidence: `README.md`)
- Launcher → Resource and Shader Packs: installs packs (evidence: `README.md`)
