An experiment to make the smallest possible Fabric mod (with actual code). Does what the title says.
So what't the drill?
The (self-imposed) rules are to make the smallest possible Fabric mod that "does something". The definition of that in my opinion is to run, or at least attempt to, some code. So what can be done with that?
- The class.
public class a extends java.io.File {
public a() {
throw null;
}
}
Although it looks simple, this is not valid Java - the compiled bytecode was manually modified to make it throw a null, and to remove this parameter in the initializer. Also, by default all classes extend java.lang.Object, so it was changed to java.io.File to save two letters.
- Mod metadata
Abusing thefabric.mod.jsonformat, it can be compacted down to
{"id":"aa","version":"a","initializer":"a"}
Back in 2019 Fabric used to have a different metadata format, which is still supported to this day! Thanks to it, the file doesn't need a schemaVersion field, or the complex entrypoints setup.
Build process
There are two files, so there isn't much to compress, but to squeeze the most of it, they are zipped with the zopfli compressor. It is possible to get a smaller file size with .xz format, but it wouldn't be possible to load as a mod in that case.Runtime
Well, there isn't much code to ""do something"" - a no-op instruction would technically suffice, but I don't think it's interesting. So instead the code tries to throw an exception, and fails because it can't throw null. Task failed successfully, I guess…

