Note, you need to host ModPackUpdater yourself first if you want to use this mod
A multi-loader Minecraft client mod that syncs a local instance with a ModPackUpdater server. It discovers a pack, fetches a manifest, computes a local diff, and applies changes (add/update/delete) for mods, configs, resource packs, and other files.
For protocol and client-side algorithm details, see CLIENT.md.
- Version: 0.1.0-Alpha.1
- Minecraft: 1.21
- Loaders: Fabric, Forge, NeoForge
- Java: 21
- License: GPL-3.0
- Talks to a ModPackUpdater server (health, pack summary, manifest, file fetch)
- Client-side diff: compares server manifest vs. local files by SHA-256
- Atomic downloads, verification, and safe deletes (see CLIENT.md)
- Multi-loader builds from one codebase (common + loader subprojects)
- common/ — shared code and resources
- fabric/ — Fabric loader entrypoints and mappings
- forge/ — Forge setup (FG 6)
- neoforge/ — NeoForge setup (ModDevGradle)
Requirements: JDK 21, Git, internet access.
- Build all loaders and collect final jars into output/:
- Linux/macOS:
./gradlew build - Windows:
gradlew build
- Linux/macOS:
- Build specific loaders:
./gradlew :fabric:build./gradlew :forge:build./gradlew :neoforge:build
Artifacts:
- The root build collects non-sources/non-javadoc jars from each loader into output/ automatically (see root build.gradle).
Each loader exposes run configs via Gradle. Typical tasks:
- Fabric:
:fabric:runClient,:fabric:runServer - Forge:
:forge:runClient,:forge:runServer - NeoForge:
:neoforge:runClient,:neoforge:runServer
Dev run directories live under runs/ (client, server). Use your IDE Gradle panel to execute or debug.
The mod synchronizes files for a chosen pack from a server. Key concepts:
- baseUrl: server root, e.g., http://localhost:5000
- packId: target pack ID
- installRoot: local game directory to sync
Protocol, schema, and detailed guidance are documented in CLIENT.md.
- Network proxy: The repository’s gradle.properties contains example proxy settings (localhost:7897). Remove or override them if not applicable to your environment:
./gradlew -Dhttp.proxyHost= -Dhttps.proxyHost=
- Clean builds:
./gradlew clean build
Issues and PRs are welcome. Please keep changes loader-agnostic in common/ where possible.
GPL-3.0. See LICENSE.txt.
Author: Shiroame_Kusu