From 694a2e1fbf6eedeffcd3faff92ea2e4a9362e731 Mon Sep 17 00:00:00 2001 From: Linnea Gräf Date: Fri, 12 Jul 2024 22:56:16 +0200 Subject: Add docs --- README.md | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 64 insertions(+), 1 deletion(-) (limited to 'README.md') diff --git a/README.md b/README.md index bf922d2..b8e8608 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,69 @@ # Forge Mod API -This repository contains the implementation of the Hypixel Mod API for the Froge Mod Loader in 1.8.9 for end-users. If you are a developer, and are looking to utilise the API you should look at the core [Hypixel Mod API](https://github.com/HypixelDev/ModAPI) repository. +This repository contains the implementation of the Hypixel Mod API for the Forge Mod Loader in 1.8.9 for end-users. If you are a developer, and are looking to utilise the API you should look at the core [Hypixel Mod API](https://github.com/HypixelDev/ModAPI) repository. + +## Usage + +Add the HyPixel Maven repository to your build: + +```kotlin +repositories { + maven("https://repo.hypixel.net/repository/Hypixel/") +} +``` + +Then depend on the Forge Mod API. This will automatically pull in dependencies too. + +```kotlin +val version = "1.0.0.2" +dependencies { + modImplementation("net.hypixel:mod-api-forge:$version") + // If you use ForgeGradle 2 you might need to use fg.deobf or deobfCompile instead. Consult your MDK for tips on how + // to depend on an obfuscated dependency +} +``` + +From here on out you can use the [HyPixel Mod API](https://github.com/HypixelDev/ModAPI#example-usage) directly. + +### Bundling the HyPixel Mod API + +When using the HyPixel Mod API you need to instruct your users to +[download](https://modrinth.com/mod/hypixel-mod-api/versions?l=forge) the mod api and put it in their mods folders. + +Alternatively you can bundle a loading tweaker instead. This involves a bit more setup, but will result in your mod +containing a copy of the mod api and at runtime selecting the newest available version of the mod api. + +First you need to have a shadow plugin in your gradle setup. Note that normal `fileTree` based JAR copying does not +work, since we will need to relocate some files. Instead, use the [shadow plugin](https://github.com/johnrengelman/shadow) +or make use of a [template](https://github.com/nea89o/Forge1.8.9Template) with the plugin already set up. + +Once you have your shadow plugin set up you will need to include a new dependency: +```kotlin +dependencies { + modImplementation("net.hypixel:mod-api-forge:$version") // You should already have this dependency from earlier + shadowImpl("net.hypixel:mod-api-forge-tweaker:$version") // You need to add this dependency +} +``` + +Make sure to relocate the `net.hypixel.modapi.tweaker` package to a unique location such as `my.modid.modapitweaker`. + +Finally, add a manifest entry to your JAR pointing the `TweakClass` to `my.modid.modapitweaker.HypixelModAPITweaker` +(or otherwise load the tweaker using delegation). + +```kotlin +tasks.shadowJar { + configurations = listOf(shadowImpl) + relocate("net.hypixel.modapi.tweaker", "my.modid.modapitweaker.HypixelModAPITweaker") +} + +tasks.withType(org.gradle.jvm.tasks.Jar::class) { + manifest.attributes.run { + this["TweakClass"] = "my.modid.modapitweaker.HypixelModAPITweaker" + } +} +``` + +Now your users will automatically use the bundled version of the mod api. ## Contributing -- cgit