diff --git a/common/src/main/java/com/axolotlmaid/optionsprofiles/gui/ProfilesList.java b/common/src/main/java/com/axolotlmaid/optionsprofiles/gui/ProfilesList.java index 09dbe97..7960318 100644 --- a/common/src/main/java/com/axolotlmaid/optionsprofiles/gui/ProfilesList.java +++ b/common/src/main/java/com/axolotlmaid/optionsprofiles/gui/ProfilesList.java @@ -51,6 +51,12 @@ public class ProfilesList extends ContainerObjectSelectionList narratables() { return ImmutableList.of(this.editButton, this.loadButton); } + + protected void checkLoaded() { + this.loadButton.active = !Profiles.isProfileLoaded(profileName.getString()); + } } } \ No newline at end of file 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 00a2688..ebd5c90 100644 --- a/common/src/main/java/com/axolotlmaid/optionsprofiles/profiles/Profiles.java +++ b/common/src/main/java/com/axolotlmaid/optionsprofiles/profiles/Profiles.java @@ -5,7 +5,6 @@ import com.axolotlmaid.optionsprofiles.profiles.loaders.DistantHorizonsLoader; import com.axolotlmaid.optionsprofiles.profiles.loaders.EmbeddiumLoader; import com.axolotlmaid.optionsprofiles.profiles.loaders.SodiumExtraLoader; import com.axolotlmaid.optionsprofiles.profiles.loaders.SodiumLoader; -import com.seibel.distanthorizons.core.config.ConfigBase; import org.apache.commons.io.FileUtils; import java.io.IOException; @@ -94,6 +93,7 @@ public class Profiles { try { Files.copy(options, profileOptions); + OptionsProfilesMod.LOGGER.info("[Profile '{}']: Copied file '{}'", profile.getFileName().toString(), options.getFileName().toString()); } catch (IOException e) { OptionsProfilesMod.LOGGER.error("[Profile '{}']: Unable to copy '{}'", profile.getFileName().toString(), options.getFileName().toString(), e); } @@ -104,14 +104,19 @@ public class Profiles { Path profile = PROFILES_DIRECTORY.resolve(profileName); Path profileOptions = profile.resolve("options.txt"); - ProfileConfiguration profileConfiguration = ProfileConfiguration.get(profileName); - if (overwriting) { - try { - // Removes old option files - FileUtils.cleanDirectory(profile.toFile()); + try (Stream files = Files.list(profile)) { + files.filter(file -> !file.getFileName().toString().equals("configuration.json")) + .forEach(file -> { + try { + Files.delete(file); + OptionsProfilesMod.LOGGER.info("[Profile '{}']: Deleted file '{}'", profileName, file.getFileName().toString()); + } catch (IOException e) { + OptionsProfilesMod.LOGGER.error("[Profile '{}']: An error occurred when trying to delete the file '{}'", profileName, file.getFileName().toString(), e); + } + }); } catch (IOException e) { - OptionsProfilesMod.LOGGER.error("[Profile '{}']: An error occurred when clearing old options files", profileName, e); + OptionsProfilesMod.LOGGER.error("[Profile '{}']: An error occurred when deleting old options files.", profileName, e); } } @@ -122,18 +127,22 @@ public class Profiles { copyOptionFile(profile, EMBEDDIUM_OPTIONS_FILE); copyOptionFile(profile, DISTANT_HORIZONS_OPTIONS_FILE); - // Add every option value to configuration - try (Stream lines = Files.lines(profileOptions)) { - List optionsToLoad = profileConfiguration.getOptionsToLoad(); + if (!overwriting) { + ProfileConfiguration profileConfiguration = ProfileConfiguration.get(profileName); - lines.forEach((line) -> { - String[] option = line.split(":"); - optionsToLoad.add(option[0]); - }); + // Add every option value to configuration + try (Stream lines = Files.lines(profileOptions)) { + List optionsToLoad = profileConfiguration.getOptionsToLoad(); - profileConfiguration.save(); - } catch (IOException e) { - OptionsProfilesMod.LOGGER.error("[Profile '{}']: An error occurred when adding options to the configuration file", profileName, e); + lines.forEach((line) -> { + String[] option = line.split(":"); + optionsToLoad.add(option[0]); + }); + + profileConfiguration.save(); + } catch (IOException e) { + OptionsProfilesMod.LOGGER.error("[Profile '{}']: An error occurred when adding options to the configuration file", profileName, e); + } } }