# Rules Mod Changelog ## [1.0.5] - 2026-04-13 ### Fixed - **Console path never fetched from Discord** — `/rules` from server console hit early return that only read from cache/fallback, never triggered `DiscordFetcher`. Console now fetches async like the player path. - **DIAG logs placed after early exit** — moved `[DIAG]` logging before the player/console branch so it fires on every invocation regardless of source ### Added - `[DIAG]` INFO-level logging on every `/rules` invocation: isPlayer, token length, channel, messageId, isValid - INSTALL.md note about testing from console vs in-game ### Applies To - All 6 builds at 1.0.5 (3 firefrostrules + 3 discordrules) --- ## [1.0.4] - 2026-04-13 *(diagnostic build — 1.20.1 only)* ### Added - INFO-level `[DIAG]` logging in RulesCommand: token length, channel ID, message ID, isValid result on every `/rules` invocation - INFO-level `[DIAG]` logging in DiscordFetcher: fetch attempt start, raw messageId on validation failure, HTTP target URL - Purpose: trace exactly where the config-to-fetch pipeline breaks on Otherworld ### Note - Only `firefrostrules-1.0.4-1.20.1-forge.jar` was built. Other versions remain at 1.0.3. --- ## [1.0.3] - 2026-04-13 ### Fixed - **1.20.1: Config events on wrong bus** — `ModConfigEvent.Loading` and `Reloading` fire on the mod event bus, not `MinecraftForge.EVENT_BUS`. Moved to `FMLJavaModLoadingContext.getModEventBus().addListener()` - **Config file section headers** — values placed outside `[discord]` section are invisible to the spec. Added prominent warning comments to generated config file ### Added - Debug logging in RulesCommand (1.20.1) prints token length + channel ID at command time - Config file header comment: "Do not remove [section] headers when editing" - INSTALL.md updated with section header preservation warning ### Applies To - All 6 builds bumped to 1.0.3 --- ## [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 - Config values no longer reset to defaults on server restart (Forge config spec timing issue) - Added `ModConfigEvent.Loading` handler with clear warnings when default config is detected ### Added - Install procedure documentation in `INSTALL.md` - `Loading` event handler logs channel ID on successful config read ### Applies To - `firefrostrules` 1.0.1 (FFG branded, all 3 MC versions) - `discordrules` 1.0.1 (generic/CurseForge fork, all 3 MC versions) --- ## [1.0.0] - 2026-04-12 ### Added - Initial release - `/rules` command fetches rules from a Discord message via bot token - 30-minute cache with fallback to defaults - 60-second per-player cooldown - Configurable via `world/serverconfig/firefrostrules-server.toml` - `discordrules` generic fork for CurseForge distribution (no FFG branding, configurable colors)