Skip to content

Continuation of Yhetti's Deco Addon for Better than Wolves

Notifications You must be signed in to change notification settings

BTW-Community/Deco-Addon-2

Repository files navigation

BTW-gradle-fabric-example

This repository is based on the BTW-Gradle and the Example Mod repositories, combining them to enable fabric development for the Better Than Wolves mod. This repository was only tested for client-side development yet.

Quick Start

  • Clone this repository
  • Acquire the full BTW sources and put them under src/btw/java
  • (Optional) Put the BTW resources (textures, etc.) under src/btw/resources
  • Run the gradle task btwJar
  • Run the gradle task build and then runClient
  • (Optional) Put the vanilla MC resources (sounds) under run/resources

BTW Source Code

To get access to the Better Than Wolves source code, please refer to the BTW-Gradle repository or (alternatively) the BTW-Public repository, which also offers a way to generate the sources.

Development

Similar to the BTW-Gradle project, this repository comes with a few configuration files for IntelliJ IDEA.

In this repository, there is an example implementation of a fabric mod that is a BTW-Addon at the same time. Base class overwrites, either for initializing your BTW-Addon or for changes to the functionality of MC are in many cases not needed anymore. (But they are still possible, put the overwriting-sources under main/java/net/minecraft/src. This requires your mod to be loaded as a coremod, which is currently not supported in a dev-environment - only in production.) The addon initialization is taken care of by the PreLaunchInitializer.

For functionality changes to base classes, please have a look at mixins, which enable you to inject code at runtime, offering much better compatibility. Most fabric-mixin tutorials should apply here, but keep in mind that no fabric-api is available yet, just bare mixins. An even more powerful alternative is fabric-asm, but this has not been tested yet.

If you use reflection, please keep in mind that it is now, in many cases at least, not needed anymore, in addition to the fact that fabric remaps Minecraft at runtime into an intermediary form, which is different from the obfuscated one. To get the intermediary names of classes, fields, and methods, have a look at the mappings under custom_mappings.

Releasing Mods/Addons

If you want to run fabric mods with BTW in a non-dev environment, you have to either use the BTW-fabric MultiMC instance (recommended) or follow the installation instructions for the Vanilla launcher.

Drop on by the discord server if you need help: BTW Discord.

The mod file for the release is generated by the Gradle task remapJar and then put into release.

After successfully importing the MultiMC instance, you can put your mod file into the mods folder of your installation. If it is a coremod, put it into coremods.

Issues & Troubleshooting

More troubleshooting is still todo. Feel free to message me on Discord.

MultiMC Remarks

  • The MultiMC instance should support most BTW versions and their addons, install them normally via Add to Minecraft.jar.
  • Addons developed outside of the fabric environment that use Java reflection might not work if they reference obfuscated names via Strings (as mentioned above). Porting those addons is a simple process though, as only the new intermediary names have to be adopted.