# hchunhei81-cyber/jvm-mod-combiner architecture

> Architecture diagram of the GitHub repository hchunhei81-cyber/jvm-mod-combiner, 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/hchunhei81-cyber/jvm-mod-combiner
- Repository: https://github.com/hchunhei81-cyber/jvm-mod-combiner

## Overview

JVM Mod Combiner is an experimental Rust-and-Java prototype for running Fabric and Forge/NeoForge in isolated runtime environments and synchronizing game state across them. Its principal workflow is Fabric player-state sampling, routing through a local Rust TCP DataBus, and maintaining a NeoForge remote-player mirror. The README also describes loader launch and isolation, plus an early hostile-mob sampling path. Several links rely on README claims or the source index; unsampled implementation details are not inferred.

Main entry points: [`src/main.rs`](https://github.com/hchunhei81-cyber/jvm-mod-combiner/blob/main/src/main.rs) (Rust JVM Launcher), [`bus_test/BusAgent.java`](https://github.com/hchunhei81-cyber/jvm-mod-combiner/blob/main/bus_test/BusAgent.java) (NeoForge Java Agent), [`bus_test/MonsterSync.java`](https://github.com/hchunhei81-cyber/jvm-mod-combiner/blob/main/bus_test/MonsterSync.java) (Hostile Mob Sampling), [`bus_test/LoaderDetector.java`](https://github.com/hchunhei81-cyber/jvm-mod-combiner/blob/main/bus_test/LoaderDetector.java) (Agent Loader Detector)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["Runtime Launch"]
  node_rust_launch["Rust JVM Launcher<br/>[main.rs]"]
  node_loader_mode["Loader Mode Detection<br/>[mod_detect.rs]"]
  node_jvm["Embedded JVM"]
  node_fabric["Fabric Runtime"]
  node_neoforge["NeoForge Runtime"]
  node_forge["Forge Runtime"]
end

subgraph group_transport["Data Transport"]
  node_databus["TCP DataBus<br/>[main.rs]"]
end

subgraph group_agents["Loader Agents"]
  node_fabric_agent["Fabric Java Agent<br/>[BusAgent.java]"]
  node_neoforge_agent["NeoForge Java Agent<br/>[BusAgent.java]"]
  node_loader_detector["Agent Loader Detector"]
end

subgraph group_sync["State Synchronization"]
  node_player_sampling["Player State Sampling<br/>[BusAgent.java]"]
  node_remote_mirror["Remote Player Mirror<br/>[BusAgent.java]"]
  node_monster_sync["Hostile Mob Sampling<br/>[MonsterSync.java]"]
end

node_operator(("Launcher User"))
node_fabric_player(("Fabric Local Player"))
node_neoforge_world(("NeoForge Client World"))

node_operator -->|"starts"| node_rust_launch
node_rust_launch -.->|"selects mode"| node_loader_mode
node_rust_launch -->|"launches"| node_jvm
node_rust_launch -->|"starts listener"| node_databus
node_jvm -->|"loads"| node_fabric
node_rust_launch -->|"launches separately"| node_neoforge
node_rust_launch -->|"launches"| node_forge
node_fabric -.->|"hosts agent"| node_fabric_agent
node_neoforge -.->|"hosts agent"| node_neoforge_agent
node_fabric_agent -->|"resolves loader"| node_loader_detector
node_neoforge_agent -->|"resolves loader"| node_loader_detector
node_fabric_player -->|"provides state"| node_player_sampling
node_player_sampling -->|"sends state"| node_databus
node_databus -->|"routes messages"| node_neoforge_agent
node_neoforge_agent -->|"updates mirror"| node_remote_mirror
node_remote_mirror -->|"injects entity"| node_neoforge_world
node_fabric_agent -->|"invokes sampler"| node_monster_sync
node_monster_sync -->|"sends mob state"| node_databus

click node_rust_launch "https://github.com/hchunhei81-cyber/jvm-mod-combiner/blob/main/src/main.rs"
click node_loader_mode "https://github.com/hchunhei81-cyber/jvm-mod-combiner/blob/main/src/mod_detect.rs"
click node_databus "https://github.com/hchunhei81-cyber/jvm-mod-combiner/blob/main/src/main.rs"
click node_fabric_agent "https://github.com/hchunhei81-cyber/jvm-mod-combiner/blob/main/bus_test/BusAgent.java"
click node_neoforge_agent "https://github.com/hchunhei81-cyber/jvm-mod-combiner/blob/main/bus_test/BusAgent.java"
click node_loader_detector "https://github.com/hchunhei81-cyber/jvm-mod-combiner/blob/main/bus_test/LoaderDetector.java"
click node_player_sampling "https://github.com/hchunhei81-cyber/jvm-mod-combiner/blob/main/bus_test/BusAgent.java"
click node_remote_mirror "https://github.com/hchunhei81-cyber/jvm-mod-combiner/blob/main/bus_test/BusAgent.java"
click node_monster_sync "https://github.com/hchunhei81-cyber/jvm-mod-combiner/blob/main/bus_test/MonsterSync.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_rust_launch,node_loader_mode,node_jvm,node_fabric,node_neoforge,node_forge,node_operator,node_neoforge_world toneBlue
class node_databus toneAmber
class node_fabric_agent,node_neoforge_agent,node_loader_detector toneMint
class node_player_sampling,node_remote_mirror,node_monster_sync toneRose
class node_fabric_player toneIndigo
```

## Components

### Runtime Launch

- [Rust JVM Launcher](https://github.com/hchunhei81-cyber/jvm-mod-combiner/blob/main/src/main.rs): `src/main.rs`
- [Loader Mode Detection](https://github.com/hchunhei81-cyber/jvm-mod-combiner/blob/main/src/mod_detect.rs): `src/mod_detect.rs`
- **Embedded JVM**
- **Fabric Runtime**
- **NeoForge Runtime**
- **Forge Runtime**

### Data Transport

- [TCP DataBus](https://github.com/hchunhei81-cyber/jvm-mod-combiner/blob/main/src/main.rs): `src/main.rs`

### Loader Agents

- [Fabric Java Agent](https://github.com/hchunhei81-cyber/jvm-mod-combiner/blob/main/bus_test/BusAgent.java): `bus_test/BusAgent.java`
- [NeoForge Java Agent](https://github.com/hchunhei81-cyber/jvm-mod-combiner/blob/main/bus_test/BusAgent.java): `bus_test/BusAgent.java`
- [Agent Loader Detector](https://github.com/hchunhei81-cyber/jvm-mod-combiner/blob/main/bus_test/LoaderDetector.java): `bus_test/LoaderDetector.java`

### State Synchronization

- [Player State Sampling](https://github.com/hchunhei81-cyber/jvm-mod-combiner/blob/main/bus_test/BusAgent.java): `bus_test/BusAgent.java`
- [Remote Player Mirror](https://github.com/hchunhei81-cyber/jvm-mod-combiner/blob/main/bus_test/BusAgent.java): `bus_test/BusAgent.java`
- [Hostile Mob Sampling](https://github.com/hchunhei81-cyber/jvm-mod-combiner/blob/main/bus_test/MonsterSync.java): `bus_test/MonsterSync.java`

### Other components

- **Launcher User**
- **Fabric Local Player**
- **NeoForge Client World**

## Connections

- Launcher User → Rust JVM Launcher: starts (evidence: `README.md`)
- Rust JVM Launcher → Loader Mode Detection: selects mode
- Rust JVM Launcher → Embedded JVM: launches (evidence: `README.md`)
- Rust JVM Launcher → TCP DataBus: starts listener (evidence: `src/main.rs`)
- Embedded JVM → Fabric Runtime: loads (evidence: `README.md`)
- Rust JVM Launcher → NeoForge Runtime: launches separately (evidence: `README.md`)
- Rust JVM Launcher → Forge Runtime: launches (evidence: `README.md`)
- Fabric Runtime → Fabric Java Agent: hosts agent
- NeoForge Runtime → NeoForge Java Agent: hosts agent
- Fabric Java Agent → Agent Loader Detector: resolves loader (evidence: `bus_test/BusAgent.java`)
- NeoForge Java Agent → Agent Loader Detector: resolves loader (evidence: `bus_test/BusAgent.java`)
- Fabric Local Player → Player State Sampling: provides state (evidence: `bus_test/BusAgent.java`)
- Player State Sampling → TCP DataBus: sends state (evidence: `README.md`)
- TCP DataBus → NeoForge Java Agent: routes messages (evidence: `src/main.rs`)
- NeoForge Java Agent → Remote Player Mirror: updates mirror (evidence: `bus_test/BusAgent.java`)
- Remote Player Mirror → NeoForge Client World: injects entity (evidence: `bus_test/BusAgent.java`)
- Fabric Java Agent → Hostile Mob Sampling: invokes sampler (evidence: `bus_test/BusAgent.java`)
- Hostile Mob Sampling → TCP DataBus: sends mob state (evidence: `bus_test/MonsterSync.java`)
