diff options
| author | 2026-02-27 17:18:25 +0800 | |
|---|---|---|
| committer | 2026-02-27 17:18:25 +0800 | |
| commit | 81a62402ef6f8900ff092366121a9b7a4263ba52 (patch) | |
| tree | 119109c62331d4d26612e2df7726cee82d1871f5 /packages/docs/content/en/features | |
| parent | 3e3144a2c6c62375c2949cb5e9b03f17511fccbe (diff) | |
| download | DropOut-81a62402ef6f8900ff092366121a9b7a4263ba52.tar.gz DropOut-81a62402ef6f8900ff092366121a9b7a4263ba52.zip | |
Restructure docs into manual/development and add implementation docs (#94)
## Summary by Sourcery
Restructure documentation into separate manual and development sections,
introduce detailed internal implementation docs for auth/Java/mod
loaders, and update site navigation, landing page links, and MDX tooling
(Mermaid, card styling) to match the new structure and tech stack.
Enhancements:
- Enable Mermaid rendering support in the docs app and add a reusable
Mermaid React component.
- Refine Docs page rendering by customizing Card styling and removing
redundant in-page titles/descriptions rendered by the layout.
- Align docs source configuration and routing comments with the new
manual-based default paths.
Documentation:
- Split user-facing docs under a new manual section and move contributor
content into a dedicated development section for both English and
Chinese.
- Add comprehensive internal implementation documentation covering
authentication, Java management, mod loader/version merging, event bus,
and architecture patterns in both English and Chinese.
- Update existing feature docs (mod loaders, Java, authentication) and
getting-started/troubleshooting pages to be more conceptual, pointing to
implementation docs for technical details.
- Refresh architecture docs to reflect the React/Zustand frontend stack
and add Mermaid-based architecture diagrams.
- Adjust navigation labels, home-page CTAs, and doc links to target the
new manual/development structure and routes.
---------
Co-authored-by: 简律纯 <i@jyunko.cn>
Diffstat (limited to 'packages/docs/content/en/features')
| -rw-r--r-- | packages/docs/content/en/features/authentication.mdx | 266 | ||||
| -rw-r--r-- | packages/docs/content/en/features/index.mdx | 176 | ||||
| -rw-r--r-- | packages/docs/content/en/features/java.mdx | 394 | ||||
| -rw-r--r-- | packages/docs/content/en/features/meta.json | 9 | ||||
| -rw-r--r-- | packages/docs/content/en/features/mod-loaders.mdx | 409 |
5 files changed, 0 insertions, 1254 deletions
diff --git a/packages/docs/content/en/features/authentication.mdx b/packages/docs/content/en/features/authentication.mdx deleted file mode 100644 index b6fc4ba..0000000 --- a/packages/docs/content/en/features/authentication.mdx +++ /dev/null @@ -1,266 +0,0 @@ ---- -title: Authentication -description: Microsoft OAuth and offline authentication in DropOut ---- - -# Authentication - -DropOut supports two authentication methods: Microsoft Account (for official Minecraft) and Offline Mode (for testing and offline play). - -## Microsoft Authentication - -### Overview - -DropOut uses the **Device Code Flow** for Microsoft authentication, which: -- Doesn't require a redirect URL (no browser integration) -- Works on any device with a browser -- Provides a simple code-based authentication -- Fully compliant with Microsoft OAuth 2.0 - -### Authentication Process - -The authentication chain consists of multiple steps: - -1. **Device Code** → User authorization -2. **MS Token** → Access + refresh tokens -3. **Xbox Live** → Xbox token + UHS -4. **XSTS** → Security token -5. **Minecraft** → Game access token -6. **Profile** → Username + UUID - -#### Step 1: Device Code Request -1. Click "Login with Microsoft" -2. DropOut requests a device code from Microsoft -3. You receive: - - User code (e.g., `A1B2-C3D4`) - - Verification URL (usually `https://microsoft.com/link`) - - Device code (used internally) - -#### Step 2: User Authorization -1. Visit the verification URL in any browser -2. Enter the user code -3. Sign in with your Microsoft account -4. Authorize DropOut to access your Minecraft profile - -#### Step 3: Token Exchange -- DropOut polls Microsoft for authorization completion -- Once authorized, receives an access token and refresh token -- Refresh token is stored for future logins - -#### Step 4: Xbox Live Authentication -- Microsoft token is exchanged for Xbox Live token -- Retrieves User Hash (UHS) for next step - -#### Step 5: XSTS Authorization -- Xbox Live token is used to get XSTS token -- This token is specific to Minecraft services - -#### Step 6: Minecraft Login -- XSTS token is exchanged for Minecraft access token -- Uses endpoint: `/launcher/login` - -#### Step 7: Profile Fetching -- Retrieves your Minecraft username -- Fetches your UUID -- Checks if you own Minecraft - -### Token Management - -**Access Token:** -- Short-lived (typically 1 hour) -- Used for game authentication -- Automatically refreshed when expired - -**Refresh Token:** -- Long-lived (typically 90 days) -- Stored securely in `accounts.json` -- Used to obtain new access tokens - -**Auto-refresh:** -```rust -// Automatic refresh when token expires -if account.expires_at < current_time { - refresh_full_auth(&account).await?; -} -``` - -### Security Considerations - -- Tokens are stored in platform-specific app data directory -- HTTPS only for all API calls -- No credentials stored (only tokens) -- User-Agent header required (bypasses MS WAF) - -### Troubleshooting Microsoft Login - -**"Device code expired"** -- Codes expire after 15 minutes -- Start the login process again - -**"Authorization pending"** -- Normal during the waiting phase -- Complete authorization in the browser - -**"Invalid token"** -- Token may have expired -- Log out and log back in - -**"You don't own Minecraft"** -- Verify your Microsoft account owns Minecraft Java Edition -- Check at https://www.minecraft.net/profile - -## Offline Authentication - -### Overview - -Offline mode creates a local account that doesn't require internet connectivity or a Microsoft account. This is useful for: -- Testing and development -- Playing without internet -- LAN multiplayer -- Mod development - -### Creating an Offline Account - -1. Click "Offline Mode" in the login screen -2. Enter a username (3-16 characters) -3. Click "Create Account" - -### How It Works - -**UUID Generation:** -```rust -// Deterministic UUID v3 from username -let uuid = generate_offline_uuid(&username); -``` - -- Uses UUID v3 (namespace-based) -- Deterministic: same username = same UUID -- No network requests - -**Authentication:** -- Returns `"null"` as access token -- Minecraft accepts null token in offline mode -- Username and UUID stored locally - -### Limitations - -- Cannot join online servers -- No skin support -- No cape support -- No Microsoft account features - -### Use Cases - -**Development:** -```bash -# Testing mod development -cargo tauri dev -# Use offline mode to test quickly -``` - -**LAN Play:** -- Join LAN worlds without authentication -- Host LAN worlds - -**Offline Play:** -- Singleplayer without internet -- No authentication required - -## Account Management - -### Switching Accounts - -Currently, DropOut supports one active account at a time. Multi-account support is planned. - -**To switch accounts:** -1. Log out of current account -2. Log in with new account - -### Account Storage - -Accounts are stored in `accounts.json`: - -```json -{ - "current_account_id": "uuid-here", - "accounts": [ - { - "id": "uuid", - "type": "Microsoft", - "username": "PlayerName", - "access_token": "...", - "refresh_token": "...", - "expires_at": 1234567890 - } - ] -} -``` - -### Deleting Accounts - -To remove an account: -1. Open Settings -2. Navigate to Accounts -3. Click "Log Out" -4. Or manually delete `accounts.json` - -## API Reference - -### Tauri Commands - -**Start Microsoft Login:** -```typescript -const { user_code, verification_uri } = await invoke('start_microsoft_login'); -``` - -**Complete Microsoft Login:** -```typescript -const account = await invoke('complete_microsoft_login', { deviceCode }); -``` - -**Offline Login:** -```typescript -const account = await invoke('offline_login', { username: 'Player' }); -``` - -**Logout:** -```typescript -await invoke('logout'); -``` - -**Get Current Account:** -```typescript -const account = await invoke('get_current_account'); -``` - -### Events - -**Authentication Status:** -```typescript -listen('auth-status', (event) => { - console.log(event.payload); // "logged_in" | "logged_out" -}); -``` - -## Best Practices - -### For Players - -1. **Use Microsoft Account** for official servers -2. **Keep tokens secure** - don't share accounts.json -3. **Refresh tokens regularly** by logging in -4. **Use offline mode** only for testing - -### For Developers - -1. **Handle token expiration** gracefully -2. **Implement retry logic** for network failures -3. **Cache account data** to reduce API calls -4. **Validate tokens** before game launch - -## Future Enhancements - -- **Multi-account support**: Switch between accounts easily -- **Account profiles**: Save per-account settings -- **Auto-login**: Remember last account -- **Token encryption**: Enhanced security for stored tokens diff --git a/packages/docs/content/en/features/index.mdx b/packages/docs/content/en/features/index.mdx deleted file mode 100644 index 3a463d0..0000000 --- a/packages/docs/content/en/features/index.mdx +++ /dev/null @@ -1,176 +0,0 @@ ---- -title: Features Overview -description: Comprehensive guide to all DropOut features ---- - -# Features Overview - -DropOut is packed with features designed for both casual players and power users. This guide covers all major capabilities. - -## Core Features - -<Cards> - <Card - title="Authentication" - href="authentication" - description="Microsoft OAuth and offline authentication" - /> - <Card - title="Java Management" - href="java" - description="Auto-detection and installation of Java runtimes" - /> - <Card - title="Mod Loaders" - href="mod-loaders" - description="Fabric and Forge support with easy installation" - /> - <Card - title="Instances" - href="instances" - description="Isolated game environments with independent configs" - /> - <Card - title="Downloads" - href="downloads" - description="Fast concurrent downloads with resume support" - /> - <Card - title="AI Assistant" - href="assistant" - description="Built-in AI helper for troubleshooting and guidance" - /> -</Cards> - -## Quick Feature Matrix - -| Feature | Status | Description | -|---------|--------|-------------| -| Microsoft Authentication | Complete | OAuth 2.0 with device code flow | -| Offline Authentication | Complete | Local accounts for offline play | -| Token Auto-refresh | Complete | Automatic refresh of expired tokens | -| Java Auto-detection | Complete | Scans system for Java installations | -| Java Download | Complete | Download Adoptium JDK/JRE versions | -| Fabric Support | Complete | Install and launch Fabric loader | -| Forge Support | Complete | Install and launch Forge loader | -| Instance System | Complete | Isolated game environments | -| GitHub Integration | Complete | View releases and changelogs | -| Concurrent Downloads | Complete | Multi-threaded asset downloads | -| Resume Downloads | Complete | Resume interrupted downloads | -| AI Assistant | Complete | Built-in troubleshooting helper | -| Config Editor | Complete | JSON/TOML configuration editor | -| Custom Resolution | Complete | Set game window dimensions | -| Memory Allocation | Complete | Customize JVM memory settings | -| Multi-account | In Progress | Switch between multiple accounts | -| Mods Manager | Planned | Enable/disable mods in launcher | -| Launcher Auto-update | Planned | Self-updating mechanism | -| Custom Game Directory | Planned | Choose game files location | -| Import Profiles | Planned | Import from MultiMC/Prism | - -## Performance Features - -### Concurrent Downloads -- Configurable thread count (default: 10) -- Parallel asset and library downloads -- Progress tracking per file -- ETA calculation - -### Resume Support -- Interrupted downloads auto-resume -- `.part` files track progress -- Multi-segment downloads for large files -- Metadata files for state tracking - -### Caching -- Java catalog cached for 24 hours -- Version manifests cached locally -- Asset index caching -- Library deduplication - -## User Interface Features - -### Modern Design -- Dark mode enforced for eye comfort -- Particle background effects -- Clean, distraction-free layout -- Responsive design - -### Real-time Feedback -- Live download progress -- Game console output -- Log streaming -- Toast notifications - -### Settings Management -- Memory allocation slider -- Resolution customization -- Java path selection -- Thread count configuration -- Custom JVM arguments - -## Advanced Features - -### Version Inheritance -Modded versions (Fabric/Forge) automatically inherit from parent vanilla versions: -- Libraries merged from parent + mod loader -- Arguments combined and deduplicated -- Assets inherited from vanilla version - -### Native Library Extraction -- Platform-specific native extraction -- Automatic cleanup -- Proper library path configuration - -### Rules Engine -- OS-specific library filtering -- Feature flag support -- Architecture detection - -### Download Queue Persistence -- Save incomplete downloads -- Resume after launcher restart -- Queue priority management - -## Developer Features - -### Config Editor -Built-in JSON/TOML editor with: -- Syntax highlighting -- Validation -- Quick access to all configs - -### Log Access -- Real-time game logs -- Launcher debug logs -- Copy/export functionality - -### AI Assistant -- Troubleshooting guidance -- Error analysis -- Configuration help -- Documentation search - -## Coming Soon - -### Multi-account Management -- Switch between accounts easily -- Account profiles -- Quick switching - -### Mods Manager -- Browse and install mods -- Enable/disable mods -- Mod compatibility checking -- Version management - -### Profile Import -- Import from MultiMC -- Import from Prism Launcher -- Import from other launchers -- Preserve settings and saves - -### Launcher Auto-update -- Background update checks -- One-click updates -- Version history -- Rollback support diff --git a/packages/docs/content/en/features/java.mdx b/packages/docs/content/en/features/java.mdx deleted file mode 100644 index 21b95a9..0000000 --- a/packages/docs/content/en/features/java.mdx +++ /dev/null @@ -1,394 +0,0 @@ ---- -title: Java Management -description: Automatic Java detection, download, and installation ---- - -# Java Management - -DropOut provides comprehensive Java management, automatically detecting installed versions and downloading new ones as needed. - -## Auto-detection - -### System Scan - -DropOut scans multiple locations for Java installations: - -**Linux:** -- `/usr/lib/jvm/` -- `/usr/java/` -- `$JAVA_HOME` -- `PATH` environment variable - -**macOS:** -- `/Library/Java/JavaVirtualMachines/` -- `/System/Library/Java/JavaVirtualMachines/` -- `$JAVA_HOME` -- `PATH` environment variable - -**Windows:** -- `C:\Program Files\Java\` -- `C:\Program Files (x86)\Java\` -- `%JAVA_HOME%` -- `PATH` environment variable -- Windows Registry - -### Version Detection - -For each Java installation found, DropOut: -1. Runs `java -version` to get version info -2. Parses major version (8, 11, 17, 21, etc.) -3. Detects architecture (x64, ARM64) -4. Identifies vendor (Oracle, Adoptium, etc.) - -### Results - -All detected Java installations appear in Settings → Java: -- Version number -- Installation path -- Architecture -- Current selection status - -## Java Download - -### Adoptium Integration - -DropOut integrates with the Eclipse Adoptium API to download high-quality, free JDK/JRE builds. - -**Supported Versions:** -- Java 8 (LTS) -- Java 11 (LTS) -- Java 17 (LTS) -- Java 21 (LTS) -- Java 23+ (Latest) - -**Features:** -- Automatic platform detection -- Architecture-specific builds -- JDK or JRE selection -- Checksum verification - -### Download Process - -1. Navigate to Settings → Java -2. Click "Download Java" -3. Select version (e.g., Java 17) -4. Choose JDK or JRE -5. Click Download -6. Wait for download and extraction - -**Progress Tracking:** -- Real-time download speed -- ETA calculation -- Extraction progress -- Installation confirmation - -### Catalog Management - -The Java catalog is cached for 24 hours to improve performance: - -```rust -// Catalog structure -{ - "versions": [ - { - "version": "17.0.9+9", - "major": 17, - "url": "https://api.adoptium.net/...", - "sha256": "...", - "size": 123456789 - } - ], - "last_updated": 1234567890 -} -``` - -**Refresh:** -- Automatic after 24 hours -- Manual refresh in settings -- Forced refresh on download failure - -## Installation - -### Download Directory - -Downloaded Java runtimes are installed to: - -``` -~/.local/share/com.dropout.launcher/java/ (Linux) -~/Library/Application Support/com.dropout.launcher/java/ (macOS) -%APPDATA%/com.dropout.launcher/java/ (Windows) -``` - -### Directory Structure - -``` -java/ -├── jdk-17.0.9+9/ -│ ├── bin/ -│ │ └── java (or java.exe) -│ └── lib/ -├── jdk-21.0.1+12/ -│ ├── bin/ -│ └── lib/ -└── download_queue.json -``` - -### Extraction - -1. Download to `.part` file -2. Verify checksum -3. Extract archive: - - `.tar.gz` on Linux/macOS - - `.zip` on Windows -4. Move to `java/<version>/` directory -5. Set executable permissions (Unix) - -## Configuration - -### Memory Allocation - -Configure JVM memory in Settings: - -**Minimum Memory:** -- Default: 1024 MB -- Recommended: 2048 MB for vanilla -- Recommended: 4096+ MB for modded - -**Maximum Memory:** -- Default: 4096 MB -- Adjust based on your system RAM -- Leave 4GB for OS and other apps - -**Format:** -```bash --Xms1024M -Xmx4096M -``` - -### Custom JVM Arguments - -Add custom JVM arguments for advanced configuration: - -**Common Arguments:** -```bash -# Garbage collection --XX:+UseG1GC --XX:+UnlockExperimentalVMOptions - -# Performance --XX:G1NewSizePercent=20 --XX:G1ReservePercent=20 --XX:MaxGCPauseMillis=50 - -# Memory --XX:G1HeapRegionSize=32M -``` - -### Java Path Selection - -**Auto-select:** -- DropOut recommends the best Java version for each Minecraft version -- Java 8 for Minecraft 1.12.2 and older -- Java 17 for Minecraft 1.18-1.20.4 -- Java 21 for Minecraft 1.20.5+ - -**Manual selection:** -1. Go to Settings → Java -2. Choose from detected installations -3. Or specify custom path - -## Version Recommendations - -### Minecraft Version → Java Version - -| Minecraft Version | Recommended Java | Minimum Java | -|-------------------|------------------|--------------| -| 1.7.10 and older | Java 8 | Java 8 | -| 1.8 - 1.12.2 | Java 8 | Java 8 | -| 1.13 - 1.16.5 | Java 8 or 11 | Java 8 | -| 1.17 - 1.17.1 | Java 16 | Java 16 | -| 1.18 - 1.20.4 | Java 17 | Java 17 | -| 1.20.5+ | Java 21 | Java 21 | - -### Modded Minecraft - -**Fabric:** -- Usually matches vanilla requirements -- Some mods may require newer Java - -**Forge:** -- May require specific Java versions -- Check mod loader documentation -- Often requires exact version match - -## Troubleshooting - -### Java Not Detected - -**Issue:** Installed Java not showing up - -**Solutions:** -1. Verify Java is in standard location -2. Check `JAVA_HOME` environment variable -3. Add Java `bin` directory to `PATH` -4. Restart DropOut -5. Manual path selection - -### Download Fails - -**Issue:** Java download doesn't complete - -**Solutions:** -1. Check internet connection -2. Verify disk space -3. Try different version -4. Clear download queue -5. Manual download from Adoptium - -### Wrong Java Version - -**Issue:** Game crashes due to Java version - -**Solutions:** -1. Check Minecraft version requirements -2. Download correct Java version -3. Select appropriate Java in settings -4. Verify Java path is correct - -### OutOfMemoryError - -**Issue:** Game crashes with memory error - -**Solutions:** -1. Increase maximum memory allocation -2. Close other applications -3. Upgrade system RAM -4. Use 64-bit Java -5. Optimize JVM arguments - -### Performance Issues - -**Issue:** Low FPS or stuttering - -**Solutions:** -1. Adjust memory allocation (not too high!) -2. Enable G1GC garbage collector -3. Add performance JVM arguments -4. Use newer Java version if compatible -5. Allocate 4-8GB for modpacks - -## API Reference - -### Tauri Commands - -**Detect Java Installations:** -```typescript -const javas = await invoke('detect_java_installations'); -// Returns: Array<{ path: string, version: string, major: number }> -``` - -**Get Java Catalog:** -```typescript -const catalog = await invoke('get_java_catalog'); -// Returns: { versions: Array<JavaVersion>, last_updated: number } -``` - -**Download Java:** -```typescript -await invoke('download_java', { - version: '17.0.9+9', - variant: 'jdk' // or 'jre' -}); -``` - -**Cancel Java Download:** -```typescript -await invoke('cancel_java_download'); -``` - -**Set Java Path:** -```typescript -await invoke('set_java_path', { path: '/path/to/java' }); -``` - -### Events - -**Download Progress:** -```typescript -listen('java-download-progress', (event) => { - const { percent, speed, eta } = event.payload; -}); -``` - -**Download Complete:** -```typescript -listen('java-download-complete', (event) => { - const { path, version } = event.payload; -}); -``` - -## Best Practices - -### For Players - -1. **Use Adoptium builds** - Free, high-quality, maintained -2. **Match Java to Minecraft** - Check version requirements -3. **Don't over-allocate memory** - Leave RAM for OS -4. **Keep Java updated** - Security and performance -5. **Use 64-bit Java** - Required for large memory - -### For Developers - -1. **Test multiple Java versions** - Ensure compatibility -2. **Document Java requirements** - Help users -3. **Handle missing Java** - Graceful fallbacks -4. **Validate Java path** - Before launching -5. **Provide clear errors** - When Java is wrong - -## Advanced Topics - -### Custom Java Installation - -To use a custom Java installation: - -1. Install Java manually -2. Note the installation path -3. In DropOut Settings → Java -4. Click "Custom Path" -5. Browse to Java executable -6. Verify version is correct - -### Java for Servers - -When running a Minecraft server: - -```bash -# Recommended server JVM arguments --Xms4G -Xmx4G \ --XX:+UseG1GC \ --XX:+ParallelRefProcEnabled \ --XX:MaxGCPauseMillis=200 \ --XX:+UnlockExperimentalVMOptions \ --XX:+DisableExplicitGC \ --XX:G1NewSizePercent=30 \ --XX:G1MaxNewSizePercent=40 \ --XX:G1HeapRegionSize=8M \ --XX:G1ReservePercent=20 \ --XX:G1HeapWastePercent=5 \ --XX:G1MixedGCCountTarget=4 \ --XX:InitiatingHeapOccupancyPercent=15 \ --XX:G1MixedGCLiveThresholdPercent=90 \ --XX:G1RSetUpdatingPauseTimePercent=5 \ --XX:SurvivorRatio=32 \ --XX:+PerfDisableSharedMem \ --XX:MaxTenuringThreshold=1 -``` - -### GraalVM - -GraalVM is supported for advanced users: - -1. Download GraalVM from graalvm.org -2. Install manually -3. Add to DropOut as custom Java -4. May improve performance -5. Test thoroughly before use diff --git a/packages/docs/content/en/features/meta.json b/packages/docs/content/en/features/meta.json deleted file mode 100644 index 4725321..0000000 --- a/packages/docs/content/en/features/meta.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "title": "Features", - "pages": [ - "index", - "authentication", - "java", - "mod-loaders" - ] -} diff --git a/packages/docs/content/en/features/mod-loaders.mdx b/packages/docs/content/en/features/mod-loaders.mdx deleted file mode 100644 index d6fdf4f..0000000 --- a/packages/docs/content/en/features/mod-loaders.mdx +++ /dev/null @@ -1,409 +0,0 @@ ---- -title: Mod Loaders -description: Fabric and Forge installation and management ---- - -# Mod Loaders - -DropOut supports the two most popular Minecraft mod loaders: Fabric and Forge. Both can be easily installed and managed directly from the launcher. - -## Fabric Support - -### Overview - -Fabric is a lightweight, modular modding toolchain focused on: -- Fast updates to new Minecraft versions -- Clean, minimal API -- Strong developer community -- Excellent performance - -### Installation - -1. Navigate to **Versions** tab -2. Click **"Install Fabric"** -3. Select Minecraft version -4. Choose Fabric loader version -5. Click **"Install"** -6. Wait for installation to complete - -### How It Works - -**Meta API Integration:** -```rust -// Fetch available Fabric versions -let url = format!( - "https://meta.fabricmc.net/v2/versions/loader/{}", - minecraft_version -); -``` - -**Profile Generation:** -1. Fetch Fabric loader metadata -2. Download Fabric libraries -3. Generate version JSON with `inheritsFrom` -4. Merge with parent Minecraft version -5. Add to versions list - -**Version Format:** -```json -{ - "id": "fabric-loader-0.15.0-1.20.4", - "inheritsFrom": "1.20.4", - "mainClass": "net.fabricmc.loader.impl.launch.knot.KnotClient", - "libraries": [...] -} -``` - -### Fabric Versions - -**Loader Versions:** -- Latest stable (recommended) -- Specific versions for compatibility -- Beta/snapshot versions - -**Game Versions:** -- All Minecraft versions from 1.14+ -- Snapshots supported -- Combat Test versions - -### Library Management - -Fabric libraries are resolved from Maven: - -**Main Library:** -``` -net.fabricmc:fabric-loader:0.15.0 -``` - -**Dependencies:** -- `net.fabricmc:tiny-mappings-parser` -- `net.fabricmc:sponge-mixin` -- `net.fabricmc:access-widener` - -**Download:** -```rust -// Maven resolution -let url = format!( - "https://maven.fabricmc.net/{}/{}", - artifact_path, filename -); -``` - -### Fabric API - -Fabric Loader ≠ Fabric API: -- **Fabric Loader**: Mod loader (installed by DropOut) -- **Fabric API**: Library mod (download separately) - -Many mods require Fabric API: -1. Download from [Modrinth](https://modrinth.com/mod/fabric-api) or [CurseForge](https://www.curseforge.com/minecraft/mc-mods/fabric-api) -2. Place in instance's `mods/` folder - -## Forge Support - -### Overview - -Forge is the original and most popular Minecraft mod loader: -- Extensive mod ecosystem -- Mature API -- Wide version support -- Large community - -### Installation - -1. Navigate to **Versions** tab -2. Click **"Install Forge"** -3. Select Minecraft version -4. Choose Forge version -5. Click **"Install"** -6. Wait for installer to run -7. Installation complete - -### How It Works - -**Forge Installer:** -```rust -// Download Forge installer -let installer_url = format!( - "https://maven.minecraftforge.net/net/minecraftforge/forge/{}/forge-{}-installer.jar", - full_version, full_version -); - -// Run installer -java -jar forge-installer.jar --installClient -``` - -**Profile Parsing:** -1. Forge installer creates version JSON -2. DropOut parses install profile -3. Extracts library dependencies -4. Processes processors (if any) -5. Generates launcher profile - -**Version Format:** -```json -{ - "id": "1.20.4-forge-49.0.26", - "inheritsFrom": "1.20.4", - "mainClass": "cpw.mods.bootstraplauncher.BootstrapLauncher", - "libraries": [...] -} -``` - -### Forge Versions - -**Release Types:** -- **Latest**: Most recent stable -- **Recommended**: Most stable for production -- **Specific**: Version-locked for compatibility - -**Minecraft Version Support:** -- Legacy versions (1.6.4+) -- Modern versions (1.13+) -- Latest versions (1.20+) - -### Library Management - -Forge has many libraries: - -**Core Libraries:** -- `net.minecraftforge:forge:<version>` -- `net.minecraftforge:fmlloader:<version>` -- `org.ow2.asm:asm:<version>` - -**Resolution:** -```rust -// Forge Maven -"https://maven.minecraftforge.net/" - -// Dependencies may use: -// - Maven Central -// - Minecraft Libraries -``` - -### Forge Processors - -Some Forge versions run "processors" during installation: -- Bytecode manipulation -- Library patching -- Mapping generation - -DropOut handles these automatically. - -## Version Inheritance - -Both Fabric and Forge use Minecraft's inheritance system: - -### Parent Version - -```json -{ - "id": "fabric-loader-0.15.0-1.20.4", - "inheritsFrom": "1.20.4" // Parent vanilla version -} -``` - -### Merging Process - -**Libraries:** -```rust -// Merged from both -parent_libraries + modded_libraries -// Duplicates removed -``` - -**Arguments:** -```rust -// Combined -parent_jvm_args + modded_jvm_args -parent_game_args + modded_game_args -``` - -**Assets:** -```rust -// Inherited from parent -assets = parent.assets -``` - -**Main Class:** -```rust -// Overridden by modded -main_class = modded.mainClass -``` - -## Comparison - -| Feature | Fabric | Forge | -|---------|--------|-------| -| **Performance** | Excellent | Good | -| **Update Speed** | Very Fast | Moderate | -| **Mod Selection** | Growing | Extensive | -| **API Simplicity** | Simple | Complex | -| **Version Support** | 1.14+ | 1.6.4+ | -| **Developer Friendly** | Very | Moderate | -| **Stability** | Excellent | Excellent | - -## Installing Mods - -### Fabric Mods - -1. Create/select instance -2. Ensure Fabric is installed -3. Download mods from: - - [Modrinth](https://modrinth.com/) - - [CurseForge](https://www.curseforge.com/) - - [GitHub Releases](https://github.com/) -4. Place `.jar` files in `instances/<name>/mods/` -5. Launch game - -**Compatibility:** -- Check Minecraft version -- Check Fabric Loader version -- Check for Fabric API requirement -- Read mod dependencies - -### Forge Mods - -1. Create/select instance -2. Ensure Forge is installed -3. Download mods from: - - [CurseForge](https://www.curseforge.com/) - - [Modrinth](https://modrinth.com/) -4. Place `.jar` files in `instances/<name>/mods/` -5. Launch game - -**Compatibility:** -- Check Minecraft version exactly -- Check Forge version range -- Read mod dependencies -- Check for conflicts - -## Troubleshooting - -### Fabric Issues - -**"Fabric Loader not found"** -- Reinstall Fabric -- Check version JSON exists -- Verify libraries downloaded - -**"Mixin apply failed"** -- Mod incompatibility -- Remove conflicting mods -- Update Fabric Loader - -**"Fabric API required"** -- Download Fabric API -- Match Minecraft version -- Place in mods folder - -### Forge Issues - -**"Forge installer failed"** -- Verify Java installation -- Check disk space -- Try older Forge version -- Check logs for details - -**"Missing dependencies"** -- Install required mods -- Check mod version compatibility -- Read error message carefully - -**"Class not found"** -- Forge version mismatch -- Reinstall Forge -- Verify libraries downloaded - -### General Mod Issues - -**Crash on Launch:** -1. Check crash report -2. Identify problematic mod -3. Remove or update mod -4. Test with minimal mods -5. Add mods back incrementally - -**Performance Problems:** -1. Too many mods installed -2. Increase memory allocation -3. Install performance mods: - - Fabric: Sodium, Lithium - - Forge: OptiFine, Magnesium -4. Remove resource-heavy mods - -## API Reference - -### Tauri Commands - -**Install Fabric:** -```typescript -await invoke('install_fabric', { - minecraftVersion: '1.20.4', - loaderVersion: '0.15.0' -}); -``` - -**Install Forge:** -```typescript -await invoke('install_forge', { - minecraftVersion: '1.20.4', - forgeVersion: '49.0.26' -}); -``` - -**List Fabric Versions:** -```typescript -const versions = await invoke('get_fabric_versions', { - minecraftVersion: '1.20.4' -}); -``` - -**List Forge Versions:** -```typescript -const versions = await invoke('get_forge_versions', { - minecraftVersion: '1.20.4' -}); -``` - -### Events - -**Installation Progress:** -```typescript -listen('mod-loader-progress', (event) => { - const { stage, percent } = event.payload; - // Stages: "downloading", "installing", "processing", "complete" -}); -``` - -## Best Practices - -### For Players - -1. **Choose one mod loader** per instance -2. **Match versions exactly** - Minecraft and loader -3. **Read mod requirements** before installing -4. **Start small** - Add mods incrementally -5. **Backup worlds** before adding mods -6. **Check compatibility** lists -7. **Update cautiously** - Test in separate instance - -### For Modpack Creators - -1. **Document versions** - MC, loader, all mods -2. **Test thoroughly** - All features -3. **List dependencies** - Including API -4. **Provide changelog** - For updates -5. **Version lock** - For stability -6. **Include configs** - Pre-configured -7. **Test updates** - Before release - -## Future Features - -- **Mod browser** - Install mods from launcher -- **Automatic updates** - Keep mods current -- **Dependency resolution** - Auto-install requirements -- **Conflict detection** - Warn about incompatibilities -- **Profile export** - Share modpack configurations -- **CurseForge integration** - Direct modpack import -- **Modrinth integration** - Mod search and install |