# vladglass0/materialmc architecture

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

## Overview

Prism Launcher is a desktop Minecraft launcher for managing multiple game instances. Its central workflow is selecting an instance and starting it: the application dispatches a launch controller, which creates and runs the instance’s launch task. The tree also shows separate subsystems for instance management, modpack providers and imports, account authentication, game resources, and launch logging. Sampled source confirms the launch orchestration and task behavior; several other branches are represented from the tree, so their internal wiring is not asserted.

Main entry points: [`launcher/LaunchController.cpp`](https://github.com/vladglass0/materialmc/blob/develop/launcher/LaunchController.cpp) (Launch controller), [`launcher/Application.cpp`](https://github.com/vladglass0/materialmc/blob/develop/launcher/Application.cpp) (Application), [`launcher/launch/LaunchTask.cpp`](https://github.com/vladglass0/materialmc/blob/develop/launcher/launch/LaunchTask.cpp) (Launch task), [`launcher/minecraft/launch`](https://github.com/vladglass0/materialmc/tree/develop/launcher/minecraft/launch) (Launch steps)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Application"]
  node_main_window["Main window<br/>[MainWindow.cpp]"]
  node_application["Application<br/>[Application.cpp]"]
end

subgraph group_instances["Instance Management"]
  node_instance_list["Instance list<br/>[InstanceList.cpp]"]
  node_instance["Minecraft instance"]
  node_instance_tasks["Instance tasks<br/>[InstanceTask.cpp]"]
end

subgraph group_packs["Modpacks and Resources"]
  node_modpack_ui["Pack browsing<br/>[ImportPage.cpp]"]
  node_providers["Pack providers"]
  node_pack_install["Pack installation"]
  node_resource_management["Game resources"]
end

subgraph group_identity["Accounts and Java"]
  node_account_list["Accounts<br/>[AccountList.cpp]"]
  node_auth_flow["Authentication flow<br/>[AuthFlow.cpp]"]
  node_java_tools["Java management"]
end

subgraph group_runtime["Game Runtime"]
  node_launch_controller["Launch controller"]
  node_launch_task["Launch task<br/>[LaunchTask.cpp]"]
  node_launch_steps["Launch steps"]
  node_launch_logs["Launch logs<br/>[LogModel.cpp]"]
end

node_user(("Launcher user"))
node_identity_services{{"Identity services"}}
node_game_process["Minecraft process"]

node_user -->|"uses"| node_main_window
node_main_window -->|"requests launch"| node_application
node_application -->|"dispatches"| node_launch_controller
node_application -->|"manages"| node_instance_list
node_instance_list -->|"selects"| node_instance
node_launch_controller -->|"creates launch task"| node_instance
node_launch_controller -->|"selects account"| node_account_list
node_auth_flow -.->|"authenticates"| node_identity_services
node_launch_controller -->|"starts"| node_launch_task
node_launch_task -->|"runs"| node_launch_steps
node_launch_steps -->|"checks Java"| node_java_tools
node_launch_steps -->|"launches"| node_game_process
node_launch_task -->|"reports output"| node_launch_logs
node_user -->|"browses packs"| node_modpack_ui
node_modpack_ui -->|"queries"| node_providers
node_providers -->|"provides pack data"| node_pack_install
node_instance_tasks -->|"manages resources"| node_resource_management

click node_main_window "https://github.com/vladglass0/materialmc/blob/develop/launcher/ui/MainWindow.cpp"
click node_application "https://github.com/vladglass0/materialmc/blob/develop/launcher/Application.cpp"
click node_instance_list "https://github.com/vladglass0/materialmc/blob/develop/launcher/InstanceList.cpp"
click node_instance "https://github.com/vladglass0/materialmc/blob/develop/launcher/minecraft/MinecraftInstance.cpp"
click node_instance_tasks "https://github.com/vladglass0/materialmc/blob/develop/launcher/InstanceTask.cpp"
click node_modpack_ui "https://github.com/vladglass0/materialmc/blob/develop/launcher/ui/pages/modplatform/ImportPage.cpp"
click node_providers "https://github.com/vladglass0/materialmc/tree/develop/launcher/modplatform"
click node_pack_install "https://github.com/vladglass0/materialmc/tree/develop/launcher/modplatform"
click node_resource_management "https://github.com/vladglass0/materialmc/tree/develop/launcher/minecraft/mod"
click node_account_list "https://github.com/vladglass0/materialmc/blob/develop/launcher/minecraft/auth/AccountList.cpp"
click node_auth_flow "https://github.com/vladglass0/materialmc/blob/develop/launcher/minecraft/auth/AuthFlow.cpp"
click node_java_tools "https://github.com/vladglass0/materialmc/blob/develop/launcher/java/JavaInstallList.cpp"
click node_launch_controller "https://github.com/vladglass0/materialmc/blob/develop/launcher/LaunchController.cpp"
click node_launch_task "https://github.com/vladglass0/materialmc/blob/develop/launcher/launch/LaunchTask.cpp"
click node_launch_steps "https://github.com/vladglass0/materialmc/tree/develop/launcher/minecraft/launch"
click node_launch_logs "https://github.com/vladglass0/materialmc/blob/develop/launcher/launch/LogModel.cpp"

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_main_window,node_application,node_user toneBlue
class node_instance_list,node_instance,node_instance_tasks toneAmber
class node_modpack_ui,node_providers,node_pack_install,node_resource_management toneMint
class node_account_list,node_auth_flow,node_java_tools toneRose
class node_launch_controller,node_launch_task,node_launch_steps,node_launch_logs,node_identity_services,node_game_process toneIndigo
```

## Components

### Application

- [Main window](https://github.com/vladglass0/materialmc/blob/develop/launcher/ui/MainWindow.cpp): `launcher/ui/MainWindow.cpp`
- [Application](https://github.com/vladglass0/materialmc/blob/develop/launcher/Application.cpp): `launcher/Application.cpp`

### Instance Management

- [Instance list](https://github.com/vladglass0/materialmc/blob/develop/launcher/InstanceList.cpp): `launcher/InstanceList.cpp`
- [Minecraft instance](https://github.com/vladglass0/materialmc/blob/develop/launcher/minecraft/MinecraftInstance.cpp): `launcher/minecraft/MinecraftInstance.cpp`
- [Instance tasks](https://github.com/vladglass0/materialmc/blob/develop/launcher/InstanceTask.cpp): `launcher/InstanceTask.cpp`

### Modpacks and Resources

- [Pack browsing](https://github.com/vladglass0/materialmc/blob/develop/launcher/ui/pages/modplatform/ImportPage.cpp): `launcher/ui/pages/modplatform/ImportPage.cpp`
- [Pack providers](https://github.com/vladglass0/materialmc/tree/develop/launcher/modplatform): `launcher/modplatform`
- [Pack installation](https://github.com/vladglass0/materialmc/tree/develop/launcher/modplatform): `launcher/modplatform`
- [Game resources](https://github.com/vladglass0/materialmc/tree/develop/launcher/minecraft/mod): `launcher/minecraft/mod`

### Accounts and Java

- [Accounts](https://github.com/vladglass0/materialmc/blob/develop/launcher/minecraft/auth/AccountList.cpp): `launcher/minecraft/auth/AccountList.cpp`
- [Authentication flow](https://github.com/vladglass0/materialmc/blob/develop/launcher/minecraft/auth/AuthFlow.cpp): `launcher/minecraft/auth/AuthFlow.cpp`
- [Java management](https://github.com/vladglass0/materialmc/blob/develop/launcher/java/JavaInstallList.cpp): `launcher/java/JavaInstallList.cpp`

### Game Runtime

- [Launch controller](https://github.com/vladglass0/materialmc/blob/develop/launcher/LaunchController.cpp): `launcher/LaunchController.cpp`
- [Launch task](https://github.com/vladglass0/materialmc/blob/develop/launcher/launch/LaunchTask.cpp): `launcher/launch/LaunchTask.cpp`
- [Launch steps](https://github.com/vladglass0/materialmc/tree/develop/launcher/minecraft/launch): `launcher/minecraft/launch`
- [Launch logs](https://github.com/vladglass0/materialmc/blob/develop/launcher/launch/LogModel.cpp): `launcher/launch/LogModel.cpp`

### Other components

- **Launcher user**
- **Identity services**
- **Minecraft process**

## Connections

- Launcher user → Main window: uses
- Main window → Application: requests launch
- Application → Launch controller: dispatches
- Application → Instance list: manages
- Instance list → Minecraft instance: selects
- Launch controller → Minecraft instance: creates launch task
- Launch controller → Accounts: selects account
- Authentication flow → Identity services: authenticates
- Launch controller → Launch task: starts
- Launch task → Launch steps: runs
- Launch steps → Java management: checks Java
- Launch steps → Minecraft process: launches
- Launch task → Launch logs: reports output
- Launcher user → Pack browsing: browses packs
- Pack browsing → Pack providers: queries
- Pack providers → Pack installation: provides pack data
- Instance tasks → Game resources: manages resources
