fix: profile loading - check configuration to see if options to load are changed
worded horribly but just know it fixes annoyances
This commit is contained in:
parent
60a2bcb853
commit
96c4d8eac8
1 changed files with 28 additions and 2 deletions
|
|
@ -12,6 +12,7 @@ import java.nio.file.Path;
|
||||||
import java.nio.file.Paths;
|
import java.nio.file.Paths;
|
||||||
import java.nio.file.StandardCopyOption;
|
import java.nio.file.StandardCopyOption;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
import java.util.concurrent.atomic.AtomicBoolean;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
|
|
@ -145,6 +146,7 @@ public class Profiles {
|
||||||
|
|
||||||
public static boolean isProfileLoaded(String profileName) {
|
public static boolean isProfileLoaded(String profileName) {
|
||||||
Path profile = PROFILES_DIRECTORY.resolve(profileName);
|
Path profile = PROFILES_DIRECTORY.resolve(profileName);
|
||||||
|
ProfileConfiguration profileConfiguration = ProfileConfiguration.get(profileName);
|
||||||
|
|
||||||
List<Path> optionFiles = new ArrayList<>();
|
List<Path> optionFiles = new ArrayList<>();
|
||||||
optionFiles.add(OPTIONS_FILE);
|
optionFiles.add(OPTIONS_FILE);
|
||||||
|
|
@ -159,10 +161,34 @@ public class Profiles {
|
||||||
try {
|
try {
|
||||||
for (Path optionFile : optionFiles) {
|
for (Path optionFile : optionFiles) {
|
||||||
Path profileOptions = profile.resolve(optionFile.getFileName());
|
Path profileOptions = profile.resolve(optionFile.getFileName());
|
||||||
|
|
||||||
|
if (optionFile.getFileName().equals(OPTIONS_FILE)) {
|
||||||
|
try (Stream<String> lines = Files.lines(optionFile)) {
|
||||||
|
List<String> optionsToLoad = profileConfiguration.getOptionsToLoad();
|
||||||
|
AtomicBoolean loaded = new AtomicBoolean(false);
|
||||||
|
|
||||||
|
lines.forEach((line) -> {
|
||||||
|
String[] option = line.split(":");
|
||||||
|
|
||||||
|
if (optionsToLoad.contains(option[0])) {
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
if (!FileUtils.contentEquals(optionFile.toFile(), profileOptions.toFile())) {
|
if (!FileUtils.contentEquals(optionFile.toFile(), profileOptions.toFile())) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
OptionsProfilesMod.LOGGER.error("[Profile '{}']: An error occurred when checking if the profile is loaded", profileName, e);
|
OptionsProfilesMod.LOGGER.error("[Profile '{}']: An error occurred when checking if the profile is loaded", profileName, e);
|
||||||
return false;
|
return false;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue