Перейти к содержимому
Mineforgian

unsup

A customizable simple modpack updater, perfect for private packs

1K загрузок32 подписчиковLGPL-3.0-or-laterjava-agent

Обновлён 5 декабря 2025 г. · опубликован 17 июня 2025 г.

  • Bootstrapping
  • Pleasant expression
  • Update prompt
  • Advanced conflict management
  • Pack variant management

Una's Simple 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.

Версии

ВерсияКаналИграЗагрузчикиДатаСкачать
1.2.0-pre4Бета1.21.11-pre2, 1.21.11-pre3, 1.21.11-pre4, 1.21.11-pre5java-agent5 декабря 2025 г..jar (917 КБ)
1.1.6Релиз1.21.11-pre2, 1.21.11-pre3, 1.21.11-pre4, 1.21.11-pre5java-agent5 декабря 2025 г..jar (2.3 МБ)
1.2.0-pre1Бета1.21.6, 1.21.7-rc1, 1.21.7-rc2, 1.21.7java-agent3 июля 2025 г..jar (2.3 МБ)
1.1.5Релиз1.21.6, 1.21.7-rc1, 1.21.7-rc2, 1.21.7java-agent3 июля 2025 г..jar (2.3 МБ)
1.0.2Релиз1.21.6-pre2, 1.21.6-pre3, 1.21.6-pre4, 1.21.6-rc1java-agent17 июня 2025 г..jar (1.2 МБ)
1.1.4Бета1.21.6-pre2, 1.21.6-pre3, 1.21.6-pre4, 1.21.6-rc1java-agent17 июня 2025 г..jar (2.3 МБ)

Ченджлог

1.2.0-pre4Бета1.21.11-pre3, 1.21.11-pre4, 1.21.11-pre5 · 5 декабря 2025 г.

pre2:

  • New contributed translations:
    • Spanish by cout970
    • French by Lykrast
    • Polish by asie
  • Assorted community translation improvements (thank you!)
  • Added support for download resumption, particularly useful for large files on flaky connections
  • Added heuristic detection for common forms of file corruption, such as DOS-to-Unix line ending conversion (e.g. Git on Windows)
  • Fixed puppet mode and default flavor configurations not being parsed after the config rewrite
  • Now shipping an entire CA certs database to hopefully completely fix all certificate issues with Mojang's Java 8 distribution

pre3:

  • Removed a debug print, oops
  • Made the jar a lot smaller (was 2.4M, is now 1M)
    • FiraGO is now downloaded on first Puppet launch instead of being embedded
    • Internal libraries are now compressed as a single unit with Brotli

pre4:

  • Improved compressed library bootstrapper — even smaller jar and fixes crashes
  • Reworked the way system properties work internally for cleaner code
  • Config fixups, mostly related to the prior
  • Fixed environment detection not working at all (1.2-only)
  • Fixed pointless OkHttp error messages during unsup agent handover
  • Updated dependencies
1.1.6Релиз1.21.11-pre3, 1.21.11-pre4, 1.21.11-pre5 · 5 декабря 2025 г.
  • Fixed a BufferOverflowException when using a custom branding icon larger than the built-in "highres" icon

This does not affect 1.2.0 as it's a bug I noticed and fixed during the SDL port, but forgot to backport to the 1.1 branch.

1.2.0-pre1Бета1.21.7-rc1, 1.21.7-rc2, 1.21.7 · 3 июля 2025 г.
  • Rewrote the OpenGL Puppet to use SDL3 instead of GLFW
    • This offers proper window parenting and less janky HiDPI support
    • In the future this may also mean a rework of the OpenGL puppet to instead use SDL_Renderer, which will automatically use DirectX or Metal where appropriate
    • This is a significant change and may cause breakage in some situations
  • Improved download compatibility
  • Set MultiMC component application delay based on agent start time rather than always waiting 5.5 seconds
  • Add support for language-specific CJK fonts
    • Han unification is a bad joke and we need to go back in time and stop the people responsible
  • Improved Unsup post-launch API compatibility with nested class loaders
  • Major internal refactors and code cleanups
    • These should have no user-facing visible effect
    • This primarily has to do with aligning unsup's code with Java 21 standards, as it was initially written for Java 8 but now uses Jabel to automatically backport the Java 21 code to Java 8
    • Config errors should now be surfaced sooner and more clearly
  • Greatly improve puppet native crash handling
  • Fixed client env detection in pre-1.6 versions of Minecraft in the minecraft preset
  • Fixed closing the update prompt dialog implicitly accepting the update
1.1.5Релиз1.21.7-rc1, 1.21.7-rc2, 1.21.7 · 3 июля 2025 г.

Backports from the v1.2 branch.

  • Greatly improve puppet native crash handling
  • Fixed client env detection in pre-1.6 versions of Minecraft in the minecraft preset
  • Fixed closing the update prompt dialog implicitly accepting the update
  • Improved download compatibility
  • Set MultiMC component application delay based on agent start time rather than always waiting 5.5 seconds
1.0.2Релиз1.21.6-pre3, 1.21.6-pre4, 1.21.6-rc1 · 17 июня 2025 г.
  • Initial Modrinth release (stable build)
1.1.4Бета1.21.6-pre3, 1.21.6-pre4, 1.21.6-rc1 · 17 июня 2025 г.
  • Initial Modrinth release

I joked about this when Modrinth Java Agent support was shown to me and Prospector told me to go for it.

Полная история изменений — на Modrinth.

Комментарии

Загружаем…