Config and logging | I dont even know anymore
This commit is contained in:
@@ -0,0 +1,9 @@
|
|||||||
|
package de.winniepat.parrotmod.config;
|
||||||
|
|
||||||
|
public class Config {
|
||||||
|
public boolean enableDiscordRPC = true;
|
||||||
|
public long discordAppId = 1517985621396820039L;
|
||||||
|
public boolean showBiomeInRPC = true;
|
||||||
|
public boolean showHeldItemInRPC = true;
|
||||||
|
public boolean showHealthInRPC = true;
|
||||||
|
}
|
||||||
@@ -0,0 +1,68 @@
|
|||||||
|
package de.winniepat.parrotmod.config;
|
||||||
|
|
||||||
|
import com.google.gson.Gson;
|
||||||
|
import com.google.gson.GsonBuilder;
|
||||||
|
import de.winniepat.parrotmod.ParrotLogger;
|
||||||
|
import net.fabricmc.loader.api.FabricLoader;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.nio.file.Files;
|
||||||
|
import java.nio.file.Path;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
|
public class ConfigManager {
|
||||||
|
private static final Gson GSON = new GsonBuilder().setPrettyPrinting().create();
|
||||||
|
private static final Path CONFIG_FILE = FabricLoader.getInstance().getConfigDir().resolve("parrotmod.json");
|
||||||
|
|
||||||
|
private static Config instance = new Config();
|
||||||
|
private static final List<Consumer<Config>> LISTENERS = new ArrayList<>();
|
||||||
|
|
||||||
|
public static Config getInstance() {
|
||||||
|
return instance;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void registerListener(Consumer<Config> listener) {
|
||||||
|
LISTENERS.add(listener);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void load() {
|
||||||
|
if (!Files.exists(CONFIG_FILE)) {
|
||||||
|
ParrotLogger.logInfo(ConfigManager.class, "No config file found, creating one with default values.");
|
||||||
|
save();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
try (var reader = Files.newBufferedReader(CONFIG_FILE)) {
|
||||||
|
instance = GSON.fromJson(reader, Config.class);
|
||||||
|
if (instance == null) {
|
||||||
|
instance = new Config();
|
||||||
|
}
|
||||||
|
|
||||||
|
ParrotLogger.logInfo(ConfigManager.class, "Loaded config: " + GSON.toJson(instance));
|
||||||
|
notifyListeners();
|
||||||
|
} catch (IOException e) {
|
||||||
|
ParrotLogger.logError(ConfigManager.class, "Failed to load config, Using defaults", e);
|
||||||
|
instance = new Config();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void save() {
|
||||||
|
try {
|
||||||
|
Files.createDirectories(CONFIG_FILE.getParent());
|
||||||
|
try (var writer = Files.newBufferedWriter(CONFIG_FILE)) {
|
||||||
|
GSON.toJson(instance, writer);
|
||||||
|
notifyListeners();
|
||||||
|
}
|
||||||
|
} catch (IOException e) {
|
||||||
|
ParrotLogger.logError(ConfigManager.class, "Failed to save config.", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void notifyListeners() {
|
||||||
|
for (Consumer<Config> listener : LISTENERS) {
|
||||||
|
listener.accept(instance);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user