feat: iris support (#25)

This commit is contained in:
trafficlunar 2025-01-27 21:35:48 +00:00
parent 0d5b6be82f
commit 3b91880e41
3 changed files with 44 additions and 2 deletions

View file

@ -25,5 +25,6 @@ dependencies {
// Mod implementations // Mod implementations
modImplementation "maven.modrinth:sodium:mc1.21.4-0.6.3-fabric" // Sodium 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: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 modImplementation "maven.modrinth:distanthorizons:2.2.1-a-1.21.1" // Distant Horizons
} }

View file

@ -2,6 +2,7 @@ package com.axolotlmaid.optionsprofiles.profiles;
import com.axolotlmaid.optionsprofiles.OptionsProfilesMod; import com.axolotlmaid.optionsprofiles.OptionsProfilesMod;
import com.axolotlmaid.optionsprofiles.profiles.loaders.DistantHorizonsLoader; 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.SodiumExtraLoader;
import com.axolotlmaid.optionsprofiles.profiles.loaders.SodiumLoader; import com.axolotlmaid.optionsprofiles.profiles.loaders.SodiumLoader;
import org.apache.commons.io.FileUtils; 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 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_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 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"); 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 // 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, OPTIFINE_OPTIONS_FILE);
copyOptionFile(profile, SODIUM_OPTIONS_FILE); copyOptionFile(profile, SODIUM_OPTIONS_FILE);
copyOptionFile(profile, SODIUM_EXTRA_OPTIONS_FILE); copyOptionFile(profile, SODIUM_EXTRA_OPTIONS_FILE);
copyOptionFile(profile, IRIS_OPTIONS_FILE);
copyOptionFile(profile, DISTANT_HORIZONS_OPTIONS_FILE); copyOptionFile(profile, DISTANT_HORIZONS_OPTIONS_FILE);
if (!overwriting) { if (!overwriting) {
@ -155,6 +158,7 @@ public class Profiles {
Optional.of(OPTIFINE_OPTIONS_FILE).filter(Files::exists).ifPresent(optionFiles::add); 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_OPTIONS_FILE).filter(Files::exists).ifPresent(optionFiles::add);
Optional.of(SODIUM_EXTRA_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); 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 // Check if the original option file and the profile option file have the same content
@ -281,6 +285,7 @@ public class Profiles {
loadOptionFile(profileName, OPTIFINE_OPTIONS_FILE); loadOptionFile(profileName, OPTIFINE_OPTIONS_FILE);
loadOptionFile(profileName, SODIUM_OPTIONS_FILE, SodiumLoader::load); loadOptionFile(profileName, SODIUM_OPTIONS_FILE, SodiumLoader::load);
loadOptionFile(profileName, SODIUM_EXTRA_OPTIONS_FILE, SodiumExtraLoader::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); // 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, DistantHorizonsLoader::load); // Tell Distant Horizons mod to reload configuration

View file

@ -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);
}
}
}