
How FlowUpdater Powers Minecraft Launcher Development
FlowUpdater (FlowArg/FlowUpdater)
The free and open source solution to update Minecraft.
Building a custom Minecraft launcher? You need a reliable update system that doesn't break your players' installations. FlowUpdater is a free Java library that handles the tedious parts of Minecraft updates automatically - version management, file verification, mod loading, and integrity checking. It's what launcher developers reach for when they don't want to waste months building their own update pipeline.
What FlowUpdater Does
Think of FlowUpdater as a bridge between your launcher and Minecraft's installation files. Instead of manually downloading versions, checking file hashes, and organizing mods, you feed it a configuration and it handles the rest. It checks which files you already have, downloads what's missing, verifies everything arrived correctly, and stages it for launch.
The library adapts to what you throw at it. Your launcher might need vanilla Minecraft, or vanilla plus Forge, or a completely custom modpack from CurseForge.
The project focuses on reliability and customization - those are the two words the maintainers emphasize. It's not trying to be an all-in-one solution with a fancy UI. It's a library. You integrate it into your own launcher and control how it works.
Why You'd Build with FlowUpdater
Most developers who use FlowUpdater fall into a few categories. First are the custom launcher builders - people making a branded client for their community or modpack. Instead of writing update logic from scratch, they pull in FlowUpdater and focus on their UI and features. Second are modpack creators distributing through CurseForge or their own servers, where FlowUpdater handles the messy parts of mod resolution and downloading.
Server administrators working on player auto-update systems represent a third use case. You could embed FlowUpdater so that players automatically sync mods and configs the moment they log in.
What separates FlowUpdater from just downloading files manually? Safety and speed. File corruption happens - network hiccups, partial downloads, disk errors. FlowUpdater verifies every file with checksums, so your players never accidentally run a broken installation. It also skips files it already has, so updates only download deltas. For someone with a slower connection updating a large modpack, that's the difference between five minutes and waiting an hour.
Setting Up FlowUpdater in Your Project
FlowUpdater is distributed through Maven Central.
Add the dependency. In Gradle:
dependencies {
implementation 'fr.flowarg:flowupdater:1.9.4'
}Or Maven:
fr.flowarg
flowupdater
1.9.4
Next, build your configuration. At minimum you need a Minecraft version - whatever version your players need. Create that version object and pass it to FlowUpdater.
Here's the critical part: run the update on a separate thread. FlowUpdater blocks until it's done downloading and organizing everything. If you don't thread it, your launcher UI freezes and users think the app crashed.
One important note on CurseForge integration - the library includes built-in support, but it uses an API key belonging to the FlowUpdater maintainer. If you're forking the project or building something you'll distribute widely, you need your own CurseForge API key. Read the GPL-3.0 license carefully on that point.
The Features That Matter
FlowUpdater isn't pretending to be something it's not. It does a few things and does them well.
Version management is straightforward. You specify a Minecraft version and FlowUpdater knows where to get it, what Java libraries it needs, and which assets (sounds, textures, models) go with it. For custom versions, you can pass in your own JSON configuration.
Mod loader support covers the major ones. Forge, NeoForge, Fabric - FlowUpdater knows how to download and install each loader, and it understands version compatibility chains.
CurseForge integration genuinely saves time if you're distributing modpacks. Instead of hosting your own mod files, you reference CurseForge project IDs and file IDs, and FlowUpdater pulls them automatically. Modpack creators save bandwidth costs and hours on file management.
Custom mods and files work alongside everything else. If you have your own hosted mod or config file, pass a list with URLs, file sizes, and SHA-1 hashes. FlowUpdater treats them identically - download if missing, verify if present.
Progress callbacks let you show users what's actually happening. You get total files to download, current progress, file names - data your UI can use for a proper progress bar instead of "please wait".
Common Pitfalls and How to Avoid Them
Threading is the first gotcha. I mentioned this above, but it's worth repeating because people skip it.
Second: don't hardcode API keys in your source code. If you distribute your launcher's code on GitHub, anyone can steal that key and hit CurseForge's rate limits using your quota.
Third is version string formatting. Minecraft version IDs follow specific patterns. Standard release versions and snapshot identifiers work, but random strings don't. If you're accepting user input for versions, validate it against a whitelist of known versions.
Last one: file hashes matter. When you're adding custom mods to your list, calculate SHA-1 hashes correctly. A typo means FlowUpdater will think the file is corrupt and re-download it every time.
When to Use Alternatives
FlowUpdater is a library, not a launcher. If you want a finished launcher you can download and run immediately, look elsewhere - MultiMC, PrLauncher, and similar existing launchers handle that. FlowUpdater is for developers building their own.
If you're coding in a language other than Java, you'll need a different solution. If your project is just two or three fixed mods and you're willing to host files yourself, building a simple download script might be overkill. But once you need versioning, auto-updates, and player-facing installations, FlowUpdater earns its place.
For Minecraft server administrators, there's a middle ground. You could use FlowUpdater to build a small updater tool your players run before joining. One useful addition to your launcher: integrate with the minecraft.how whitelist creator so players can manage server whitelists easily. And if you're running your own server, the free DNS tool helps point custom domains to your servers.

