109 lines
4.1 KiB
Markdown
109 lines
4.1 KiB
Markdown
## ModFusioner
|
|
|
|
ModFusioner is a gradle plugin that allow you to merge multiple mod jars into a single jar. It's intended to be used by multi-loader projects created with Architectury, MultiLoader Template or unimined.
|
|
|
|
This plugin is based on, and contains code from [Forgix](https://github.com/PacifistMC/Forgix), but with massive optimizations, additional features and bug fixes.
|
|
|
|
***
|
|
|
|
### Usage
|
|
|
|
To use this plugin inside your project, first you have to add our maven.
|
|
|
|
To does this, open up settings.gradle and add the following:
|
|
|
|
```groovy
|
|
pluginManagement {
|
|
repositories {
|
|
gradlePluginPortal()
|
|
maven {
|
|
url "https://maven.firstdarkdev.xyz/releases"
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
Next, in your ROOT `build.gradle` add:
|
|
|
|

|
|
|
|
```groovy
|
|
plugins {
|
|
id "com.hypherionmc.modutils.modfusioner" version "1.0.+"
|
|
}
|
|
```
|
|
|
|
Finally, add the following to your ROOT `build.gradle` file:
|
|
|
|
```groovy
|
|
fusioner {
|
|
packageGroup = project.group // Package group of the merged jar. For example com.mymod.awesome
|
|
mergedJarName = "MyModMerged-combo-1.20.2" // The name of the output jar
|
|
outputDirectory = "artifacts/fused" // Where the merged jar will be stored. Defaults to artifacts/fused
|
|
jarVersion = final_version // The version of the mod/jar
|
|
|
|
// Forge Project
|
|
forge {
|
|
projectName = "Forge" // The name of the project that contains the forge code
|
|
inputTaskName = "jar" // The name of the build task for the forge project
|
|
// OR
|
|
// inputFile = "Forge/build/libs/MyMod-1.0.jar" // Use a custom jar input
|
|
|
|
// Mixin configuration files
|
|
// Only required if the plugin doesn't detect it directly
|
|
mixin "${mod_id}.mixins.json"
|
|
mixin "${mod_id}-forge.mixins.json"
|
|
|
|
// Packages that need to be relocated to the specific platform
|
|
addRelocate "me.hypherionmc.mcdiscordformatter", "forge.me.hypherionmc.mcdiscordformatter"
|
|
}
|
|
|
|
// Fabric Project
|
|
fabric {
|
|
projectName = "Fabric" // The name of the project that contains the fabric code
|
|
inputTaskName = "remapJar" // The name of the build task for the forge project
|
|
// OR
|
|
// inputFile = "Fabric/build/libs/MyMod-Fabric-1.0.jar" // Use a custom jar input
|
|
|
|
// Packages that need to be relocated to the specific platform
|
|
addRelocate "me.hypherionmc.mcdiscordformatter", "fabric.me.hypherionmc.mcdiscordformatter"
|
|
}
|
|
|
|
// Quilt Project
|
|
fabric {
|
|
projectName = "Quilt" // The name of the project that contains the quilt code
|
|
inputTaskName = "remapJar" // The name of the build task for the forge project
|
|
// OR
|
|
// inputFile = "Quilt/build/libs/MyMod-Quilt-1.0.jar" // Use a custom jar input
|
|
|
|
// Packages that need to be relocated to the specific platform
|
|
addRelocate "me.hypherionmc.mcdiscordformatter", "fabric.me.hypherionmc.mcdiscordformatter"
|
|
}
|
|
|
|
// For "custom", the "projectName" is a required value.
|
|
custom {
|
|
projectName = "sponge" // This is the name of the project. This is a required field.
|
|
inputTaskName = "jar" // The name of the build task for the forge project
|
|
// OR
|
|
// inputFile = "sponge/build/libs/MyMod-Sponge-1.0.jar" // Use a custom jar input
|
|
|
|
additionalRelocate "org.my.lib" "sponge.org.my.lib" // This is an important one to know. This is how you can remap additional packages such as libraries and stuff.
|
|
additionalRelocate "org.my.lib.another" "sponge.org.my.lib.another"
|
|
}
|
|
|
|
// Remove duplicate libraries or packages. Useful if you have shaded libraries in your mod
|
|
relocateDuplicate "com.hypherionmc.sdlink.shaded"
|
|
}
|
|
```
|
|
|
|
Most values are optional, so you can only configure what you need. You need at least 2 projects in order for this plugin to work.
|
|
|
|
For additional help, please visit our [Discord Server](https://discord.firstdark.dev)
|
|
|
|
***
|
|
|
|
#### Credits & Licenses
|
|
|
|
Thanks to the Forgix authors for making the original plugin. It's an amazing plugin!
|
|
|
|
Plugin code is licensed under LGPL-2.1, which is the same as the original code it's based on |