SkillAgentSearch skills...

Launcher

Blocksmiths Launcher - Modern Minecraft Launcher

Install / Use

/learn @BlocksmithsLauncher/Launcher
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

🎮 Blocksmiths Launcher - Public Version

<div align="center">

Version License Electron Node Platform

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 (.mrpack files)
  • ❌ 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

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

  1. Start the launcher (npm start)
  2. Create a profile (or use default)
  3. Select Minecraft version
  4. Configure memory/settings
  5. 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

View on GitHub
GitHub Stars9
CategoryDevelopment
Updated19d ago
Forks1

Languages

JavaScript

Security Score

70/100

Audited on Mar 12, 2026

No findings