Skip to content

Releases: GarnServo/mc-startup-script

MC Startup Script v2.3.4

Choose a tag to compare

@GarnServo GarnServo released this 29 Aug 12:00
ec18075

What's New

  • Added strict enforcement to START.bat's first-run bootstrap - it now refuses to install core.ps1 if GitHub hasn't published a digest for it, not just on an actual mismatch.
  • Added the same strict enforcement to core.ps1's self-updater - it now aborts an update entirely (before generating anything) if either START.bat or core.ps1 is missing a published digest on the incoming release.
  • Added a second, defense-in-depth check inside the updater itself that also fails closed on a missing digest, independent of the check above.

Improvements

  • Replaced "warn and continue unverified" behavior with a hard failure in both update paths, closing the last gap where an update could install without integrity verification.

NOTE: You only need to download START.bat - the PowerShell core will automatically download itself.

MC Startup Script v2.3.3

Choose a tag to compare

@GarnServo GarnServo released this 29 Aug 11:35
4b3c756

What's New

  • Added verification against GitHub's own SHA256 digest for each release asset (assets[].digest, computed server-side at upload time), replacing the project's own separately-published .sha256 files (these have been removed from previous releases).
  • Added a direct Releases API call in START.bat's first-run bootstrap so it can read the asset digest before core.ps1 exists to do it for you.

Improvements

  • Removed an extra network request per update check - the digest is already present in the release data the script fetches, so nothing extra needs to be downloaded or parsed to verify it.
  • Strengthened the trust model for update verification: GitHub computes the digest independently of whatever uploaded the asset, rather than the project generating both a file and its own checksum for that file.

NOTE: You only need to download START.bat - the PowerShell core will automatically download itself.

MC Startup Script v2.3.2

Choose a tag to compare

@GarnServo GarnServo released this 29 Aug 11:04
9040416

What's New

  • Added SHA256 checksum verification for self-updates, checked when a release publishes .sha256 files alongside START.bat/core.ps1, before anything is installed.
  • Added explicit TLS 1.2 pinning for all network calls instead of relying on the host's default protocol negotiation.
  • Added format validation for the release version tag before it's used anywhere a shell or generated script could reinterpret it.
  • Added control-character stripping to release notes before they're displayed, so a crafted release description can't manipulate terminal output.
  • Added a warning at setup time that a configured Discord webhook URL is a credential, not just a setting, since anyone who reads it can post to that channel.
  • Rewrote the self-updater to pass every URL as a bound script parameter instead of interpolating it into a generated command string, removing an entire class of quoting/injection risk.
  • Switched START.bat's first-run download from re-encoded text to a raw byte-for-byte fetch, which checksum verification depends on to actually match.
  • Added a JVM flags step to setup: calculated tuning, your own pasted flags, or no extra flags at all.
  • Added automatic GC selection between G1GC and generational ZGC, based on detected Java version, allocated RAM, CPU core count, and total system memory headroom.
  • Added a modded-workload flag variant (larger young generation and region size) applied automatically for Forge/NeoForge/Fabric servers.
  • Added correct handling of Java 24+, where generational ZGC is the only mode and the older opt-in flag is no longer used.
  • Added the active garbage collector to the server status dashboard.
  • Added the JVM flags choice to the setup review summary.

Improvements

  • Corrected the first-run bootstrap URL, which pointed at a repository path that was never populated and caused fresh installs to fail outright.
  • Clearer failure messaging when an update can't be verified or installed.
  • Config schema updated to reflect that no-extra-flags is now an explicit choice rather than a silently-applied default.

Upgrade Notes

Configuration format changed. Existing installs are walked through setup again on next launch so JVM tuning becomes an explicit choice rather than changing silently. Server data, worlds, and jars are untouched. If you maintain your own fork or release pipeline, publishing START.bat.sha256 and core.ps1.sha256 alongside each release is optional but enables the new checksum-verification step.

NOTE: You only need to download START.bat - the PowerShell core will automatically download itself.

MC Startup Script v2.1.0

Choose a tag to compare

@GarnServo GarnServo released this 27 Aug 06:34
361eb3f

v2.1.0

A major refresh of mc-startup-script, moving the project from the legacy monolithic batch script to a lightweight PowerShell-based launcher.

