Minecraft tooling a la carte. Use what you need.
NOTE: Heavy work in progress. Not tested. Maybe don't use it yet.
Also an excuse to try out mill.
- Test with
./mill __.test
. Work with a specific module with, say,./mill toybox-string.test
. - Create jars with
./mill __.jar
. They go inout/<module name>/jar.dest/
. - Create fatjars with
./mill __.assembly
; artifacts go inout/<subproject name>/assembly.dest/
.
- better MCP api
- don't tie the format parsers to their representation
- possibly a new module containing definitions for class/field/method/package mappings, and MCP is just a module depending on it?
- that way i can reuse those definitions in other mapping formats
- more tests lol
There is also fabric mappingio, which has a cool visitor api and supports a lot of formats but is geared towrads modern MCP obviously, so it doesn't support package mappings or fields.csv/methods.csv
Repackaging transformations feel like class-remapping, but they're slightly different. For example we need to express "move all classes without a package into this package", e.g..
Sandboxing. (This is intended to be a Mill library after all.)
Small utilities for working with MessageFormat
objects and formatting hashes as hex strings. Might get removed/merged into other stuff, we'll see
Somewhat advanced file downloader, can download to disk or in-memory, supports etag caching, deleting files on error, swappable download backends etc
A simple implementation of the Generic Diff algorithm described by W3C NOTE-GDIFF. This format is used by Minecraft Forge binpatches. Does not have the capability to create diffs; only applies them.
Representation of Mojang's version_manifest_v2.json
file on piston-meta.
Utilities for MCP format mappings
Deduplication utilities for strings, used throughout the mapping parsers to reduce memory usage
Parser for per-version manifests like 1.20.1.json
on piston-meta.
Yes, the name is ripping off landley/toybox.
Currently unlicensed. This will change.
Code is a mishmash of original stuff, old stuff from Voldeloom that I wrote, and old stuff from Voldeloom that I borrowed from other places like the original Loom. That will need to get sorted out first, i'll need to include relevant licenses in each jar...