unsup
A customizable simple modpack updater, perfect for private packs
Quick challenge
How far can you run before the mobs catch you?
Minecraft check
Confirm your run
Complete the quick check to get your code.
unsup
*Upa's Upimple Updater*
unsup is a somewhat minimal implementation of a generic working directory syncer in Java. It supports running as a Java agent, to piggy-back off of the launch of another program.
*It is particularly good at syncing small private modpacks or one-offs in small groups, where a full public distribution (e.g. on Modrinth!) is overkill or undesirable.* It is capable of downloading mods from their original sources, wherever that may be... as long as it speaks HTTP(S).
An unsup.ini must be placed in the working directory for unsup to know what to do, or a `-Dunsup.bootstrapUrl=` JVM argument specifying where to find such a file.
The updater works hard to ensure the working directory is never left in an inconsistent state. Short of a sudden power loss in the middle of applying changes (an incredibly short time window), an unsup update cannot result in an inconsistent or corrupted working directory.
It does hash-based consistency validation (with your choice of function, SHA-256 recommended) on all downloads and on files before overwriting them, warning the user if they've changed something that has been updated. It additionally supports signing manifests using OpenBSD Signify for additional security.
unsup's unique simplified design means it is compatible with all launchers, from the vanilla launcher to MultiMC. Just add `-javaagent:unsup.jar` to the JVM arguments, and place `unsup.jar` and `unsup.ini` in the .minecraft directory.
In Prism Launcher, you can utilize unsup as a "component" by importing the `com.unascribed.unsup.json` from the latest release on Forgejo. (I can't upload JSON files to Modrinth). This will allow Prism Launcher to download and manage unsup. (MultiMC does not support Java agent components, despite requests.)
It also has a built-in concept of *environments* and *flavors*, allowing it to be used to manage server installs rather than just clients, and allowing users to pick between multiple mutually incompatible mod sets with a feature-packed interface unlike any other updater tool.
unsup is also capable of updating MultiMC's "components", including unsup itself if it is added as one. This means you can update mod loaders or Minecraft itself.
Creating Packs
You can either point unsup at a Packwiz pack.toml (recommended), or write a native unsup manifest by hand. See the wiki for info on the native manifest format. The Creator GUI is on hold, as Packwiz has become a de-facto standard for Minecraft modpacks.
Stability
unsup has been used for modpacks on versions from b1.7.3 to 1.21.5, both client and server, and is known to work with Forge (both legacy and modern), Fabric, Quilt, and NeoForge. It has successfully powered many modpacks, from small to large. Native manifest and Packwiz manifest support are both quite stable, and have been used extensively.
Signing support is still somewhat experimental, and has not been deployed by anyone at large scale. That someone could be you — please let me know if it works well!
GUI
unsup has a minimal and elegant GUI that works everywhere (yes, including macOS) and can have all of its colors customized to make it fit in with your branding. It ships with a dark theme with minty accents. Check out the gallery tab!
License
unsup is released under the LGPLv3.