Repository navigation
hopper 0.2.0
Hopper 0.2.0
Hopper now manages explicit named Minecraft server instances with mandatory systemd
services, native GregTech: New Horizons support, and verified existing-world onboarding.
Breaking changes and migration
- Linux with systemd 247 or newer is required. Installs create a stopped, disabled
service;hopper start NAMEenables and starts it. - Select sources explicitly with
--providerand the provider's pack/collection/file
options. Bare pack names,cf:shorthand, implicit directory updates, and optional
service installation are no longer supported. Barehopperprints help. - User scope is always the default, including under sudo. System installs require
explicit--scope systemand use a dedicated unprivileged service account. - Adopt a stopped existing installation with
hopper onboard NAME --provider … --from PATH. This creates a verified private backup, preserves the installed
baseline, world, edited configs, custom files and disabled mods, and moves the
installation only after successful verification and service setup. An unmanaged
baseline needs an explicit installed version and, for GTNH, Java selection. - Starts are rejected while any
.newconflict remains, including launcher conflicts.
Review and merge or deliberately reject each change, then remove its sidecar.
The systemd pre-launch guard also covers boot-time and direct systemd starts.
Refresh existing generated units withhopper repair NAME --scope useror
sudo hopper repair NAME --scope systemwhile the server is stopped.
New features
- Native GTNH stable/testing releases and daily/experimental snapshots, with explicit
version pinning and version-matched modern Java bootstrap components. - Graceful scheduled restarts and updates: stage before shutdown, warn through RCON,
save the world, stop, apply changes, and restart only previously running servers.
Operator stop cancels pending maintenance. Updates that produce.newconflicts
leave the server stopped for review. - Hardened system services and unprivileged pack workers, private credentials, and
explicit RCON firewall acknowledgement. User services support lingering. - Verified backups, interrupted-install/adoption recovery, safe port allocation,
protected world paths, and service removal/reattachment without deleting data. - Hosting/performance guidance for GTNH and other packs in
docs/hosting.md.
Upgrade cautions
Testing/nightly packs are not automatically safe for production worlds. Major GTNH
upgrades can require merging incoming configs and explicit Forge world-remapping
consent. Hopper does not automatically approve potentially destructive conversions.
Keep a verified backup and follow the pack's upgrade instructions.
Verification
- 598 automated tests; Clippy and formatting checks pass.
- Disposable Debian Incus verification covered GTNH 2.8.4 stable and 2.9.0-RC-1
testing on GraalVM 25, real user/system services and scheduled restarts, live system
hardening, onboarding preservation and RCON secret rotation, interrupted-install
recovery, service reattachment, and operator-stop cancellation. The testing world
required an operator-reviewed config change and explicit remapping consent. - The verification container and temporary helper were removed afterward.
- Daily/experimental discovery was verified; those branches and authenticated
CurseForge downloads were not boot-tested in that container.