- Rust 100%
| crates | ||
| .env | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| LICENSE-APACHE | ||
| LICENSE-MIT | ||
| pack.mrpack | ||
| README.md | ||
| SPEC.md | ||
Packcomb
Represent Minecraft modpacks as a graph of reusable "packlets", that combine at install time to create a full modpack.
Read SPEC.md for details about format.
This repository contains the reference implementation of the packcomb format.
root.packlet.json
{
"id": "example:example",
"parents": [
{
"id": "example:other",
"location": {
"File": {
"path": "other.packlet.json"
}
}
}
],
"entries": [
{
"path": "mods/fabricapi.jar",
"source": {
"Modrinth": "j4lVW85G"
}
}
]
}
other.packlet.json
{
"id": "example:other",
"parents": [],
"entries": [
{
"path": "mods/sodium.jar",
"source": {
"Modrinth": "Ny3XyYle"
}
}
]
}
resolved.pack.json
{
"entries": [
{
"path": "mods/sodium.jar",
"source": {
"Modrinth": "Ny3XyYle"
}
},
{
"path": "mods/fabricapi.jar",
"source": {
"Modrinth": "j4lVW85G"
}
}
],
"packlets": [
"example:other",
"example:example"
]
}
Motivation
Making and maintaing regular modpacks is unnecessarily hard. While working on Create: Aloft, we've dealt with problems
such as needing to keep track of server-only / client-only mods, applying our personal client mods on top of the regular pack,
different mods being needed on different servers across the network, players's frustration with applying their client mods on top of the regular pack, working together on updating the modpack
and last but not least, versioning it all.
Packcomb is designed to solve all these problems. When complete, packlets will be easily assembled from a modrint modpack, stored in a git repository for easy
collaboration and versioning, and be one-click installed or updated into an instance in a launcher. Or on a server - SFTP installs are planned too.
Architecture
The packcomb reference implementation is split into 3 crates:
packcomb- core types and logic for packlets, entries, and resolved packspackcomb-process- functions for downloading and merging packlets, and converting them into resolved packspackcomb-cli- a CLI client for creating, working with, and installing packcomb packs
A future GUI client is also planned, as is a fork of Prism Launcher with packcomb support. If this becomes popular enough, maybe it can get merged upstream.
Roadmap
Export to mrpackImport from mrpack- GUI packlet splitter
- GUI packlet installer
- Git storage support
- Lore storage support
- Prism Launcher support
License
All code in this repository is dual-licensed under either:
- MIT License (LICENSE-MIT or http://opensource.org/licenses/MIT)
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
at your option. You can use the license your prefer.