An ever growing list of mod diaries/tutorials. They focus mainly on the development of my personal mods, but you may learn a thing or two about modding along the way.
Table of Contents
Butterflies (v1.0.0)
Getting Started
The Forge website has a quick guide to getting started with modding. I’m just getting back into it, so I thought I’d walk through the steps to get a project set up with Forge.
Butterflies Part 1: Entities
I’m developing my own version of a Butterfly mod for Minecraft. Naturally, one of the first features I want to implement are the butterflies themselves. To do this we need to add new entities to the game, along with models and renderers for the entity, and define how the entities will spawn in the game.
Butterflies Part 2: The rest of the @!#$ Owl
In Part 1 we coded a butterfly entity. Now we need to put the rest of the pieces together, so we can model, render, register, and ultimately spawn butterflies in our Minecraft world!
Regional Variety in Butterflies
Adding new textures to our implementation of butterflies is an easy way to add variety. However, we can strive to do better. Our ultimate goal is to have achievements for catching all butterfly varieties, but this becomes too easy when butterflies of all varieties can spawn anywhere.
Butterfly Nets: Gotta Catch ‘Em All
I mentioned in my last article that I wanted to add a collectible element to my butterfly mod. In order to do that we need a way to catch said butterflies. So the next step is to implement a butterfly net. With the latest change we can now craft butterfly nets that can be used to catch (and release) ’em all.
How to Upgrade a Forge Mod
Minecraft version 1.20.1 has been out for a while now, and a stable version of Forge has been released for it. So it’s time to update our mod to run in the latest version of Minecraft. That way we’ll be able to use the Butterflies mod with the fancy new features of Minecraft.
Bottling Butterflies in a Jar
Butterfly nets can only hold one butterfly at a time, and we can’t do anything with them once caught. We will add a new way to interact with them: moving them to jars so they can be put on display. This adds something we can do with butterflies, as well as another “catch ’em all” element to the mod.
Laying Butterfly Eggs in Leaves
Butterflies lay eggs that eventually become caterpillars. Caterpillars then feed on leaves until they are fat enough to become a chrysalis. Finally, they morph into a butterfly before breaking out of the chrysalis. The next step for our mod is to implement butterfly eggs.
Modelling and Animating Caterpillars
Everyone knows that butterflies come from caterpillars. The next stage in the life cycle is for butterfly eggs to hatch into caterpillars. So we will add caterpillars to our mod that will hatch from the eggs we created last time.
Cleaning Out the Butterflies Backlog
During any development it’s inevitable that you introduce bugs or leave minor tasks behind. The Butterflies Mod is no exception. We have a list of small details that are incomplete, as well as some bugs we’ve picked up on while testing. This week we try to clear out that list.
Multi-Directional Caterpillars
Caterpillars will always spawn on top of a leaf block. We want to give a bit more variety in our caterpillar behaviour. So we modify caterpillars so that they can crawl on any side of a leaf block. It’s a small detail, but took a decent amount of time to develop.
Chrysalis: Completing the Cycle
We finally implement the chrysalis and complete the life cycle of the butterfly. Butterflies lay eggs. Eggs hatch into caterpillars. Caterpillars create a chrysalis. Butterflies hatch out of a chrysalis. The circle of life is complete.
Cats: The Butterfly’s Natural Enemy
I wanted to have some interaction between butterflies and vanilla entities to make them feel like part of the Minecraft world. An easy way to have an entity interact is to make butterflies the target of a predator. Our furry friends seemed like the best candidate for this.
Releasing the Butterflies
We are on the road to release! This week I finally finished the first version of the mod and have pushed an official version of my mod out to the world. It’s taken me a while, but I finally have this simple butterfly mod out in the wild.
Scrolls and Books (v2.0.0)
Forks, Branches, and Scrolls
I’ve finally released the butterfly mod, but I’m still not done. Now I’m working on the next release which will have a few extra features. This week I’ve been working on Butterfly Scrolls – a new way to create a collection of butterflies.
Pinning Up Butterfly Corpses
I’ve always struggled to get my head around modern day rendering code. There’s a reason I became a network and server programmer. Still, I managed to get this working in the end. Though I’m sure my computer knows many more swear works now…
Screwing Up the Life Cycle
Well, I screwed up. It turns out a major selling point of Bok’s Butterflies wasn’t working at all. The life cycle of the butterflies wasn’t working at all. It all boils down to a misunderstanding on my part. So this week I have a new release that fixes this feature.
It’s All About the Little Things
It’s always worth taking some time to focus on the details. Small things can make a huge difference to a mod. I spent some time this week working on small features and little improvements. In the long run, these things will make a huge difference.
Updating the Butterfly Stats
I’ve been playing a game with the mod installed for a while now, and there are a few things I want to improve upon. First, I wanted to tweak the butterflies a bit to add some extra variety. Second, I’ve noticed that butterflies tend to grow in population exponentially.
Books With Butterflies In Them
I’ve finished the last feature and released version 2 of the mod. The last feature I implemented was a book where you can store butterflies and gain information about them. The book has dynamically generated content, depending on which butterflies you store inside it.
Life Cycle (v3.0.0)
Backporting for Pain and Profit
I spent this week tidying up some little issues with the mod here and there. I had a couple of small requests and bug reports over Christmas which I added to my backlog.
ItemCraftedEvent Doesn’t Do What You Think
I got a bug reported near the beginning of the month about recipes not working properly. Shift-clicking on one of the custom recipes would cause a whole bunch of useless items to be created.
Small Eggs and Better Buckeyes
I’ve talked about how details matter before. So this week I’ve focused on a couple of things that have been bugging me for a while now. These aren’t major features, but they do help to make the mod feel like it’s been crafted by someone who cares.
Data Driving the Butterflies
Finally! Butterfly data can now be loaded or modified via a JSON file. Now if we decide to change how butterflies work we don’t need to change any code. Even a data pack could be used to change butterfly behaviour.
Improving Caterpillar Interaction
This week I’ve been focusing on improving caterpillars. Right now they are very hard for players to come across. However, with a few extra features and tweaks, caterpillars will be just a little bit more interesting.
Naturally Spawning Caterpillars
Originally the butterfly mod was supposed to be a simple mod that adds butterflies to the world. It’s growing a little beyond that, with the butterflies actually having a complete life cycle. Unfortunately it’s actually pretty rare that a player will stumble upon a caterpillar right now.
Let’s Bottle Caterpillars!
I’ve been focusing a lot on caterpillars these last few weeks, and a thought occurred to me. Wouldn’t it be cool to have bottles with caterpillars in as well.
Behaviour (v4.0.0)
Syncing the Butterfly Data
After releasing version 3.0.0 of the mod, I got a bug report in very quickly. Butterflies were no longer spawning in server games. I hadn’t really been testing servers up to that point, but as it turns out that didn’t mean people weren’t using the mod on servers.
Keeping Their Numbers Down
Butterflies have been taking over. There have been reports that thousands have been spawning, overwhelming servers and lagging out game worlds. So I have spent a large portion of this week working to reduce the butterfly population and ensure that Minecraft servers remain safe.
Butterfly Eggs Done Right
Early on in the mod’s development I made a couple of missteps. I was less experienced and didn’t fully understand how Minecraft works, so I made some design choices that have proven to be problematic.
200 Files and Nothing New
This week I merged a change consisting of over 200 files. It’s probably the largest change I’ve made since the project began, and yet it doesn’t actually introduce anything new. Instead, it fixes a mistake I made when I first created the mod.
Improving Quality of Life
This week I add a lot of quality of life improvements to the mod, as well as a bug fix. There aren’t really any major new features, but the mod is now a little easier to use, and is now compatible with mods that add custom biomes to Minecraft.
Upgrading Butterflies to NeoForge
Changes are on the horizon for the Minecraft Modding community. While I don’t fully understand all the drama, Forge may be on its way out, making NeoForge the new way of making mods. In order to prepare for this new world, I’ve decided to create a 1.20.4 version.
Adding the Peacock Butterfly
I plan to add more butterflies in the future, so I wanted to gauge how much work that would be. This can also serve as a step-by-step to adding new butterfly species to the mod. So I’m adding a 17th variant: the Peacock Butterfly.
Generating More Butterfly Data
This week I focused on improving data generation for the mod. This doesn’t add any new features to the mod, however it does mean that adding new features to the mod will be much easier in the future. And being able to iterate new features faster is always a bonus.
Generating Butterfly Advancements
I’m still on a mission to reduce the amount of work needed to add new butterflies to the mod. This week I looked at advancements, with the goal of being able to generate their requirements without having to manually edit each one.
Removing Boiler Plate Code
Currently adding a new butterfly to the Butterfly Mod requires writing too much boiler plate code. This week I looked into simplifying things to the point where we can generate a java file and have the rest of the code automatically register any new butterflies.
Butterflies Float Like a Bee
Butterflies aren’t smart. At least in the Butterfly mod they aren’t. Minecraft has an AI system that I haven’t taken advantage of so far. However, I’m planning on introducing some new behaviour to the butterflies, so it’s time to evolve.
Very Intelligent Butterflies
Butterflies aren’t very smart in real life. But they are smarter than the butterflies currently implemented in the Butterfly Mod. So I’ve started implementing new goals for the butterfly’s AI to make them behave just a bit smarter than they have been so far.
Pollinating Flowers with AI
This week I introduced a new system to the Butterfly mod. Since butterflies like to pollinate flowers in real life, I’ve added a system where they can do the same in Minecraft. A lot of thought went into this system so it doesn’t unbalance the game too much.
The Butterfly’s Final Goals
I’m getting close to finishing version 4 of Bok’s Butterflies. I just need to cross some Is and dot some Ts. A couple of new goals and a bugfix or two, then port the mod to all supported versions, and it’s ready for release.
Moths (v.5.0.0)
A Bugfix and a Day/Night Cycle
Last week I released version 4 of Bok’s Banging Butterflies, introducing flower pollination and improved AI for butterflies. With that done, it’s time to start focusing on the next feature I want to introduce. Moths will be main feature for Bok’s Banging Butterflies v5.0.0.
Just Like a Moth to a Flame
This week I continued adding new behaviours specifically for moths. Along the way I had to update the movement code (again) and fix a minor bug. But now moths will be drawn to light and use a different landing animation.
Moths, Silk, and Startling
This week I add silk to the butterfly mod and finally add my first moth. This moth has its own unique behaviour, something I will start adding to several other butterflies. Along the way I fixed a bug or two, and discovered a couple more that need to be fixed.
Butterflies, Moths and Bugs
This week I spent some time fixing a few bugs I’ve been noticing while testing the mod. Now our butterflies look better, animate better, and spawn better. These things may seem minor in comparison to adding cool new features, but as I’ve said before: details matter.
Moths, Moths, and More Moths
I’ve spent this week adding as many moths to the mod as I can. Each new moth led to a few little changes to either fix bugs I found along the way, or to add a new behaviour for the moth.
Finishing Up the New Moths
I’ve been adding even more moths to the mod ready for the next release. Some of these have custom behaviours and others don’t. I also contemplate adding butterfly breeding, so that players can artificially increase the number of butterflies in their farms.
Butterflies of South East Asia
I’ve been travelling around SEA for a while now, and there have been a lot of butterflies along the way. I’ve decided to add a few of the butterflies I’ve seen around to the butterfly mod, helping to pad out the variety of butterflies players can encounter.
Villagers (v6.0.0)
Bugs, Habitats, and Refactors
The next version of Bok’s Banging Butterflies will introduce villagers that can interact with butterflies. It’s still in the design stages, but I’m starting out by fixing a few bugs and working on what I can until I get my flow back again.
A New Way to Feed Butterflies
The next step in the butterflies mod is to integrate them with villagers. Before I can do that they need a job block of some kind. So I’ve created a block that can help feed and breed butterflies. Later, we can use this block to create butterfly related villagers.
The Lepidopterist Villager
Last week I added the Butterfly Breeder. This week I used the new block as a job block to create a new villager: the Lepidopterist. This villager will give access to trades around butterflies, giving players a new method of finding new species.
Housing the Lepidopterist
We have job blocks. We have villagers. What we don’t have is a home for these new villagers to live. This week I’ve added new buildings that will spawn in villages. And with a new home, lepidopterists can spawn naturally as well.
Bits and Bobs. And Sherds
This week I worked on a lot of small tasks. Some new features, a bugfix or two, some minor tweaks, and butterfly sherds. It’s nice to work on small things sometimes. It feels like you’ve achieved a lot more than usual.
Bugs and Banners (and a Rest)
Sometimes you need to slow down and focus on other things, and this week has been particularly hectic. So, I didn’t get as much done this week as I usually do. I still fixed a couple of bugs and added a new feature.
Placing Butterfly Origami
This week I implemented something I thought would be simple. But as it turns out, even the simplest of features can introduce a few interesting problems to solve. So this is the chronicle of how I implemented Butterfly Origami.
Creating a Butterfly Golem
A while ago there was a thread by Sushifox on PlanetMinecraft offering to create “adaptamobs”. Based on an earlier thread about digital pets, an adaptamob is simply one of 6 types of mobs represented in 2D, but with a specific theme applied to it.
The Souls of Living Entities
Many cultures believe that butterflies are the souls of the dead. I wanted to represent this idea in the Butterfly Mod. So this week I added the Féileacáin, the Irish spirits of the dead, represented as butterflies.
Liang Zhu: Butterfly Lovers
There is a Chinese fairy tale about the two lovers Liang Shanbo (梁山伯) and Zhu Yingtai (祝英臺), doomed to never be together. Liang Shanbo dies of a broken heart, and Zhu Yingtai throws herself into his grave to join him.
Green Skirt Baron Butterfly
Variety is what brings a mod to life, and with every new butterfly, Bok’s Banging Butterflies grows more vibrant. On a recent trip along the Monk’s Trail in Chiang Mai, I spotted an uncommon butterfly known as the Green Skirt Baron.
Adding More Moth Varieties
This week I added a couple of new moths to Bok’s Banging Butterflies. One is another silk moth, this one a little colourful. The other is the tiniest of Clothes Moths.
Handling and Preventing Errors
Mistakes are an inevitable part of coding, and debugging is where the real problem-solving begins. This will inevitably lead to bugs. When you notice a bug you will, of course, spend some time figuring out what went wrong. There are two ways to tackle these bugs: detection and prevention.
The Amazing Hummingbird Moth
One night in Siem Reap I saw what I thought was a hummingbird buzzing around some flowers. I got close to it and it was a strange sight. It zipped from flower to flower, its wings humming like a small bird.
Rendering Debug Information
The landing animations are still a bit unreliable. All too often when testing Bok’s Banging Butterflies I still see landed butterflies flapping their wings.
Older Diaries
These are older diaries and tutorials that aren’t part of the main series I’m working on. You might still find these useful, however.
How to Learn Minecraft Modding
Some advice on how to go about learning how to mod minecraft (or learn anything, really).
Setting up a Development Environment for Forge Modding
An older tutorial on how to set up a development environment.
Data Driving Minecraft
Some old ideas on how to add more data driven assets to Minecraft.
Data Driven Donuts
How I used data to add donuts to Minecraft.