Making a mod in Java is challenging for a hobby programer in Python and JavaScript world. Starting a mod from scratch is even more challenging, and as I am just playing with minecraft mods, I chose to start with a existing mod, Draylar/identity.
Get Java Ready
JDK, JRE
JRE (Java Runtime Environment): essential for Java application to run
JDK (Java Development Kit): Includes JRE, with tools to compile Java source Code
Not Enough?
As a (fresh) Minecraft player, I have already installed jre8. And I also have openjdk8 installed with Android Studio. However thats not enough.
openjdk does not include JavaFX, which is required for HMCL. And jre8 does not include tools to compile. So let's get official Java SE Development Kit 8 .(Most mods use this version.)
This will download correct gradle wrapper version, Minecraft client & server jar, and other dependencies.
It may take some time to finish.
If network connection is poor, you can:
manually extract downloaded gradle release (e.g. gradle-6.5-bin.zip) to $HOME\.gradle\wrapper\dists\gradle-6.5-bin\<hash>\ and touch gradle-6.5-bin.zip.ok
manually put minecraft-1.16.1-<server/client>.jar to $HOME\.gradle\caches\fabric-loom\
then restart building process
Get docs
You will get confused with the code quickly if you just read fabric wiki. Where are docs for all these APIs?
Just go to fabric's own maven repo, navigate to net/fabricmc/yarn/<build-folder>, download and extract javadoc.jar, and you will get docs for net.minecraft.blahblah
And net/fabricmc/sponge-mixin for mixins.
But docs are no very useful, you often need the source code.
Quick Tip: What Commands are Supported?
gradlew tasks
to see all the tasks.
Generate Minecraft Source
You will still get confused with mixin injections without Minecraft source: inject to what?
Generate Minecraft source by:
gradlew genSources
This will decompile Minecraft and download game assets. Open the project in VSCode, maybe wait a while for project to be imported. You can now right click class or method name and select "go to implementations" to see the source.
Debug the Mod
Nobody would like to build the mod, drag the jar to mods directory, restart minecraft game, to see the effect. To debug right inside VSCode, generate launch.json:
gradlew vscode
Now Minecraft Client and Minecraft Server option is available in the debug panel!
View Post on Blog
Making a mod in Java is challenging for a hobby programer in Python and JavaScript world. Starting a mod from scratch is even more challenging, and as I am just playing with minecraft mods, I chose to start with a existing mod, Draylar/identity.
Get Java Ready
JDK, JRE
JRE (Java Runtime Environment): essential for Java application to run
JDK (Java Development Kit): Includes JRE, with tools to compile Java source Code
Not Enough?
As a (fresh) Minecraft player, I have already installed
jre8
. And I also haveopenjdk8
installed with Android Studio. However thats not enough.openjdk
does not include JavaFX, which is required for HMCL. Andjre8
does not include tools to compile. So let's get official Java SE Development Kit 8 .(Most mods use this version.)Setup Env and Config
For example:
Build Fresh Mod!
Clone mod repo and run (varies between OS):
This will download correct gradle wrapper version, Minecraft client & server jar, and other dependencies.
It may take some time to finish.
If network connection is poor, you can:
manually extract downloaded gradle release (e.g.
gradle-6.5-bin.zip
) to$HOME\.gradle\wrapper\dists\gradle-6.5-bin\<hash>\
and touchgradle-6.5-bin.zip.ok
manually put
minecraft-1.16.1-<server/client>.jar
to$HOME\.gradle\caches\fabric-loom\
then restart building process
Get docs
You will get confused with the code quickly if you just read fabric wiki. Where are docs for all these APIs?
Just go to fabric's own maven repo, navigate to
net/fabricmc/yarn/<build-folder>
, download and extractjavadoc.jar
, and you will get docs fornet.minecraft.blahblah
And
net/fabricmc/sponge-mixin
for mixins.But docs are no very useful, you often need the source code.
Quick Tip: What Commands are Supported?
to see all the tasks.
Generate Minecraft Source
You will still get confused with mixin injections without Minecraft source: inject to what?
Generate Minecraft source by:
This will decompile Minecraft and download game assets. Open the project in VSCode, maybe wait a while for project to be imported. You can now right click class or method name and select "go to implementations" to see the source.
Debug the Mod
Nobody would like to build the mod, drag the jar to mods directory, restart minecraft game, to see the effect. To debug right inside VSCode, generate
launch.json
:Now
Minecraft Client
andMinecraft Server
option is available in the debug panel!