Implemented a robust auto-updating mechanism within ConfigUtils.java.
No more manual config resets! Eliminates the need for server admins to manually regenerate or copy-paste configurations during plugin version updates.
Whenever a configuration file (config.yml, messages.yml, or default dungeon templates) is loaded, the system silently compares the external file on the server with the pristine resource file located inside the plugin's .jar.
Automatically injects any newly added configuration keys or default values into your local files without overwriting your customized values.
Added an optional strict mode parameter (removeObsolete) capable of cleaning up and deleting outdated configuration keys. (Currently defaults to false to safely protect user-defined dynamic keys such as custom rewards and action entries).
Logs an [Auto-Updater] message cleanly to the console whenever an injection occurs.
System & Action Notifications Integration
Replaced hardcoded game.sendMessage() calls inside SpawnWaveAction, ReachLocationAction, and SmartBreakWallAction with the standard game.sendActionMessage(...).
Dynamically linked all action broadcasts to their correct contextual categories (init, progress, complete).
This ensures all notifications are now fully togglable directly from the action-notifications module inside config.yml.
[HR][/HR]
️ Bug Fixes & Stability
️ DungeonGame Stability
Added a safe null-check explicitly to the sendActionMessage logic. This gracefully handles any 3rd-party action instances that haven't fully registered a valid actionType, preventing unwanted NullPointerException crashes.
⚙️ Editor & Map Config Structure Fixes
Fixed example_dungeon.yml template structure: The LOOT_CHEST items configuration list was outdated and misleading (List instead of Map). Rewrote it to safely match the exact ConfigurationSection (SLOT: "DATA") schema exported naturally by the in-game GUI Editor.
Fixed config.yml: Changed the action-defaults.loot_chest.items section from a broken array list [ ] to an empty map block {} to ensure correct parsing and avoid backend YAML casting errors.