Note: While the standalone tool still exists, this functionality is also included in MCUpdater itself in the “Create Modpacks” tab
FastPack is a command-line tool that scans a directory tree for mods and config files and builds a ServerPack.xml from what it finds. It is not the sharpest crayon in the box, but it can save you a lot of time building and updating your pack when the time comes.
A lot of FP’s usage is either mind-numbingly obvious or arcane beyond the scope of this basic document (which is current as of FastPack 1.6.11 – July 12, 2015). I am only going to cover basic use here with a few simple examples. More specific details will be forthcoming in blog posts and Q&A pages.
FastPack is under active development, with new features and intelligence added regularly. So if it has been more than a few weeks since you last used it, I recommend downloading a fresh copy.
The most recent version is always available at http://files.mcupdater.com/MCU-FastPack-latest.jar.
There is no GUI for FastPack (we’ve had bad luck with graphical pack builders in the past), so to make things work, you will need to be comfortable typing at a command prompt. As our target audience is composed of people running their own Minecraft servers, I will quite blithely assume that you know how to open up a dos prompt or bash shell to the correct directory.
Since this is a jarfile we are executing from the command line, all FastPack calls will tend to be of the form java -jar MCU-FastPack-latest.jar
(or whatever you may have renamed the jarfile to).
If you don’t provide any further parameters, it will give you an error saying which flags are absolutely required to get any output. For a list of all supported arguments, run FastPack with --help
like so:
$ java -jar MCU-FastPack-latest.jar --help Option Description ------ ----------- --autoConnect <Boolean> Auto-connect to server on launch (default: true) --baseURL Base URL for downloads --configsOnly Generate all mods as overrides with ConfigFile entries --debug Output full config matching data --forge Forge version --help Shows this help --iconURL URL of icon to display in instance list (default: ) --id Server ID (default: fastpack) --mainClass Main class for launching Minecraft (default: net.minecraft.launchwrapper.Launch) --mc Minecraft version --mcserver Server address (default: ) --name Server name (default: FastPack Instance) --newsURL URL to display in the News tab (default: about:blank) --noConfigs Do not generate ConfigFile entries --out XML file to write --path Path to scan for mods and configs --revision Revision string to display (default: 1) --xslt Path of XSLT file (default: )
The options highlighted above are the bare minimum requirement for FastPack to run: --path
, --baseURL
, --mc
, and --out
. So for an example, I could do this with an empty directory:
$ ls example/ $ java -jar MCU-FastPack-latest.jar --path example --baseURL http://files.mcupdater.com/example --mc 1.7.10 --out EmptyExample.xml Assigning configs to mods =============== $
The net result is a perfectly usable, perfectly useless MCU serverpack:
<?xml version="1.0" encoding="UTF-8"?> <ServerPack version="3.3" xmlns="http://www.mcupdater.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mcupdater.com http://files.mcupdater.com/ServerPackv2.xsd"> <Server id="fastpack" name="FastPack Instance" newsUrl="about:blank" version="1.7.10" mainClass="net.minecraft.launchwrapper.Launch" revision="1" autoConnect="true"> </Server> </ServerPack>
This XML will load into MCU but won’t download any mods, etc… It won’t even install Forge, so let’s remedy that.
Suppose I am creating a fresh pack for a new server called FastPack Test (because I am brimming with creativity at the moment). At the very least, I would start by modifying the command above to get something that looks closer to this:
$ java -jar MCU-FastPack-latest.jar --path fptest --baseURL http://files.mcupdater.com/fptest --mc 1.7.10 --out FPTest.xml --id fptest --name "FastPack Test" --forge 10.13.4.1448
Now when we run FP, we’ll get an ever-so-slightly more useful XML back:
<?xml version="1.0" encoding="UTF-8"?> <ServerPack version="3.3" xmlns="http://www.mcupdater.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mcupdater.com http://files.mcupdater.com/ServerPackv2.xsd"> <Server id="fptest" name="FastPack Test" newsUrl="about:blank" version="1.7.10" mainClass="net.minecraft.launchwrapper.Launch" revision="1" autoConnect="true"> <Import url="http://files.mcupdater.com/example/forge.php?mc=1.7.10&forge=10.13.4.1448">forge</Import> <Module name="Minecraft Forge" id="forge-10.13.4.1448" depends="" side="BOTH"> <Size>100000</Size> <Required>true</Required> <ModType order="1">Override</ModType> </Module> </Server> </ServerPack>
In addition to populating the server ID and name attributes for us, it now also constructs an appropriate Forge import and a dummy Override
to make the progress bar go a little nicer. You could safely remove the entire extra mod entry or you could update the Size to match the actual size of the forge jar if you wanted. Or you can just ignore it as good enough 😉
Now let’s add some mods. FP looks for mods in all folders below the --path
that you start the search off in. For sanity, I’m going to put some mods under fptest/mods/
like so:
fptest └── mods ├── ebxs-autumn-woods-0.0.3.jar └── ebxs-core-0.1.3.jar
Now, when we re-run the exact same command as above, we see some additional output on the console:
fptest/mods/ebxs-autumn-woods-0.0.3.jar: 70 entries in file. fptest/mods/ebxs-core-0.1.3.jar: 63 entries in file.
This lets us know that it identified and parsed the two mods, and sure enough, it added them to the xml, yielding an entry for EBXS Core that looks like this:
<Module name="Extrabiomes Core" id="ExtrabiomesCore" depends="" side="BOTH"> <URL priority="0">http://files.mcupdater.com/fptest/mods/ebxs-core-0.1.3.jar</URL> <Size>55660</Size> <Required>true</Required> <ModType>Regular</ModType> <MD5>5f632b403a23a3d7ac2eadf0f68a393d</MD5> <Meta> <credits>Extrabiomes Team</credits> <description>Core functionality of all Extrabiomes mods.</description> <version>0.1.3</version> <url>http://extrabiomes.com/core</url> <authors>allaryin</authors> </Meta> </Module>
NOW we’re talking. It did a lot of things here:
- It constructed a download URL based on the base url and path provided.
- It measured the size of the download so the GUI can display a better progress bar.
- It assumed that the mod is both
<Required/>
andRegular
. - It calculated the MD5 checksum of the mod.
- It looked inside the jarfile and read the mcmod.info file and pulled out some metadata for generating a modlist.
Let’s add one more mod to the mix, along with its associated config file, so now our final directory structure for the silly modpack in question looks like this:
fptest ├── config │ └── Carnivora.cfg └── mods ├── carnivora-0.1.3.jar ├── ebxs-autumn-woods-0.0.3.jar └── ebxs-core-0.1.3.jar
When we run FastPack a final time, the results look like this:
$ java -jar MCU-FastPack-latest.jar --path fptest --baseURL http://files.mcupdater.com/fptest --mc 1.7.10 --out FPTest.xml --id fptest --name "FastPack Test" --forge 10.13.4.1448 fptest/mods/carnivora-0.1.3.jar: 32 entries in file. fptest/mods/ebxs-autumn-woods-0.0.3.jar: 70 entries in file. fptest/mods/ebxs-core-0.1.3.jar: 63 entries in file. Assigning configs to mods =============== config/Carnivora.cfg: >Carnivora - -20 (potential) config/Carnivora.cfg: Carnivora (-20)
It identified the three mods correctly then it looked through additional files, assuming that they were configs. It did some pattern matching between what it knows about the mods in the list and the filenames of the configs to determine that config/Carnivora.cfg
belonged to the mod named “Carnivora”, and generated the following XML for its entire mod entry:
<Module name="Carnivora" id="Carnivora" depends="" side="BOTH"> <URL priority="0">http://files.mcupdater.com/fptest/mods/carnivora-0.1.3.jar</URL> <Size>21920</Size> <Required>true</Required> <ModType>Regular</ModType> <MD5>636691913dee65f56d1557f2b33716c5</MD5> <Meta> <credits>zenth - art</credits> <description>Eat more meat!</description> <version>0.1.3</version> <url>http://mods.mcupdater.com/carnivora/</url> <authors>allaryin</authors> </Meta> <ConfigFile> <URL>http://files.mcupdater.com/fptest/config/Carnivora.cfg</URL> <Path>config/Carnivora.cfg</Path> <NoOverwrite>false</NoOverwrite> <MD5>0dd31a6e8c2a9220554fcd615261b583</MD5> </ConfigFile> </Module>
Sometimes there are problems with matching mods with configs, but in cases like this where the names are identical, it works like a dream 🙂