Compatibility
Minecraft: Java Edition
Platforms
Supported environments
Links
Tags
Creators
Details
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 removethisparameter in the initializer. Also, by default all classes extendjava.lang.Object, so it was changed tojava.io.Fileto 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
schemaVersionfield, or the complexentrypointssetup. -
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…


