37 releases (breaking)
0.27.1 | Jul 29, 2024 |
---|---|
0.26.0 | Jun 25, 2024 |
0.18.1 | Mar 6, 2024 |
0.18.0 | Nov 4, 2023 |
0.9.0 | Mar 31, 2023 |
#29 in Game dev
75KB
1.5K
SLoC
MC-Repack
A repacking tool for Minecraft mods and resource packs to optimize size and loading speed.
Features
- Minifying JSON files, using
serde-json
, and removing comments - Optimizing PNG files, using
oxipng
- Optimizing TOML files, using
toml
- Optimizing OGG files, using
optivorbis
- Optimizing NBT files
- Removing unwanted files – some project files (from Blender, Photoshop, etc.) are mistakenly packed in mods. This operation will detect and remove (ignore while repacking) these files.
- Stripping Unicode BOM
- Removing comment lines in many file types:
.cfg, .obj, .mtl, .zs, .vsh, .fsh
- Recompressing files more efficiently
- Now with Zopfli support (slower, but better compression)
- Configurable (it reads
mc-repack.toml
or other TOML file specified by--config
argument)
Comparison table
These mods are tested and repacked by MC-Repack with the following results:
File name | Original | 0.18 | 0.20 (*) | 0.21 (*) |
---|---|---|---|---|
minecolonies-1.19.2-1.0.1247-BETA.jar | 72.8 MB | 63.7 MB | 63.4 MB | 62.7 MB |
twilightforest-1.19.3-4.2.1549-universal.jar | 22.5 MB | 21.9 MB | 21.8 MB | 21.2 MB |
TConstruct-1.18.2-3.6.3.111.jar | 15.2 MB | 14.0 MB | 13.9 MB | 13.6 MB |
BloodMagic-1.18.2-3.2.6-41.jar | 13.6 MB | 11.9 MB | 11.7 MB | 11.6 MB |
create-1.19.2-0.5.0.i.jar | 13.1 MB | 12.8 MB | 12.7 MB | 12.6 MB |
Botania-1.19.2-437-FORGE.jar | 10.9 MB | 10.1 MB | 10.1 MB | 10.0 MB |
ImmersiveEngineering-1.19.3-9.3.0-163.jar | 10.3 MB | 10.0 MB | 9.65 MB | 9.46 MB |
thermal_foundation-1.19.2-10.2.0.47.jar | 4.58 MB | 4.38 MB | 4.35 MB | 4.35 MB |
cfm-7.0.0-pre35-1.19.3.jar | 2.11 MB | 1.92 MB | 1.87 MB | 1.84 MB |
* - Using Deflate (faster)
More mods are available on My Website.
Installation
The fastest way is to get the latest version from Releases page.
You can also install this app by using Cargo:
cargo install mc-repack
If you want to test the latest commit directly from this repo:
cargo install --git https://github.com/szeweq/mc-repack
Usage
After installation, the tool can be used by typing one of following commands:
mc-repack jars --in <file|directory> --out <path>
mc-repack files --in <file|directory> --out <path>
- The
jars
subcommand looks for entries stored in.jar
(or.zip
) files. - The
files
subcommand transforms the file tree directly. Files will be minified or copied. When a file path is provided, then MC-Repack will repack the file contents. If a path is a directory, then all files inside (non-recursive) will be repacked.
More options are provided by typing mc-repack --help
in a shell/terminal.
Library
MC-Repack can be also purposed for creating your own version of a repacking tool. See mc-repack-core
crate on crates.io for more technical details.
Why?
MC-Repack is meant to show how many Minecraft mods and resource packs come with unoptimized files (and I don't mean just pretty-printed JSON files). You will be surprised that in some cases a PNG file's metadata added by Photoshop is much larger than its content.
One other inportant thing is that MC-Repack determines if a file really needs to be compressed. Most PNG files and smaller JSON files will usually be stored uncompressed. This kind of operation saves bytes if a "compressed" form is larger than original. Also, uncompressed data can be loaded faster.
This is a great tool that can be helpful for:
- Mod developers and resource pack makers – they can provide mods with smaller file sizes, optimized PNGs and correctly formatted JSONs
- Players and server owners – optimized and repacked files can speed up Minecraft load time while using less memory.
MC-Repack shows all errors happened during repacking. Most of them are errors that can be simply ignored (like trailing comma at line X column Y
).
How to contribute?
The easiest way to contribute is to share this with others on social media.
There is a lot of things that should be fixed or optimized. New feature ideas are welcome, just file an issue.
Can I use it outside Minecraft?
Sure! The tool does not recognize that an archive is not a Minecraft mod nor a resource pack (yet).
Dependencies
~7–35MB
~530K SLoC