From ccd643de62cdea4384826229d798fb7e6a91fa4c Mon Sep 17 00:00:00 2001 From: UnixSupremacist <100294596+unix-supremacist@users.noreply.github.com> Date: Mon, 29 Sep 2025 10:35:43 -0500 Subject: [PATCH 1/4] bump buildscript, add a non typoed resource pack, add angelica, swansong, and notfine support --- dependencies.gradle | 3 +- repositories.gradle | 7 ++- settings.gradle | 2 +- .../lib/actions/ActionOpenGUI.java | 52 ++++++++++++++++++- 4 files changed, 60 insertions(+), 4 deletions(-) diff --git a/dependencies.gradle b/dependencies.gradle index b6456d0..3df14af 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -1,5 +1,6 @@ // Add your dependencies here dependencies { - + implementation("com.ventooth:swansong-mc1.7.10:1.2.1") + compileOnly("com.github.GTNewHorizons:Angelica:1.0.0-beta57:dev") } diff --git a/repositories.gradle b/repositories.gradle index c884390..b495543 100644 --- a/repositories.gradle +++ b/repositories.gradle @@ -1,5 +1,10 @@ // Add any additional repositories for your dependencies here repositories { - + maven{ + url = "https://mvn.ventooth.com/releases/" + } + maven{ + url = "https://mvn.falsepattern.com/releases/" + } } diff --git a/settings.gradle b/settings.gradle index ff436f2..9f80246 100644 --- a/settings.gradle +++ b/settings.gradle @@ -17,7 +17,7 @@ pluginManagement { } plugins { - id 'com.gtnewhorizons.gtnhsettingsconvention' version '1.0.38' + id 'com.gtnewhorizons.gtnhsettingsconvention' version '1.0.43' } diff --git a/src/main/java/lumien/custommainmenu/lib/actions/ActionOpenGUI.java b/src/main/java/lumien/custommainmenu/lib/actions/ActionOpenGUI.java index 0f469e8..6d97046 100644 --- a/src/main/java/lumien/custommainmenu/lib/actions/ActionOpenGUI.java +++ b/src/main/java/lumien/custommainmenu/lib/actions/ActionOpenGUI.java @@ -19,6 +19,7 @@ import net.minecraft.client.stream.IStream; import cpw.mods.fml.client.GuiModList; +import cpw.mods.fml.common.Loader; import lumien.custommainmenu.CustomMainMenu; import lumien.custommainmenu.gui.GuiCustom; @@ -50,6 +51,30 @@ public void perform(Object source, GuiCustom menu) { gui = new GuiLanguage(menu, menu.mc.gameSettings, menu.mc.getLanguageManager()); } else if (this.guiName.equalsIgnoreCase("options.ressourcepacks")) { gui = new GuiScreenResourcePacks(menu); + } else if (this.guiName.equalsIgnoreCase("options.resourcepacks")) { + gui = new GuiScreenResourcePacks(menu); + } else if (this.guiName.equalsIgnoreCase("options.shaderpacks")) { + if (Loader.isModLoaded("angelica")) { + try { + Class guiShadersClass = Class.forName("net.coderbot.iris.gui.screen.ShaderPackScreen"); + java.lang.reflect.Constructor constructor = guiShadersClass.getConstructor(GuiScreen.class); + Object guiInstance = constructor.newInstance(menu.mc.currentScreen); + gui = (GuiScreen) guiInstance; + } catch (Exception e) { + throw new RuntimeException(e); + } + } else if (Loader.isModLoaded("swansong")) { + try { + Class guiShadersClass = Class.forName("com.ventooth.swansong.gui.GuiShaders"); + java.lang.reflect.Constructor constructor = guiShadersClass.getConstructor(GuiScreen.class); + Object guiInstance = constructor.newInstance(menu.mc.currentScreen); + gui = (GuiScreen) guiInstance; + } catch (Exception e) { + throw new RuntimeException(e); + } + } else { + gui = new GuiScreenResourcePacks(menu); + } } else if (this.guiName.equalsIgnoreCase("options.snooper")) { gui = new GuiSnooper(menu, menu.mc.gameSettings); } else if (this.guiName.equalsIgnoreCase("options.sounds")) { @@ -63,7 +88,32 @@ public void perform(Object source, GuiCustom menu) { GuiStreamUnavailable.func_152321_a(menu); } } else if (this.guiName.equalsIgnoreCase("options.video")) { - gui = new GuiVideoSettings(menu, menu.mc.gameSettings); + if (Loader.isModLoaded("notfine")) { + try { + final String OPTION_PAGE_FQN = "me.jellysquid.mods.sodium.client.gui.options.OptionPage"; + Class optionPageClass = Class.forName(OPTION_PAGE_FQN); + Class notFineOptionsClass = Class.forName("jss.notfine.gui.NotFineGameOptionPages"); + Object generalPage = notFineOptionsClass.getMethod("general").invoke(null); + Object detailPage = notFineOptionsClass.getMethod("detail").invoke(null); + Object atmospherePage = notFineOptionsClass.getMethod("atmosphere").invoke(null); + Object particlesPage = notFineOptionsClass.getMethod("particles").invoke(null); + Object otherPage = notFineOptionsClass.getMethod("other").invoke(null); + Object[] subPages = (Object[]) java.lang.reflect.Array.newInstance(optionPageClass, 4); + subPages[0] = detailPage; + subPages[1] = atmospherePage; + subPages[2] = particlesPage; + subPages[3] = otherPage; + Class optionPageArrayClass = Class.forName("[L" + OPTION_PAGE_FQN + ";"); + java.lang.reflect.Constructor constructor = Class.forName("jss.notfine.gui.GuiCustomMenu") + .getConstructor(GuiScreen.class, optionPageClass, optionPageArrayClass); + Object guiInstance = constructor.newInstance(menu.mc.currentScreen, generalPage, subPages); + gui = (GuiScreen) guiInstance; + } catch (Exception e) { + throw new RuntimeException(e); + } + } else { + gui = new GuiVideoSettings(menu, menu.mc.gameSettings); + } } else if (this.guiName.equalsIgnoreCase("options.controls")) { gui = new GuiControls(menu, menu.mc.gameSettings); } else if (this.guiName.equalsIgnoreCase("options.multiplayer")) { From e9e6f2755904a58ab7761fa688c701d544ca7d62 Mon Sep 17 00:00:00 2001 From: UnixSupremacist <100294596+unix-supremacist@users.noreply.github.com> Date: Mon, 29 Sep 2025 10:44:25 -0500 Subject: [PATCH 2/4] yoink deps --- dependencies.gradle | 3 +-- repositories.gradle | 7 +------ 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/dependencies.gradle b/dependencies.gradle index 3df14af..b6456d0 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -1,6 +1,5 @@ // Add your dependencies here dependencies { - implementation("com.ventooth:swansong-mc1.7.10:1.2.1") - compileOnly("com.github.GTNewHorizons:Angelica:1.0.0-beta57:dev") + } diff --git a/repositories.gradle b/repositories.gradle index b495543..c884390 100644 --- a/repositories.gradle +++ b/repositories.gradle @@ -1,10 +1,5 @@ // Add any additional repositories for your dependencies here repositories { - maven{ - url = "https://mvn.ventooth.com/releases/" - } - maven{ - url = "https://mvn.falsepattern.com/releases/" - } + } From f14d133315b49dff95c27eb42d13c78d24afeccb Mon Sep 17 00:00:00 2001 From: UnixSupremacist <100294596+unix-supremacist@users.noreply.github.com> Date: Mon, 29 Sep 2025 11:28:26 -0500 Subject: [PATCH 3/4] make constructors less dirty --- .../lumien/custommainmenu/lib/actions/ActionOpenGUI.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/main/java/lumien/custommainmenu/lib/actions/ActionOpenGUI.java b/src/main/java/lumien/custommainmenu/lib/actions/ActionOpenGUI.java index 6d97046..13e719a 100644 --- a/src/main/java/lumien/custommainmenu/lib/actions/ActionOpenGUI.java +++ b/src/main/java/lumien/custommainmenu/lib/actions/ActionOpenGUI.java @@ -1,5 +1,7 @@ package lumien.custommainmenu.lib.actions; +import java.lang.reflect.Constructor; + import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiControls; import net.minecraft.client.gui.GuiCreateWorld; @@ -57,7 +59,7 @@ public void perform(Object source, GuiCustom menu) { if (Loader.isModLoaded("angelica")) { try { Class guiShadersClass = Class.forName("net.coderbot.iris.gui.screen.ShaderPackScreen"); - java.lang.reflect.Constructor constructor = guiShadersClass.getConstructor(GuiScreen.class); + Constructor constructor = guiShadersClass.getConstructor(GuiScreen.class); Object guiInstance = constructor.newInstance(menu.mc.currentScreen); gui = (GuiScreen) guiInstance; } catch (Exception e) { @@ -66,7 +68,7 @@ public void perform(Object source, GuiCustom menu) { } else if (Loader.isModLoaded("swansong")) { try { Class guiShadersClass = Class.forName("com.ventooth.swansong.gui.GuiShaders"); - java.lang.reflect.Constructor constructor = guiShadersClass.getConstructor(GuiScreen.class); + Constructor constructor = guiShadersClass.getConstructor(GuiScreen.class); Object guiInstance = constructor.newInstance(menu.mc.currentScreen); gui = (GuiScreen) guiInstance; } catch (Exception e) { @@ -104,7 +106,7 @@ public void perform(Object source, GuiCustom menu) { subPages[2] = particlesPage; subPages[3] = otherPage; Class optionPageArrayClass = Class.forName("[L" + OPTION_PAGE_FQN + ";"); - java.lang.reflect.Constructor constructor = Class.forName("jss.notfine.gui.GuiCustomMenu") + Constructor constructor = Class.forName("jss.notfine.gui.GuiCustomMenu") .getConstructor(GuiScreen.class, optionPageClass, optionPageArrayClass); Object guiInstance = constructor.newInstance(menu.mc.currentScreen, generalPage, subPages); gui = (GuiScreen) guiInstance; From 75c1b4f5652ab7f9e483de5ba960352d9b146b47 Mon Sep 17 00:00:00 2001 From: UnixSupremacist <100294596+unix-supremacist@users.noreply.github.com> Date: Mon, 29 Sep 2025 11:32:44 -0500 Subject: [PATCH 4/4] fix oversight of not supporting angelica video settings, fix array import --- .../custommainmenu/lib/actions/ActionOpenGUI.java | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/main/java/lumien/custommainmenu/lib/actions/ActionOpenGUI.java b/src/main/java/lumien/custommainmenu/lib/actions/ActionOpenGUI.java index 13e719a..075829f 100644 --- a/src/main/java/lumien/custommainmenu/lib/actions/ActionOpenGUI.java +++ b/src/main/java/lumien/custommainmenu/lib/actions/ActionOpenGUI.java @@ -1,5 +1,6 @@ package lumien.custommainmenu.lib.actions; +import java.lang.reflect.Array; import java.lang.reflect.Constructor; import net.minecraft.client.Minecraft; @@ -90,7 +91,16 @@ public void perform(Object source, GuiCustom menu) { GuiStreamUnavailable.func_152321_a(menu); } } else if (this.guiName.equalsIgnoreCase("options.video")) { - if (Loader.isModLoaded("notfine")) { + if (Loader.isModLoaded("angelica")) { + try { + Class guiShadersClass = Class.forName("me.jellysquid.mods.sodium.client.gui.SodiumOptionsGUI"); + Constructor constructor = guiShadersClass.getConstructor(GuiScreen.class); + Object guiInstance = constructor.newInstance(menu.mc.currentScreen); + gui = (GuiScreen) guiInstance; + } catch (Exception e) { + throw new RuntimeException(e); + } + } else if (Loader.isModLoaded("notfine")) { try { final String OPTION_PAGE_FQN = "me.jellysquid.mods.sodium.client.gui.options.OptionPage"; Class optionPageClass = Class.forName(OPTION_PAGE_FQN); @@ -100,7 +110,7 @@ public void perform(Object source, GuiCustom menu) { Object atmospherePage = notFineOptionsClass.getMethod("atmosphere").invoke(null); Object particlesPage = notFineOptionsClass.getMethod("particles").invoke(null); Object otherPage = notFineOptionsClass.getMethod("other").invoke(null); - Object[] subPages = (Object[]) java.lang.reflect.Array.newInstance(optionPageClass, 4); + Object[] subPages = (Object[]) Array.newInstance(optionPageClass, 4); subPages[0] = detailPage; subPages[1] = atmospherePage; subPages[2] = particlesPage;