diff options
Diffstat (limited to 'src/main')
-rw-r--r-- | src/main/java/at/hannibal2/skyhanni/tweaker/ModLoadingTweaker.java | 51 | ||||
-rw-r--r-- | src/main/java/at/hannibal2/skyhanni/tweaker/SkyHanniTweaker.java | 1 |
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 |