aboutsummaryrefslogtreecommitdiff
path: root/versions/src
diff options
context:
space:
mode:
authorWyvest <45589059+Wyvest@users.noreply.github.com>2022-08-06 19:56:02 +0900
committerGitHub <noreply@github.com>2022-08-06 12:56:02 +0200
commitc79dc3cf7b3750aa03fb33a07b4af044b37f9407 (patch)
treeb593104ebb8e60b31744fb16f70787300194f87e /versions/src
parent8319a68d09f0ef8a771d16b274b1737e21cd3500 (diff)
downloadOneConfig-c79dc3cf7b3750aa03fb33a07b4af044b37f9407.tar.gz
OneConfig-c79dc3cf7b3750aa03fb33a07b4af044b37f9407.tar.bz2
OneConfig-c79dc3cf7b3750aa03fb33a07b4af044b37f9407.zip
new: add forge config button compat (#80)
Diffstat (limited to 'versions/src')
-rw-r--r--versions/src/main/java/cc/polyfrost/oneconfig/internal/OneConfig.java66
1 files changed, 65 insertions, 1 deletions
diff --git a/versions/src/main/java/cc/polyfrost/oneconfig/internal/OneConfig.java b/versions/src/main/java/cc/polyfrost/oneconfig/internal/OneConfig.java
index 7eb5ef9..398aceb 100644
--- a/versions/src/main/java/cc/polyfrost/oneconfig/internal/OneConfig.java
+++ b/versions/src/main/java/cc/polyfrost/oneconfig/internal/OneConfig.java
@@ -1,10 +1,13 @@
package cc.polyfrost.oneconfig.internal;
+import cc.polyfrost.oneconfig.config.data.Mod;
+import cc.polyfrost.oneconfig.config.data.ModType;
import cc.polyfrost.oneconfig.events.EventManager;
import cc.polyfrost.oneconfig.events.event.ShutdownEvent;
import cc.polyfrost.oneconfig.internal.command.OneConfigCommand;
import cc.polyfrost.oneconfig.internal.config.OneConfigConfig;
import cc.polyfrost.oneconfig.internal.config.Preferences;
+import cc.polyfrost.oneconfig.internal.config.compatibility.forge.ForgeCompat;
import cc.polyfrost.oneconfig.internal.config.core.ConfigCore;
import cc.polyfrost.oneconfig.internal.config.core.KeyBindHandler;
import cc.polyfrost.oneconfig.internal.gui.BlurHandler;
@@ -13,10 +16,21 @@ import cc.polyfrost.oneconfig.libs.eventbus.Subscribe;
import cc.polyfrost.oneconfig.utils.commands.CommandManager;
import cc.polyfrost.oneconfig.utils.gui.GuiUtils;
import cc.polyfrost.oneconfig.utils.hypixel.HypixelUtils;
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.gui.GuiScreen;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
+//#if FORGE==1
+import net.minecraftforge.fml.common.ModContainer;
+//#endif
+
+//#if MC<=11202
+import net.minecraftforge.fml.client.FMLClientHandler;
+import net.minecraftforge.fml.client.IModGuiFactory;
+import net.minecraftforge.fml.common.Loader;
+//#endif
-import java.io.File;
+import java.util.Map;
/**
* The main class of OneConfig.
@@ -50,6 +64,56 @@ public class OneConfig {
if (Preferences.getInstance() == null) {
Preferences.getInstance();
}
+ //#if FORGE==1
+ //#if MC<=11202
+ for (ModContainer mod : Loader.instance().getActiveModList()) {
+
+ IModGuiFactory factory = FMLClientHandler.instance().getGuiFactoryFor(mod);
+ //#if MC<=10809
+ if (factory == null || factory.mainConfigGuiClass() == null) continue;
+ //#else
+ //$$ if (factory == null || !factory.hasConfigGui()) continue;
+ //#endif
+ ForgeCompat.compatMods.put(new ForgeCompat.ForgeCompatMod(mod.getName(), ModType.THIRD_PARTY), () -> {
+ try {
+ GuiUtils.displayScreen(
+ //#if MC<=10809
+ factory.mainConfigGuiClass().getConstructor(GuiScreen.class).newInstance(Minecraft.getMinecraft().currentScreen)
+ //#else
+ //$$ factory.createConfigGui(Minecraft.getMinecraft().currentScreen)
+ //#endif
+ );
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ });
+ }
+ //#else
+ //$$ try {
+ //$$ java.lang.reflect.Field mods = net.minecraftforge.fml.ModList.class.getDeclaredField("mods");
+ //$$ mods.setAccessible(true);
+ //$$ for (ModContainer container : ((java.util.List<ModContainer>) mods.get(net.minecraftforge.fml.ModList.get()))) {
+ //$$ try {
+ //$$ java.util.Optional<java.util.function.BiFunction<Minecraft, net.minecraft.client.gui.screen.Screen, net.minecraft.client.gui.screen.Screen>> gui = container.getCustomExtension(net.minecraftforge.fml.ExtensionPoint.CONFIGGUIFACTORY);
+ //$$ gui.ifPresent(minecraftScreenScreenBiFunction -> ForgeCompat.compatMods.put(new ForgeCompat.ForgeCompatMod(container.getModId(), ModType.THIRD_PARTY), () -> {
+ //$$ net.minecraft.client.gui.screen.Screen screen = minecraftScreenScreenBiFunction.apply(Minecraft.getInstance(), Minecraft.getInstance().currentScreen);
+ //$$ if (screen != null) {
+ //$$ GuiUtils.displayScreen(screen);
+ //$$ }
+ //$$ }));
+ //$$ } catch (Exception e) {
+ //$$ e.printStackTrace();
+ //$$ }
+ //$$ }
+ //$$ } catch (Exception e) {
+ //$$ e.printStackTrace();
+ //$$ }
+ //#endif
+
+ for (Map.Entry<Mod, Runnable> entry : ForgeCompat.compatMods.entrySet()) {
+ ConfigCore.mods.add(entry.getKey());
+ }
+ //#endif
GuiUtils.getDeltaTime(); // called to make sure static initializer is called
try {
EventManager.INSTANCE.register(BlurHandler.INSTANCE);