Skip to content

feat(minecraft): add native launcher, profiles and local-world dashboard - #303

Open
elcuervo171234 wants to merge 23 commits into
Osiris-Team:masterfrom
elcuervo171234:native-launcher-296
Open

elcuervo171234 wants to merge 23 commits into
Osiris-Team:masterfrom
elcuervo171234:native-launcher-296

Conversation

@elcuervo171234

Copy link
Copy Markdown

Replace the placeholder Minecraft client tabs with a native launcher, server browser and unified profile/world dashboard for #296. Desktop and CLI share the same repositories, updater service and process registry, while existing server controls remain available.

Changes

  • Import vanilla servers.dat without rewriting it, reuse MineStat for status and resolve a matching version/loader profile before joining. Missing profiles can use an explicitly approved template clone and migration.
  • Manage isolated MODS, MODS_SERVER and PLUGINS profiles, templates and mutable configuration through UI and CLI. Reuse AutoPlug's update providers with a shared artifact cache. Provider errors block updates; confirmed incompatible files require approval before becoming .jar.disabled.
  • Resolve official Mojang metadata, SHA1-verified client/libraries/assets, OS/native rules, modern and legacy arguments, direct connection and compatible Java runtimes. Support Fabric/Quilt metadata and checksum-verified official Forge/NeoForge client installers, with cancellation and process cleanup. No HMCL code or new launcher framework is included.
  • Provide configurable Microsoft device login through Xbox/XSTS and Minecraft Services, with tokens kept in memory. Online play requires a legitimately registered application client ID and Minecraft Java ownership.
  • Configure isolated local worlds, wait for server readiness and stop the background server when its client exits. Sharing is explicit and uses expiring UPnP mappings, visible failure/CGNAT notices and ownership-checked cleanup. AutoPlug does not accept Minecraft's EULA for the user.

Documentation and command examples: docs/NATIVE_MINECRAFT.md.

Validation

  • Maven 3.9.8 clean package passed using OpenJDK 25.0.3 and the existing release-9 compiler configuration. All production and test sources compiled, and the assembled JAR includes the new classes.
  • 192 selected tests passed: zero failures, errors or skipped tests. This covers all added native tests and the existing offline UtilsString, UtilsEnvironment, UtilsFile and UtilsMap regressions.
  • Coverage includes recorded official Mojang 1.20.4 metadata checked against its published SHA1; synthetic authentication, loader and provider responses; profile isolation/migration/rollback; argument construction; runtime architecture; cancellation/process/lease lifetime; and UPnP expiration and cleanup.
  • A synthetic local Java executable exercised integrated clone/migrate, actual child-process launch, direct-connect argument recording, Stop and cleanup. It did not run Minecraft or a vendor installer. Headless desktop bootstrap and bounded PNG-preview tests also passed.
  • No new dependencies/frameworks or POM/JPM changes. Based on master 604c8ec7b9a814c37c7b8f9dbe7c8a9b8bad070d.

AI assistance and hands-on review

This contribution was produced predominantly with Codex assistance, including implementation, automated tests and automated code reviews. I tested the synthetic desktop UI and confirmed that it worked correctly. This was a functional UI check.

Acceptance limits

  • The unrestricted legacy suite was not run: some existing tests contact external services or install/run games and servers. The selected test result is not a claim that every existing integration test passed.
  • No real Microsoft/Minecraft account, vendor installer, Minecraft game join, dedicated server or router mapping was exercised. Final live authenticated joining remains for maintainer verification, as described in the issue's pinned clarification.
  • Worlds require a user-installed executable server JAR that works with java -jar, such as supported Paper/Spigot/Fabric-style distributions. The world runner does not provision modern Forge/NeoForge dedicated-server argument-file distributions; client loader support does not imply universal dedicated-server support.
  • Compatible Java and native architectures are required. Unsupported legacy Intel natives on ARM fail explicitly. Unknown provider mappings and latest-only plugin endpoints without version evidence remain visible errors.
  • A loopback-only world must be stopped and relaunched with explicit sharing for LAN access. A successful router lease alone does not prove WAN reachability.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant