# Launches the compiled fork as an ordinary client: no agent, no injection. # # run-game.ps1 [-Run ] [-Java ] [-ExtraArgs ] # # Stage first if run\classpath.txt is missing: # python tools\stage_run.py ..\..\game-fork\build\classes param( [string]$Run = 'G:\RustNotMC\run', [string]$Java = '', [string[]]$ExtraArgs = @(), [string]$Token = '', [int]$Width = 1280, [int]$Height = 720 ) $ErrorActionPreference = 'Stop' $root = 'G:\RustNotMC' if (-not (Test-Path (Join-Path $Run 'classpath.txt'))) { throw "no classpath.txt in $Run - run stage_run.py first" } if (-not $Java) { $Java = Get-ChildItem "$env:APPDATA\AstralRinthApp\meta\java_versions" ` -Directory | Where-Object { $_.Name -like 'zulu17*' } | ForEach-Object { Get-ChildItem $_.FullName -Recurse -Filter 'java.exe' -ErrorAction SilentlyContinue | Select-Object -First 1 } | Select-Object -First 1 -ExpandProperty FullName } if (-not $Java) { throw 'no Java 17 found' } # The launcher's asset store is index-based: indexes/1.12.json pointing at # objects//. A 1.12.2 client wants /minecraft/ and # will not look in either of those. Pointing --assetsDir at the store root # leaves the game running and looking correct, because language and textures # come from the jar, while every sound is silently missing. $store = "$env:APPDATA\AstralRinthApp\meta\assets" $assets = Join-Path $Run 'assets' & python (Join-Path $root 'rsx-client\tools\materialize_assets.py') $store $assets --index 1.12 if ($LASTEXITCODE -ne 0) { throw 'asset materialisation failed' } $cp = (Get-Content (Join-Path $Run 'classpath.txt') -Raw).Trim() $natives = Join-Path $Run 'natives' # built as strings first: mixing '+' into an array literal folds the whole # list into one element, because the comma binds tighter than the concatenation $javaArgs = @() $javaArgs += "-Djava.library.path=$natives" $javaArgs += "-Dorg.lwjgl.librarypath=$natives" $javaArgs += '-Dfile.encoding=UTF-8' $javaArgs += '-cp' $javaArgs += $cp $javaArgs += 'net.minecraft.client.main.Main' # singleplayer-only session: the client never validates this against Mojang $javaArgs += '--username'; $javaArgs += 'Player' $javaArgs += '--version'; $javaArgs += '1.12.2' $javaArgs += '--gameDir'; $javaArgs += $Run $javaArgs += '--assetsDir'; $javaArgs += $assets $javaArgs += '--uuid'; $javaArgs += '00000000000000000000000000000000' $javaArgs += '--accessToken'; $javaArgs += $(if ($Token) { $Token } else { '0' }) $javaArgs += '--userType'; $javaArgs += 'legacy' $javaArgs += '--versionType'; $javaArgs += 'release' $javaArgs += '--width'; $javaArgs += "$Width" $javaArgs += '--height'; $javaArgs += "$Height" $javaArgs += $ExtraArgs Write-Host "java : $Java" Write-Host "game : $Run" Write-Host "assets : $assets" Write-Host "args : $($javaArgs.Count)" & $Java @javaArgs exit $LASTEXITCODE