From 1e23870b933b9dfa9a58d82dc86af215f3cdfd85 Mon Sep 17 00:00:00 2001 From: Caedis Date: Mon, 26 Feb 2024 15:23:02 -0600 Subject: [PATCH] Add filename and subdirectory overrides --- .../java/com/gtnewhorizon/gtnhlib/config/Config.java | 11 +++++++++++ .../gtnhlib/config/ConfigurationManager.java | 12 +++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/gtnewhorizon/gtnhlib/config/Config.java b/src/main/java/com/gtnewhorizon/gtnhlib/config/Config.java index 8379fe7..f03e198 100644 --- a/src/main/java/com/gtnewhorizon/gtnhlib/config/Config.java +++ b/src/main/java/com/gtnewhorizon/gtnhlib/config/Config.java @@ -21,6 +21,17 @@ */ String category() default "general"; + /** + * The subdirectory of the config directory to use. Defaults to none (config/). + * If you want to use a subdirectory, you must specify it as a relative path (e.g. "myMod"). + */ + String configSubDirectory(); + + /** + * The name of the configuration file. Defaults to the modid. The file extension (.cfg) is added automatically. + */ + String fileName(); + @Retention(RetentionPolicy.RUNTIME) @Target({ ElementType.FIELD, ElementType.TYPE }) @interface LangKey { diff --git a/src/main/java/com/gtnewhorizon/gtnhlib/config/ConfigurationManager.java b/src/main/java/com/gtnewhorizon/gtnhlib/config/ConfigurationManager.java index f1a7e2f..0926e21 100644 --- a/src/main/java/com/gtnewhorizon/gtnhlib/config/ConfigurationManager.java +++ b/src/main/java/com/gtnewhorizon/gtnhlib/config/ConfigurationManager.java @@ -61,7 +61,17 @@ public static void registerConfig(Class configClass) throws ConfigException { val category = Optional.of(cfg.category().trim()).map((cat) -> cat.length() == 0 ? null : cat).orElseThrow( () -> new ConfigException("Config class " + configClass.getName() + " has an empty category!")); val rawConfig = configs.computeIfAbsent(cfg.modid(), (ignored) -> { - val c = new Configuration(configDir.resolve(cfg.modid() + ".cfg").toFile()); + Path newConfigDir = configDir; + if (cfg.configSubDirectory() != null) { + newConfigDir = newConfigDir.resolve(cfg.configSubDirectory()); + } + String fileName; + if (cfg.fileName() != null) { + fileName = cfg.fileName(); + } else { + fileName = cfg.modid(); + } + val c = new Configuration(newConfigDir.resolve(fileName + ".cfg").toFile()); c.load(); return c; });