From d76e7a1db6826b9446c46ddf77ba51aeda4cb9b2 Mon Sep 17 00:00:00 2001 From: Irtimaled Date: Thu, 31 Jan 2019 23:12:58 -0800 Subject: [PATCH] Add support for mods with no listeners In some cases the only reason for a listener is to allow mixin configuration to be registered. This change allows for a mod creator to specify the mixins configuration filename(s) and Rift will add them to the configuration. e.g. { "id": "modid", "name": "Example mod", "authors": [ "me" ], "mixins": [ "mixins.modid.json" ] } Another benefit for doing this is that some vanilla-only mods can use this without having to mess with their existing build.gradle... Just add a riftmod.json and be done. --- src/main/java/org/dimdev/riftloader/ModInfo.java | 1 + src/main/java/org/dimdev/riftloader/RiftLoader.java | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/src/main/java/org/dimdev/riftloader/ModInfo.java b/src/main/java/org/dimdev/riftloader/ModInfo.java index 29ac3ab..c17ac70 100644 --- a/src/main/java/org/dimdev/riftloader/ModInfo.java +++ b/src/main/java/org/dimdev/riftloader/ModInfo.java @@ -45,4 +45,5 @@ public Listener(String className) { public String name; public List authors = new ArrayList<>(); public List listeners = new ArrayList<>(); + public List mixins = new ArrayList<>(); } diff --git a/src/main/java/org/dimdev/riftloader/RiftLoader.java b/src/main/java/org/dimdev/riftloader/RiftLoader.java index 11b4575..6b485e3 100644 --- a/src/main/java/org/dimdev/riftloader/RiftLoader.java +++ b/src/main/java/org/dimdev/riftloader/RiftLoader.java @@ -12,6 +12,7 @@ import org.dimdev.utils.InstanceListMap; import org.dimdev.utils.InstanceMap; import org.dimdev.utils.ReflectionUtils; +import org.spongepowered.asm.mixin.Mixins; import java.io.File; import java.io.IOException; @@ -195,6 +196,14 @@ private void initMods() { listener.onInitialization(); } + // Load the mixins + for (ModInfo modInfo : modInfoMap.values()) { + if (modInfo.mixins != null) { + for (String mixin : modInfo.mixins) { + Mixins.addConfigurations(mixin); + } + } + } log.info("Done initializing mods"); }