Fix bug when checking profiles are loaded

bug: loading profiles do not check if other profiles are loaded which
will result in every load button to become disabled
This commit is contained in:
axolotlmaid 2024-07-02 14:30:10 +01:00
parent f43edf9bbd
commit e7d9ee1a21
2 changed files with 15 additions and 9 deletions

View file

@ -48,6 +48,12 @@ public class ProfilesList extends ContainerObjectSelectionList<ProfilesList.Entr
} catch (Exception e) { } catch (Exception e) {
OptionsProfilesMod.LOGGER.error("An error occurred when listing profiles", e); OptionsProfilesMod.LOGGER.error("An error occurred when listing profiles", e);
} }
checkEntriesLoaded();
}
public void checkEntriesLoaded() {
this.children().forEach(Entry::checkLoaded);
} }
protected int getScrollbarPosition() { protected int getScrollbarPosition() {
@ -86,12 +92,11 @@ public class ProfilesList extends ContainerObjectSelectionList<ProfilesList.Entr
minecraft.options.save(); minecraft.options.save();
ProfilesList.this.checkEntriesLoaded();
button.active = false; button.active = false;
}) })
.size(75, 20) .size(75, 20)
.build(); .build();
this.loadButton.active = !Profiles.isProfileLoaded(profileName.getString());
} }
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) {
@ -117,10 +122,16 @@ public class ProfilesList extends ContainerObjectSelectionList<ProfilesList.Entr
public List<? extends NarratableEntry> narratables() { public List<? extends NarratableEntry> narratables() {
return ImmutableList.of(this.editButton, this.loadButton); return ImmutableList.of(this.editButton, this.loadButton);
} }
protected void checkLoaded() {
this.loadButton.active = !Profiles.isProfileLoaded(profileName.getString());
}
} }
public abstract static class Entry extends ContainerObjectSelectionList.Entry<ProfilesList.Entry> { public abstract static class Entry extends ContainerObjectSelectionList.Entry<ProfilesList.Entry> {
public Entry() { public Entry() {
} }
abstract void checkLoaded();
} }
} }

View file

@ -129,8 +129,6 @@ public class Profiles {
} }
public static boolean isProfileLoaded(String profileName) { public static boolean isProfileLoaded(String profileName) {
boolean profileLoaded = false;
Path profile = PROFILES_DIRECTORY.resolve(profileName); Path profile = PROFILES_DIRECTORY.resolve(profileName);
List<Path> optionFiles = new ArrayList<>(); List<Path> optionFiles = new ArrayList<>();
@ -145,10 +143,7 @@ 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 (!FileUtils.contentEquals(optionFile.toFile(), profileOptions.toFile())) {
if (FileUtils.contentEquals(optionFile.toFile(), profileOptions.toFile())) {
profileLoaded = true;
} else {
return false; return false;
} }
} }
@ -157,7 +152,7 @@ public class Profiles {
return false; return false;
} }
return profileLoaded; return true;
} }
private static void loadOptionFile(String profileName, Path options) { private static void loadOptionFile(String profileName, Path options) {