NOTE: You only need to download START.bat - the PowerShell core will automatically download itself.

What's New

  • Added automatic Java runtime discovery across PATH, JAVA_HOME, common installation folders, Minecraft Launcher runtimes, and Windows Registry locations.
  • Added accurate Java version detection using the installed runtime itself.
  • Added Mojang API integration for Minecraft-to-Java compatibility checks.
  • Added local caching for Java requirements, with offline fallback support.
  • Added automatic server version detection from jar metadata.
  • Renamed Paper, Folia, Purpur, and vanilla jars are now supported without relying on their filenames.
  • Added support for Minecraft's new year-based versioning scheme.
  • Added support for Java 25 and Minecraft 26.x.
  • Added automatic migration from legacy v1 StartupScript.conf files to the new JSON configuration format.
  • Added improved Forge, NeoForge, Fabric, Paper, Folia, and vanilla server detection.
  • Added modern Discord webhook embeds with status colors, timestamps, server details, exit codes, and start/stop indicators.
  • Added consistent normal-stop and crash messaging across the terminal and Discord.
  • Added a redesigned setup wizard with clearer sections, validation, configuration review, and consistent prompts.
  • Added a cleaner server status dashboard for normal operation.
  • Added visible restart countdowns when crash-loop protection is triggered.
  • Added safer self-updates using temporary files and a separate updater process.
  • Added unattended update checks that do not interrupt automatic restart loops.
  • Added bounded restart history and cleanup of temporary launch variables to minimize long-running overhead.

Improvements

  • More reliable Java selection for users with multiple installed runtimes.
  • Better handling of renamed server jars.
  • Improved setup validation and error messages.
  • Consistent [Y/n], [y/N], and [Enter] prompt behavior.
  • Reduced reliance on hardcoded Minecraft version assumptions.
  • Updated documentation to reflect the current v2 architecture.
  • Preserved compatibility with existing v1 server installations.

Upgrade Notes

Existing v1 installations can upgrade automatically when using a v2 release containing both START.bat and core.ps1.

Legacy configuration files are retained and imported into the new config/StartupScript.json format. Server worlds, jars, libraries, EULA files, and other server data are left untouched.

MC Startup Script v1.3.3

Choose a tag to compare

@GarnServo GarnServo released this 10 Sep 12:30
3608c40

Improvements

  • CPU/RAM usage during runtime reduced.
  • Time to load reduced.
  • I/O ops during initial setup greatly reduced.
  • File size of the script slightly reduced.

All while retaining the same functionality and error handling.

MC Startup Script v1.3.1

Choose a tag to compare

@GarnServo GarnServo released this 24 Mar 09:24

New Features

  • [v1.3.0] Added Discord webhook integration.
    If configured, this script will send start/stop notifications to a Discord channel.
  • [v1.3.0] Added configuration file version checking/updating.
    When there is a minor change (v.X.3.X) which adds new variables to the config file, initial setup will run again.

Bug Fixes

  • [v1.3.0] Fixed an issue with JVM args.
    If conditions were right, the args could continue writing to the file, resulting in multiple copies of the same flags being called.
  • [v1.3.1] Included Discord webhook configuration status in the config checks.
    When server is starting, or initial setup is confirming config, the readout will display Discord webhook configuration status.

MC Startup Script v1.2.1

Choose a tag to compare

@GarnServo GarnServo released this 18 Mar 11:12

Bug Fixes

  • Fixed version checking.
    Formerly only checked less/greater than, not the equals condition.

MC Startup Script v.1.2.0

Choose a tag to compare

@GarnServo GarnServo released this 18 Mar 10:47

New Features

  • Added auto-updater.
    Script checks GitHub for the latest version and queries user whether to download or skip. Seamlessly downloads and restarts.

Functionality

First Launch/Initial Setup

  • Prompts user for server .jar filename. Checks if the file exists.
  • Prompts user to allocate initial and maximum RAM for the server. Checks if entry is a valid value.
  • Queries user whether the server should auto-restart or not.
  • Queries user whether server should use pre-configured JVM arguments. Regardless of result, will generate file for flag storage.
  • Queries user whether to launch with GUI.
  • Lets user confirm choices. If confirmed, continue to normal startup. If rejected, will restart initial configuration.
  • Stores configuration in /config/StartupScript.conf, and JVM args in /config/jvm_args.txt.
  • Generates auto-accepted EULA.

