# pvpgood/lavender architecture

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

- Interactive diagram: https://gitdiagram.com/pvpgood/lavender
- Repository: https://github.com/pvpgood/lavender

## Overview

Lavender is a Minecraft client modification built around the Minecraft client, with gameplay modules, configurable settings, graphical controls, and protocol compatibility support. The principal workflow is a player interacting with the client, configuring or enabling modules, and having those modules affect gameplay; the tree shows these domains but does not expose their runtime wiring. The protocol pipeline and packet-event relationships are supported by the SOURCE INDEX. Other links are omitted where sampled source does not establish them; the README provides only the product name and dates.

Main entry points: [`src/main/java/net/minecraft/client/Minecraft.java`](https://github.com/pvpgood/lavender/blob/master/src/main/java/net/minecraft/client/Minecraft.java) (Minecraft client), [`src/main/java/io/justme/lavender/module/impl/blatant`](https://github.com/pvpgood/lavender/tree/master/src/main/java/io/justme/lavender/module/impl/blatant) (Gameplay modules), [`src/main/java/io/justme/lavender/ui/screens/clickgui`](https://github.com/pvpgood/lavender/tree/master/src/main/java/io/justme/lavender/ui/screens/clickgui) (Click GUI), [`src/main/java/de/florianmichael/vialoadingbase/netty/VLBPipeline.java`](https://github.com/pvpgood/lavender/blob/master/src/main/java/de/florianmichael/vialoadingbase/netty/VLBPipeline.java) (Via pipeline)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Client runtime"]
  node_minecraft["Minecraft client<br/>[Minecraft.java]"]
  node_game["Game engine<br/>[World.java]"]
  node_network["Network manager"]
end

subgraph group_gameplay["Gameplay features"]
  node_modules["Gameplay modules"]
  node_combat["Combat modules"]
  node_movement["Movement modules"]
  node_playerfeatures["Player utilities"]
  node_visual["Visual modules"]
  node_worldfeatures["World modules"]
end

subgraph group_interface["User interface"]
  node_clickgui["Click GUI"]
  node_elements["HUD elements"]
  node_configscreen["Config screen"]
end

subgraph group_protocol["Protocol compatibility"]
  node_viamcp["ViaMCP<br/>[ViaMCP.java]"]
  node_mcppipeline["Minecraft protocol pipeline"]
  node_vlbpipeline["Via pipeline<br/>[VLBPipeline.java]"]
  node_decode["Via decoder"]
  node_encode["Via encoder"]
  node_via_platform["Protocol platforms"]
end

subgraph group_foundation["Shared services"]
  node_config["Configuration"]
  node_settings["Settings model"]
  node_events["Event system<br/>[EventManager.java]"]
end

node_player(("Player"))

node_player -.->|"interacts with"| node_minecraft
node_minecraft -.->|"runs"| node_game
node_minecraft -.->|"hosts"| node_modules
node_modules -.->|"includes"| node_combat
node_modules -.->|"includes"| node_movement
node_modules -.->|"includes"| node_playerfeatures
node_modules -.->|"includes"| node_visual
node_modules -.->|"includes"| node_worldfeatures
node_player -.->|"configures through"| node_clickgui
node_clickgui -.->|"edits"| node_settings
node_clickgui -.->|"uses"| node_config
node_minecraft -.->|"renders"| node_elements
node_minecraft -.->|"opens"| node_configscreen
node_network -->|"installs"| node_mcppipeline
node_mcppipeline -->|"uses"| node_vlbpipeline
node_vlbpipeline -->|"registers"| node_decode
node_vlbpipeline -->|"registers"| node_encode
node_minecraft -.->|"initializes"| node_viamcp
node_viamcp -.->|"configures"| node_via_platform
node_network -->|"dispatches packets"| node_events

click node_minecraft "https://github.com/pvpgood/lavender/blob/master/src/main/java/net/minecraft/client/Minecraft.java"
click node_game "https://github.com/pvpgood/lavender/blob/master/src/main/java/net/minecraft/world/World.java"
click node_network "https://github.com/pvpgood/lavender/blob/master/src/main/java/net/minecraft/network/NetworkManager.java"
click node_modules "https://github.com/pvpgood/lavender/tree/master/src/main/java/io/justme/lavender/module/impl/blatant"
click node_combat "https://github.com/pvpgood/lavender/tree/master/src/main/java/io/justme/lavender/module/impl/blatant/fight"
click node_movement "https://github.com/pvpgood/lavender/tree/master/src/main/java/io/justme/lavender/module/impl/blatant/movements"
click node_playerfeatures "https://github.com/pvpgood/lavender/tree/master/src/main/java/io/justme/lavender/module/impl/blatant/player"
click node_visual "https://github.com/pvpgood/lavender/tree/master/src/main/java/io/justme/lavender/module/impl/blatant/visual"
click node_worldfeatures "https://github.com/pvpgood/lavender/tree/master/src/main/java/io/justme/lavender/module/impl/blatant/world"
click node_clickgui "https://github.com/pvpgood/lavender/tree/master/src/main/java/io/justme/lavender/ui/screens/clickgui"
click node_elements "https://github.com/pvpgood/lavender/tree/master/src/main/java/io/justme/lavender/ui/elements"
click node_configscreen "https://github.com/pvpgood/lavender/tree/master/src/main/java/io/justme/lavender/ui/screens/configscreen"
click node_config "https://github.com/pvpgood/lavender/tree/master/src/main/java/io/justme/lavender/configs"
click node_settings "https://github.com/pvpgood/lavender/tree/master/src/main/java/io/justme/lavender/setting"
click node_events "https://github.com/pvpgood/lavender/blob/master/src/main/java/net/lenni0451/asmevents/EventManager.java"
click node_viamcp "https://github.com/pvpgood/lavender/blob/master/src/main/java/de/florianmichael/viamcp/ViaMCP.java"
click node_mcppipeline "https://github.com/pvpgood/lavender/blob/master/src/main/java/de/florianmichael/viamcp/MCPVLBPipeline.java"
click node_vlbpipeline "https://github.com/pvpgood/lavender/blob/master/src/main/java/de/florianmichael/vialoadingbase/netty/VLBPipeline.java"
click node_decode "https://github.com/pvpgood/lavender/blob/master/src/main/java/de/florianmichael/vialoadingbase/netty/handler/VLBViaDecodeHandler.java"
click node_encode "https://github.com/pvpgood/lavender/blob/master/src/main/java/de/florianmichael/vialoadingbase/netty/handler/VLBViaEncodeHandler.java"
click node_via_platform "https://github.com/pvpgood/lavender/tree/master/src/main/java/de/florianmichael/vialoadingbase/platform"

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_minecraft,node_game,node_network toneBlue
class node_modules,node_combat,node_movement,node_playerfeatures,node_visual,node_worldfeatures toneAmber
class node_clickgui,node_elements,node_configscreen toneMint
class node_viamcp,node_mcppipeline,node_vlbpipeline,node_decode,node_encode,node_via_platform toneRose
class node_config,node_settings,node_events,node_player toneIndigo
```

## Components

### Client runtime

- [Minecraft client](https://github.com/pvpgood/lavender/blob/master/src/main/java/net/minecraft/client/Minecraft.java): `src/main/java/net/minecraft/client/Minecraft.java`
- [Game engine](https://github.com/pvpgood/lavender/blob/master/src/main/java/net/minecraft/world/World.java): `src/main/java/net/minecraft/world/World.java`
- [Network manager](https://github.com/pvpgood/lavender/blob/master/src/main/java/net/minecraft/network/NetworkManager.java): `src/main/java/net/minecraft/network/NetworkManager.java`

### Gameplay features

- [Gameplay modules](https://github.com/pvpgood/lavender/tree/master/src/main/java/io/justme/lavender/module/impl/blatant): `src/main/java/io/justme/lavender/module/impl/blatant`
- [Combat modules](https://github.com/pvpgood/lavender/tree/master/src/main/java/io/justme/lavender/module/impl/blatant/fight): `src/main/java/io/justme/lavender/module/impl/blatant/fight`
- [Movement modules](https://github.com/pvpgood/lavender/tree/master/src/main/java/io/justme/lavender/module/impl/blatant/movements): `src/main/java/io/justme/lavender/module/impl/blatant/movements`
- [Player utilities](https://github.com/pvpgood/lavender/tree/master/src/main/java/io/justme/lavender/module/impl/blatant/player): `src/main/java/io/justme/lavender/module/impl/blatant/player`
- [Visual modules](https://github.com/pvpgood/lavender/tree/master/src/main/java/io/justme/lavender/module/impl/blatant/visual): `src/main/java/io/justme/lavender/module/impl/blatant/visual`
- [World modules](https://github.com/pvpgood/lavender/tree/master/src/main/java/io/justme/lavender/module/impl/blatant/world): `src/main/java/io/justme/lavender/module/impl/blatant/world`

### User interface

- [Click GUI](https://github.com/pvpgood/lavender/tree/master/src/main/java/io/justme/lavender/ui/screens/clickgui): `src/main/java/io/justme/lavender/ui/screens/clickgui`
- [HUD elements](https://github.com/pvpgood/lavender/tree/master/src/main/java/io/justme/lavender/ui/elements): `src/main/java/io/justme/lavender/ui/elements`
- [Config screen](https://github.com/pvpgood/lavender/tree/master/src/main/java/io/justme/lavender/ui/screens/configscreen): `src/main/java/io/justme/lavender/ui/screens/configscreen`

### Protocol compatibility

- [ViaMCP](https://github.com/pvpgood/lavender/blob/master/src/main/java/de/florianmichael/viamcp/ViaMCP.java): `src/main/java/de/florianmichael/viamcp/ViaMCP.java`
- [Minecraft protocol pipeline](https://github.com/pvpgood/lavender/blob/master/src/main/java/de/florianmichael/viamcp/MCPVLBPipeline.java): `src/main/java/de/florianmichael/viamcp/MCPVLBPipeline.java`
- [Via pipeline](https://github.com/pvpgood/lavender/blob/master/src/main/java/de/florianmichael/vialoadingbase/netty/VLBPipeline.java): `src/main/java/de/florianmichael/vialoadingbase/netty/VLBPipeline.java`
- [Via decoder](https://github.com/pvpgood/lavender/blob/master/src/main/java/de/florianmichael/vialoadingbase/netty/handler/VLBViaDecodeHandler.java): `src/main/java/de/florianmichael/vialoadingbase/netty/handler/VLBViaDecodeHandler.java`
- [Via encoder](https://github.com/pvpgood/lavender/blob/master/src/main/java/de/florianmichael/vialoadingbase/netty/handler/VLBViaEncodeHandler.java): `src/main/java/de/florianmichael/vialoadingbase/netty/handler/VLBViaEncodeHandler.java`
- [Protocol platforms](https://github.com/pvpgood/lavender/tree/master/src/main/java/de/florianmichael/vialoadingbase/platform): `src/main/java/de/florianmichael/vialoadingbase/platform`

### Shared services

- [Configuration](https://github.com/pvpgood/lavender/tree/master/src/main/java/io/justme/lavender/configs): `src/main/java/io/justme/lavender/configs`
- [Settings model](https://github.com/pvpgood/lavender/tree/master/src/main/java/io/justme/lavender/setting): `src/main/java/io/justme/lavender/setting`
- [Event system](https://github.com/pvpgood/lavender/blob/master/src/main/java/net/lenni0451/asmevents/EventManager.java): `src/main/java/net/lenni0451/asmevents/EventManager.java`

### Other components

- **Player**

## Connections

- Player → Minecraft client: interacts with
- Minecraft client → Game engine: runs
- Minecraft client → Gameplay modules: hosts
- Gameplay modules → Combat modules: includes
- Gameplay modules → Movement modules: includes
- Gameplay modules → Player utilities: includes
- Gameplay modules → Visual modules: includes
- Gameplay modules → World modules: includes
- Player → Click GUI: configures through
- Click GUI → Settings model: edits
- Click GUI → Configuration: uses
- Minecraft client → HUD elements: renders
- Minecraft client → Config screen: opens
- Network manager → Minecraft protocol pipeline: installs (evidence: `src/main/java/net/minecraft/network/NetworkManager.java`)
- Minecraft protocol pipeline → Via pipeline: uses (evidence: `src/main/java/de/florianmichael/viamcp/MCPVLBPipeline.java`)
- Via pipeline → Via decoder: registers (evidence: `src/main/java/de/florianmichael/vialoadingbase/netty/VLBPipeline.java`)
- Via pipeline → Via encoder: registers (evidence: `src/main/java/de/florianmichael/vialoadingbase/netty/VLBPipeline.java`)
- Minecraft client → ViaMCP: initializes
- ViaMCP → Protocol platforms: configures
- Network manager → Event system: dispatches packets (evidence: `src/main/java/net/minecraft/network/NetworkManager.java`)
