blob: b8e860888559bb54caf391e003d438ddaa194a9c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
# Forge Mod API
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
If you wish to contribute to this implementation of the Mod API to offer improvements or fixes, you can do so by forking the repository and creating a pull request.
> [!IMPORTANT]
> Run `gradlew setupDecompWorkspace` after importing the project to generate the files required to build it
If IntelliJ still shows unknown symbol errors after running the command, you may need to [clear the filesystem cache](https://www.jetbrains.com/help/idea/invalidate-caches.html).
### Testing Your Changes
You can enable DevAuth to log in to the Hypixel server with your Minecraft account. Please see the [DevAuth docs](https://github.com/DJtheRedstoner/DevAuth) for more details.
|