Craftstore
Go script to automatically download and update blockgame mods.
Designed for Fabric and is intentionally incompatible with Forge.
Features:
- Direct HTTP downloads
- CurseForge downloads
- Modrinth downloads
- Blockgame version specification (via
config/craftstore.yaml
)
Installation
- Download the latest file from the Releases page. Make sure it's the right one for your OS.
- Place the file you downloaded into your
.minecraft
folder and run it once.
- Edit
config/craftstore.yaml
to your liking
- Run the file again to download your mods.
Installing a modpack
Craftstore was written with MultiMC in mind, so note that a modpack should be downloaded and imported into that program.
(I don't guarentee compatibility with other launchers. MultiMC is what I wrote this for, use it.)
Once it finishes importing the pack, open the instance's .minecraft
folder and place the latest release inside it.
Run the latest release inside .minecraft
, and your mods will download (assuming the pack developer has provided a craftstore.yaml
.
Jank
CurseForge's API sucks and can't easily tell Forge mods apart from Fabric.
I've implemented a measure against this, but it causes mild jank with some mods.
Some mods fail to specify their version properly, for example Adorn.
Despite working on 1.16.5, the latest version only shows support for 1.16.4, which means that it won't download with Craftstore.
This isn't Craftstore's fault, and should be reported to the mod developers.
Altering the code to support this feature would remove a lot of this script's compatibility safety, and would be a monumental task.
Not only that, but some mods are forwards-compatible and some aren't, due to the way they interact with the game.
Yell at your mod developers if their mod doesn't work with Craftstore!
This project probably isn't secure or well written in any way.
I'm not responsible for what jank this causes on your computer.
Some HTTP links (like https://meteorclient.com/download) aren't an actual file path, which leads to jank in the mods
folder.
I'm planning to fix this using HTTP's content-disposition
header but I haven't bothered to yet.