Fix: Multiple launcher issues
- Fix CLI arrow keys: remove 50ms timeout in escape sequence handling (ArrowMenu, LoginMenu) - Add network logs polling to UI via /api/logs endpoint - Display user role in launcher header (AuthManager, AuthService, JFXLauncher, UI) - Capture and display game logs in launcher via /api/game-logs endpoint - Fix demo mode bug in VersionManifest.ruleMatches() - was incorrectly adding --demo flag - Fix modloader launch: pass proper auth info (accessToken, uuid) from AuthManager - Add game log capture in MinecraftLib and LaunchService
This commit is contained in:
+46
-4
@@ -150,6 +150,11 @@ async def lifespan(app: FastAPI):
|
||||
|
||||
# Scan launcher versions and generate meta
|
||||
logger.info("Scanning launcher versions...")
|
||||
|
||||
# Extract new format ZIPs to versions directory
|
||||
logger.info("Extracting new format versions...")
|
||||
extract_new_format_versions()
|
||||
|
||||
launcher_versions = get_launcher_versions()
|
||||
if launcher_versions:
|
||||
latest = launcher_versions[0]
|
||||
@@ -773,7 +778,12 @@ async def get_pack_file(pack_name: str, file_path: str, request: Request):
|
||||
# ====================== ЭНДПОИНТЫ ДЛЯ ЛАУНЧЕРА ======================
|
||||
|
||||
def get_current_launcher_version() -> str:
|
||||
"""Get current launcher version from build.version file"""
|
||||
"""Get current launcher version from meta system (new format) or build.version (legacy)"""
|
||||
versions = get_launcher_versions()
|
||||
if versions:
|
||||
return versions[0]["meta"]["version"]
|
||||
|
||||
# Fallback to build.version for legacy
|
||||
version_file = BUILDS_DIR / "build.version"
|
||||
if version_file.exists():
|
||||
return version_file.read_text().strip()
|
||||
@@ -892,6 +902,35 @@ def get_launcher_version_meta(version: str) -> Optional[dict]:
|
||||
return scan_launcher_version(version)
|
||||
|
||||
|
||||
def extract_new_format_versions():
|
||||
"""Extract new format ZIPs to versions directory"""
|
||||
VERSIONS_DIR.mkdir(exist_ok=True)
|
||||
|
||||
# Find all ZernMC-win-*.zip files
|
||||
new_format_zips = list(BUILDS_DIR.glob("ZernMC-win-*.zip"))
|
||||
|
||||
for zip_file in new_format_zips:
|
||||
version = zip_file.stem.replace("ZernMC-win-", "")
|
||||
extract_dir = VERSIONS_DIR / version
|
||||
|
||||
# Skip if already extracted and meta exists
|
||||
if extract_dir.exists() and (extract_dir / "meta.json").exists():
|
||||
logger.debug(f"Version {version} already extracted")
|
||||
continue
|
||||
|
||||
logger.info(f"Extracting {zip_file.name} to versions/{version}/...")
|
||||
|
||||
try:
|
||||
import zipfile
|
||||
with zipfile.ZipFile(zip_file, 'r') as zf:
|
||||
# Extract all files
|
||||
zf.extractall(extract_dir)
|
||||
|
||||
logger.info(f"Extracted {zip_file.name} successfully")
|
||||
except Exception as e:
|
||||
logger.error(f"Failed to extract {zip_file.name}: {e}")
|
||||
|
||||
|
||||
# ====================== END ЛАУНЧЕР МЕТА СИСТЕМА ======================
|
||||
|
||||
|
||||
@@ -1008,14 +1047,17 @@ async def get_launcher_version():
|
||||
@app.get("/launcher/download/jar")
|
||||
async def download_launcher_jar():
|
||||
"""Download launcher JAR file"""
|
||||
file_path = BUILDS_DIR / "ZernMCLauncher.jar"
|
||||
# Prefer new shaded JAR, fallback to old
|
||||
file_path = BUILDS_DIR / "zernmclauncher.jar"
|
||||
if not file_path.exists():
|
||||
file_path = BUILDS_DIR / "ZernMCLauncher.jar"
|
||||
|
||||
if not file_path.exists():
|
||||
raise HTTPException(404, "JAR file not found")
|
||||
|
||||
return FileResponse(
|
||||
path=file_path,
|
||||
filename="ZernMCLauncher.jar",
|
||||
filename="zernmclauncher.jar",
|
||||
media_type="application/java-archive"
|
||||
)
|
||||
|
||||
@@ -1114,7 +1156,7 @@ async def get_launcher_meta_list():
|
||||
|
||||
|
||||
@app.get("/launcher/meta/{version}")
|
||||
async def get_launcher_version_meta(version: str):
|
||||
async def get_launcher_version_meta_handler(version: str):
|
||||
"""Get meta for specific launcher version"""
|
||||
meta = get_launcher_version_meta(version)
|
||||
if not meta:
|
||||
|
||||
Reference in New Issue
Block a user