hero-image

When I last wrote about Minecraft modpacks, I was a bit unhappy for a few reasons:

  1. The Technic Platform would not work with Minecraft versions 1.17+
  2. Curseforge, while useful, leverages a proprietary sharing system
  3. Curseforge won't let you share private modpacks to friends aside from sharing profiles

As is probably apparent, I don't update this site very often; blogging is simply not my primary focus. In the time since I last wrote about Minecraft, I've started up a few different modpacks and hosted several of them. This article is intended to be a reflection of my complete process to-date.

It's entirely possible the state of things can change, in which case I will write another article on the topic, but this is likely to be my last modpack-focused article since I feel my process is finally very manageable and easily-repeatable.

Technic Platform Update

The Technic Platform has been my preferred method of hosting and sharing modpacks for years since they don't have an irritatingly-strict approval process like Curseforge. Until Minecraft 1.17, this was not a problem. However, as documented in my post, How to share a Minecraft on Curseforge without review, there was a problem with the launcher that prevented modpacks based on Minecraft version 1.17 and later from working.

I haven't been paying close attention to the state of affairs there since I had primarily been playing on my Windows computer, where the Curseforge app is supported. Since I am actually primarily a Linux user, it once again became relevant when I started playing more on my main computer. Fortunately, the Technic Platform team announced that Minecraft versions 1.17 and later should now be supported on the Technic Launcher.

If you regularly create random modpacks, I strongly recommend using the Technic Platform to share them with friends. You simply upload the zip to some place like Dropbox, configure the modpack in your Technic Platform, then have your friends download the modpack in the launcher - no need to share exported profiles! Additionally, when you need to update the modpack, you can replace the zip file with a new version and flag the modpack as updated in your dashboard; this will trigger anyone with the modpack installed to update as well (be careful, though - some updates can break previous saves).

Creating your base modpack

You will save yourself a ton of time if you create your base modpack in the Curseforge app. The Curseforge app automatically installs dependency mods for you. This is normally something you either have to read in a given mod's documentation, which often don't even have documentation, or wait for the modded instance to start up and give you an error that a mod is missing a dependency; either way, it's much more time consuming than just using the app to create the base modpack. Especially if you are creating a large modpack.

A Minecraft Forge modpacks must follow this file structure:

MODPACK_NAME/
  bin/
  config/
  mods/
  • bin/ - contains the Minecraft Forge Jar file (the modded game client)
  • config/ - contains configuration files for your mods
  • mods/ - contains the Jar files for all mods in your modpack
HEADS UP! I much prefer hosting my modpacks on the Technic platform; the folder structure shown above is only necessary if you intend to host on the Technic platform as well. If you're hosting on Curseforge, the process is very different since you don't need to host any files yourself (but will be subject to a review process that takes time). In short, you don't need to create your own modpack folder if you're hosting it on Curseforge.

