aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/io/github/moulberry/notenoughupdates/loader/ModLoadingTweaker.java
diff options
context:
space:
mode:
authorRoman / Linnea Gräf <roman.graef@gmail.com>2022-11-22 20:22:20 +0100
committerGitHub <noreply@github.com>2022-11-22 20:22:20 +0100
commita17412e1f1c829dd6d085b4849dae4ca571fd16b (patch)
treeaa7b0edebbe8f027d2e093fb534c35fb16a3ec2f /src/main/java/io/github/moulberry/notenoughupdates/loader/ModLoadingTweaker.java
parent3d37cee20ddcf92b47144cb1e3ae25785a5e8bc2 (diff)
downloadnotenoughupdates-a17412e1f1c829dd6d085b4849dae4ca571fd16b.tar.gz
notenoughupdates-a17412e1f1c829dd6d085b4849dae4ca571fd16b.tar.bz2
notenoughupdates-a17412e1f1c829dd6d085b4849dae4ca571fd16b.zip
Terrible Kotlin! (#435)
* Terrible Kotlin! You are unloved and everybody dies * Load Kotlin via a Tweaker * Fix version comparison * Allow user to prevent loading of Kotlin libraries using system properties * Remove testing files
Diffstat (limited to 'src/main/java/io/github/moulberry/notenoughupdates/loader/ModLoadingTweaker.java')
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/loader/ModLoadingTweaker.java67
1 files changed, 67 insertions, 0 deletions
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/loader/ModLoadingTweaker.java b/src/main/java/io/github/moulberry/notenoughupdates/loader/ModLoadingTweaker.java
new file mode 100644
index 00000000..c3428046
--- /dev/null
+++ b/src/main/java/io/github/moulberry/notenoughupdates/loader/ModLoadingTweaker.java
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) 2022 Linnea Gräf
+ *
+ * This file is part of NotEnoughUpdates.
+ *
+ * NotEnoughUpdates is free software: you can redistribute it
+ * and/or modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation, either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * NotEnoughUpdates is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with NotEnoughUpdates. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+package io.github.moulberry.notenoughupdates.loader;
+
+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.
+ */
+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("NEU 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];
+ }
+}