# answer2/alterlauncher architecture

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

## Overview

AlterLauncher is an Android launcher for MinecraftPE. Its intended user workflow is to enter through the launcher UI and start the Minecraft runtime; the tree also indicates version/context compatibility, native hooks, asset and file adaptation, and plugin extensions. The available excerpts confirm plugin loading and hook registration, plus native-library hooking, but do not show the activity-to-loader startup wiring. Accordingly, uncertain workflow links are omitted; unsampled capabilities are represented only where exact paths are supported by the tree.

Main entry points: [`core/src/main/java/com/answer/launcher/core/manager/PluginManager.java`](https://github.com/answer2/alterlauncher/blob/main/core/src/main/java/com/answer/launcher/core/manager/PluginManager.java) (Plugin manager), [`cpp/src/main/cpp/hook/manager_minecraft.cpp`](https://github.com/answer2/alterlauncher/blob/main/cpp/src/main/cpp/hook/manager_minecraft.cpp) (Minecraft hooks), [`cpp/src/main/cpp/main.cpp`](https://github.com/answer2/alterlauncher/blob/main/cpp/src/main/cpp/main.cpp) (JNI entry), [`core/src/main/java/com/answer/launcher/core/manager/HookManager.java`](https://github.com/answer2/alterlauncher/blob/main/core/src/main/java/com/answer/launcher/core/manager/HookManager.java) (Java hook manager)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["Launcher UI"]
  node_launcher["Launcher activity"]
  node_home["Home screen<br/>[HomeFragment.java]"]
  node_downloads["Downloads"]
  node_settings["Settings<br/>[SettingFragment.kt]"]
end

subgraph group_bootstrap["Runtime bootstrap"]
  node_loader["Minecraft loader"]
  node_mcmanager["Minecraft manager"]
  node_nativecore["Native core<br/>[NativeCore.java]"]
  node_nativeentry["JNI entry<br/>[main.cpp]"]
  node_nativehooks["Minecraft hooks"]
end

subgraph group_compat["Compatibility layer"]
  node_multiversion["Version contexts"]
  node_hookmanager["Java hook manager<br/>[HookManager.java]"]
  node_hookset["System hook set"]
  node_assets["Asset overrides"]
  node_io["Native file hooks<br/>[fake_file.cpp]"]
end

subgraph group_extensions["Plugin extensions"]
  node_plugins["Plugin manager<br/>[PluginManager.java]"]
  node_pluginapi["Plugin API"]
  node_plugininfo["Plugin metadata<br/>[PluginInfo.java]"]
end

node_user(("Player"))
node_minecraft["MinecraftPE runtime"]

node_user -->|"opens"| node_launcher
node_hookmanager -->|"initializes"| node_hookset
node_plugins -->|"loads and invokes"| node_pluginapi
node_plugins -->|"records"| node_plugininfo
node_nativeentry -->|"initializes hooks"| node_nativehooks
node_nativehooks -->|"hooks native runtime"| node_minecraft

click node_launcher "https://github.com/answer2/alterlauncher/blob/main/app/src/main/java/com/answer/launcher/ui/activity/LauncherActivity.java"
click node_home "https://github.com/answer2/alterlauncher/blob/main/app/src/main/java/com/answer/launcher/ui/fragment/HomeFragment.java"
click node_downloads "https://github.com/answer2/alterlauncher/blob/main/app/src/main/java/com/answer/launcher/ui/fragment/DownloadFragment.kt"
click node_settings "https://github.com/answer2/alterlauncher/blob/main/app/src/main/java/com/answer/launcher/ui/fragment/SettingFragment.kt"
click node_loader "https://github.com/answer2/alterlauncher/blob/main/core/src/main/java/com/answer/launcher/core/MinecraftLoader.java"
click node_mcmanager "https://github.com/answer2/alterlauncher/blob/main/core/src/main/java/com/answer/launcher/core/manager/MinecraftManager.java"
click node_nativecore "https://github.com/answer2/alterlauncher/blob/main/core/src/main/java/com/answer/launcher/core/manager/NativeCore.java"
click node_nativeentry "https://github.com/answer2/alterlauncher/blob/main/cpp/src/main/cpp/main.cpp"
click node_nativehooks "https://github.com/answer2/alterlauncher/blob/main/cpp/src/main/cpp/hook/manager_minecraft.cpp"
click node_multiversion "https://github.com/answer2/alterlauncher/blob/main/core/src/main/java/com/answer/launcher/core/manager/MultiVersionManager.java"
click node_hookmanager "https://github.com/answer2/alterlauncher/blob/main/core/src/main/java/com/answer/launcher/core/manager/HookManager.java"
click node_hookset "https://github.com/answer2/alterlauncher/tree/main/core/src/main/java/com/answer/launcher/core/hook"
click node_assets "https://github.com/answer2/alterlauncher/blob/main/core/src/main/java/com/answer/launcher/core/tool/AssetOverrideManager.java"
click node_io "https://github.com/answer2/alterlauncher/blob/main/cpp/src/main/cpp/hook/fake_file.cpp"
click node_plugins "https://github.com/answer2/alterlauncher/blob/main/core/src/main/java/com/answer/launcher/core/manager/PluginManager.java"
click node_pluginapi "https://github.com/answer2/alterlauncher/blob/main/api/src/main/java/com/answer/launcher/api/AlternativeApi.java"
click node_plugininfo "https://github.com/answer2/alterlauncher/blob/main/api/src/main/java/com/answer/launcher/api/PluginInfo.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_launcher,node_home,node_downloads,node_settings toneBlue
class node_loader,node_mcmanager,node_nativecore,node_nativeentry,node_nativehooks toneAmber
class node_multiversion,node_hookmanager,node_hookset,node_assets,node_io toneMint
class node_plugins,node_pluginapi,node_plugininfo toneRose
class node_user,node_minecraft toneIndigo
```

## Components

### Launcher UI

- [Launcher activity](https://github.com/answer2/alterlauncher/blob/main/app/src/main/java/com/answer/launcher/ui/activity/LauncherActivity.java): `app/src/main/java/com/answer/launcher/ui/activity/LauncherActivity.java`
- [Home screen](https://github.com/answer2/alterlauncher/blob/main/app/src/main/java/com/answer/launcher/ui/fragment/HomeFragment.java): `app/src/main/java/com/answer/launcher/ui/fragment/HomeFragment.java`
- [Downloads](https://github.com/answer2/alterlauncher/blob/main/app/src/main/java/com/answer/launcher/ui/fragment/DownloadFragment.kt): `app/src/main/java/com/answer/launcher/ui/fragment/DownloadFragment.kt`
- [Settings](https://github.com/answer2/alterlauncher/blob/main/app/src/main/java/com/answer/launcher/ui/fragment/SettingFragment.kt): `app/src/main/java/com/answer/launcher/ui/fragment/SettingFragment.kt`

### Runtime bootstrap

- [Minecraft loader](https://github.com/answer2/alterlauncher/blob/main/core/src/main/java/com/answer/launcher/core/MinecraftLoader.java): `core/src/main/java/com/answer/launcher/core/MinecraftLoader.java`
- [Minecraft manager](https://github.com/answer2/alterlauncher/blob/main/core/src/main/java/com/answer/launcher/core/manager/MinecraftManager.java): `core/src/main/java/com/answer/launcher/core/manager/MinecraftManager.java`
- [Native core](https://github.com/answer2/alterlauncher/blob/main/core/src/main/java/com/answer/launcher/core/manager/NativeCore.java): `core/src/main/java/com/answer/launcher/core/manager/NativeCore.java`
- [JNI entry](https://github.com/answer2/alterlauncher/blob/main/cpp/src/main/cpp/main.cpp): `cpp/src/main/cpp/main.cpp`
- [Minecraft hooks](https://github.com/answer2/alterlauncher/blob/main/cpp/src/main/cpp/hook/manager_minecraft.cpp): `cpp/src/main/cpp/hook/manager_minecraft.cpp`

### Compatibility layer

- [Version contexts](https://github.com/answer2/alterlauncher/blob/main/core/src/main/java/com/answer/launcher/core/manager/MultiVersionManager.java): `core/src/main/java/com/answer/launcher/core/manager/MultiVersionManager.java`
- [Java hook manager](https://github.com/answer2/alterlauncher/blob/main/core/src/main/java/com/answer/launcher/core/manager/HookManager.java): `core/src/main/java/com/answer/launcher/core/manager/HookManager.java`
- [System hook set](https://github.com/answer2/alterlauncher/tree/main/core/src/main/java/com/answer/launcher/core/hook): `core/src/main/java/com/answer/launcher/core/hook`
- [Asset overrides](https://github.com/answer2/alterlauncher/blob/main/core/src/main/java/com/answer/launcher/core/tool/AssetOverrideManager.java): `core/src/main/java/com/answer/launcher/core/tool/AssetOverrideManager.java`
- [Native file hooks](https://github.com/answer2/alterlauncher/blob/main/cpp/src/main/cpp/hook/fake_file.cpp): `cpp/src/main/cpp/hook/fake_file.cpp`

### Plugin extensions

- [Plugin manager](https://github.com/answer2/alterlauncher/blob/main/core/src/main/java/com/answer/launcher/core/manager/PluginManager.java): `core/src/main/java/com/answer/launcher/core/manager/PluginManager.java`
- [Plugin API](https://github.com/answer2/alterlauncher/blob/main/api/src/main/java/com/answer/launcher/api/AlternativeApi.java): `api/src/main/java/com/answer/launcher/api/AlternativeApi.java`
- [Plugin metadata](https://github.com/answer2/alterlauncher/blob/main/api/src/main/java/com/answer/launcher/api/PluginInfo.java): `api/src/main/java/com/answer/launcher/api/PluginInfo.java`

### Other components

- **Player**
- **MinecraftPE runtime**

## Connections

- Player → Launcher activity: opens
- Java hook manager → System hook set: initializes
- Plugin manager → Plugin API: loads and invokes
- Plugin manager → Plugin metadata: records
- JNI entry → Minecraft hooks: initializes hooks
- Minecraft hooks → MinecraftPE runtime: hooks native runtime