There may also need to be other files and/or directories in your modpack. Some mods generate additional files and folders. Not all of these need to be packaged with your modpack's zip file, though; it's up to you to do a little digging to see what should and should not be included (for example, you don't want to include player-specific files, like saves or profiles, in your modpack zip file).

Once you have the base file structure set up, set it aside for use later; the next steps are done either in the Curseforge client or website, depending on the platform you're using.

Picking mods

When it comes to picking mods, your options are either to manually-download them from the Curseforge website, or, for Windows and Mac users, pick them from within the Curseforge desktop client.

If you're using the Curseforge client, adding mods is simply a matter of setting up a custom modpack profile and start adding mods as you see fit. While it's possible to add a mod that causes problems within your modpack (for example, if two mods are conflicting somehow), it's far easier to pick your mods using the Curseforge client than it is using the website.

  • All mods will be filtered to the correct version and mod loader
  • All dependency mods are automatically-added

Downloading from the Curseforge website

If you don't have access to the Curseforge client, this is the process you'll need to follow. This process is fairly manual and a bit error-prone due to the number of steps you need to take. Curseforge could probably streamline this a lot more, but they've actually gone in the opposite direction, presumably to push people towards installing the desktop client; they've even added an extra step showing you an ad for the client after every single download. Consider yourself warned.

  1. Navigate to Curseforge's Minecraft mods page
  2. In the left-hand panel, set the game version to the version you want to use
  3. For each mod you want:
    1. Click the mod to open the main page
      1. Don't click the "Download" button - it ignores your version filter setting and will most-likely lead to the wrong version being downloaded
    2. Click the Files tab
    3. Filter by game version and mod loader
    4. Download the latest version that shows in the filtered list
    5. Place the downloaded Jar file within the mods/ folder of your modpack
Check the "Relations" tab! Since you're downloading manually if you follow this process, there is nothing to automatically-add dependency mods. Fortunately, the "Relations" tab should show you all dependency mods, if any. Most mods don't have dependencies; even so, seeking dependencies takes much longer if you don't do it this way. Even with the "Relations" tab, using the Curseforge client is faster as it does automatically-add dependency mods.

Generating the modpack files

All mods can potentially generate files that you may need to package with your modpack. There are two primary ways I've gone about generating modpack files, depending on the platform:

  1. Linux - Minecraft launcher
  2. Windows/Mac - Curseforge client

Via the Minecraft launcher

The Minecraft launcher can only be configured to run a single modpack at a time; it only has one mods/ and config/ directory. Before you continue:

  • Delete all old mods from .minecraft/mods/
  • Delete all old mod configurations from .minecraft/config/
  • Delete any old mod-specific files generated in .minecraft/
    • Not as common, but mods like Patchouli and Xaero's generate files here

Next, be sure you have the correct version of Minecraft Forge installed. To do this, you'll need to run the installer Jar and install the client to your Minecraft launcher. This will add a new client listed in the "Installations" tab of your Minecraft launcher. You'll use this installation when generating the modpack files.

With your .minecraft/ directory set back to a default state, follow these steps to generate your new modpack's files:

  1. Copy all of the mods you want to use into .minecraft/mods/
  2. Start the Minecraft launcher
  3. Select the Minecraft Forge client installation for your modpack
  4. Run the game client and wait for it to get to the title screen
  5. Close the client once you get to the title screen (since the files should all be generated now)
  6. Copy all of the contents from .minecraft/mods/ into your modpack's mods/ directory
  7. Copy all of the contents from .minecraft/config/ into your modpack's config/ directory
  8. Copy any additional files/folders from .minecraft/ that were generated in step 4 to the root of your modpack directory

That's it! However, the modpack isn't ready to be hosted on the Technic Platform, yet. You still need to get the installer jar, which is covered in the next section.

Via the Curseforge client

The process for generating the modpack files is far simpler in the Curseforge client. Simply run your modpack once and wait until you get to the title screen. This should be all you need to do to generate the modpack files.

After running the game client once, close it out and then click the ellipses icon for your modpack. Select the option to view the modpack's files (not export). Then, do the following:

  1. Copy all of the contents from mods/ into your modpack's mods/ directory
  2. Copy all of the contents from config/ into your modpack's config/ directory
  3. Copy any additional files/folders from the root that were generated to the root of your modpack directory
NOTE: Even though the Curseforge Client does offer a way to export your modpack, the format it exports in is only usable by the Curseforge Client. If you want to host the modpack on the Technic Launcher, ignore the export option entirely.

Obtaining the modpack Jar file

When hosting on the Technic Launcher, you need to include the installer Jar file for the appropriate version of Minecraft Forge with your modpack. This Jar file is used whenever anyone installs your modpack - it installs the Minecraft Forge client, which then installs all mods located in the mods/ directory contained within the modpack's root.

The correct way to add the installer Jar to your modpack is:

  1. Download the Minecraft Forge installer for the version you need
  2. Copy the installer Jar file (don't run it - copy the whole Jar) and paste the copy into your modpack's bin/ folder
    1. NOTE! This installer file is the same one used to install the modded Minecraft Forge client to your vanilla Minecraft launcher
  3. Rename the installer Jar file modpack.jar

Packaging your modpack (for Technic)

Ensure your modpack is formatted correctly - it should look something like this:

MODPACK/
  bin/
  config/
  mods/

Depending on your mod list, there may be other files and folders that should be copied to the root of your modpack. For example, both Patchouli and Xaero's mods generate folders that exist at the root of the modpack installation. If you don't include these generated files/folders, they will be re-generated when the modpack is run for the first time, but this means any customization you made to those files/folders will not exist.

Once you are sure you have all of the contents in the correct place, follow these steps to package your modpack for the Technic Platform:

  1. cd into the root of your modpack
  2. Select all contents within the modpack
  3. Compress the contents into a .zip archive

That's it! The .zip archive is what you'll upload to something like Dropbox; this is effectively your "modpack".

Hosting your modpack on Technic

Once you have the .zip archive for your modpack, the remaining steps are far simpler. Hosting your modpack is simply a matter of finding a hosting service that allows direct-download links. Dropbox is a great option for this.

To use Dropbox to host your modpack, all you need to do is upload the .zip archive to your Dropbox account.

There are no other requirements for hosting your modpack file. The only thing that matters is that the file can be directly-downloaded (some hosting services do not support this - Dropbox does).

Create your Modpack on the Technic Platform

To create a modpack on the Technic Platform, you'll need an account. Once signed in, go to your account's modpacks and create a new one. Configure the fields however you see fit. The most important thing is that you provide the correct download URL. If you're using Dropbox, generate a share link for your modpack's .zip archive and change the end of the URL from dl=0 to dl=1.

Once you're happy with your modpack configuration, publish! You should be able to see your modpack listed in the Technic Launcher very soon after publishing (nearly-immediately, in my testing). Test out installing and running your modpack to make sure everything is working as intended.

Hosting your modpack as a server

This section describes how to host any Minecraft Forge modpack as a server using the itzg/minecraft-server Docker image. There are more settings than I discuss in this section; if you'd like to see the full set of settings, refer to the documentation for more details. The variables and settings discussed in this section are the "bare minimum" for hosting a Minecraft Forge server using this Docker image.

Before you do anything with your modpack files, start with the following process:

  1. Map the /data volume to wherever you intend to store the server files on your machine
  2. Set the TYPE variable to FORGE
  3. Set the MEMORY variable to something appropriate for your modpack (larger modpacks require more memory) - I've historically used something like 12G
  4. Set VERSION to the version of Minecraft that your modpack is based on
  5. Set FORGE_VERSION to the version Forge that you're using
  6. Set JVM_OPTS to the snippet of arguments below
    1. These arguments are intended to improve server performance

JVM_OPTS arguments:

 -XX:+UseG1GC -Dsun.rmi.dgc.server.gcInterval=2147483646 -XX:+UnlockExperimentalVMOptions -XX:G1NewSizePercent=20 -XX:G1ReservePercent=20 -XX:MaxGCPauseMillis=50 -XX:G1HeapRegionSize=32M

Once you have the settings configured, run the container once so that all of the base files and folders are generated in the directory you mapped to the /data volume. Once that's been done, simply do the following:

  1. Copy the mod files from your modpack's mods/ directory to the mods/ directory in the server volume
  2. Copy the config files from your modpacks config/ directory to the config/ directory in the server volume
  3. Copy any additional files/folders from the root of your modpack to the root of the server volume
  4. Delete the world/ folder (since the previous one was generated without any mods installed)

Now, when you start the server up, the mods will install and a new world will generate with all required mod content. You should now be able to access the server at the host computer's IP address and port number for the service (which, by default, is 25565 for Minecraft servers).

IMPORTANT! Many mods are intended to be client-side only; some such mods don't cause any problems when they are installed on the server side, but many client-side only mods can severely-hamper server performance. It's up to you to go through your mod list and prune out any client-side only mods from the server mods.