Minecraft Modpack Making 103: Picking Mods - katubug/HowToModpack GitHub Wiki
Minecraft Modpack Making 103: Picking Mods
How to choose impactful and stable mods
In the first installment of this series, we covered a very broad overview of the skills and programs you’ll need, as well as addressing your modpack’s theme. However, the crux of your theme will ultimately boil down to… the mods you choose. So let’s discuss how to do that.
Finding Compatible Mods
I bet you’re itching to get into things. So let’s get started! The first thing a modpack needs is, well, mods. You’ll need to make sure that you’re choosing mods for the right Minecraft version, and for the right modloader. You can pick whatever version and modloader you want, but be aware that it will dictate what mods you can and cannot add. Because it’s what I’m familiar with, we’re going to be discussing Forge development, and working on version 1.20.1.
The easiest way to ensure that you’re getting compatible mods is by using the CurseForge launcher to build your modpack. Once you install the launcher and select Minecraft, you can click “+ Create Custom Profile” in the upper right to, well, make your modpack’s custom profile! Name it what you’d like to call your modpack (you can change it later), then choose your Minecraft version, modloader, and modloader version. Here’s an example of what the screen looks like:
Once you have your profile set up, click the puzzle piece icon on the right to Add Content. All the mods that show up in this search are ones which are marked compatible with your current versions. Note that in your Minecraft settings in CurseForge, there is an option for “Preferred Released” - I recommend setting this to “Beta” as many mods take ages to reach full release.
The way I find mods easily without the CurseForge launcher is by using SuperStormer's CurseForge Search, which allows you to select what version, sub-version, and modloader you want to browse through. I personally like to set it to show the most recently updated mods, as it lets me view mods with active developers (which is always a good thing)! I keep this in a tab open on my phone and check it periodically, and bookmark mods which I want to check out when I’m on my laptop.
So that’s how you find the mods, but how do you know what to look for? You can just browse, of course, and see what catches your eye, but now is where those keywords from earlier come in. Now to be clear, these searches only use mod titles, not descriptions. But you can definitely search “Cozy” or “Cyberpunk” and probably come up with a few hits. This is where I start.
So let's sum up:
Ways to find mods:
- Search for keywords in the Curseforge launcher or Superstormer's Curseforge Search.
- Poach them from other modpacks. Find a modpack similar to the vibe of yours and look at what mods it adds (via the Relations tab on CurseForge), and see if those mods are available to add to your.
- Mod spotlights on Youtube. I will genuinely just search “minecraft mod 1.20.1” and see what pops up. Some good creators are AsianHalfSquat, BoodlyNeck, and Noxus.
A List of Must-Haves
There are some mods that every modpack should have, for quality of life purposes. Many of these can be found in the most popular/most downloaded sections, and for good reason. These are in no particular order:
- Just Enough Items (JEI) or equivalent. JEI, REI, EMI, and other similar mods will let you view every item in the game, and can show you both the recipe to make them, and the recipes they are used in. There are also addons for these, such as Just Enough Resources, which will show you if an item is dropped by a mob, or where the ore can be found in the world.
- Jade, The One Probe, etc. This mod provides a HUD feature which tells you what block/item/entity you’re looking at, and other information about it such as what mod it’s from, what health it’s at (if an entity), its growth stage (if a crop) and more.
- Mouse Tweaks adds some functions to the left mouse button while in inventories, which are similar to the right mouse button. It’s hard to explain, but trust me, once you’ve used it, you can’t go back. I forgot this wasn’t vanilla.
- Controlling allows you and your players to search for keybinds in the controls menu.
- Polymorph allows the player to choose an outcome in case two output items have the same base recipe (this happens a lot, especially in bigger modpacks). Say you have a mod that adds in Dark Oak Chests: if you place 8 Dark Oak Planks in the crafting grid, it will try to craft it into a regular Chest, causing a conflict. Polymorph allows the player to craft what they intended to.
- Clumps makes exp less laggy by allowing it to “clump” up, which also allows players to gather it more quickly.
- Inventory Sorter does what it says on the tin. If you middle mouse button click in an inventory, this mod will automatically sort all of the items within.
- Inventory Essentials allows you easily move items into and out of other inventories using CTRL, SHIFT+CTRL, and Space.
- A Map/Minimap mod, such as Xaero’s, JourneyMap, or Antique Atlases. Personally, I recommend Xaero’s as having the best performance.
- Toast Control might seem unnecessary, but it’s very helpful to prevent “toast” spam (warning: does not control Spam on toast). Toasts are the little achievement/quest/recipe popups in the upper right corner of the screen. They’re what tells you how to move your character and such in the opening moments of the game. Toast Control eliminates unnecessary ones, and makes it so that you don’t get overwhelmed if you, say, get a lot of recipes all at once.
- Performance Mods. We’ll have a full list of these later in the guide, but they’re an integral part to keeping everything running smoothly, especially in larger packs.
- Debugging/Admin mods. I recommend Spark, Observable, and to a lesser degree, Crash Utilities. These mods will help you “look under the hood” to see what parts of your modpack eat up the most resources.
- KubeJS. KubeJS is a mod which allows you to do a ton of behind-the-scenes modpack stuff, like adding and removing tags to items, adding and removing recipes for items from a number of different mods/recipe types, adding tooltips, and so on. It also allows you to do complicated things like duplicating flowers when you right click them with bonemeal, or making extra Dragon Eggs spawn every time someone beats the Ender Dragon.
- Lootr is a mod which allows multiple people on a server to get loot from the same chests. If you plan to make a modpack which allows multiplayer servers to host it, I really recommend this mod to make sure that latecomers don’t have to travel thousands of blocks out to get loot.
- A Backups mod. FTB Backups is good, but there are many options. The fact of the matter is that the average player doesn’t keep backups of their saves, and modded Minecraft is simply an unstable beast, ready to corrupt someone’s world at a moment’s notice. If you, the modpack maker, include a backups mod that functions automatically, you are singlehandedly saving the worlds of hundreds of people.
- A Sound Muffler mod. There are a few of these. Although it’s not strictly necessary, modded Minecraft can get very noisy, and it’s nice to give people the ability to mute specific noises - especially machines and modded mobs.
- Default Settings. Every time you update the modpack, you have two choices: override the options.txt and make everyone redo their settings and keybindings, or don’t override it, and new users get the (often janky) default keybindings. I lied, there’s a third option: define the options and keybindings that you suggest to new users, and then use a mod like DefaultSettings or Default Options to save them. It will then automatically give those settings only to new users, letting existing users keep their chosen overrides. KubeJS is supposed to be able to do this, too, but I haven’t found that it works properly.
- Crafting Tweaks. This mod adds some buttons to the crafting interface which allow you to rotate the grid, balance the items in the grid, or clear it entirely. A small mod with a big impact.
- A Gravestone mod. Although not strictly necessary, most modded Minecraft players expect some sort of Gravestone mod which saves their items upon death. I tried to make a modpack without it once, and it was far and away the most common feedback I received. I personally recommend Corail Tombstone because it has some neat extra features revolving around death, but you can feel free to use the one which suits you best!
- Connectivity. If your modpack will add a lot of blocks, it’s a really good idea to add in Connectivity, or another mod which does the same thing. This mod simply extends the amount of time it takes for a user to connect to a server before they get timed out. The default is 30 seconds, which is simply not long enough for most larger modpacks, especially if the person is playing on a weaker PC.
- Better Tag Tips. This is for you, the modpack maker. It’s really helpful to be able to see expanded tooltips which show mod ids, tags, and even NBT data. I recommend configuring this to show such information only when you have advanced tooltips (F3+H) enabled, so it doesn’t overwhelm end users.
- Better F3/Plus. This is also for you. The F3 screen allows you to monitor RAM usage, see what biome you’re in, and get information about the blocks you’re targeting. BetterF3 (all one word, there’s another mod called Better F3 with a space) colors the debug screen to make it easier to read, and Better F3 Plus allows you to remove items you don’t need, making your screen less cluttered.
- Bad Wither No Cookie. This mod makes it so that Wither summoning noises and Ender Dragon deaths no longer jumpscare everyone on the server. Those noises will only be heard by the players actually in the region of those events.
- Appleskin. Another small mod with a big impact: Appleskin allows you to preview the hunger and saturation that each food gives you, making it easy to quickly compare foods.
About MCreator
MCreator is a program which generates Minecraft mods without the user needing any programming experience. It sounds great, but unfortunately the code it generates is highly inefficient and often buggy. The mod developers are not allowed to open-source their mods, which means no one else can help them fix bugs. They’re not even allowed to edit the code themselves, which means many bugs simply go unfixed. They’re particularly problematic in multiplayer. However, if an MCreator mod adds only items, and not entities/mobs or world generation such as ores or plants, then it’s relatively safe to add. Just be aware that they can cause issues.
But how can you tell if a mod is made with MCreator? There are several ways. The first and most obvious way is to check the categories and descriptions for references to it. Unfortunately, not all mods made with MCreator will specify that, though, so you may need to resort to other options. You can check whether the mod has a github page with source code, because MCreator mods will not. However, some mods are closed source, so this isn’t a perfect method.
There are two (mostly) foolproof ways, both are slightly technical, but should not be a problem for you. The first is via the command utility. Here are the instructions. The other way is via a KubeJS Script, which requires the KubeJS mod to be installed. The script is written by Uncandango on the KubeJS Discord:
const $PlatformImpl = Java.loadClass("dev.architectury.platform.forge.PlatformImpl") StartupEvents.postInit(e => {
let mcreatorMods = Utils.newList() Platform.getMods().forEach((key, val) => {
let mod
try {
mod = $PlatformImpl.getMod(key)
} catch (ignored) {}
if (!mod) return let container = getPrivateField(mod, "container") let modInstance = container.getMod() modInstance && modInstance.getClass().getName().startsWith("net.mcreator") && mcreatorMods.add(key)
}) if (!mcreatorMods.isEmpty()) {
console.error(`Mods created using MCreator are not supported by this pack, please uninstall the following mods:`) console.error(`${mcreatorMods}`)
}
})
function getPrivateField(obj, field) {
let classField = obj.class.getDeclaredField(field) classField.setAccessible(true) return classField.get(obj)
}
Simply create a file called mcreator.js
in your /kubejs/startup_scripts/
folder, then paste the above into it and save. Don’t worry if you can’t read the code right away, you’ll pick it up as you go! Now when you start the game, you’ll get a screen warning you if any MCreator mods are in the mods folder.
About Library Mods and Dependencies
Many mods these days either use a library mod or have other related mods which they require in order to work. These secondary mods are called dependencies, and without them, your game will crash. Most of the time, the CurseForge launcher will automatically install these dependency mods for you, and you won’t have to worry about it. But sometimes, the mod page isn’t configured correctly and the additional mods don’t get installed. When this happens, you’ll have to check your latest.log (more on this later) and CTRL+f the word “depend” to find if there is a missing dependency/dependencies. You can also check the mod page on CurseForge and click the “Relations” tab and look under “Required Dependencies” for what mods you might need to add.
Things to Keep in Mind
While choosing mods, you want to make sure that they fit the pack, and that they add unique value to that pack, without taking away from it in any way.
- Is this mod thematically similar or does it clash?
- Does this mod add in items, mobs, or features which already exist in the modpack?
- Is this mod in a stable state, and are the devs active?
- If the answers to any of these questions are negative, am I willing to work around or deal with the potential consequences?
Let’s begin with the first point: theme. I’ll use my 1.19.2 modpack Cottage Witch as an example. It’s intended to be a cozy, cottagecore, magic-themed pack, with low to no technology. My “flagship” mod was Hexerei, which fits all of those keywords. However, Hexerei is a comparatively small mod with not a ton of content/replayability, so I needed another big content mod. I chose Ars Nouveau, because it fit my needs: a large, versatile mod with lots of content and replayability, as well as low-tech ways of automating things, and it fit the magic theme.
However, I also added Create. Create isn’t exactly cozy, cottagecore, or magic. It is low-tech, at least, but it certainly wasn’t a perfect fit. I added it anyway, because I wanted to play with it (and I really wanted Integrated Dungeons and Structures), and I was willing to find a way to make it fit the theme. I chose to lean into a lore that engineering, and sciences in general, are simply a type of magic which we understand. The quests I wrote for it mostly focused on the cozier or more mundane applications. These are ways you can make a clashing mod fit better into your pack.
What about mods which have overlapping features? With the sheer amount of mods out there, naturally there will be ones which have similar additions. Cottage Witch had at least 3 different types of Dragonflies. The 1.20 version of my modpack has 2 different types of Strawberries, Silver Ore, and Rubies. In general, if two mods add the same feature, I recommend picking one or the other, rather than adding both. However, if both mods offer other features which you can’t live without, there are ways of making sure that things are compatible and not confusing. You do this through a combination of hiding items from JEI, removing or edited drops via datapacks, and removing and adding recipes via datapacks and KubeJS. We’ll go into this in greater depth in a future chapter, but be aware that there’s work involved.
Okay, so what about mod stability? Modded Minecraft is about as stable as a plate of jello, but even still, you want to be sure that it holds together as well as possible. To ensure you’re choosing mods as stable as possible, check a few things before you add them.
- Download count/age: If a mod has 14 million downloads, it will generally be more stable than one with only 1400 downloads, because it has been well-established and gotten a LOT of bug reports over its lifetime. In general, I avoid brand new mods in modpacks because they are untested elements. I will use Curseforge to “Watch” the project for updates, and add it once it’s gotten a little more polished.
- Dev activity: if a mod gets frequent updates, it means the developers are actively listening and acting on community feedback, which means that any bugs which might pop up will be fixed faster than otherwise. It also sometimes means they add more content, which is usually a good thing!
- Check the issue tracker: Firstly, check that they have an issue tracker. Some mods don’t, and I would generally recommend to avoid those as it could be harder to get bugs fixed. Some may only accept bug reports through their discord, which is frustrating but better than nothing. Ideally they’ll have a Curseforge Issues page or, even better, a Github one. Check these pages and see how many outstanding issues there are, and how old they are. See how many of them have developer response. If there are many open issues, spanning across over a year, with little to no developer response, then it’s likely the mod is abandoned and you won’t get any support with it.
But what if the mod is abandoned, has a major outstanding bug, but I REALLY want it? Well, you can still add it, but you will have to find a way to deal with things on your own. For example, if the mod adds an item which always crashes the game when you place it down - you can use KubeJS and datapacks to hide and remove access to that item. Or you can find a way via quests or error messages to warn a player about a particular bug or issue. But you should expect that users will come to you when a mod behaves badly, so be prepared to answer for the mistakes of the abandoned mod.
How Many Mods Should I Pick?
This question doesn’t have a hard-and-fast answer, because it really depends on personal preference (and what your PC can handle). My preference is to have 2-3 major gameplay content mods, a handful of mods which flesh out the world (biomes, creatures, building blocks, and so on), and then a whole bunch of smaller mods which add quality of life features or items. I usually aim for under 400 mods, but understand that it’s VERY easy to hit 300+ mods, considering how many mods add 1-3 library dependencies. And if you add in performance mods, your mod count will go up even though the pack will run smoother as a result. So remember that the numbers aren’t a great metric for how heavy a pack is, and as long as you’re focusing on stability, you should be fine.
Your Mod List Will Fluctuate
Something that’s really important to address is that your mod list will absolutely fluctuate during development. As you’re working in-game with mods and playtesting, you’ll naturally come up against issues that you want a modded fix for, or come across dealbreakers in mods you thought you’d definitely keep. It’s common to add and remove mods frequently during development, so stay flexible!
About OptiFine
For a long time, OptiFine was a ubiquitous performance mod which gained an almost cult-like following due to its occasionally-incredible features. For many people it could boost FPS an insane amount, and it also allowed for features like shaders, custom entity models, connected textures, dynamic lights, glowing items and more! However, it does so in a VERY destructive way, and causes crashes or bugs with an unbelievable amount of mods - to the point where a majority of mod makers will refuse to offer support to people who use it, as the issue is almost always on OptiFine’s end. The OptiFine team generally do not fix these bugs, and all their source code is completely closed, so no one else can troubleshoot the issue and provide compatibility patches. Here’s a little write up about it, if you’re curious.
In the years since OptiFine reigned supreme, a number of mods have come out which provide the same, or better, benefit. These mods have the added bonus of generally being open source, and are well-supported, unlike OF. If you’re planning on doing a Fabric modpack, you can use Fabulously Optimized as a basis. If you’re looking for Forge, you can use the following mods:
For Optifine Resource Packs:
Fusion (may require additional configuration of resource packs)
For Shaders:
For Performance:
We will cover this in a separate section of the series.