When first approaching making mods for Minecraft, it is important to keep certain things in mind.
LEARN JAVA FIRST!
Having a solid understanding of how to do things in Java is crucial to having a good modding experience. In this series I will not be teaching you how to program with Java. If I am covering something that seems confusing or hard (from a Java point of view), take some time and research or Google what I’m doing. Otherwise future episodes will seem harder to understand.
Trying to learn how to program in Java, while also trying to learn how to make mods for Minecraft, can be incredibly frustrating. It’s hard to know if the error you are seeing is because you did something wrong in Java, or if it’s something related to Minecraft. You do not need advanced Java knowledge; aim for being comfortable with intermediate concepts.
Take the time to learn Java. You will thank yourself later!
Some good Java resources are;
Don’t expect success the first time
Just like everything, it takes practice and trying things out to get better at modding. Don’t be afraid to ask questions, however don’t expect people to solve every problem for you; you won’t learn anything this way. The more advanced the concept you are trying to learn, the more time it will take.
It’s OK to feel frustrated too! It’s normal. As cliché as it sounds, modding is more of a journey than a destination. I personally have spent hundreds of hours and thrown away dozens of different implementations of things until I finally came to the solution, and I can tell you that I learned way more through the process of getting to the solution than I did from the solution itself.
Think like a programmer
Programmer’s tend to look at things very logically, and break complex problems down to manageable smaller chunks. The vast majority of the time big problems can be broken into smaller problems, which can then be broken down into smaller problems, until you hvae a set of problems that are easy to solve. This process is not something that comes naturally to everyone however, and can take time to get used to.
While anyone can write code, not everyone can write good code. However, what is good code? Good code is;
- that accomplishes something (it works)
- is simple (it solves exactly what it should)
- is elegant (it is not needlessly complex)
- is easy and clear to understand
- is easy to change, and
- is verifiable (you can test to make sure it works)
Good code drastically improves the ease in which you can make changes and maintain your code in the future. Just because you are good at design, experienced with programming with Java or other languages, or have lots of people in your team, it doesn’t mean you will produce good code. Try to keep the principles of good code in mind while you are developing your mod.
Being familiar with some of the principles of Computer Science is very helpful in writing good code (in my opinion). Some good resources for learning Computer Science principles are;
- Computer Science: An Overview (11th edition)
- Introduction to Algorithms
- Introduction to Computer Science | Programming Methodology
These resources are a recommendation only! They are not required for making a Minecraft mod but they can definitely help you in being a better programmer (disclaimer: I am a CompSci grad)
Know the Mojang ToS for Minecraft
The Mojang Terms of Service/Use lay out what you can/cannot do as a modder. It also lays out what belongs to you, and what belongs to Mojang. You can find the terms here.
For now, what is important to know is that you cannot release the source code for Minecraft (that’s illegal), and you cannot sell your mod (however, hosting your mod on a page with advertisements is acceptable).
Don’t be afraid to start small
Just like learning to crawl before you learn to run, you have to learn the basics before jumping in to the developmenet of “the next big Minecraft mod.” Biting off more than you can chew is one of the biggest causes of developer burnout (and abandoned projects).
You don’t want to experience burnout – it’s bad. Very bad.
Be prepared to spend some time
The more complex the mod you want to make, the more time it will take to make it. Doing things right take time, but are easier to maintain/sustain in the long run. Doing things fast often means doing things sub-optimally and is very difficult to maintain/sustain long term. Don’t be discouraged if you feel like you are progressing slowly; it happens to all of us!
Make something that you would play!
That’s why it’s important to make something that you would play. No, really! If you don’t enjoy what you are making, then why are you making it?
You need to enjoy what you are making. It will give you the drive you need to get through the harder and more frustrating points of developing a mod. This enjoyment and desire to play with what you are making are what you will need to fall back on when you feel discouraged.
Don’t make something to impress someone
Unless it’s for a job, then totally do that. For example, if you are making a mod for a school project, for a job application, or to learn as a hobby, that’s awesome! However, if you are making it specifically to try to get on a server (*cough cough*) or to fit in with a particular group of people, then you really aren’t embracing the idea of mod development.
Know your audience
Knowing your audience is crucial to meeting your design goals. Are you making the mod for yourself? For a particular group of people (like the people who play on a server with you)? Or are you making the mod for the Minecraft modding community in general? What kind of features/mechanics are they looking for? What would they enjoy?
When you know who your audience is, and what they want/need, then you can ensure that they are kept in mind when you are building your mod.
Don’t mimic, be inspired!
So, you really like what mod X has done and you’d like to do something similiar. Instead of jumping straight to doing the same thing, ask yourself if you can do it differently or better. It is better to be inspired and use that inspiration to make something new/better, than it is to mimic. It will push you both technically and creatively, and everyone wins!
For example, let’s think of the mod CompactSolars. CompactSolars is a Minecraft mod specifically designed to enhance the solar energy generation mechanics of another Minecraft mod, IndustrialCraft2. What do you suppose the author of CompactSolars was thinking? Was it something like;
- “I like solar power”
- “Who has done this idea before?”
- “How did they do it?”
- “What problems does their way have?”
- “How can I do it better/differently?”
- “Can I make it better and have it still be compatible with their way?”
This approach means that you can learn something, and make something truly unique and beneficial at the same time.
Write your ideas down
Writing ideas down makes them “concrete.” It’s easier to see the bigger picture of what you’d like to accomplish. Be careful not to be too technical though. Write down your ideas like you would to explain them to your mother or a small child. It is really easy to get lost in technical implementation details, so you want to keep it simple.
Organize these ideas in to “chunks.” Just like how programmers break big problems into smaller ones, break big ideas into smaller ones. Doing it this way makes it easier for you to make sure you cover every possible aspect of your ideas, and you have something to reference later when you are coding your mod.
Let’s run through an example; I want to make a magic mod. My idea sheet might look like;
- I want to make a magic mod!
- What does it do?
- Adds magic!
- What does the magic do?
- Adds magic!
- What items will it have?
- Item A
- What will it do?
- How will it do it?
- How will the players get it?
- Item A
- What unique mechanics will it have?
- What spells?
- What makes them unique?
- What does it do?
Keep doing this exercise until you can’t write anything else down. At the end of this, you will have a rough draft of your mod which you can come back to and revise as you have new ideas or learn new concepts/techniques.
Decide if compatibility is important
Do you want your mod to be compatible with other mods? If so, how compatible do you want to be? Are you happy with your mod working fine side by side with other mods, or do you want your mod to specifically interact with some other mods in a unique way?
Depending on how compatible you want to be determines how much it affects the development of your mod. If you don’t care at all about compatibility, then this doesn’t affect you at all. However if compatibility is important then you need to decide how compatible you want to be.
If you want your mod to “play nice” and work side by side with other mods, simply make sure you are not modifying the vanilla Minecraft classes (this is called base editing). One of the simplest ways to ensure your mod works beside other mods is to develop your mod using Minecraft Forge (all Minecraft Forge mods are compatible with all other Minecraft Forge mods).
If you want your mod to interact with other mods in a specific way however, you will need to do some research on how to do this. Common things to look for are to see if the mod you want to interact with has an API, documentation, or happens to be open source. Since this is really a case by case thing, the number one piece of advice is to talk to the developer(s) of the other mod and see what they recommend.
Whatever your decision, be sure to review your compatibility goals often during your development to make sure you are accomplishing your goals.
Don’t be afraid to experiment
Experimenting with your ideas in code is a great way to innovate and learn new things. Try adding something, changing something… see what happens! Just don’t be surprised if things break (they often will). Learn from these failures, learn how to fix them, and see what you missed or what needs more tweaking.
The vanilla Minecraft codebase is a great place to learn. This is where you can see how the features of Minecraft work, and even the most experienced and seasoned Minecraft mod developer still references the vanilla code often.
Don’t be discouraged by the community
As much as you try, you are not likely to make everyone happy. Some people will love what you do, some people will hate it. These groups of people will fluctuate over time, and the longer your mod is out the more often it will change.
The important thing is don’t let this get to you! This is why it is so important to make something that you would play, and that you would enjoy!
Take their criticisms in stride; you may find new ideas, bugfixes, or changes that could add something to your mod. You may also find valid reasons for you to change something, or not to implement something. Also, be sure to take their praise with humility.
Either way they respond, understand that if they are willing to comment then they are some level care about what you have done, and that’s a win 😀
Know where to go for help
Every developer gets stumped. Knowing where to go for help is the key to getting over the things that are tripping you up. There are many excellent resources available online to help you, whether they be Java tutorials, modding tutorials, or communities of developers.
Some of my favourites are;
Where to go now?
If you are unfamiliar (or rusty) with Java, take some time and visit some websites to learn Java. Check out what other Minecraft mod development tutorials there are out there, familiarize yourself with the Minecraft ToS, and write down your ideas.
- Computer Science
In the next episode I will be covering helpful tools, and how to set up your development environment.
See you next time!