```brainfuck .=./:) ,===. .==. ,===. ,===. ____ .=======. \8.-.') |8@8R\ |88| |@8Y/ |8@8| .xX888b`. |@8^Y^88B\ /8`-'8\ |88,8R\ |@8| |88| |@8Y' /x88' \8b\ |8( ' )8@| `-'`"` |@8|\_Y\|88| |@8| _ |88| |888| /@8| |(_ o _)8/ .===. |8Y_( )Y\&8| |8&Y( )Y8@| _.-`@88| |8(_,_).' __ |8@8| |&(_ o _)8@| \Y(_ o._)Y/ .X@88^8888| |8&|\Y\ |@8| |88&| |8L(_,_)\88| \Y(_,_)Y/ |88_( )_88| |X8| \Y`'@8Y/ |Y8R| |8@| |@8| \Y@88Y/ \Y(_ o _)Y/ |8@| \&88Y/ '===' '==' '==' `===` 'Y(_,_)Y' ''=' `'=' ```

Not sure how good this art is, but whatever (c) mxxntype.
Invar is currently hella WIP, barely anything is implemented, but I'm working on it.

Invar

**Invar** is a CLI management tool for modded (or not) Minecraft servers. This project has the following goals: - Allowing you to *declaratively*[^1] build and configure Minecraft modpacks, which includes managing mods, resourcepacks, shaderpacks and datapacks[^2], while treating their configuration files as first-class citizens. I aim to implement fetching component data from both the [Modrinth](https://modrinth.com) and [CurseForge](https://curseforge.com/minecraft) APIs; - Providing an automated setup of a [Docker](https://www.docker.com) container with your modded minecraft server, powered by [`itzg/minecraft-server`](https://docker-minecraft-server.readthedocs.io/en/latest) and `docker compose`, with configurable automatic backups[^3] and maintenance; - Being as user-friendly and informative as possible and allowing you to organize and categorize your managed `components`, so you don't get lost in them while playing around with hundreds of mods at the same time. [^1]: By "declaratively", I mean having everything built from plaintext metadata (like in [`packwiz`](https://packwiz.infra.link)) and being tightly integrated with the Git VCS. One of the design concepts of this tool is to treat modpacks and servers as software source code and deployments, respectively. [^2]: There still may or may not be a need for a datapack loader mod. I'll update this when I get to implementing server-side and client-side datapack handling. [^3]: It's unliky I will be hand-rolling some sophisticated backup system. This will probably be an equivalent of an automated `cp -r ./server .backups/` before you start the server and after it shuts down. ### Architecture