Normal Startup

  • Checks for updates to this script, queries user whether to auto-update or skip.
  • Checks for config folder, config file, and sets restart counter. If config is missing, reverts back to initial setup.
  • Checks for EULA, if non-existent, creates accepted eula.txt.
  • Reads script config file and stores contents as environment variables.
  • Displays configuration to user and initialises the server.
  • Checks for JVM arguments file, if non-existent, will create one with optimised flags. If it exists, loads the args into an environment variable.
  • Checks auto-restart config to decide launch path.

Auto-Restart Enabled

  • Launches server and changes console title to the configurable title + restart count.
  • Upon crash or restart, increments the restart counter and reloads configuration + JVM flags.

Auto-Restart Disabled

  • Launches server and changes console title to the configurable title.
  • Upon crash or restart, prompts user whether to restart or exit.

Planned

  • Improved text formatting

MC Startup Script v1.1.0

Choose a tag to compare

@GarnServo GarnServo released this 17 Mar 10:29
5322a59

New Features

  • Added version checking, with an update prompt if one is available.

Functionality

First Launch/Initial Setup

  • Prompts user for server .jar filename. Checks if the file exists.
  • Prompts user to allocate initial and maximum RAM for the server. Checks if entry is a valid value.
  • Queries user whether the server should auto-restart or not.
  • Queries user whether server should use pre-configured JVM arguments. Regardless of result, will generate file for flag storage.
  • Queries user whether to launch with GUI.
  • Lets user confirm choices. If confirmed, continue to normal startup. If rejected, will restart initial configuration.
  • Stores configuration in /config/StartupScript.conf, and JVM args in /config/jvm_args.txt.
  • Generates auto-accepted EULA.

Normal Startup

  • Checks for updates to this script.
  • Checks for config folder, config file, and sets restart counter. If config is missing, reverts back to initial setup.
  • Checks for EULA, if non-existent, creates accepted eula.txt.
  • Reads script config file and stores contents as environment variables.
  • Displays configuration to user and initialises the server.
  • Checks for JVM arguments file, if non-existent, will create one with optimised flags. If it exists, loads the args into an environment variable.
  • Checks auto-restart config to decide launch path.

Auto-Restart Enabled

  • Launches server and changes console title to the configurable title + restart count.
  • Upon crash or restart, increments the restart counter and reloads configuration + JVM flags.

Auto-Restart Disabled

  • Launches server and changes console title to the configurable title.
  • Upon crash or restart, prompts user whether to restart or exit.

Planned

  • Improved text formatting

MC Startup Script v1.0.0

Choose a tag to compare

@GarnServo GarnServo released this 17 Mar 08:26

Initial Release

Not feature-complete, but is production-ready.

First Launch/Initial Setup

  • Prompts user for server .jar filename. Checks if the file exists.
  • Prompts user to allocate initial and maximum RAM for the server. Checks if entry is a valid value.
  • Queries user whether the server should auto-restart or not.
  • Queries user whether server should use pre-configured JVM arguments. Regardless of result, will generate file for flag storage.
  • Queries user whether to launch with GUI.
  • Lets user confirm choices. If confirmed, continue to normal startup. If rejected, will restart initial configuration.
  • Stores configuration in /config/StartupScript.conf, and JVM args in /config/jvm_args.txt.
  • Generates auto-accepted EULA.

Normal Startup

  • Checks for config folder, config file, and sets restart counter. If config is missing, reverts back to initial setup.
  • Checks for EULA, if non-existent, creates accepted eula.txt.
  • Reads script config file and stores contents as environment variables.
  • Displays configuration to user and initialises the server.
  • Checks for JVM arguments file, if non-existent, will create one with optimised flags. If it exists, loads the args into an environment variable.
  • Checks auto-restart config to decide launch path.

Auto-Restart Enabled

  • Launches server and changes console title to the configurable title + restart count.
  • Upon crash or restart, increments the restart counter and reloads configuration + JVM flags.

Auto-Restart Disabled

  • Launches server and changes console title to the configurable title.
  • Upon crash or restart, prompts user whether to restart or exit.