# gsjsjzhznsz/air-minecraft-ios-launcher architecture

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

- Interactive diagram: https://gitdiagram.com/gsjsjzhznsz/air-minecraft-ios-launcher
- Repository: https://github.com/gsjsjzhznsz/air-minecraft-ios-launcher

## Overview

Air is an iOS/iPadOS Minecraft: Java Edition launcher focused on Chinese localization and usability. Its central workflow is selecting a game version and account, preparing game files, then launching and presenting the game. The graph also represents documented modding, multiplayer, rendering/input, and AI capabilities. Evidence is based on the README, tree, and sampled excerpts; some subsystem links are therefore intentionally omitted where call ownership was not established.

Main entry points: [`Natives/GameSurfaceView.h`](https://github.com/gsjsjzhznsz/air-minecraft-ios-launcher/blob/main/Natives/GameSurfaceView.h) (Game surface), [`Natives/VersionManagerViewController.h`](https://github.com/gsjsjzhznsz/air-minecraft-ios-launcher/blob/main/Natives/VersionManagerViewController.h) (Version manager), [`Natives/MultiplayerManager.h`](https://github.com/gsjsjzhznsz/air-minecraft-ios-launcher/blob/main/Natives/MultiplayerManager.h) (Room manager), [`Natives/AccountLoginViewController.h`](https://github.com/gsjsjzhznsz/air-minecraft-ios-launcher/blob/main/Natives/AccountLoginViewController.h) (Account login)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_launch["Launch and accounts"]
  node_root["Launcher navigation"]
  node_versions["Version manager"]
  node_profiles[("Profiles<br/>[PLProfiles.h]")]
  node_accounts["Account login"]
  node_thirdparty["Third-party auth"]
  node_launcher["Java launcher<br/>[JavaLauncher.h]"]
end

subgraph group_content["Game content"]
  node_downloads["Download tasks"]
  node_resources["Game resources"]
  node_mods["Mod management"]
  node_modservice["Mod services<br/>[ModService.h]"]
  node_loader["Loader installer"]
end

subgraph group_runtime["Game runtime"]
  node_game["Game surface<br/>[GameSurfaceView.h]"]
  node_mobilegl["MobileGL renderer<br/>[main.cpp]"]
  node_glfw["LWJGL GLFW<br/>[GLFW.java]"]
  node_controls["Touch controls<br/>[ControlLayout.h]"]
  node_controller["Controller input<br/>[ControllerInput.h]"]
end

subgraph group_network["Multiplayer"]
  node_multiplayer["Room manager"]
  node_zerotier["ZeroTier bridge<br/>[ZeroTierBridge.h]"]
  node_socks["SOCKS5 proxy<br/>[SOCKS5Proxy.h]"]
  node_forwarder["Port forwarder<br/>[PortForwarder.h]"]
end

subgraph group_experience["Launcher experience"]
  node_experience[("Launcher preferences")]
  node_background["Background manager"]
  node_news["News and announcements"]
  node_ai["AI assistant<br/>[AIViewController.h]"]
  node_agent["AI agent<br/>[AiAgent.h]"]
  node_safety["AI safety<br/>[AiSafetyManager.h]"]
end

node_user(("Player"))
node_internet(("Game/content services"))

node_user -->|"opens"| node_root
node_root -->|"navigates"| node_versions
node_versions -->|"reads versions"| node_profiles
node_user -->|"signs in"| node_accounts
node_accounts -.->|"authenticates"| node_thirdparty
node_accounts -->|"stores account"| node_profiles
node_versions -->|"prepares game"| node_downloads
node_downloads -->|"fetches files"| node_internet
node_downloads -->|"handles resources"| node_resources
node_user -->|"manages mods"| node_mods
node_mods -->|"uses"| node_modservice
node_user -->|"chooses loader"| node_loader
node_loader -->|"completes install"| node_launcher
node_versions -->|"launches version"| node_launcher
node_launcher -->|"starts game"| node_game
node_game -.->|"renders through"| node_mobilegl
node_game -.->|"uses window/input"| node_glfw
node_game -->|"uses controls"| node_controls
node_game -->|"accepts controller"| node_controller
node_user -->|"joins room"| node_multiplayer
node_multiplayer -->|"starts and joins"| node_zerotier
node_multiplayer -->|"starts proxy"| node_socks
node_multiplayer -->|"forwards ports"| node_forwarder
node_user -->|"customizes"| node_experience
node_experience -->|"configures background"| node_background
node_user -->|"views updates"| node_news
node_news -->|"retrieves news"| node_internet
node_user -->|"opens assistant"| node_ai
node_ai -->|"sends requests"| node_agent
node_agent -->|"checks permissions"| node_safety

click node_root "https://github.com/gsjsjzhznsz/air-minecraft-ios-launcher/blob/main/Natives/LauncherRootViewController.h"
click node_versions "https://github.com/gsjsjzhznsz/air-minecraft-ios-launcher/blob/main/Natives/VersionManagerViewController.h"
click node_profiles "https://github.com/gsjsjzhznsz/air-minecraft-ios-launcher/blob/main/Natives/PLProfiles.h"
click node_accounts "https://github.com/gsjsjzhznsz/air-minecraft-ios-launcher/blob/main/Natives/AccountLoginViewController.h"
click node_thirdparty "https://github.com/gsjsjzhznsz/air-minecraft-ios-launcher/blob/main/Natives/authenticator/ThirdPartyAuthenticator.h"
click node_launcher "https://github.com/gsjsjzhznsz/air-minecraft-ios-launcher/blob/main/Natives/JavaLauncher.h"
click node_downloads "https://github.com/gsjsjzhznsz/air-minecraft-ios-launcher/blob/main/Natives/DownloadTaskManager.h"
click node_resources "https://github.com/gsjsjzhznsz/air-minecraft-ios-launcher/blob/main/Natives/MinecraftResourceUtils.h"
click node_mods "https://github.com/gsjsjzhznsz/air-minecraft-ios-launcher/blob/main/Natives/ModsManagerViewController.h"
click node_modservice "https://github.com/gsjsjzhznsz/air-minecraft-ios-launcher/blob/main/Natives/ModService.h"
click node_loader "https://github.com/gsjsjzhznsz/air-minecraft-ios-launcher/blob/main/Natives/installer/ModLoaderInstallViewController.h"
click node_game "https://github.com/gsjsjzhznsz/air-minecraft-ios-launcher/blob/main/Natives/GameSurfaceView.h"
click node_mobilegl "https://github.com/gsjsjzhznsz/air-minecraft-ios-launcher/blob/main/Natives/external/MobileGlues/MobileGlues-cpp/main.cpp"
click node_glfw "https://github.com/gsjsjzhznsz/air-minecraft-ios-launcher/blob/main/JavaApp/src/lwjgl/org/lwjgl/glfw/GLFW.java"
click node_controls "https://github.com/gsjsjzhznsz/air-minecraft-ios-launcher/blob/main/Natives/customcontrols/ControlLayout.h"
click node_controller "https://github.com/gsjsjzhznsz/air-minecraft-ios-launcher/blob/main/Natives/input/ControllerInput.h"
click node_multiplayer "https://github.com/gsjsjzhznsz/air-minecraft-ios-launcher/blob/main/Natives/MultiplayerManager.h"
click node_zerotier "https://github.com/gsjsjzhznsz/air-minecraft-ios-launcher/blob/main/Natives/ZeroTierBridge.h"
click node_socks "https://github.com/gsjsjzhznsz/air-minecraft-ios-launcher/blob/main/Natives/SOCKS5Proxy.h"
click node_forwarder "https://github.com/gsjsjzhznsz/air-minecraft-ios-launcher/blob/main/Natives/PortForwarder.h"
click node_experience "https://github.com/gsjsjzhznsz/air-minecraft-ios-launcher/blob/main/Natives/LauncherPreferences.h"
click node_background "https://github.com/gsjsjzhznsz/air-minecraft-ios-launcher/blob/main/Natives/BackgroundManager.h"
click node_news "https://github.com/gsjsjzhznsz/air-minecraft-ios-launcher/blob/main/Natives/MinecraftNewsService.h"
click node_ai "https://github.com/gsjsjzhznsz/air-minecraft-ios-launcher/blob/main/Natives/AI/AIViewController.h"
click node_agent "https://github.com/gsjsjzhznsz/air-minecraft-ios-launcher/blob/main/Natives/AI/AiAgent.h"
click node_safety "https://github.com/gsjsjzhznsz/air-minecraft-ios-launcher/blob/main/Natives/AI/AiSafetyManager.h"

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_root,node_versions,node_profiles,node_accounts,node_thirdparty,node_launcher toneBlue
class node_downloads,node_resources,node_mods,node_modservice,node_loader toneAmber
class node_game,node_mobilegl,node_glfw,node_controls,node_controller toneMint
class node_multiplayer,node_zerotier,node_socks,node_forwarder toneRose
class node_experience,node_background,node_news,node_ai,node_agent,node_safety,node_user,node_internet toneIndigo
```

## Components

### Launch and accounts

- [Launcher navigation](https://github.com/gsjsjzhznsz/air-minecraft-ios-launcher/blob/main/Natives/LauncherRootViewController.h): `Natives/LauncherRootViewController.h`
- [Version manager](https://github.com/gsjsjzhznsz/air-minecraft-ios-launcher/blob/main/Natives/VersionManagerViewController.h): `Natives/VersionManagerViewController.h`
- [Profiles](https://github.com/gsjsjzhznsz/air-minecraft-ios-launcher/blob/main/Natives/PLProfiles.h): `Natives/PLProfiles.h`
- [Account login](https://github.com/gsjsjzhznsz/air-minecraft-ios-launcher/blob/main/Natives/AccountLoginViewController.h): `Natives/AccountLoginViewController.h`
- [Third-party auth](https://github.com/gsjsjzhznsz/air-minecraft-ios-launcher/blob/main/Natives/authenticator/ThirdPartyAuthenticator.h): `Natives/authenticator/ThirdPartyAuthenticator.h`
- [Java launcher](https://github.com/gsjsjzhznsz/air-minecraft-ios-launcher/blob/main/Natives/JavaLauncher.h): `Natives/JavaLauncher.h`

### Game content

- [Download tasks](https://github.com/gsjsjzhznsz/air-minecraft-ios-launcher/blob/main/Natives/DownloadTaskManager.h): `Natives/DownloadTaskManager.h`
- [Game resources](https://github.com/gsjsjzhznsz/air-minecraft-ios-launcher/blob/main/Natives/MinecraftResourceUtils.h): `Natives/MinecraftResourceUtils.h`
- [Mod management](https://github.com/gsjsjzhznsz/air-minecraft-ios-launcher/blob/main/Natives/ModsManagerViewController.h): `Natives/ModsManagerViewController.h`
- [Mod services](https://github.com/gsjsjzhznsz/air-minecraft-ios-launcher/blob/main/Natives/ModService.h): `Natives/ModService.h`
- [Loader installer](https://github.com/gsjsjzhznsz/air-minecraft-ios-launcher/blob/main/Natives/installer/ModLoaderInstallViewController.h): `Natives/installer/ModLoaderInstallViewController.h`

### Game runtime

- [Game surface](https://github.com/gsjsjzhznsz/air-minecraft-ios-launcher/blob/main/Natives/GameSurfaceView.h): `Natives/GameSurfaceView.h`
- [MobileGL renderer](https://github.com/gsjsjzhznsz/air-minecraft-ios-launcher/blob/main/Natives/external/MobileGlues/MobileGlues-cpp/main.cpp): `Natives/external/MobileGlues/MobileGlues-cpp/main.cpp`
- [LWJGL GLFW](https://github.com/gsjsjzhznsz/air-minecraft-ios-launcher/blob/main/JavaApp/src/lwjgl/org/lwjgl/glfw/GLFW.java): `JavaApp/src/lwjgl/org/lwjgl/glfw/GLFW.java`
- [Touch controls](https://github.com/gsjsjzhznsz/air-minecraft-ios-launcher/blob/main/Natives/customcontrols/ControlLayout.h): `Natives/customcontrols/ControlLayout.h`
- [Controller input](https://github.com/gsjsjzhznsz/air-minecraft-ios-launcher/blob/main/Natives/input/ControllerInput.h): `Natives/input/ControllerInput.h`

### Multiplayer

- [Room manager](https://github.com/gsjsjzhznsz/air-minecraft-ios-launcher/blob/main/Natives/MultiplayerManager.h): `Natives/MultiplayerManager.h`
- [ZeroTier bridge](https://github.com/gsjsjzhznsz/air-minecraft-ios-launcher/blob/main/Natives/ZeroTierBridge.h): `Natives/ZeroTierBridge.h`
- [SOCKS5 proxy](https://github.com/gsjsjzhznsz/air-minecraft-ios-launcher/blob/main/Natives/SOCKS5Proxy.h): `Natives/SOCKS5Proxy.h`
- [Port forwarder](https://github.com/gsjsjzhznsz/air-minecraft-ios-launcher/blob/main/Natives/PortForwarder.h): `Natives/PortForwarder.h`

### Launcher experience

- [Launcher preferences](https://github.com/gsjsjzhznsz/air-minecraft-ios-launcher/blob/main/Natives/LauncherPreferences.h): `Natives/LauncherPreferences.h`
- [Background manager](https://github.com/gsjsjzhznsz/air-minecraft-ios-launcher/blob/main/Natives/BackgroundManager.h): `Natives/BackgroundManager.h`
- [News and announcements](https://github.com/gsjsjzhznsz/air-minecraft-ios-launcher/blob/main/Natives/MinecraftNewsService.h): `Natives/MinecraftNewsService.h`
- [AI assistant](https://github.com/gsjsjzhznsz/air-minecraft-ios-launcher/blob/main/Natives/AI/AIViewController.h): `Natives/AI/AIViewController.h`
- [AI agent](https://github.com/gsjsjzhznsz/air-minecraft-ios-launcher/blob/main/Natives/AI/AiAgent.h): `Natives/AI/AiAgent.h`
- [AI safety](https://github.com/gsjsjzhznsz/air-minecraft-ios-launcher/blob/main/Natives/AI/AiSafetyManager.h): `Natives/AI/AiSafetyManager.h`

### Other components

- **Player**
- **Game/content services**

## Connections

- Player → Launcher navigation: opens
- Launcher navigation → Version manager: navigates
- Version manager → Profiles: reads versions
- Player → Account login: signs in
- Account login → Third-party auth: authenticates
- Account login → Profiles: stores account
- Version manager → Download tasks: prepares game
- Download tasks → Game/content services: fetches files
- Download tasks → Game resources: handles resources
- Player → Mod management: manages mods
- Mod management → Mod services: uses
- Player → Loader installer: chooses loader
- Loader installer → Java launcher: completes install
- Version manager → Java launcher: launches version
- Java launcher → Game surface: starts game
- Game surface → MobileGL renderer: renders through
- Game surface → LWJGL GLFW: uses window/input
- Game surface → Touch controls: uses controls
- Game surface → Controller input: accepts controller
- Player → Room manager: joins room
- Room manager → ZeroTier bridge: starts and joins
- Room manager → SOCKS5 proxy: starts proxy
- Room manager → Port forwarder: forwards ports
- Player → Launcher preferences: customizes
- Launcher preferences → Background manager: configures background
- Player → News and announcements: views updates
- News and announcements → Game/content services: retrieves news
- Player → AI assistant: opens assistant
- AI assistant → AI agent: sends requests
- AI agent → AI safety: checks permissions
