Launcher
Blocksmiths Launcher - Modern Minecraft Launcher
Install / Use
/learn @BlocksmithsLauncher/LauncherREADME
🎮 Blocksmiths Launcher - Public Version
<div align="center">
A Modern, Open-Source Minecraft Launcher
🇹🇷 Türkçe • 📖 Documentation • 🔒 Privacy • ⚖️ License
</div>⚠️ IMPORTANT NOTICE
This is a PUBLIC/REFERENCE VERSION of Blocksmiths Launcher with proprietary features removed.
🚫 What's Been Removed
- ❌ Modpack installation system (
.mrpackfiles) - ❌ Mod loader installers (Fabric/Forge/Quilt/NeoForge)
- ❌ Automatic mod downloading and dependency resolution
- ❌ Instance management and isolation
- ❌ Advanced launch configurations
✅ What's Included
- ✅ Full Vanilla Minecraft Support (all versions)
- ✅ Complete UI/UX (Electron-based interface)
- ✅ Profile System (offline authentication)
- ✅ Java Auto-Detection (automatic JRE discovery)
- ✅ Asset Validation (integrity checking)
- ✅ Source Code (educational purposes)
📋 Table of Contents
- Features
- Installation
- Usage
- Project Structure
- Privacy & Security
- Technologies
- Building
- Contributing
- License
- Support
✨ Features
Core Functionality
| Feature | Status | Description | |---------|--------|-------------| | 🎮 Vanilla Minecraft | ✅ Working | Launch any Minecraft version | | 👤 Profile Management | ✅ Working | Multiple offline profiles | | ⚙️ Settings | ✅ Working | Memory, Java, resolution config | | ☕ Java Detection | ✅ Working | Auto-find Java 8, 17, 21+ | | 📦 Asset Validation | ✅ Working | SHA1 verification | | 🎨 Modern UI | ✅ Working | Electron-based interface | | 📊 Discord RPC | ✅ Working | Show what you're playing | | 📰 News Feed | ✅ Working | In-app announcements | | 🔄 Auto-Updates | ✅ Working | Launcher self-update | | | | | | 📦 Modpack Support | ❌ Removed | Proprietary - Not included | | 🔧 Mod Loaders | ❌ Removed | Proprietary - Not included | | 📥 Mod Downloads | ❌ Removed | Proprietary - Not included |
🚀 Installation
Prerequisites
Node.js >= 18.0.0
npm >= 9.0.0
Git
Quick Start
# Clone the repository
git clone https://github.com/BlocksmithsLauncher/launcher.git
cd launcher
# Install dependencies
npm install
# Run in development mode
npm start
Environment Setup
Create a .env file (optional):
# Analytics (Optional - for usage statistics)
ANALYTICS_KEY=your_key_here
# API URL (Optional - for news feed)
API_URL=https://api.blocksmithslauncher.com
# Discord Rich Presence (Optional)
DISCORD_CLIENT_ID=your_discord_app_id
⚠️ Privacy Note: All keys are optional. The launcher works without them. See Privacy & Security for details.
📖 Usage
Launching Vanilla Minecraft
- Start the launcher (
npm start) - Create a profile (or use default)
- Select Minecraft version
- Configure memory/settings
- Click Play
Profile Management
// Profiles are stored locally at:
// Windows: %APPDATA%/blocksmiths-launcher/profiles.json
// macOS: ~/Library/Application Support/blocksmiths-launcher/profiles.json
// Linux: ~/.config/blocksmiths-launcher/profiles.json
// Example profile structure:
{
"id": "profile-1",
"name": "Player",
"playerName": "Steve",
"gameVersion": "1.20.4",
"memory": "4G"
}
Settings
// Settings are stored locally at:
// settings.json (same location as profiles.json)
// Example settings:
{
"gameDirectory": "C:/Users/YourName/.blocksmiths/minecraft",
"minMemoryGB": 2,
"maxMemoryGB": 4,
"javaPath": "auto",
"windowWidth": 1280,
"windowHeight": 720
}
📁 Project Structure
launcher-public/
├── src/
│ ├── main.js # Electron main process
│ ├── preload.js # Preload script (IPC bridge)
│ │
│ ├── minecraft/
│ │ └── launcher.js # 🟡 Partial - Modpack logic removed
│ │
│ ├── managers/
│ │ ├── ModManager.js # 🔴 STUB - Proprietary removed
│ │ └── ProfessionalModManager.js # 🔴 STUB - Proprietary removed
│ │
│ ├── loaders/
│ │ ├── ForgeAdapter.js # 🔴 STUB - Proprietary removed
│ │ └── NeoForgeAdapter.js # 🔴 STUB - Proprietary removed
│ │
│ └── utils/
│ ├── VanillaLauncher.js # ✅ Full implementation
│ ├── GameStateManager.js # ✅ Full implementation
│ ├── JavaDetector.js # ✅ Full implementation
│ ├── JavaOptimizer.js # ✅ Full implementation
│ ├── DownloadManager.js # ✅ Full implementation
│ ├── ProcessManager.js # ✅ Full implementation
│ └── ...
│
├── renderer/
│ ├── index.html # Main UI
│ ├── main.js # Renderer process
│ ├── profile-selector.html # Profile selection
│ └── utils/ # Frontend utilities
│
├── assets/
│ ├── styles/ # CSS files
│ ├── images/ # Images & icons
│ └── white-logo-wide.png # App logo
│
├── package.json # Dependencies
├── README.md # This file
├── README.tr.md # Turkish version
├── LICENSE # Proprietary license
└── .gitignore # Git ignore rules
Legend
- ✅ Full Implementation - Complete, working code
- 🟡 Partial Implementation - Some features removed
- 🔴 STUB/Placeholder - Proprietary code removed, throws errors
🔒 Privacy & Security
Data Collection Transparency
This launcher does NOT collect personal data by default.
What's Stored Locally
| Data Type | Location | Purpose | Sent Externally? |
|-----------|----------|---------|------------------|
| Profiles | profiles.json | Store player names | ❌ No |
| Settings | settings.json | Game configuration | ❌ No |
| Game Files | .blocksmiths/minecraft/ | Minecraft assets | ❌ No |
| Cache | .blocksmiths/cache/ | Speed up loading | ❌ No |
| Logs | .blocksmiths/logs/ | Debugging | ❌ No |
Optional External Connections
| Service | Purpose | When? | Data Sent | Can Disable? |
|---------|---------|-------|-----------|--------------|
| Mojang Servers | Download Minecraft | On launch | Version ID only | ❌ Required for downloads |
| Discord RPC | Show game status | If Discord running | Game version, playtime | ✅ Yes (in settings) |
| News API | Fetch announcements | On startup | None | ✅ Yes (works offline) |
| Analytics | Usage statistics | If ANALYTICS_KEY set | Launcher version, OS | ✅ Yes (don't set key) |
Source of API Keys/Credentials
All keys are user-provided or optional:
// Example from .env (YOU provide these):
ANALYTICS_KEY=your_key_here // ← You create this
API_URL=https://api.blocksmithslauncher.com // ← Public API
DISCORD_CLIENT_ID=your_app_id // ← You register Discord app
Where to get these:
- ANALYTICS_KEY: Create your own at [analytics-provider.com] (optional)
- API_URL: Use your own backend or leave empty (optional)
- DISCORD_CLIENT_ID: Register at Discord Developer Portal (optional)
None of these are required for basic functionality.
API Communication Details
How the launcher communicates with blocksmithslauncher.com:
| API Endpoint | Purpose | Data Sent | Frequency | Code Location |
|--------------|---------|-----------|-----------|---------------|
| /api/launcher/heartbeat | Keep session alive | Session ID, launcher version, OS type | Every 5 minutes (if enabled) | src/utils/analytics.js:96 |
| /api/launcher/event | Track events | Event type (launch, close), session ID | On game launch/close | src/utils/analytics.js:201 |
| /api/banners/active | Fetch ads | None (GET request) | On startup | src/utils/ads.js:34 |
| /api/banners/{id}/impression | Track ad views | Banner ID | When ad displayed | src/utils/ads.js:181 |
| /api/banners/{id}/click | Track ad clicks | Banner ID | When ad clicked | src/utils/ads.js:192 |
⚠️ IMPORTANT: All these API calls are OPTIONAL and can be disabled:
// In src/utils/analytics.js
this.ANALYTICS_ENABLED = process.env.ANALYTICS_ENABLED !== 'false'; // Default: enabled
// To disable analytics, set in .env:
ANALYTICS_ENABLED=false
// Or remove API_URL from .env entirely
What data is NOT sent:
- ❌ Personal information (name, email, IP address)
- ❌ Minecraft login credentials
- ❌ File paths or directory contents
- ❌ Browser history or browsing data
- ❌ Installed programs or processes
- ❌ Keyboard input or screenshots
- ❌ Any form of spyware or malware
What data IS sent (if analytics enabled):
- ✅ Launcher version (e.g., "1.2.1-public")
- ✅ Operating system type (e.g., "Windows", "macOS", "Linux")
- ✅ Anonymous session ID (randomly generated UUID)
- ✅ Event type (e.g., "game_launched", "launcher_opened")
- ✅ Game version launched (e.g., "1.20.4")
Example API Request:
// From src/utils/analytics.js (lines 93-99)
const heartbeatData = {
sessionId: this.sessionId, // Random UUID, not linked to you
launcherVersion: app.getVersion(), // "1.2.1-public"
platform: os.platform(), // "win32" / "darwin" / "linux"
timestamp: new Date().toISOString() // Current time
};
await axios.post(
`${this.API_UR
Related Skills
node-connect
344.1kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
96.8kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
344.1kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
344.1kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
