ConfigHelper.java 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. package me.shedaniel.rei.client;
  2. import me.shedaniel.rei.RoughlyEnoughItemsCore;
  3. import net.fabricmc.loader.FabricLoader;
  4. import java.io.File;
  5. import java.io.FileWriter;
  6. import java.io.IOException;
  7. import java.io.InputStreamReader;
  8. import java.nio.file.Files;
  9. public class ConfigHelper {
  10. private final File configFile;
  11. private REIConfig config;
  12. private boolean craftableOnly;
  13. public ConfigHelper() {
  14. this.configFile = new File(FabricLoader.INSTANCE.getConfigDirectory(), "rei.json");
  15. this.craftableOnly = false;
  16. try {
  17. loadConfig();
  18. } catch (IOException e) {
  19. e.printStackTrace();
  20. }
  21. }
  22. public void saveConfig() throws IOException {
  23. configFile.getParentFile().mkdirs();
  24. if (!configFile.exists() && !configFile.createNewFile()) {
  25. RoughlyEnoughItemsCore.LOGGER.error("REI: Failed to save config! Overwriting with default config.");
  26. config = new REIConfig();
  27. return;
  28. }
  29. FileWriter writer = new FileWriter(configFile, false);
  30. try {
  31. REIConfig.GSON.toJson(config, writer);
  32. } finally {
  33. writer.close();
  34. }
  35. }
  36. public void loadConfig() throws IOException {
  37. if (!configFile.exists() || !configFile.canRead()) {
  38. config = new REIConfig();
  39. saveConfig();
  40. return;
  41. }
  42. boolean failed = false;
  43. try {
  44. config = REIConfig.GSON.fromJson(new InputStreamReader(Files.newInputStream(configFile.toPath())), REIConfig.class);
  45. } catch (Exception e) {
  46. failed = true;
  47. }
  48. if (failed || config == null) {
  49. RoughlyEnoughItemsCore.LOGGER.error("REI: Failed to load config! Overwriting with default config.");
  50. config = new REIConfig();
  51. }
  52. saveConfig();
  53. }
  54. public REIItemListOrdering getItemListOrdering() {
  55. return config.itemListOrdering;
  56. }
  57. public boolean isAscending() {
  58. return config.isAscending;
  59. }
  60. public boolean craftableOnly() {
  61. return craftableOnly && config.enableCraftableOnlyButton;
  62. }
  63. public boolean showCraftableOnlyButton() {
  64. return config.enableCraftableOnlyButton;
  65. }
  66. public void setShowCraftableOnlyButton(boolean enableCraftableOnlyButton) {
  67. config.enableCraftableOnlyButton = enableCraftableOnlyButton;
  68. }
  69. public boolean sideSearchField() {
  70. return config.sideSearchField;
  71. }
  72. public void setSideSearchField(boolean sideSearchField) {
  73. config.sideSearchField = sideSearchField;
  74. }
  75. }