Compare commits

...

2 commits

12 changed files with 100 additions and 87 deletions

View file

@ -26,8 +26,8 @@ dependencies {
modImplementation "dev.architectury:architectury:$rootProject.architectury_api_version" modImplementation "dev.architectury:architectury:$rootProject.architectury_api_version"
// Mod implementations // Mod implementations
modImplementation "maven.modrinth:sodium:mc1.21.4-0.6.3-fabric" // Sodium modImplementation "maven.modrinth:sodium:mc1.21.1-0.6.13-fabric" // Sodium
modImplementation "maven.modrinth:sodium-extra:mc1.21.4-0.6.1+fabric" // Sodium Extra modImplementation "maven.modrinth:sodium-extra:mc1.21.6-0.6.6+fabric" // Sodium Extra
modImplementation "maven.modrinth:iris:1.8.5+1.21.4-fabric" // Iris modImplementation "maven.modrinth:iris:1.8.8+1.21.1-fabric" // Iris
modImplementation "maven.modrinth:distanthorizons:2.2.1-a-1.21.1" // Distant Horizons modImplementation "maven.modrinth:distanthorizons:2.3.4-b-1.21.1" // Distant Horizons
} }

View file

@ -107,7 +107,7 @@ public class EditProfileScreen extends Screen {
.withStyle(ChatFormatting.RED), .withStyle(ChatFormatting.RED),
(button) -> { (button) -> {
Profiles.deleteProfile(profileName.getString()); Profiles.deleteProfile(profileName.getString());
this.onClose(); this.onClose(true);
}) })
.width(50) .width(50)
.build(), .build(),
@ -122,7 +122,13 @@ public class EditProfileScreen extends Screen {
this.layout.arrangeElements(); this.layout.arrangeElements();
} }
@Override
public void onClose() { public void onClose() {
this.onClose(false);
}
public void onClose(boolean deleted) {
if (!deleted)
this.profileConfiguration.save(); this.profileConfiguration.save();
this.minecraft.setScreen(this.profilesScreen); this.minecraft.setScreen(this.profilesScreen);
this.profilesScreen.profilesList.refreshEntries(); this.profilesScreen.profilesList.refreshEntries();

View file

@ -70,8 +70,8 @@ public class OptionsToggleList extends ContainerObjectSelectionList<OptionsToggl
} }
} }
protected int scrollBarX() { protected int getScrollbarPosition() {
return super.scrollBarX() + 15; return super.getScrollbarPosition() + 15;
} }
public int getRowWidth() { public int getRowWidth() {
@ -113,7 +113,7 @@ public class OptionsToggleList extends ContainerObjectSelectionList<OptionsToggl
public void render(GuiGraphics guiGraphics, int index, int y, int x, int entryWidth, int entryHeight, int mouseX, int mouseY, boolean hovered, float tickDelta) { public void render(GuiGraphics guiGraphics, int index, int y, int x, int entryWidth, int entryHeight, int mouseX, int mouseY, boolean hovered, float tickDelta) {
Font fontRenderer = OptionsToggleList.this.minecraft.font; Font fontRenderer = OptionsToggleList.this.minecraft.font;
int posX = OptionsToggleList.this.scrollBarX() - this.toggleButton.getWidth() - 10; int posX = OptionsToggleList.this.getScrollbarPosition() - this.toggleButton.getWidth() - 10;
int posY = y - 2; int posY = y - 2;
int textY = y + entryHeight / 2; int textY = y + entryHeight / 2;

View file

@ -58,8 +58,8 @@ public class ProfilesList extends ContainerObjectSelectionList<ProfilesList.Prof
this.children().forEach(ProfileEntry::checkLoaded); this.children().forEach(ProfileEntry::checkLoaded);
} }
protected int scrollBarX() { protected int getScrollbarPosition() {
return super.scrollBarX() + 15; return super.getScrollbarPosition() + 15;
} }
public int getRowWidth() { public int getRowWidth() {
@ -105,7 +105,7 @@ public class ProfilesList extends ContainerObjectSelectionList<ProfilesList.Prof
public void render(GuiGraphics guiGraphics, int index, int y, int x, int entryWidth, int entryHeight, int mouseX, int mouseY, boolean hovered, float tickDelta) { public void render(GuiGraphics guiGraphics, int index, int y, int x, int entryWidth, int entryHeight, int mouseX, int mouseY, boolean hovered, float tickDelta) {
Font fontRenderer = ProfilesList.this.minecraft.font; Font fontRenderer = ProfilesList.this.minecraft.font;
int posX = ProfilesList.this.scrollBarX() - this.loadButton.getWidth() - 10; int posX = ProfilesList.this.getScrollbarPosition() - this.loadButton.getWidth() - 10;
int posY = y - 2; int posY = y - 2;
int textY = y + entryHeight / 2; int textY = y + entryHeight / 2;

View file

@ -146,58 +146,61 @@ public class Profiles {
} }
public static boolean isProfileLoaded(String profileName) { public static boolean isProfileLoaded(String profileName) {
Path profile = PROFILES_DIRECTORY.resolve(profileName); // TODO: rewrite/fix; returns incorrect results
ProfileConfiguration profileConfiguration = ProfileConfiguration.get(profileName);
List<Path> optionFiles = new ArrayList<>(); // Path profile = PROFILES_DIRECTORY.resolve(profileName);
optionFiles.add(OPTIONS_FILE); // ProfileConfiguration profileConfiguration = ProfileConfiguration.get(profileName);
//
// The next few lines check if the specified file exists. If so, it adds it to the optionFiles ArrayList. // List<Path> optionFiles = new ArrayList<>();
Optional.of(OPTIFINE_OPTIONS_FILE).filter(Files::exists).ifPresent(optionFiles::add); // optionFiles.add(OPTIONS_FILE);
Optional.of(SODIUM_OPTIONS_FILE).filter(file -> Platform.isModLoaded("sodium")).ifPresent(optionFiles::add); //
Optional.of(SODIUM_EXTRA_OPTIONS_FILE).filter(file -> Platform.isModLoaded("sodium-extra")).ifPresent(optionFiles::add); // // The next few lines check if the specified file exists. If so, it adds it to the optionFiles ArrayList.
Optional.of(IRIS_OPTIONS_FILE).filter(file -> Platform.isModLoaded("iris")).ifPresent(optionFiles::add); // Optional.of(OPTIFINE_OPTIONS_FILE).filter(Files::exists).ifPresent(optionFiles::add);
Optional.of(DISTANT_HORIZONS_OPTIONS_FILE).filter(file -> Platform.isModLoaded("distanthorizons")).ifPresent(optionFiles::add); // Optional.of(SODIUM_OPTIONS_FILE).filter(file -> Platform.isModLoaded("sodium")).ifPresent(optionFiles::add);
// Optional.of(SODIUM_EXTRA_OPTIONS_FILE).filter(file -> Platform.isModLoaded("sodium-extra")).ifPresent(optionFiles::add);
// Check if the original option file and the profile option file have the same content // Optional.of(IRIS_OPTIONS_FILE).filter(file -> Platform.isModLoaded("iris")).ifPresent(optionFiles::add);
try { // Optional.of(DISTANT_HORIZONS_OPTIONS_FILE).filter(file -> Platform.isModLoaded("distanthorizons")).ifPresent(optionFiles::add);
for (Path optionFile : optionFiles) { //
Path profileOptions = profile.resolve(optionFile.getFileName()); // // Check if the original option file and the profile option file have the same content
// try {
if (optionFile.getFileName().equals(OPTIONS_FILE)) { // for (Path optionFile : optionFiles) {
try (Stream<String> lines = Files.lines(optionFile)) { // Path profileOptions = profile.resolve(optionFile.getFileName());
List<String> optionsToLoad = profileConfiguration.getOptionsToLoad(); //
AtomicBoolean loaded = new AtomicBoolean(false); // if (optionFile.getFileName().equals(OPTIONS_FILE)) {
// try (Stream<String> lines = Files.lines(optionFile)) {
lines.forEach((line) -> { // List<String> optionsToLoad = profileConfiguration.getOptionsToLoad();
String[] option = line.split(":"); // AtomicBoolean loaded = new AtomicBoolean(false);
//
if (optionsToLoad.contains(option[0])) { // lines.forEach((line) -> {
try (Stream<String> profileLines = Files.lines(profileOptions)) { // String[] option = line.split(":");
loaded.set(profileLines.anyMatch(profileLine -> profileLine.equals(line))); //
} catch (IOException e) { // if (optionsToLoad.contains(option[0])) {
OptionsProfilesMod.LOGGER.error("[Profile '{}']: An error occurred when checking each line in options.txt if the profiles is loaded", profileName, e); // try (Stream<String> profileLines = Files.lines(profileOptions)) {
} // loaded.set(profileLines.anyMatch(profileLine -> profileLine.equals(line)));
} // } catch (IOException e) {
}); // OptionsProfilesMod.LOGGER.error("[Profile '{}']: An error occurred when checking each line in options.txt if the profiles is loaded", profileName, e);
// }
return loaded.get(); // }
} catch (IOException e) { // });
OptionsProfilesMod.LOGGER.error("[Profile '{}']: An error occurred when opening options.txt to check if the profile is loaded", profileName, e); //
} // return loaded.get();
} else { // } catch (IOException e) {
if (!FileUtils.contentEquals(optionFile.toFile(), profileOptions.toFile())) { // OptionsProfilesMod.LOGGER.error("[Profile '{}']: An error occurred when opening options.txt to check if the profile is loaded", profileName, e);
// }
// } else {
// if (!FileUtils.contentEquals(optionFile.toFile(), profileOptions.toFile())) {
// return false;
// }
// }
// }
// } catch (IOException e) {
// OptionsProfilesMod.LOGGER.error("[Profile '{}']: An error occurred when checking if the profile is loaded", profileName, e);
// return false;
// }
//
// return true;
return false; return false;
} }
}
}
} catch (IOException e) {
OptionsProfilesMod.LOGGER.error("[Profile '{}']: An error occurred when checking if the profile is loaded", profileName, e);
return false;
}
return true;
}
private static void loadOptionFile(String profileName, Path options) { private static void loadOptionFile(String profileName, Path options) {
ProfileConfiguration profileConfiguration = ProfileConfiguration.get(profileName); ProfileConfiguration profileConfiguration = ProfileConfiguration.get(profileName);

View file

@ -1,15 +1,18 @@
package net.trafficlunar.optionsprofiles.profiles.loaders; package net.trafficlunar.optionsprofiles.profiles.loaders;
import net.trafficlunar.optionsprofiles.OptionsProfilesMod;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.google.gson.GsonBuilder; import com.google.gson.GsonBuilder;
import me.flashyreese.mods.sodiumextra.client.SodiumExtraClientMod; import me.flashyreese.mods.sodiumextra.client.SodiumExtraClientMod;
import me.flashyreese.mods.sodiumextra.client.gui.FogTypeConfig;
import me.flashyreese.mods.sodiumextra.client.gui.SodiumExtraGameOptions; import me.flashyreese.mods.sodiumextra.client.gui.SodiumExtraGameOptions;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.level.material.FogType;
import net.trafficlunar.optionsprofiles.OptionsProfilesMod;
import java.io.FileReader; import java.io.FileReader;
import java.io.IOException; import java.io.IOException;
import java.nio.file.Path; import java.nio.file.Path;
import java.util.EnumMap;
import java.util.Map; import java.util.Map;
public class SodiumExtraLoader { public class SodiumExtraLoader {
@ -47,10 +50,8 @@ public class SodiumExtraLoader {
SodiumExtraClientMod.options().detailSettings.biomeColors = configuration.detail_settings.biome_colors; SodiumExtraClientMod.options().detailSettings.biomeColors = configuration.detail_settings.biome_colors;
SodiumExtraClientMod.options().detailSettings.skyColors = configuration.detail_settings.sky_colors; SodiumExtraClientMod.options().detailSettings.skyColors = configuration.detail_settings.sky_colors;
SodiumExtraClientMod.options().renderSettings.fogDistance = configuration.render_settings.fog_distance; SodiumExtraClientMod.options().renderSettings.globalFog = configuration.render_settings.global_fog;
SodiumExtraClientMod.options().renderSettings.fogStart = configuration.render_settings.fog_start; SodiumExtraClientMod.options().renderSettings.fogTypeConfig = configuration.render_settings.fog_type_config;
SodiumExtraClientMod.options().renderSettings.multiDimensionFogControl = configuration.render_settings.multi_dimension_fog_control;
SodiumExtraClientMod.options().renderSettings.dimensionFogDistanceMap = configuration.render_settings.dimensionFogDistance;
SodiumExtraClientMod.options().renderSettings.lightUpdates = configuration.render_settings.light_updates; SodiumExtraClientMod.options().renderSettings.lightUpdates = configuration.render_settings.light_updates;
SodiumExtraClientMod.options().renderSettings.itemFrame = configuration.render_settings.item_frame; SodiumExtraClientMod.options().renderSettings.itemFrame = configuration.render_settings.item_frame;
SodiumExtraClientMod.options().renderSettings.armorStand = configuration.render_settings.armor_stand; SodiumExtraClientMod.options().renderSettings.armorStand = configuration.render_settings.armor_stand;
@ -120,10 +121,8 @@ public class SodiumExtraLoader {
} }
public static class RenderSettings { public static class RenderSettings {
public int fog_distance; public boolean global_fog;
public int fog_start; public EnumMap<FogType, FogTypeConfig> fog_type_config;
public boolean multi_dimension_fog_control;
public Map<ResourceLocation, Integer> dimensionFogDistance;
public boolean light_updates; public boolean light_updates;
public boolean item_frame; public boolean item_frame;
public boolean armor_stand; public boolean armor_stand;

View file

@ -38,11 +38,12 @@ public class SodiumLoader {
SodiumClientMod.options().performance.useFogOcclusion = configuration.performance.use_fog_occlusion; SodiumClientMod.options().performance.useFogOcclusion = configuration.performance.use_fog_occlusion;
SodiumClientMod.options().performance.useBlockFaceCulling = configuration.performance.use_block_face_culling; SodiumClientMod.options().performance.useBlockFaceCulling = configuration.performance.use_block_face_culling;
SodiumClientMod.options().performance.useNoErrorGLContext = configuration.performance.use_no_error_g_l_context; SodiumClientMod.options().performance.useNoErrorGLContext = configuration.performance.use_no_error_g_l_context;
SodiumClientMod.options().performance.sortingEnabled = configuration.performance.sorting_enabled_v2;
SodiumClientMod.options().notifications.hasClearedDonationButton = configuration.notifications.has_cleared_donation_button; SodiumClientMod.options().notifications.hasClearedDonationButton = configuration.notifications.has_cleared_donation_button;
SodiumClientMod.options().notifications.hasSeenDonationPrompt = configuration.notifications.has_seen_donation_prompt; SodiumClientMod.options().notifications.hasSeenDonationPrompt = configuration.notifications.has_seen_donation_prompt;
SodiumClientMod.options().debug.terrainSortingEnabled = configuration.debug.terrain_sorting_enabled;
try { try {
SodiumGameOptions.writeToDisk(SodiumClientMod.options()); SodiumGameOptions.writeToDisk(SodiumClientMod.options());
} catch (IOException e) { } catch (IOException e) {
@ -55,6 +56,7 @@ public class SodiumLoader {
public Advanced advanced; public Advanced advanced;
public Performance performance; public Performance performance;
public Notifications notifications; public Notifications notifications;
public Debug debug;
public static class Quality { public static class Quality {
public String weather_quality; public String weather_quality;
@ -76,12 +78,15 @@ public class SodiumLoader {
public boolean use_fog_occlusion; public boolean use_fog_occlusion;
public boolean use_block_face_culling; public boolean use_block_face_culling;
public boolean use_no_error_g_l_context; public boolean use_no_error_g_l_context;
public boolean sorting_enabled_v2;
} }
public static class Notifications { public static class Notifications {
public boolean has_cleared_donation_button; public boolean has_cleared_donation_button;
public boolean has_seen_donation_prompt; public boolean has_seen_donation_prompt;
} }
public static class Debug {
public boolean terrain_sorting_enabled;
}
} }
} }

View file

@ -41,7 +41,7 @@ dependencies {
modImplementation "dev.architectury:architectury-fabric:$rootProject.architectury_api_version" modImplementation "dev.architectury:architectury-fabric:$rootProject.architectury_api_version"
// Mod Menu API // Mod Menu API
modImplementation("com.terraformersmc:modmenu:13.0.2") modImplementation("com.terraformersmc:modmenu:11.0.3")
common(project(path: ':common', configuration: 'namedElements')) { transitive false } common(project(path: ':common', configuration: 'namedElements')) { transitive false }
shadowBundle project(path: ':common', configuration: 'transformProductionFabric') shadowBundle project(path: ':common', configuration: 'transformProductionFabric')

View file

@ -25,10 +25,10 @@
"optionsprofiles.mixins.json" "optionsprofiles.mixins.json"
], ],
"depends": { "depends": {
"fabricloader": ">=0.15.11", "fabricloader": ">=0.17.2",
"minecraft": "~1.21", "minecraft": "~1.21.1",
"java": ">=21", "java": ">=21",
"architectury": ">=15.0.3", "architectury": ">=13.0.8",
"fabric-api": "*" "fabric-api": "*"
} }
} }

View file

@ -5,16 +5,16 @@ org.gradle.parallel=true
loom.ignoreDependencyLoomVersionValidation=true loom.ignoreDependencyLoomVersionValidation=true
# Mod properties # Mod properties
mod_version=1.4 mod_version=1.4.2
maven_group=net.trafficlunar.optionsprofiles maven_group=net.trafficlunar.optionsprofiles
archives_name=optionsprofiles archives_name=optionsprofiles
enabled_platforms=fabric,neoforge enabled_platforms=fabric,neoforge
# Minecraft properties # Minecraft properties
minecraft_version=1.21.4 minecraft_version=1.21.1
# Dependencies # Dependencies
architectury_api_version = 15.0.3 architectury_api_version=13.0.8
fabric_loader_version=0.16.9 fabric_loader_version=0.17.2
fabric_api_version=0.111.0+1.21.4 fabric_api_version=0.116.6+1.21.1
neoforge_version=21.4.9-beta neoforge_version=21.1.209

View file

@ -16,21 +16,21 @@ logoFile = "icon.png"
[[dependencies.optionsprofiles]] [[dependencies.optionsprofiles]]
modId = "neoforge" modId = "neoforge"
type = "required" type = "required"
versionRange = "[21.0,)" versionRange = "[21.1,)"
ordering = "NONE" ordering = "NONE"
side = "BOTH" side = "BOTH"
[[dependencies.optionsprofiles]] [[dependencies.optionsprofiles]]
modId = "minecraft" modId = "minecraft"
type = "required" type = "required"
versionRange = "[1.21,)" versionRange = "[1.21.1,)"
ordering = "NONE" ordering = "NONE"
side = "BOTH" side = "BOTH"
[[dependencies.optionsprofiles]] [[dependencies.optionsprofiles]]
modId = "architectury" modId = "architectury"
type = "required" type = "required"
versionRange = "[15.0.3,)" versionRange = "[13.0.8,)"
ordering = "AFTER" ordering = "AFTER"
side = "BOTH" side = "BOTH"

View file

@ -11,4 +11,4 @@ include("common")
include("fabric") include("fabric")
include("neoforge") include("neoforge")
rootProject.name = "optionsprofiles-v1.4-1.21.4" rootProject.name = "optionsprofiles-v1.4-1.21.1"