Stop generating defaults at runtime and treat the checked-in config.yml as the canonical plugin configuration that should be shaded into the plugin JAR and copied to the data folder on first run.
Description
Add src/resources as a resources source set in eternalcombat-plugin/build.gradle.kts so eternalcombat-plugin/src/resources/config.yml is packaged into the plugin artifact.
Change startup in CombatPlugin to copy the bundled config.yml into the plugin data folder with saveResource("config.yml", false) when the file is missing and then load that file via ConfigService.
Remove saveDefaults() from ConfigService.create(...) so the Okaeri loader does not create or overwrite defaults and the checked-in file remains the source of truth.
Testing
Ran git diff --check successfully after the changes.
Attempted to run ./gradlew :eternalcombat-plugin:shadowJar (and :processResources) but the Gradle build could not complete in this environment due to a Java toolchain requirement for Java 17 (environment has Java 25), so packaging could not be validated here.
### Motivation
- Stop generating defaults at runtime and treat the checked-in `config.yml` as the canonical plugin configuration that should be shaded into the plugin JAR and copied to the data folder on first run.
### Description
- Add `src/resources` as a resources source set in `eternalcombat-plugin/build.gradle.kts` so `eternalcombat-plugin/src/resources/config.yml` is packaged into the plugin artifact.
- Change startup in `CombatPlugin` to copy the bundled `config.yml` into the plugin data folder with `saveResource("config.yml", false)` when the file is missing and then load that file via `ConfigService`.
- Remove `saveDefaults()` from `ConfigService.create(...)` so the Okaeri loader does not create or overwrite defaults and the checked-in file remains the source of truth.
### Testing
- Ran `git diff --check` successfully after the changes.
- Attempted to run `./gradlew :eternalcombat-plugin:shadowJar` (and `:processResources`) but the Gradle build could not complete in this environment due to a Java toolchain requirement for Java 17 (environment has Java 25), so packaging could not be validated here.
------
[Codex Task](https://chatgpt.com/codex/tasks/task_e_69c177ae0544832f9ee8dd0cf268e867)
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Motivation
config.ymlas the canonical plugin configuration that should be shaded into the plugin JAR and copied to the data folder on first run.Description
src/resourcesas a resources source set ineternalcombat-plugin/build.gradle.ktssoeternalcombat-plugin/src/resources/config.ymlis packaged into the plugin artifact.CombatPluginto copy the bundledconfig.ymlinto the plugin data folder withsaveResource("config.yml", false)when the file is missing and then load that file viaConfigService.saveDefaults()fromConfigService.create(...)so the Okaeri loader does not create or overwrite defaults and the checked-in file remains the source of truth.Testing
git diff --checksuccessfully after the changes../gradlew :eternalcombat-plugin:shadowJar(and:processResources) but the Gradle build could not complete in this environment due to a Java toolchain requirement for Java 17 (environment has Java 25), so packaging could not be validated here.Codex Task