diff options
author | hannibal2 <24389977+hannibal002@users.noreply.github.com> | 2024-06-14 23:04:20 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-06-14 23:04:20 +0200 |
commit | 0fc02d329541afe6772dfa132cb0c64ca05d1556 (patch) | |
tree | b03e4bf7cf8d6bdf7c935b8a640f3a187b95e9e9 /src/main/java | |
parent | 53a5f4d53d7a41c650777ebe5f91afd074df602c (diff) | |
download | skyhanni-0fc02d329541afe6772dfa132cb0c64ca05d1556.tar.gz skyhanni-0fc02d329541afe6772dfa132cb0c64ca05d1556.tar.bz2 skyhanni-0fc02d329541afe6772dfa132cb0c64ca05d1556.zip |
Backend: Fixed SkyHanni not being a mod (#2099)
Co-authored-by: nea <nea@nea.moe>
Co-authored-by: jani270 <69345714+jani270@users.noreply.github.com>
Co-authored-by: hannibal2 <24389977+hannibal00212@users.noreply.github.com>
Diffstat (limited to 'src/main/java')
-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 |