Config and logging | I dont even know anymore

This commit is contained in:
Patrick
2026-06-20 22:58:21 +02:00
parent e8ac62ac56
commit 5d6e576977
2 changed files with 77 additions and 0 deletions
@@ -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);
}
}
}