From 3b91880e41d32b7f958fbe1057681f8dea1045e6 Mon Sep 17 00:00:00 2001 From: trafficlunar Date: Mon, 27 Jan 2025 21:35:48 +0000 Subject: [PATCH] feat: iris support (#25) --- common/build.gradle | 1 + .../optionsprofiles/profiles/Profiles.java | 9 +++-- .../profiles/loaders/IrisLoader.java | 36 +++++++++++++++++++ 3 files changed, 44 insertions(+), 2 deletions(-) create mode 100644 common/src/main/java/com/axolotlmaid/optionsprofiles/profiles/loaders/IrisLoader.java diff --git a/common/build.gradle b/common/build.gradle index c494883..4bfc245 100644 --- a/common/build.gradle +++ b/common/build.gradle @@ -25,5 +25,6 @@ dependencies { // Mod implementations modImplementation "maven.modrinth:sodium:mc1.21.4-0.6.3-fabric" // Sodium modImplementation "maven.modrinth:sodium-extra:mc1.21.4-0.6.1+fabric" // Sodium Extra + modImplementation "maven.modrinth:iris:1.8.5+1.21.4-fabric" // Iris modImplementation "maven.modrinth:distanthorizons:2.2.1-a-1.21.1" // Distant Horizons } diff --git a/common/src/main/java/com/axolotlmaid/optionsprofiles/profiles/Profiles.java b/common/src/main/java/com/axolotlmaid/optionsprofiles/profiles/Profiles.java index 073672b..8a4a6e1 100644 --- a/common/src/main/java/com/axolotlmaid/optionsprofiles/profiles/Profiles.java +++ b/common/src/main/java/com/axolotlmaid/optionsprofiles/profiles/Profiles.java @@ -2,6 +2,7 @@ package com.axolotlmaid.optionsprofiles.profiles; import com.axolotlmaid.optionsprofiles.OptionsProfilesMod; import com.axolotlmaid.optionsprofiles.profiles.loaders.DistantHorizonsLoader; +import com.axolotlmaid.optionsprofiles.profiles.loaders.IrisLoader; import com.axolotlmaid.optionsprofiles.profiles.loaders.SodiumExtraLoader; import com.axolotlmaid.optionsprofiles.profiles.loaders.SodiumLoader; import org.apache.commons.io.FileUtils; @@ -22,6 +23,7 @@ public class Profiles { public static final Path OPTIFINE_OPTIONS_FILE = Paths.get("optionsof.txt"); public static final Path SODIUM_OPTIONS_FILE = Paths.get("config/sodium-options.json"); public static final Path SODIUM_EXTRA_OPTIONS_FILE = Paths.get("config/sodium-extra-options.json"); + public static final Path IRIS_OPTIONS_FILE = Paths.get("config/iris.properties"); public static final Path DISTANT_HORIZONS_OPTIONS_FILE = Paths.get("config/DistantHorizons.toml"); // This function goes through every profile and updates / adds the configuration file if it doesn't exist @@ -123,6 +125,7 @@ public class Profiles { copyOptionFile(profile, OPTIFINE_OPTIONS_FILE); copyOptionFile(profile, SODIUM_OPTIONS_FILE); copyOptionFile(profile, SODIUM_EXTRA_OPTIONS_FILE); + copyOptionFile(profile, IRIS_OPTIONS_FILE); copyOptionFile(profile, DISTANT_HORIZONS_OPTIONS_FILE); if (!overwriting) { @@ -155,6 +158,7 @@ public class Profiles { Optional.of(OPTIFINE_OPTIONS_FILE).filter(Files::exists).ifPresent(optionFiles::add); Optional.of(SODIUM_OPTIONS_FILE).filter(Files::exists).ifPresent(optionFiles::add); Optional.of(SODIUM_EXTRA_OPTIONS_FILE).filter(Files::exists).ifPresent(optionFiles::add); + Optional.of(IRIS_OPTIONS_FILE).filter(Files::exists).ifPresent(optionFiles::add); Optional.of(DISTANT_HORIZONS_OPTIONS_FILE).filter(Files::exists).ifPresent(optionFiles::add); // Check if the original option file and the profile option file have the same content @@ -281,9 +285,10 @@ public class Profiles { loadOptionFile(profileName, OPTIFINE_OPTIONS_FILE); loadOptionFile(profileName, SODIUM_OPTIONS_FILE, SodiumLoader::load); loadOptionFile(profileName, SODIUM_EXTRA_OPTIONS_FILE, SodiumExtraLoader::load); + loadOptionFile(profileName, IRIS_OPTIONS_FILE, IrisLoader::load); - loadOptionFile(profileName, DISTANT_HORIZONS_OPTIONS_FILE); // Overwrite / load original Disant Horizons option file - loadOptionFile(profileName, DISTANT_HORIZONS_OPTIONS_FILE, DistantHorizonsLoader::load); // Tell Distant Horizons mod to reload configuration + loadOptionFile(profileName, DISTANT_HORIZONS_OPTIONS_FILE); // Overwrite / load original Disant Horizons option file + loadOptionFile(profileName, DISTANT_HORIZONS_OPTIONS_FILE, DistantHorizonsLoader::load); // Tell Distant Horizons mod to reload configuration } public static void renameProfile(String profileName, String newProfileName) { diff --git a/common/src/main/java/com/axolotlmaid/optionsprofiles/profiles/loaders/IrisLoader.java b/common/src/main/java/com/axolotlmaid/optionsprofiles/profiles/loaders/IrisLoader.java new file mode 100644 index 0000000..b570a5e --- /dev/null +++ b/common/src/main/java/com/axolotlmaid/optionsprofiles/profiles/loaders/IrisLoader.java @@ -0,0 +1,36 @@ +package com.axolotlmaid.optionsprofiles.profiles.loaders; + +import com.axolotlmaid.optionsprofiles.OptionsProfilesMod; +import net.irisshaders.iris.Iris; +import net.irisshaders.iris.api.v0.IrisApi; +import net.irisshaders.iris.gui.option.IrisVideoSettings; + +import java.io.FileReader; +import java.io.IOException; +import java.nio.file.Path; +import java.util.Properties; + +public class IrisLoader { + public static void load(Path file) { + try (FileReader reader = new FileReader(file.toFile())) { + Properties properties = new Properties(); + properties.load(reader); + + apply(properties); + } catch (IOException e) { + OptionsProfilesMod.LOGGER.error("An error occurred when reading and loading Iris's configuration", e); + } + } + + private static void apply(Properties properties) { + Iris.getIrisConfig().setShaderPackName(properties.getProperty("shaderPack")); + Iris.getIrisConfig().setDebugEnabled("true".equals(properties.getProperty("enableDebugOptions"))); + IrisApi.getInstance().getConfig().setShadersEnabledAndApply("true".equals(properties.getProperty("enableShaders"))); + + try { + Iris.getIrisConfig().save(); + } catch (IOException e) { + OptionsProfilesMod.LOGGER.error("An error occurred when loading Sodium's configuration", e); + } + } +}