Minecraft Mods

During COVID lockdown in the summer of 2020, I picked up a new game development hobby: Minecraft modding.

I wanted to create a mod that would re-create the world of Roshar from Brandon Sanderson’s Stormlight Archive series. I had never made a Minecraft mod before, and as I was learning how to mod, I missed a lot of the more sophisticated tools that modern game engines provide, such as GUI authoring tools for animations, particle systems, and branching dialogue.

I embarked on a quest to make these tools, to varying degrees of completion and success.

YarnGdx: This is an implementation of the Yarn Spinner runtime initially for libGDX for creating branching dialogue created by my friend Kyperbelt. I helped port the system from Yarn 1 to Yarn 2 and rework it as a vanilla Java dependency that could be used in any Java project.

GeckoLib: My friend Gecko created the initial version of this library which added basic support for Bedrock Edition model animations for Java Edition mods. I was the second contributor, taking over as maintainer of the Blockbench plugin as well as architecting and doing most of the development to add support for easing curves in animation keyframes. GeckoLib has since had many more contributors and has become the gold standard mod for Java Edition animations, with over 100 million downloads.

Particleman: This is still a work in progress on the back burner, an attempt to extract the Bedrock Edition particle system runtime from McHorse’s Blockbuster mod as a standalone library. The objective was to allow Java Edition modders to be able to use the Snowstorm editor for authoring particle systems. My efforts to extract McHorse’s MoLang interpreter as a standalone vanilla Java library was leveraged by GeckoLib.

Skyeel model by AlahrranHonor, animated by me

I think overall my efforts to create tooling to support my main project were ultimately more successful than the project itself. It went through three iterations: first, as a mod for the Fabric mod loader. Then, as a vanilla-compatible server using server-side plugins such as ModelEngine to add support for custom entities. Finally, when the StormCraft project shuttered due to a long bout of inactivity, I took some of the assets I had made and commissioned and contributed them to Leaf’s Cosmere Suite mod. More details and graphics from the mod can be found on the 17th Shard StormCraft forum thread.

TechnologiesMinecraft Java Edition, Blockbench, Java, JavaScript/TypeScript