Changelog
Additions
- Added
ValidatedField
mapping. Validation can be mapped to validation of any other convertible type with the newmap
methods.- New helper class
ValidatedRegistryType
mapsValidatedIdentifier
to registry objects, allowing for easy direct implmentation of setting based on registry objects (Items, Blocks, etc) without having to later map the identifiers yourself.
- New helper class
ValidatedField
now has a helpercodec
method for generating a Codec of the underlying type.ValidatedField
now has a listener system that triggers on anyset
of the field. This listener is aConsumer<ValidatedField<T>>
and is added withwithListener
- Added
EventApi
and corresponding direct implementations in theConfig
class- like other sub-apis, access this Api through the
ConfigApi
onSyncClient
- fires when a config is synced to a clientonUpdateClient
- fires when a config is updated in-game on the client sideonUpdateServer
- fires when a config is updated in-game on the server side
- like other sub-apis, access this Api through the
- Added
ConfigAction
, which can be used to add arbitrary on-click buttons in the Config GUI. Use them to link to your wiki, open a patchouli guide book, give the player an item, etc. - Added extremely basic
PlatformApi
for simple cross-loader tasks like checking if the game state is client-sided or not.
Changes
- Specialized widgets no longer internally extend
PressableWidget
orButtonWidget
, which was causing issues with Visual Overhaul or any other mod that leaks the constructor of the widget. It is recommended to use theCustom
variants of those classes for any custom validation implementation.
Fixes
ValidatedIdentifier
can now bind to dynamic registries using theofRegistryKey
initializer methods.- Fix syncing on login not working.
- Fixed updates on client-only configs sometimes blasting the log with the full config contents.