From 4531d8c1f808fa2f768cda638b26e9d33fb71750 Mon Sep 17 00:00:00 2001 From: HypherionMC Date: Sat, 4 Nov 2023 01:17:31 +0200 Subject: [PATCH] Populate readme file. To be improved later on --- readme.md | 108 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 107 insertions(+), 1 deletion(-) diff --git a/readme.md b/readme.md index 4426452..aa22e0d 100644 --- a/readme.md +++ b/readme.md @@ -1,3 +1,109 @@ ## ModFusioner -// TODO \ No newline at end of file +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: + +![badge](https://maven.firstdarkdev.xyz/api/badge/latest/releases/com/hypherionmc/modutils/modfusioner?color=40c14a&name=modfusioner) + +```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 \ No newline at end of file