# AutoModpack 5.0.0-rc.1
It took a while, but here it is: the first release candidate of v5. Pretty much everything changed. Core modpack concepts (groups!), config format, transfer protocol, storage layout, the UIs, you name it. This is the ~~biggest~~ update AutoModpack has ever gotten. It's actually also the smallest update since the entire mod now fits in just 3.8MB and it works on all supported targets!
## Before you upgrade
- v5 drops Minecraft 1.19.4, 1.20.4, 1.20.6, and 1.21.3, and adds 26.3 (Fabric and NeoForge).
- Releases ship one jar for every supported loader and game version.
- Human files are `automodpack/server.conf` and `automodpack/client.conf`. The format is a small HOCON subset. Your existing config will get auto-migrated to new format and the old file will be renamed with `.backup` suffix.
- The server's TLS certificate lives in `automodpack/credentials/`. There is no auto-copy from v4 paths. If files are missing, the server generates a new certificate.
- The `nonModpackFilesToDelete` list is gone. Deletions are ownership-checked, with no toggle.
- `forceCopyFilesToStandardLocation` is also gone, `editable` list inherited its functionality.
## Modpack content and groups
- The modpack is now declared as groups. Each group has `from-server` (previously called `syncedFiles` - content from the server root. `host-modpack/<id>/` is included in full), `exclude` (list of file paths excluded from both `from-server` and `host-modpack`), and `editable` (previously `allowEditsInFiles`). Groups also have a display name, description, required, default-selected, `requires`, `breaks-with`, and `compatible-platforms`. `main` is the required core. Extra groups are optional.
- Players pick optional groups in a Group Selection screen, with file counts, sizes, dependency and conflict text, and a platform dropdown. The choice persists across updates.
- Editable files always live in the game directory, mods included. A mod marked editable lands in the player's mods folder. It stays replaceable and removable, and it survives updates until the server changes its content.
- A server can ship a custom waiting track as `automodpack/host-modpack/waiting-music.ogg`. Clients stream it during downloads and cache it.
## Publishing (server)
- Publishing is a journalled workflow. `/automodpack generate preview` shows a diff without publishing. `notes` attaches patch notes (or write them to `patch-notes.md`). `if-content` publishes only while the pack still matches a named state. `history` lists past generations. `revert <seq>` rolls back by publishing an old state as a new generation.
- The server keeps every published generation in an append-only journal, with file bytes in a content store. `generate storage collect confirm` is the only deletion. It prints what it removed.
- `/automodpack generate export-http` writes the pack as plain files (`head`, `journal`, `objects/`) for a static HTTPS host. It refuses while `validate-secrets` is on, since a static mirror cannot check them. Files that Modrinth or CurseForge already serve are omitted unless you pass `--all`.
- `/automodpack groups` inspects the pack: one summary line per group, and `/automodpack groups <id>` for a single group's rules, files, and published state.
## Connectivity
- All connection modes use one HTTP wire: GET over TLS for the pack head, journal, and objects, with the login-issued secret as a bearer header, resumable range requests, unchanged-check short circuits, and zstd with a gzip fallback.
- You can now host your modpack statically without minecraft server even. Any static HTTP host or S3 works.
- New default HOLEPUNCH connection mode behaves like a minecraft login protocol which now make AutoModpack work behind strict Minecraft proxies.
## Client: pack management
- The multiplayer screen gains a Modpacks button (hideable). It opens an installed-pack manager: update, repair, stop and resume syncing, deactivate, remove, and switch between installed packs.
- A server running with `require-modpack` off offers its pack at login, before anything transfers: sync it, join without it, or cancel.
- Every pack action is previewed first. A review screen shows added, changed, and removed files with sources, filters, and hashes, and states whether a restart is needed. A first install asks for consent, names how many mod files were matched on Modrinth or CurseForge, and gates unverified jars behind a risk acknowledgement.
- A Pack History screen lists every published generation of the installed pack with its patch notes, and can restore an older version offline. Restoring detaches the pack from syncing until you resume.
- An Instance timeline records every state this instance lived (installs, updates, rollbacks, repairs, and automatic captures of your files before a change). Restore the whole instance or single files, save copies out, or forget old snapshots to free space.
- A Repair action runs a cache-bypassing integrity check, asks before resetting edited files, can finish missing files from the server later, and prints a receipt.
- A Local storage screen runs a confirmed cleanup with a receipt and a storage integrity pass.
- Pinned mods: a player can pin mod ids that keep loading their version from their own mods folder even when the pack ships a mod with the same id. The player's jar survives even if the pack later drops that mod.
- Declining an update keeps local state with a detached warning. Joining through a new address asks before trusting it.
- A pack that needs a different Minecraft version or modloader is handled per launcher. Prism, MultiMC forks, and Pandora get their instance switched. Other launchers, get a manual-switch notice and no broken state.
## Security
- The modpack connection's certificate is matched to the Minecraft hostname you join. SRV records and advertised endpoints are treated as routes only.
- Servers with a DNSSEC-signed domain can publish their certificate fingerprint as a `_automodpack` TXT record. Clients look it up through DNS-over-HTTPS (Cloudflare and Quad9) and accept it only when both resolvers return the same DNSSEC-validated record. `/automodpack host fingerprint dns` prints the record.
- `/automodpack host fingerprint share` produces a copy-paste join address with the fingerprint embedded (e.g. `play.example.com#amp1=...`). Importing it pins the exact certificate and leaves a working vanilla entry in the server list.
- A bootstrap file pre-configures a client with the server address, endpoint, and certificate pin, and can carry a provisioning secret for one-shot installs (`/automodpack host bootstrap pin|install`).
## Performance
- Downloaded files are stored once by hash and hard-linked into place. Identical files are shared across packs and instances.
- Hash results and parsed mod metadata are cached per file and reused across launches.
- The download scheduler interleaves large and small files per source, which removes the stall near the end of a transfer. The speed readout is smoothed.
- Server-side pack generation reuses the hash caches.
- The jar is leaner: pure-Java compression instead of bundled native zstd libraries, the JDK HTTP client instead of a shaded Apache HttpClient, custom simple toml parser instead of toml4j, removed bundled fabric api, waiting music replaced for a smaller noteblock remaster.
- Updates are computed in full before anything is touched, then committed as a crash-recoverable transaction. Locked files are handled by a detached helper after the game exits. A runaway update-restart loop is stopped after two looped attempts.
## Fixes and changes
- Each pack gets a stable 7-character id, so a server-side rename or server address change no longer requires modpack redownload.
- The server configuration's `requireMagicPackets` boolean became `connection-mode` with `HOLEPUNCH` as the default: the pack rides the Minecraft login protocol with no second open port. `MAGIC` and `HTTP` use dedicated or external listeners.
- Forge and NeoForge mods that must load early (coremods, language providers, transformation services) load straight from the modpack folder. That retires the force copied mod jars like sodium and the `forceCopyFilesToStandardLocation` option.
- Configuration, secret, and state writes land atomically, so a crash mid-save cannot leave a half-written file.
- Removed Herobrine.
- Broken installs fail with a categorized error screen instead of running half-loaded. Corrupt stored objects are repaired rather than served. A failed join after an applied update suggests a restart, and the restart screen lists the reasons.
- The loader-version swap wait on MultiMC and Prism is the remainder of a five-second window since launch, not a flat five seconds.
- A "Preparing update" screen sits between certificate acceptance and the download, with cancel.
And much more...
Full changelog: https://github.com/Skidamek/AutoModpack/compare/v4.0.5...v5.0.0-rc.1
Developer information
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle.
maven { name = "Modrinth"; url = "https://api.modrinth.com/maven" }