This plan breaks down the development of the native Windows/Java implementation into independent workstreams that can be executed in parallel.
Goal: Ensure all platform-specific binaries and assets are available.
- [TASK-A1] Binary Harvesting: Download and version the Windows
x86_64andarm64builds of:mc-image-helper.exemc-server-runner.exercon-cli.exemc-monitor.exe
- [TASK-A2] Java Distribution Strategy: Implement a script/logic to fetch or verify a portable JDK (e.g., via
mc-image-helperor a standalone script). - [TASK-A3] Dependency Mapping: Create a manifest file that maps Docker environment variable names to their expected types and defaults for the bootstrapper.
Goal: Build the configuration and environment orchestration layer.
- [TASK-B1] Configuration Loader: Implement a Java module to parse
.envfiles and Windows system environment variables. - [TASK-B2] Environment Orchestrator: Logic to normalize configuration (e.g., converting memory strings like "2G" to bytes) and set up the process environment for downstream tools.
- [TASK-B3] Logging Wrapper: Implement a unified logging system for the bootstrapper that mimics the
[init]output style of the original Bash scripts.
Goal: Port the high-level orchestration from Bash to Java.
- [TASK-C1] Version & Type Resolver: Port the logic from
start-deploy*scripts to invokemc-image-helper resolve-minecraft-versionand determine the server type. - [TASK-C2] JVM Flag Generator: Port the logic from
start-finalExec(Aikar's flags, MeowIce's flags, JMX settings) into a standalone Java class that returns a list of command-line arguments. - [TASK-C3] File Manifest Manager: Implement logic to ensure crucial files (
eula.txt,server.properties) are generated or updated before launch.
Goal: Handle the execution and monitoring of the server process.
- [TASK-D1] Runner Invoker: Implement the logic to construct the final command line and invoke
mc-server-runner.exe. - [TASK-D2] Signal Handling: (If not handled by mc-server-runner) Ensure the Java bootstrapper correctly propagates termination signals to the runner.
- [TASK-D3] Health Monitor Integration: Configure periodic calls to
mc-monitor.exeto report server status to the bootstrapper/logs.
Goal: Create a seamless experience for Windows users.
- [TASK-E1] Directory Layout definition: Finalize the production folder structure.
- [TASK-E2] CLI Entry Points: Create
start.batandsetup.ps1scripts for easy one-click initialization. - [TASK-E3] Windows Service Module: Provide a template for
winswornssmto allow users to install the server as a background service.
The following tasks can be started immediately and independently:
- Tooling Team: [TASK-A1], [TASK-A3]
- Java Core Team: [TASK-B1], [TASK-B3], [TASK-C2]
- DevOps Team: [TASK-E1], [TASK-E2]
Dependencies are minimal: [TASK-D1] depends on [TASK-C2] being completed. [TASK-C1] depends on [TASK-A1].