This beta release of Jauml lays a solid foundation for managing mod configurations in Minecraft. Whether you're adding new settings or validating existing ones, this library streamlines the process with clean, maintainable code. It’s an essential tool for mod developers looking to enhance their projects with flexible config options.
Usage for Developers
Jauml is a library dependency. Players usually install it because another mod requires it.
| Step | Action |
|---|---|
| Add dependency | Depend on Jauml from your Fabric / Forge / NeoForge build |
| Create config | Define your settings with Jauml’s JSON config helpers |
| Load on startup | Read and validate config when your mod initializes |
| Save changes | Write updates back through the same config layer |
| Ship with your mod | List Jauml as a required dependency on CurseForge / Modrinth |
Configuration
Jauml itself is a library. Your mod owns the config files.
Typical pattern:
- Your mod declares settings through Jauml
- JSON config files are generated / updated under the usual Minecraft config folder
- Invalid or missing values can be validated and restored to safe defaults
Example shape (illustrative):
{
"enabled": true,
"debug": false,
"values": {
"exampleOption": 1
}
}
Exact keys depend on the mod using Jauml.
Compatibility
- Singleplayer
- Multiplayer / dedicated servers (as required by dependent mods)
- Fabric
- Forge
- NeoForge
- Large modpacks
- Client + server (library; follow the dependent mod’s side requirements)
Community & Support
- Discord: https://discord.gg/TJc3CxR4jK
- GitHub: https://github.com/MeherBenSalem/jauml
- Website: https://nightbeam.dev
- Store: https://nightbeam.dev/store
- CurseForge: https://www.curseforge.com/members/nightbeamstudio/projects
- Modrinth: https://modrinth.com/organization/nightbeam
License
Jauml is licensed under the Apache License 2.0.
You are free to use, modify, and redistribute Jauml in accordance with the terms of the Apache License 2.0.
Feel free to include Jauml in modpacks.
All Versions
+ Add Version| Name | Game version | Platforms | Published | Downloads | Actions |
|---|---|---|---|---|---|
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
|
R
1.3.0
|
1d ago | 1 | |||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 | ||||
| 1d ago | 1 |
### Added
- Minecraft **26.3** MultiLoader workspace (Fabric and NeoForge), matching the existing
26.2layout.
### Changed
- Version alignment**:
LIBRARY_VERSION, all workspacegradle.properties, and allMOD_VERSIONconstants bumped to **2.3.1**. - Build (26.3)**: Gradle 9.7.0, Fabric Loom 1.18.2, and ModDevGradle 2.0.148 (required for NeoForge 26.3 artifact generation).
### Added
- Minecraft **26.3** MultiLoader workspace (Fabric and NeoForge), matching the existing
26.2layout.
### Changed
- Version alignment**:
LIBRARY_VERSION, all workspacegradle.properties, and allMOD_VERSIONconstants bumped to **2.3.1**. - Build (26.3)**: Gradle 9.7.0, Fabric Loom 1.18.2, and ModDevGradle 2.0.148 (required for NeoForge 26.3 artifact generation).
### Added
- Minecraft **26.3** MultiLoader workspace (Fabric and NeoForge), matching the existing
26.2layout.
### Changed
- Version alignment**:
LIBRARY_VERSION, all workspacegradle.properties, and allMOD_VERSIONconstants bumped to **2.3.1**. - Build (26.3)**: Gradle 9.7.0, Fabric Loom 1.18.2, and ModDevGradle 2.0.148 (required for NeoForge 26.3 artifact generation).
### Added
- Minecraft **26.3** MultiLoader workspace (Fabric and NeoForge), matching the existing
26.2layout.
### Changed
- Version alignment**:
LIBRARY_VERSION, all workspacegradle.properties, and allMOD_VERSIONconstants bumped to **2.3.1**. - Build (26.3)**: Gradle 9.7.0, Fabric Loom 1.18.2, and ModDevGradle 2.0.148 (required for NeoForge 26.3 artifact generation).
### Added
- Minecraft **26.3** MultiLoader workspace (Fabric and NeoForge), matching the existing
26.2layout.
### Changed
- Version alignment**:
LIBRARY_VERSION, all workspacegradle.properties, and allMOD_VERSIONconstants bumped to **2.3.1**. - Build (26.3)**: Gradle 9.7.0, Fabric Loom 1.18.2, and ModDevGradle 2.0.148 (required for NeoForge 26.3 artifact generation).
### Added
- Minecraft **26.3** MultiLoader workspace (Fabric and NeoForge), matching the existing
26.2layout.
### Changed
- Version alignment**:
LIBRARY_VERSION, all workspacegradle.properties, and allMOD_VERSIONconstants bumped to **2.3.1**. - Build (26.3)**: Gradle 9.7.0, Fabric Loom 1.18.2, and ModDevGradle 2.0.148 (required for NeoForge 26.3 artifact generation).
### Added
- Minecraft **26.3** MultiLoader workspace (Fabric and NeoForge), matching the existing
26.2layout.
### Changed
- Version alignment**:
LIBRARY_VERSION, all workspacegradle.properties, and allMOD_VERSIONconstants bumped to **2.3.1**. - Build (26.3)**: Gradle 9.7.0, Fabric Loom 1.18.2, and ModDevGradle 2.0.148 (required for NeoForge 26.3 artifact generation).
### Added
- Minecraft **26.3** MultiLoader workspace (Fabric and NeoForge), matching the existing
26.2layout.
### Changed
- Version alignment**:
LIBRARY_VERSION, all workspacegradle.properties, and allMOD_VERSIONconstants bumped to **2.3.1**. - Build (26.3)**: Gradle 9.7.0, Fabric Loom 1.18.2, and ModDevGradle 2.0.148 (required for NeoForge 26.3 artifact generation).
### Added
- Minecraft **26.3** MultiLoader workspace (Fabric and NeoForge), matching the existing
26.2layout.
### Changed
- Version alignment**:
LIBRARY_VERSION, all workspacegradle.properties, and allMOD_VERSIONconstants bumped to **2.3.1**. - Build (26.3)**: Gradle 9.7.0, Fabric Loom 1.18.2, and ModDevGradle 2.0.148 (required for NeoForge 26.3 artifact generation).
### Added
- Minecraft **26.3** MultiLoader workspace (Fabric and NeoForge), matching the existing
26.2layout.
### Changed
- Version alignment**:
LIBRARY_VERSION, all workspacegradle.properties, and allMOD_VERSIONconstants bumped to **2.3.1**. - Build (26.3)**: Gradle 9.7.0, Fabric Loom 1.18.2, and ModDevGradle 2.0.148 (required for NeoForge 26.3 artifact generation).
### Added
- Minecraft **26.3** MultiLoader workspace (Fabric and NeoForge), matching the existing
26.2layout.
### Changed
- Version alignment**:
LIBRARY_VERSION, all workspacegradle.properties, and allMOD_VERSIONconstants bumped to **2.3.1**. - Build (26.3)**: Gradle 9.7.0, Fabric Loom 1.18.2, and ModDevGradle 2.0.148 (required for NeoForge 26.3 artifact generation).
### Added
- Minecraft **26.3** MultiLoader workspace (Fabric and NeoForge), matching the existing
26.2layout.
### Changed
- Version alignment**:
LIBRARY_VERSION, all workspacegradle.properties, and allMOD_VERSIONconstants bumped to **2.3.1**. - Build (26.3)**: Gradle 9.7.0, Fabric Loom 1.18.2, and ModDevGradle 2.0.148 (required for NeoForge 26.3 artifact generation).
### Added
ConfigFile**:asJsonObject()/getRoot()returning a deep clone of the root JSON object.ConfigFile**: Path-based accessors —getByPath,setByPath,getStringByPath,getIntByPath,getBooleanByPath,getDoubleByPath(with default-value overloads).ConfigFile**:setBackupRotation(int)for multi-generation.bakrotation on corrupted config recovery.ConfigFile**:reloadIfChanged()to reload only when file size or mtime changed.ConfigFile**:setStableSave(boolean)opt-in deterministic save viaJsonLib.stableStringify.JaumlConfig**:invalidate(String, String),invalidate(Path), andclearCache()for cache management.JsonMigrator**:setPreferredVersionKey(String)to control which version key is read and updated during migration.JsonLib**:detectVersion(JsonElement, String preferredKey)overload checking a preferred key first.JaumlInitializer**:initializeWithDemoConfig()for explicit demo config workflow;initialize()now skips demo config write in production.JsonSchema**: Optional constraint keywords —enum,minimum/maximum,minLength/maxLength,additionalProperties: false, andminItems/maxItems. Schemas that omit these keywords behave exactly as before.tn.naizo.jauml.util**: Optional utility package —PlatformUtil,JaumlLogger,ModuleVersion, andLifecyclehelpers. Additive only; core config API unchanged.
### Changed
- Build (Phase 4)**: Explicit
compileOnlyGson and SLF4J API dependencies in all MultiLoader workspaces;26.1.2migrated frombuildSrcto compositebuild-logic(aligned with26.2). SeeBUILD.md. ConfigFile**:save()now writes atomically via a temp file andFiles.move(withATOMIC_MOVEwhen supported).JaumlInitializer**:initialize()logs compatibility and library version but only writes demo config in development environments or when-Djauml.writeDemoConfig=true.- Version alignment**:
LIBRARY_VERSION, all workspacegradle.properties, and allMOD_VERSIONconstants bumped to **2.3.0**. - README**: Fixed usage example to use
asJsonObject()and typed getters instead of nonexistentconfig.get().
### Fixed
- Documentation and migration guide updated for 2.3.0 compatibility matrix while preserving 2.0 API support.
### Added
ConfigFile**:asJsonObject()/getRoot()returning a deep clone of the root JSON object.ConfigFile**: Path-based accessors —getByPath,setByPath,getStringByPath,getIntByPath,getBooleanByPath,getDoubleByPath(with default-value overloads).ConfigFile**:setBackupRotation(int)for multi-generation.bakrotation on corrupted config recovery.ConfigFile**:reloadIfChanged()to reload only when file size or mtime changed.ConfigFile**:setStableSave(boolean)opt-in deterministic save viaJsonLib.stableStringify.JaumlConfig**:invalidate(String, String),invalidate(Path), andclearCache()for cache management.JsonMigrator**:setPreferredVersionKey(String)to control which version key is read and updated during migration.JsonLib**:detectVersion(JsonElement, String preferredKey)overload checking a preferred key first.JaumlInitializer**:initializeWithDemoConfig()for explicit demo config workflow;initialize()now skips demo config write in production.JsonSchema**: Optional constraint keywords —enum,minimum/maximum,minLength/maxLength,additionalProperties: false, andminItems/maxItems. Schemas that omit these keywords behave exactly as before.tn.naizo.jauml.util**: Optional utility package —PlatformUtil,JaumlLogger,ModuleVersion, andLifecyclehelpers. Additive only; core config API unchanged.
### Changed
- Build (Phase 4)**: Explicit
compileOnlyGson and SLF4J API dependencies in all MultiLoader workspaces;26.1.2migrated frombuildSrcto compositebuild-logic(aligned with26.2). SeeBUILD.md. ConfigFile**:save()now writes atomically via a temp file andFiles.move(withATOMIC_MOVEwhen supported).JaumlInitializer**:initialize()logs compatibility and library version but only writes demo config in development environments or when-Djauml.writeDemoConfig=true.- Version alignment**:
LIBRARY_VERSION, all workspacegradle.properties, and allMOD_VERSIONconstants bumped to **2.3.0**. - README**: Fixed usage example to use
asJsonObject()and typed getters instead of nonexistentconfig.get().
### Fixed
- Documentation and migration guide updated for 2.3.0 compatibility matrix while preserving 2.0 API support.
### Added
ConfigFile**:asJsonObject()/getRoot()returning a deep clone of the root JSON object.ConfigFile**: Path-based accessors —getByPath,setByPath,getStringByPath,getIntByPath,getBooleanByPath,getDoubleByPath(with default-value overloads).ConfigFile**:setBackupRotation(int)for multi-generation.bakrotation on corrupted config recovery.ConfigFile**:reloadIfChanged()to reload only when file size or mtime changed.ConfigFile**:setStableSave(boolean)opt-in deterministic save viaJsonLib.stableStringify.JaumlConfig**:invalidate(String, String),invalidate(Path), andclearCache()for cache management.JsonMigrator**:setPreferredVersionKey(String)to control which version key is read and updated during migration.JsonLib**:detectVersion(JsonElement, String preferredKey)overload checking a preferred key first.JaumlInitializer**:initializeWithDemoConfig()for explicit demo config workflow;initialize()now skips demo config write in production.JsonSchema**: Optional constraint keywords —enum,minimum/maximum,minLength/maxLength,additionalProperties: false, andminItems/maxItems. Schemas that omit these keywords behave exactly as before.tn.naizo.jauml.util**: Optional utility package —PlatformUtil,JaumlLogger,ModuleVersion, andLifecyclehelpers. Additive only; core config API unchanged.
### Changed
- Build (Phase 4)**: Explicit
compileOnlyGson and SLF4J API dependencies in all MultiLoader workspaces;26.1.2migrated frombuildSrcto compositebuild-logic(aligned with26.2). SeeBUILD.md. ConfigFile**:save()now writes atomically via a temp file andFiles.move(withATOMIC_MOVEwhen supported).JaumlInitializer**:initialize()logs compatibility and library version but only writes demo config in development environments or when-Djauml.writeDemoConfig=true.- Version alignment**:
LIBRARY_VERSION, all workspacegradle.properties, and allMOD_VERSIONconstants bumped to **2.3.0**. - README**: Fixed usage example to use
asJsonObject()and typed getters instead of nonexistentconfig.get().
### Fixed
- Documentation and migration guide updated for 2.3.0 compatibility matrix while preserving 2.0 API support.
### Added
ConfigFile**:asJsonObject()/getRoot()returning a deep clone of the root JSON object.ConfigFile**: Path-based accessors —getByPath,setByPath,getStringByPath,getIntByPath,getBooleanByPath,getDoubleByPath(with default-value overloads).ConfigFile**:setBackupRotation(int)for multi-generation.bakrotation on corrupted config recovery.ConfigFile**:reloadIfChanged()to reload only when file size or mtime changed.ConfigFile**:setStableSave(boolean)opt-in deterministic save viaJsonLib.stableStringify.JaumlConfig**:invalidate(String, String),invalidate(Path), andclearCache()for cache management.JsonMigrator**:setPreferredVersionKey(String)to control which version key is read and updated during migration.JsonLib**:detectVersion(JsonElement, String preferredKey)overload checking a preferred key first.JaumlInitializer**:initializeWithDemoConfig()for explicit demo config workflow;initialize()now skips demo config write in production.JsonSchema**: Optional constraint keywords —enum,minimum/maximum,minLength/maxLength,additionalProperties: false, andminItems/maxItems. Schemas that omit these keywords behave exactly as before.tn.naizo.jauml.util**: Optional utility package —PlatformUtil,JaumlLogger,ModuleVersion, andLifecyclehelpers. Additive only; core config API unchanged.
### Changed
- Build (Phase 4)**: Explicit
compileOnlyGson and SLF4J API dependencies in all MultiLoader workspaces;26.1.2migrated frombuildSrcto compositebuild-logic(aligned with26.2). SeeBUILD.md. ConfigFile**:save()now writes atomically via a temp file andFiles.move(withATOMIC_MOVEwhen supported).JaumlInitializer**:initialize()logs compatibility and library version but only writes demo config in development environments or when-Djauml.writeDemoConfig=true.- Version alignment**:
LIBRARY_VERSION, all workspacegradle.properties, and allMOD_VERSIONconstants bumped to **2.3.0**. - README**: Fixed usage example to use
asJsonObject()and typed getters instead of nonexistentconfig.get().
### Fixed
- Documentation and migration guide updated for 2.3.0 compatibility matrix while preserving 2.0 API support.
### Added
ConfigFile**:asJsonObject()/getRoot()returning a deep clone of the root JSON object.ConfigFile**: Path-based accessors —getByPath,setByPath,getStringByPath,getIntByPath,getBooleanByPath,getDoubleByPath(with default-value overloads).ConfigFile**:setBackupRotation(int)for multi-generation.bakrotation on corrupted config recovery.ConfigFile**:reloadIfChanged()to reload only when file size or mtime changed.ConfigFile**:setStableSave(boolean)opt-in deterministic save viaJsonLib.stableStringify.JaumlConfig**:invalidate(String, String),invalidate(Path), andclearCache()for cache management.JsonMigrator**:setPreferredVersionKey(String)to control which version key is read and updated during migration.JsonLib**:detectVersion(JsonElement, String preferredKey)overload checking a preferred key first.JaumlInitializer**:initializeWithDemoConfig()for explicit demo config workflow;initialize()now skips demo config write in production.JsonSchema**: Optional constraint keywords —enum,minimum/maximum,minLength/maxLength,additionalProperties: false, andminItems/maxItems. Schemas that omit these keywords behave exactly as before.tn.naizo.jauml.util**: Optional utility package —PlatformUtil,JaumlLogger,ModuleVersion, andLifecyclehelpers. Additive only; core config API unchanged.
### Changed
- Build (Phase 4)**: Explicit
compileOnlyGson and SLF4J API dependencies in all MultiLoader workspaces;26.1.2migrated frombuildSrcto compositebuild-logic(aligned with26.2). SeeBUILD.md. ConfigFile**:save()now writes atomically via a temp file andFiles.move(withATOMIC_MOVEwhen supported).JaumlInitializer**:initialize()logs compatibility and library version but only writes demo config in development environments or when-Djauml.writeDemoConfig=true.- Version alignment**:
LIBRARY_VERSION, all workspacegradle.properties, and allMOD_VERSIONconstants bumped to **2.3.0**. - README**: Fixed usage example to use
asJsonObject()and typed getters instead of nonexistentconfig.get().
### Fixed
- Documentation and migration guide updated for 2.3.0 compatibility matrix while preserving 2.0 API support.
### Added
ConfigFile**:asJsonObject()/getRoot()returning a deep clone of the root JSON object.ConfigFile**: Path-based accessors —getByPath,setByPath,getStringByPath,getIntByPath,getBooleanByPath,getDoubleByPath(with default-value overloads).ConfigFile**:setBackupRotation(int)for multi-generation.bakrotation on corrupted config recovery.ConfigFile**:reloadIfChanged()to reload only when file size or mtime changed.ConfigFile**:setStableSave(boolean)opt-in deterministic save viaJsonLib.stableStringify.JaumlConfig**:invalidate(String, String),invalidate(Path), andclearCache()for cache management.JsonMigrator**:setPreferredVersionKey(String)to control which version key is read and updated during migration.JsonLib**:detectVersion(JsonElement, String preferredKey)overload checking a preferred key first.JaumlInitializer**:initializeWithDemoConfig()for explicit demo config workflow;initialize()now skips demo config write in production.JsonSchema**: Optional constraint keywords —enum,minimum/maximum,minLength/maxLength,additionalProperties: false, andminItems/maxItems. Schemas that omit these keywords behave exactly as before.tn.naizo.jauml.util**: Optional utility package —PlatformUtil,JaumlLogger,ModuleVersion, andLifecyclehelpers. Additive only; core config API unchanged.
### Changed
- Build (Phase 4)**: Explicit
compileOnlyGson and SLF4J API dependencies in all MultiLoader workspaces;26.1.2migrated frombuildSrcto compositebuild-logic(aligned with26.2). SeeBUILD.md. ConfigFile**:save()now writes atomically via a temp file andFiles.move(withATOMIC_MOVEwhen supported).JaumlInitializer**:initialize()logs compatibility and library version but only writes demo config in development environments or when-Djauml.writeDemoConfig=true.- Version alignment**:
LIBRARY_VERSION, all workspacegradle.properties, and allMOD_VERSIONconstants bumped to **2.3.0**. - README**: Fixed usage example to use
asJsonObject()and typed getters instead of nonexistentconfig.get().
### Fixed
- Documentation and migration guide updated for 2.3.0 compatibility matrix while preserving 2.0 API support.
### Added
ConfigFile**:asJsonObject()/getRoot()returning a deep clone of the root JSON object.ConfigFile**: Path-based accessors —getByPath,setByPath,getStringByPath,getIntByPath,getBooleanByPath,getDoubleByPath(with default-value overloads).ConfigFile**:setBackupRotation(int)for multi-generation.bakrotation on corrupted config recovery.ConfigFile**:reloadIfChanged()to reload only when file size or mtime changed.ConfigFile**:setStableSave(boolean)opt-in deterministic save viaJsonLib.stableStringify.JaumlConfig**:invalidate(String, String),invalidate(Path), andclearCache()for cache management.JsonMigrator**:setPreferredVersionKey(String)to control which version key is read and updated during migration.JsonLib**:detectVersion(JsonElement, String preferredKey)overload checking a preferred key first.JaumlInitializer**:initializeWithDemoConfig()for explicit demo config workflow;initialize()now skips demo config write in production.JsonSchema**: Optional constraint keywords —enum,minimum/maximum,minLength/maxLength,additionalProperties: false, andminItems/maxItems. Schemas that omit these keywords behave exactly as before.tn.naizo.jauml.util**: Optional utility package —PlatformUtil,JaumlLogger,ModuleVersion, andLifecyclehelpers. Additive only; core config API unchanged.
### Changed
- Build (Phase 4)**: Explicit
compileOnlyGson and SLF4J API dependencies in all MultiLoader workspaces;26.1.2migrated frombuildSrcto compositebuild-logic(aligned with26.2). SeeBUILD.md. ConfigFile**:save()now writes atomically via a temp file andFiles.move(withATOMIC_MOVEwhen supported).JaumlInitializer**:initialize()logs compatibility and library version but only writes demo config in development environments or when-Djauml.writeDemoConfig=true.- Version alignment**:
LIBRARY_VERSION, all workspacegradle.properties, and allMOD_VERSIONconstants bumped to **2.3.0**. - README**: Fixed usage example to use
asJsonObject()and typed getters instead of nonexistentconfig.get().
### Fixed
- Documentation and migration guide updated for 2.3.0 compatibility matrix while preserving 2.0 API support.
### Added
ConfigFile**:asJsonObject()/getRoot()returning a deep clone of the root JSON object.ConfigFile**: Path-based accessors —getByPath,setByPath,getStringByPath,getIntByPath,getBooleanByPath,getDoubleByPath(with default-value overloads).ConfigFile**:setBackupRotation(int)for multi-generation.bakrotation on corrupted config recovery.ConfigFile**:reloadIfChanged()to reload only when file size or mtime changed.ConfigFile**:setStableSave(boolean)opt-in deterministic save viaJsonLib.stableStringify.JaumlConfig**:invalidate(String, String),invalidate(Path), andclearCache()for cache management.JsonMigrator**:setPreferredVersionKey(String)to control which version key is read and updated during migration.JsonLib**:detectVersion(JsonElement, String preferredKey)overload checking a preferred key first.JaumlInitializer**:initializeWithDemoConfig()for explicit demo config workflow;initialize()now skips demo config write in production.JsonSchema**: Optional constraint keywords —enum,minimum/maximum,minLength/maxLength,additionalProperties: false, andminItems/maxItems. Schemas that omit these keywords behave exactly as before.tn.naizo.jauml.util**: Optional utility package —PlatformUtil,JaumlLogger,ModuleVersion, andLifecyclehelpers. Additive only; core config API unchanged.
### Changed
- Build (Phase 4)**: Explicit
compileOnlyGson and SLF4J API dependencies in all MultiLoader workspaces;26.1.2migrated frombuildSrcto compositebuild-logic(aligned with26.2). SeeBUILD.md. ConfigFile**:save()now writes atomically via a temp file andFiles.move(withATOMIC_MOVEwhen supported).JaumlInitializer**:initialize()logs compatibility and library version but only writes demo config in development environments or when-Djauml.writeDemoConfig=true.- Version alignment**:
LIBRARY_VERSION, all workspacegradle.properties, and allMOD_VERSIONconstants bumped to **2.3.0**. - README**: Fixed usage example to use
asJsonObject()and typed getters instead of nonexistentconfig.get().
### Fixed
- Documentation and migration guide updated for 2.3.0 compatibility matrix while preserving 2.0 API support.
### Added
ConfigFile**:asJsonObject()/getRoot()returning a deep clone of the root JSON object.ConfigFile**: Path-based accessors —getByPath,setByPath,getStringByPath,getIntByPath,getBooleanByPath,getDoubleByPath(with default-value overloads).ConfigFile**:setBackupRotation(int)for multi-generation.bakrotation on corrupted config recovery.ConfigFile**:reloadIfChanged()to reload only when file size or mtime changed.ConfigFile**:setStableSave(boolean)opt-in deterministic save viaJsonLib.stableStringify.JaumlConfig**:invalidate(String, String),invalidate(Path), andclearCache()for cache management.JsonMigrator**:setPreferredVersionKey(String)to control which version key is read and updated during migration.JsonLib**:detectVersion(JsonElement, String preferredKey)overload checking a preferred key first.JaumlInitializer**:initializeWithDemoConfig()for explicit demo config workflow;initialize()now skips demo config write in production.JsonSchema**: Optional constraint keywords —enum,minimum/maximum,minLength/maxLength,additionalProperties: false, andminItems/maxItems. Schemas that omit these keywords behave exactly as before.tn.naizo.jauml.util**: Optional utility package —PlatformUtil,JaumlLogger,ModuleVersion, andLifecyclehelpers. Additive only; core config API unchanged.
### Changed
- Build (Phase 4)**: Explicit
compileOnlyGson and SLF4J API dependencies in all MultiLoader workspaces;26.1.2migrated frombuildSrcto compositebuild-logic(aligned with26.2). SeeBUILD.md. ConfigFile**:save()now writes atomically via a temp file andFiles.move(withATOMIC_MOVEwhen supported).JaumlInitializer**:initialize()logs compatibility and library version but only writes demo config in development environments or when-Djauml.writeDemoConfig=true.- Version alignment**:
LIBRARY_VERSION, all workspacegradle.properties, and allMOD_VERSIONconstants bumped to **2.3.0**. - README**: Fixed usage example to use
asJsonObject()and typed getters instead of nonexistentconfig.get().
### Fixed
- Documentation and migration guide updated for 2.3.0 compatibility matrix while preserving 2.0 API support.
### Added
ConfigFile**:asJsonObject()/getRoot()returning a deep clone of the root JSON object.ConfigFile**: Path-based accessors —getByPath,setByPath,getStringByPath,getIntByPath,getBooleanByPath,getDoubleByPath(with default-value overloads).ConfigFile**:setBackupRotation(int)for multi-generation.bakrotation on corrupted config recovery.ConfigFile**:reloadIfChanged()to reload only when file size or mtime changed.ConfigFile**:setStableSave(boolean)opt-in deterministic save viaJsonLib.stableStringify.JaumlConfig**:invalidate(String, String),invalidate(Path), andclearCache()for cache management.JsonMigrator**:setPreferredVersionKey(String)to control which version key is read and updated during migration.JsonLib**:detectVersion(JsonElement, String preferredKey)overload checking a preferred key first.JaumlInitializer**:initializeWithDemoConfig()for explicit demo config workflow;initialize()now skips demo config write in production.JsonSchema**: Optional constraint keywords —enum,minimum/maximum,minLength/maxLength,additionalProperties: false, andminItems/maxItems. Schemas that omit these keywords behave exactly as before.tn.naizo.jauml.util**: Optional utility package —PlatformUtil,JaumlLogger,ModuleVersion, andLifecyclehelpers. Additive only; core config API unchanged.
### Changed
- Build (Phase 4)**: Explicit
compileOnlyGson and SLF4J API dependencies in all MultiLoader workspaces;26.1.2migrated frombuildSrcto compositebuild-logic(aligned with26.2). SeeBUILD.md. ConfigFile**:save()now writes atomically via a temp file andFiles.move(withATOMIC_MOVEwhen supported).JaumlInitializer**:initialize()logs compatibility and library version but only writes demo config in development environments or when-Djauml.writeDemoConfig=true.- Version alignment**:
LIBRARY_VERSION, all workspacegradle.properties, and allMOD_VERSIONconstants bumped to **2.3.0**. - README**: Fixed usage example to use
asJsonObject()and typed getters instead of nonexistentconfig.get().
### Fixed
- Documentation and migration guide updated for 2.3.0 compatibility matrix while preserving 2.0 API support.
### Bug Fixes
- Fixed Fabric/NeoForge 26.1.2 crash from stub MixinMinecraft missing @Mixin (#3/#4).
### File
- jauml-neoforge-26.2-2.1.1.jar
### Bug Fixes
- Fixed Fabric/NeoForge 26.1.2 crash from stub MixinMinecraft missing @Mixin (#3/#4).
### File
- jauml-neoforge-26.1.2-2.1.1.jar
### Bug Fixes
- Fixed Fabric/NeoForge 26.1.2 crash from stub MixinMinecraft missing @Mixin (#3/#4).
### File
- jauml-neoforge-1.21.11-2.1.1.jar
### Bug Fixes
- Fixed Fabric/NeoForge 26.1.2 crash from stub MixinMinecraft missing @Mixin (#3/#4).
### File
- jauml-neoforge-1.21.1-2.1.1.jar
### Bug Fixes
- Fixed Fabric/NeoForge 26.1.2 crash from stub MixinMinecraft missing @Mixin (#3/#4).
### File
- jauml-forge-1.20.1-2.1.1.jar
### Bug Fixes
- Fixed Fabric/NeoForge 26.1.2 crash from stub MixinMinecraft missing @Mixin (#3/#4).
### File
- jauml-fabric-26.2-2.1.1.jar
### Bug Fixes
- Fixed Fabric/NeoForge 26.1.2 crash from stub MixinMinecraft missing @Mixin (#3/#4).
### File
- jauml-fabric-26.1.2-2.1.1.jar
### Bug Fixes
- Fixed Fabric/NeoForge 26.1.2 crash from stub MixinMinecraft missing @Mixin (#3/#4).
### File
- jauml-fabric-1.21.11-2.1.1.jar
