aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/at/hannibal2
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/at/hannibal2')
-rw-r--r--src/main/java/at/hannibal2/skyhanni/tweaker/ModLoadingTweaker.java51
-rw-r--r--src/main/java/at/hannibal2/skyhanni/tweaker/SkyHanniTweaker.java1
2 files changed, 52 insertions, 0 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/tweaker/ModLoadingTweaker.java b/src/main/java/at/hannibal2/skyhanni/tweaker/ModLoadingTweaker.java
new file mode 100644
index 000000000..418fa62ef
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/tweaker/ModLoadingTweaker.java
@@ -0,0 +1,51 @@
+package at.hannibal2.skyhanni.tweaker;
+
+
+import net.minecraft.launchwrapper.ITweaker;
+import net.minecraft.launchwrapper.LaunchClassLoader;
+import net.minecraftforge.fml.relauncher.CoreModManager;
+import org.spongepowered.asm.launch.MixinBootstrap;
+
+import java.io.File;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.util.List;
+
+/**
+ * The mod loading tweaker makes sure that we are recognized as a Forge Mod, despite having a Tweaker.
+ * We also add ourselves as a mixin container for integration with other mixin loaders.
+ *
+ * Taken from https://github.com/NotEnoughUpdates/NotEnoughUpdates/blob/20821e63057add096e314310ea8fa8e0c411e964/src/main/java/io/github/moulberry/notenoughupdates/loader/ModLoadingTweaker.java
+ */
+public class ModLoadingTweaker implements ITweaker {
+ @Override
+ public void acceptOptions(List<String> args, File gameDir, File assetsDir, String profile) {
+ URL location = ModLoadingTweaker.class.getProtectionDomain().getCodeSource().getLocation();
+ if (location == null) return;
+ if (!"file".equals(location.getProtocol())) return;
+ try {
+ MixinBootstrap.getPlatform().addContainer(location.toURI());
+ String file = new File(location.toURI()).getName();
+ CoreModManager.getIgnoredMods().remove(file);
+ CoreModManager.getReparseableCoremods().add(file);
+ } catch (URISyntaxException e) {
+ System.err.println("SkyHanni could not re-add itself as mod.");
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ public void injectIntoClassLoader(LaunchClassLoader classLoader) {
+
+ }
+
+ @Override
+ public String getLaunchTarget() {
+ return null;
+ }
+
+ @Override
+ public String[] getLaunchArguments() {
+ return new String[0];
+ }
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/tweaker/SkyHanniTweaker.java b/src/main/java/at/hannibal2/skyhanni/tweaker/SkyHanniTweaker.java
index 6cdb1b204..0cede967d 100644
--- a/src/main/java/at/hannibal2/skyhanni/tweaker/SkyHanniTweaker.java
+++ b/src/main/java/at/hannibal2/skyhanni/tweaker/SkyHanniTweaker.java
@@ -20,6 +20,7 @@ public class SkyHanniTweaker implements ITweaker {
public void acceptOptions(List<String> args, File gameDir, File assetsDir, String profile) {
List<String> tweakClasses = (List<String>) Launch.blackboard.get("TweakClasses");
tweakClasses.add(MixinTweaker.class.getName());
+ tweakClasses.add(ModLoadingTweaker.class.getName());
}
@Override