Skip to content

Advanced Usage

This section summarizes techniques and considerations commonly used in large projects or special requirements.

Static Fields vs Instance Fields

  • Static fields:
    • Simplest to use, read directly with MyConfig.section.option
    • Recommended for most scenarios
  • Instance fields:
    • Obtain instance via TritiumConfig.getConfig(MOD_ID).get() then access
    • Suitable for scenarios requiring multiple config instances or stronger encapsulation

Custom Filename and Multiple Configurations

  • Use TritiumConfig#filename("my_config") to customize filename
  • For multiple configurations, register multiple TritiumConfig instances (different modId or different configClass)

In-Program Modification and Saving

  • After modifying field values (static/instance), call config.save() to persist
  • UI save also calls save()

Caching and Performance

  • Parser return values are wrapped in ConfigValue\<T\>, cache expires after 3000ms by default
  • To reflect disk changes immediately, call reload() or wait for hot reload

Listening and Hot Reload

  • Built-in ConfigFileWatcher checks lastModified every 2 seconds
  • If changes detected, automatically calls reload()

Logging and Debugging

  • Library outputs logs at key points: registration, reload, save, migration
  • Out-of-range/parse failures output warn, serious errors output error log and throw exceptions

Compatibility and Limitations

  • Supported types: boolean/int/long/double/String/enum/List\<String\>
  • Lists only support string elements
  • Server environment won't load items annotated with @ClientOnly