diff --git a/services/discord-rules/1.16.5/build.gradle b/services/discord-rules/1.16.5/build.gradle index 730fb39..58632e7 100644 --- a/services/discord-rules/1.16.5/build.gradle +++ b/services/discord-rules/1.16.5/build.gradle @@ -10,7 +10,7 @@ buildscript { apply plugin: 'net.minecraftforge.gradle' -version = '1.0.1' +version = '1.0.2' group = 'com.discordrules' archivesBaseName = 'discordrules' diff --git a/services/discord-rules/1.16.5/src/main/java/com/discordrules/ServerRules.java b/services/discord-rules/1.16.5/src/main/java/com/discordrules/ServerRules.java index cd693fe..a7c3428 100644 --- a/services/discord-rules/1.16.5/src/main/java/com/discordrules/ServerRules.java +++ b/services/discord-rules/1.16.5/src/main/java/com/discordrules/ServerRules.java @@ -16,7 +16,7 @@ public class ServerRules { private static final Logger LOGGER = LogManager.getLogger(ServerRules.class); public ServerRules() { - ModLoadingContext.get().registerConfig(ModConfig.Type.SERVER, ServerRulesConfig.SPEC); + ModLoadingContext.get().registerConfig(ModConfig.Type.COMMON, ServerRulesConfig.SPEC); FMLJavaModLoadingContext.get().getModEventBus().addListener(this::onConfigLoaded); MinecraftForge.EVENT_BUS.register(this); LOGGER.info("Discord Rules Mod Initialized."); @@ -26,7 +26,7 @@ public class ServerRules { if (event.getConfig().getSpec() == ServerRulesConfig.SPEC) { String token = ServerRulesConfig.BOT_TOKEN.get(); if (token.equals("YOUR_TOKEN_HERE")) { - LOGGER.warn("Rules mod is using default config values! Edit world/serverconfig/discordrules-server.toml"); + LOGGER.warn("Rules mod is using default config values! Edit config/discordrules-common.toml"); } else { LOGGER.info("Rules mod config loaded successfully. Channel: {}", ServerRulesConfig.CHANNEL_ID.get()); } diff --git a/services/discord-rules/1.20.1/build.gradle b/services/discord-rules/1.20.1/build.gradle index a30c0b3..550517c 100755 --- a/services/discord-rules/1.20.1/build.gradle +++ b/services/discord-rules/1.20.1/build.gradle @@ -10,7 +10,7 @@ buildscript { apply plugin: 'net.minecraftforge.gradle' -version = '1.0.1' +version = '1.0.2' group = 'com.discordrules' archivesBaseName = 'discordrules' diff --git a/services/discord-rules/1.20.1/src/main/java/com/discordrules/ServerRules.java b/services/discord-rules/1.20.1/src/main/java/com/discordrules/ServerRules.java index b6ef874..029f73d 100755 --- a/services/discord-rules/1.20.1/src/main/java/com/discordrules/ServerRules.java +++ b/services/discord-rules/1.20.1/src/main/java/com/discordrules/ServerRules.java @@ -16,7 +16,7 @@ public class ServerRules { private static final Logger LOGGER = LoggerFactory.getLogger(ServerRules.class); public ServerRules() { - ModLoadingContext.get().registerConfig(ModConfig.Type.SERVER, ServerRulesConfig.SPEC); + ModLoadingContext.get().registerConfig(ModConfig.Type.COMMON, ServerRulesConfig.SPEC); MinecraftForge.EVENT_BUS.register(this); LOGGER.info("Discord Rules Mod Initialized."); } @@ -37,7 +37,7 @@ public class ServerRules { if (event.getConfig().getSpec() == ServerRulesConfig.SPEC) { String token = ServerRulesConfig.BOT_TOKEN.get(); if (token.equals("YOUR_TOKEN_HERE")) { - LOGGER.warn("Rules mod is using default config values! Edit world/serverconfig/discordrules-server.toml"); + LOGGER.warn("Rules mod is using default config values! Edit config/discordrules-common.toml"); } else { LOGGER.info("Rules mod config loaded successfully. Channel: {}", ServerRulesConfig.CHANNEL_ID.get()); } diff --git a/services/discord-rules/1.21.1/gradle.properties b/services/discord-rules/1.21.1/gradle.properties index 3ed6dd9..b3d1fdd 100644 --- a/services/discord-rules/1.21.1/gradle.properties +++ b/services/discord-rules/1.21.1/gradle.properties @@ -6,5 +6,5 @@ neo_version=21.1.65 mod_id=discordrules mod_name=Discord Rules -mod_version=1.0.1 +mod_version=1.0.2 mod_group_id=com.discordrules diff --git a/services/discord-rules/1.21.1/src/main/java/com/discordrules/ServerRules.java b/services/discord-rules/1.21.1/src/main/java/com/discordrules/ServerRules.java index 9f1b900..e933c1a 100644 --- a/services/discord-rules/1.21.1/src/main/java/com/discordrules/ServerRules.java +++ b/services/discord-rules/1.21.1/src/main/java/com/discordrules/ServerRules.java @@ -17,7 +17,7 @@ public class ServerRules { private static final Logger LOGGER = LoggerFactory.getLogger(ServerRules.class); public ServerRules(IEventBus modEventBus, ModContainer modContainer) { - modContainer.registerConfig(ModConfig.Type.SERVER, ServerRulesConfig.SPEC); + modContainer.registerConfig(ModConfig.Type.COMMON, ServerRulesConfig.SPEC); modEventBus.addListener(this::onConfigLoaded); modEventBus.addListener(this::onConfigReload); NeoForge.EVENT_BUS.register(this); @@ -39,7 +39,7 @@ public class ServerRules { if (event.getConfig().getSpec() == ServerRulesConfig.SPEC) { String token = ServerRulesConfig.BOT_TOKEN.get(); if (token.equals("YOUR_TOKEN_HERE")) { - LOGGER.warn("Rules mod is using default config values! Edit world/serverconfig/discordrules-server.toml"); + LOGGER.warn("Rules mod is using default config values! Edit config/discordrules-common.toml"); } else { LOGGER.info("Rules mod config loaded successfully. Channel: {}", ServerRulesConfig.CHANNEL_ID.get()); } diff --git a/services/discord-rules/discord-rules-1.0.1-1.16.5-forge.jar b/services/discord-rules/discord-rules-1.0.2-1.16.5-forge.jar similarity index 72% rename from services/discord-rules/discord-rules-1.0.1-1.16.5-forge.jar rename to services/discord-rules/discord-rules-1.0.2-1.16.5-forge.jar index 30c41ed..c38458f 100644 Binary files a/services/discord-rules/discord-rules-1.0.1-1.16.5-forge.jar and b/services/discord-rules/discord-rules-1.0.2-1.16.5-forge.jar differ diff --git a/services/discord-rules/discord-rules-1.0.1-1.20.1-forge.jar b/services/discord-rules/discord-rules-1.0.2-1.20.1-forge.jar similarity index 82% rename from services/discord-rules/discord-rules-1.0.1-1.20.1-forge.jar rename to services/discord-rules/discord-rules-1.0.2-1.20.1-forge.jar index 6133052..ea353cc 100644 Binary files a/services/discord-rules/discord-rules-1.0.1-1.20.1-forge.jar and b/services/discord-rules/discord-rules-1.0.2-1.20.1-forge.jar differ diff --git a/services/discord-rules/discord-rules-1.0.1-1.21.1-neoforge.jar b/services/discord-rules/discord-rules-1.0.2-1.21.1-neoforge.jar similarity index 73% rename from services/discord-rules/discord-rules-1.0.1-1.21.1-neoforge.jar rename to services/discord-rules/discord-rules-1.0.2-1.21.1-neoforge.jar index 88242bc..f2fb51a 100644 Binary files a/services/discord-rules/discord-rules-1.0.1-1.21.1-neoforge.jar and b/services/discord-rules/discord-rules-1.0.2-1.21.1-neoforge.jar differ diff --git a/services/rules-mod/1.16.5/build.gradle b/services/rules-mod/1.16.5/build.gradle index bc166a5..d7bf1cb 100644 --- a/services/rules-mod/1.16.5/build.gradle +++ b/services/rules-mod/1.16.5/build.gradle @@ -10,7 +10,7 @@ buildscript { apply plugin: 'net.minecraftforge.gradle' -version = '1.0.1' +version = '1.0.2' group = 'com.firefrostgaming.rules' archivesBaseName = 'firefrostrules' diff --git a/services/rules-mod/1.16.5/src/main/java/com/firefrostgaming/rules/ServerRules.java b/services/rules-mod/1.16.5/src/main/java/com/firefrostgaming/rules/ServerRules.java index e8785b2..9600d3e 100644 --- a/services/rules-mod/1.16.5/src/main/java/com/firefrostgaming/rules/ServerRules.java +++ b/services/rules-mod/1.16.5/src/main/java/com/firefrostgaming/rules/ServerRules.java @@ -16,7 +16,7 @@ public class ServerRules { private static final Logger LOGGER = LogManager.getLogger(ServerRules.class); public ServerRules() { - ModLoadingContext.get().registerConfig(ModConfig.Type.SERVER, ServerRulesConfig.SPEC); + ModLoadingContext.get().registerConfig(ModConfig.Type.COMMON, ServerRulesConfig.SPEC); FMLJavaModLoadingContext.get().getModEventBus().addListener(this::onConfigLoaded); MinecraftForge.EVENT_BUS.register(this); LOGGER.info("Firefrost Rules Mod Initialized."); @@ -26,7 +26,7 @@ public class ServerRules { if (event.getConfig().getSpec() == ServerRulesConfig.SPEC) { String token = ServerRulesConfig.BOT_TOKEN.get(); if (token.equals("YOUR_TOKEN_HERE")) { - LOGGER.warn("Rules mod is using default config values! Edit world/serverconfig/firefrostrules-server.toml"); + LOGGER.warn("Rules mod is using default config values! Edit config/firefrostrules-common.toml"); } else { LOGGER.info("Rules mod config loaded successfully. Channel: {}", ServerRulesConfig.CHANNEL_ID.get()); } diff --git a/services/rules-mod/1.20.1/build.gradle b/services/rules-mod/1.20.1/build.gradle index 8d2f756..b0e82c8 100755 --- a/services/rules-mod/1.20.1/build.gradle +++ b/services/rules-mod/1.20.1/build.gradle @@ -10,7 +10,7 @@ buildscript { apply plugin: 'net.minecraftforge.gradle' -version = '1.0.1' +version = '1.0.2' group = 'com.firefrostgaming.rules' archivesBaseName = 'firefrostrules' diff --git a/services/rules-mod/1.20.1/src/main/java/com/firefrostgaming/rules/ServerRules.java b/services/rules-mod/1.20.1/src/main/java/com/firefrostgaming/rules/ServerRules.java index 989e016..cd43c39 100755 --- a/services/rules-mod/1.20.1/src/main/java/com/firefrostgaming/rules/ServerRules.java +++ b/services/rules-mod/1.20.1/src/main/java/com/firefrostgaming/rules/ServerRules.java @@ -16,7 +16,7 @@ public class ServerRules { private static final Logger LOGGER = LoggerFactory.getLogger(ServerRules.class); public ServerRules() { - ModLoadingContext.get().registerConfig(ModConfig.Type.SERVER, ServerRulesConfig.SPEC); + ModLoadingContext.get().registerConfig(ModConfig.Type.COMMON, ServerRulesConfig.SPEC); MinecraftForge.EVENT_BUS.register(this); LOGGER.info("Firefrost Rules Mod Initialized."); } @@ -37,7 +37,7 @@ public class ServerRules { if (event.getConfig().getSpec() == ServerRulesConfig.SPEC) { String token = ServerRulesConfig.BOT_TOKEN.get(); if (token.equals("YOUR_TOKEN_HERE")) { - LOGGER.warn("Rules mod is using default config values! Edit world/serverconfig/firefrostrules-server.toml"); + LOGGER.warn("Rules mod is using default config values! Edit config/firefrostrules-common.toml"); } else { LOGGER.info("Rules mod config loaded successfully. Channel: {}", ServerRulesConfig.CHANNEL_ID.get()); } diff --git a/services/rules-mod/1.21.1/gradle.properties b/services/rules-mod/1.21.1/gradle.properties index a77c052..d729a3c 100644 --- a/services/rules-mod/1.21.1/gradle.properties +++ b/services/rules-mod/1.21.1/gradle.properties @@ -6,5 +6,5 @@ neo_version=21.1.65 mod_id=firefrostrules mod_name=Firefrost Rules -mod_version=1.0.1 +mod_version=1.0.2 mod_group_id=com.firefrostgaming.rules diff --git a/services/rules-mod/1.21.1/src/main/java/com/firefrostgaming/rules/ServerRules.java b/services/rules-mod/1.21.1/src/main/java/com/firefrostgaming/rules/ServerRules.java index ee195f8..4ea9289 100644 --- a/services/rules-mod/1.21.1/src/main/java/com/firefrostgaming/rules/ServerRules.java +++ b/services/rules-mod/1.21.1/src/main/java/com/firefrostgaming/rules/ServerRules.java @@ -17,7 +17,7 @@ public class ServerRules { private static final Logger LOGGER = LoggerFactory.getLogger(ServerRules.class); public ServerRules(IEventBus modEventBus, ModContainer modContainer) { - modContainer.registerConfig(ModConfig.Type.SERVER, ServerRulesConfig.SPEC); + modContainer.registerConfig(ModConfig.Type.COMMON, ServerRulesConfig.SPEC); modEventBus.addListener(this::onConfigLoaded); modEventBus.addListener(this::onConfigReload); NeoForge.EVENT_BUS.register(this); @@ -39,7 +39,7 @@ public class ServerRules { if (event.getConfig().getSpec() == ServerRulesConfig.SPEC) { String token = ServerRulesConfig.BOT_TOKEN.get(); if (token.equals("YOUR_TOKEN_HERE")) { - LOGGER.warn("Rules mod is using default config values! Edit world/serverconfig/firefrostrules-server.toml"); + LOGGER.warn("Rules mod is using default config values! Edit config/firefrostrules-common.toml"); } else { LOGGER.info("Rules mod config loaded successfully. Channel: {}", ServerRulesConfig.CHANNEL_ID.get()); } diff --git a/services/rules-mod/CHANGELOG.md b/services/rules-mod/CHANGELOG.md index 58ed8c0..bcd623d 100644 --- a/services/rules-mod/CHANGELOG.md +++ b/services/rules-mod/CHANGELOG.md @@ -1,5 +1,26 @@ # Rules Mod Changelog +## [1.0.2] - 2026-04-13 + +### Fixed +- **Config reset on restart** — switched from `ModConfig.Type.SERVER` to `ModConfig.Type.COMMON` +- SERVER configs live in `world/serverconfig/` and are tied to world load/unload lifecycle, causing Forge to overwrite edited values on every restart +- COMMON configs live in `config/` and load once at startup — values persist reliably + +### Changed +- Config location: `world/serverconfig/firefrostrules-server.toml` → `config/firefrostrules-common.toml` +- Config location (generic): `world/serverconfig/discordrules-server.toml` → `config/discordrules-common.toml` +- Updated `INSTALL.md` with new config path + +### Breaking +- Old config file at `world/serverconfig/` will be ignored — must re-enter values in new `config/` location + +### Applies To +- `firefrostrules` 1.0.2 (FFG branded, all 3 MC versions) +- `discordrules` 1.0.2 (generic/CurseForge fork, all 3 MC versions) + +--- + ## [1.0.1] - 2026-04-13 ### Fixed diff --git a/services/rules-mod/CLAUDE.md b/services/rules-mod/CLAUDE.md index 0dacb0c..1ce7c59 100644 --- a/services/rules-mod/CLAUDE.md +++ b/services/rules-mod/CLAUDE.md @@ -9,12 +9,9 @@ Player types `/rules` → mod fetches rules from a Discord message → displays in-game with colored formatting. Admins update rules by editing a Discord message — no restarts, no file editing. ## Config Location -Config file is created at `world/serverconfig/firefrostrules-server.toml` — NOT in `config/`. This applies to all three versions. - -## Install Procedure (IMPORTANT) -Do NOT place config files manually before first start. Forge must generate the file. -See `INSTALL.md` for full steps. Placing a config manually causes Forge to overwrite -it with defaults on startup (missing version header → config reset bug). +Config file is at `config/firefrostrules-common.toml` (COMMON type). +Changed from SERVER to COMMON in v1.0.2 to fix config reset on restart. +See `INSTALL.md` for full install steps. ## 7 Source Files (each version) - ServerRules.java — main mod class diff --git a/services/rules-mod/INSTALL.md b/services/rules-mod/INSTALL.md index f20e100..26e5623 100644 --- a/services/rules-mod/INSTALL.md +++ b/services/rules-mod/INSTALL.md @@ -1,19 +1,11 @@ # Rules Mod — Install Procedure -## Important: Do NOT place config files manually - -Forge generates `world/serverconfig/firefrostrules-server.toml` (or -`discordrules-server.toml` for the generic version) on first server start. -Placing a config file manually before the first run will cause Forge to -overwrite it with defaults — your bot token, channel ID, and message ID -will be lost. - ## Correct Install Steps 1. Place the jar in the server's `mods/` folder 2. Start the server once — Forge generates the config with defaults 3. Stop the server -4. Edit `world/serverconfig/firefrostrules-server.toml`: +4. Edit `config/firefrostrules-common.toml` (or `config/discordrules-common.toml`): - Set `bot_token` to your Discord bot token - Set `channel_id` to the channel containing your rules message - Set `message_id` to the specific message ID @@ -28,10 +20,15 @@ Rules mod config loaded successfully. Channel: If you see this instead, the config is still on defaults: ``` -Rules mod is using default config values! Edit world/serverconfig/firefrostrules-server.toml +Rules mod is using default config values! Edit config/firefrostrules-common.toml ``` ## Config Location -The config lives at `world/serverconfig/` — NOT `config/`. -This is standard Forge SERVER config behavior. +The config lives at `config/firefrostrules-common.toml` (COMMON type). +This loads once at startup and persists reliably across restarts. + +## Upgrading from v1.0.0 or v1.0.1 + +Old versions used `world/serverconfig/firefrostrules-server.toml`. +That file is now ignored. Copy your values to the new location above. diff --git a/services/rules-mod/firefrostrules-1.0.1-1.16.5-forge.jar b/services/rules-mod/firefrostrules-1.0.2-1.16.5-forge.jar similarity index 68% rename from services/rules-mod/firefrostrules-1.0.1-1.16.5-forge.jar rename to services/rules-mod/firefrostrules-1.0.2-1.16.5-forge.jar index 414599e..cf7d065 100644 Binary files a/services/rules-mod/firefrostrules-1.0.1-1.16.5-forge.jar and b/services/rules-mod/firefrostrules-1.0.2-1.16.5-forge.jar differ diff --git a/services/rules-mod/firefrostrules-1.0.1-1.20.1-forge.jar b/services/rules-mod/firefrostrules-1.0.2-1.20.1-forge.jar similarity index 80% rename from services/rules-mod/firefrostrules-1.0.1-1.20.1-forge.jar rename to services/rules-mod/firefrostrules-1.0.2-1.20.1-forge.jar index 8eb9e08..5a631f2 100644 Binary files a/services/rules-mod/firefrostrules-1.0.1-1.20.1-forge.jar and b/services/rules-mod/firefrostrules-1.0.2-1.20.1-forge.jar differ diff --git a/services/rules-mod/firefrostrules-1.0.1-1.21.1-neoforge.jar b/services/rules-mod/firefrostrules-1.0.2-1.21.1-neoforge.jar similarity index 70% rename from services/rules-mod/firefrostrules-1.0.1-1.21.1-neoforge.jar rename to services/rules-mod/firefrostrules-1.0.2-1.21.1-neoforge.jar index c2aeada..005c6bd 100644 Binary files a/services/rules-mod/firefrostrules-1.0.1-1.21.1-neoforge.jar and b/services/rules-mod/firefrostrules-1.0.2-1.21.1-neoforge.jar differ