90% of ad revenue goes to creators. Go ad-free while supporting creators with Modrinth Plus. Subscribe today!
Changelog
Version 0.6.0 implements several breaking changes, please update implementations as needed, and feel free to reach out to discuss issues that come up.
ValidatedEntityAttribute
is removedCustom[Widgets]
are moved from the internal widget package to the custom package- Several widgets and other classes have been deleted
PopupWidget
has many deprecations, and probably at least one breaking change despite my best efforts- Possibly more, I didn't take great notes
Registrar is still marked experimental with anticipated stability by 0.7.0
As of 0.6.0, 1.20.4 and 1.20.6 will no longer be receiving active updates.
Additions
- Created a ground-up list widget system with
CustomListWidget
and the built-in implementationDynamicListWidget
. This new list is more powerful than the vanilla lists, allowing for varying heights for each element, hiding/unhiding individual entries, built in searching of entries, and more. - Created
Searcher
system for building simple search implementations from a collection of elements. ValidatedPair
and corresponding methodValidatedPair.pairWith
. This new validation joins two settings into one, and displays their widgets side-by-side. This is convenient for number ranges and so on.- Validated numbers now have a third widget type,
TEXTBOX_WITH_BUTTONS
. The standard entrybox also has a small up and down button with this layout. - Added custom ScreenNarrator implementation for config screens with several improvements and bug fixes over the vanilla narrator.
Translatable Updates
Translatable
now includes aprefix
element. Add a lang key for a setting, section, or config to add inline "prefix text" that appears above the setting or at the top of the setting list, respectively. This pairs well with the next addition- For implementations of
Translatable
, be sure to overridehasPrefix
,prefix
, andprefixKey
as needed.
Config Groups
- Added new Config Group system. Groups are inline, collapsible collections of settings. Groups are an excellent place to add a prefix, to provide a general description of what the settings inside the group do.
- Groups can be nested, though this is probably not needed in most circumstances
Screen Anchors
- Configs, Sections, and Groups are now Anchors, much like anchors in a web page.
- A new go-to menu in the bottom left (accessible by pressing Ctrl + E also) allows you to quickly navigate between all the anchors of the current config namespace.
Context Action System
- Created new keybind-like
ContextAction
system that allows for powerful handling of context actions and key presses. - Automatically builds context menus as applicable to the right-clicked element.
- Handles complex keybinds like ctrl-shift-C, etc.
- Handles inputs in a layered manner, allowing each layer to only capture the inputs it cares about, passing the input
- Added several new keybinds
- F1: Opens info screen
- Ctrl + E: Opens goto menu
- Backspace: Return to the previous config screen
- Home: Scrolls to the top of the config list
- End: Scrolls to the bottom of the config list
- (Context menu): You can now fully clear collection settings with the Clear command.
EntryCreator
- New system for creating list entries in an orderly manner
ValidatedField
now has several helper methods for easily creating custom entries without needing to fully re-implement the base design.
LayoutWidget
LayoutWidget
added, a generalization and improvement of the system inPopupWidget
. This widget can be used to create automatically laid out collections of widgets using a DOM-like layout model.- Entry creators and several other systems in FC now use these layouts.
Changes
- The Result Provider API is promoted to stable
- The
Pos
system now implementsSupplier
- Overhauled the
Decoration
system, nowDecorated
, a simple Drawable-like interface that allows passing of different types of icons to various FC systems, dynamically rendered, animated, etc. - Most custom widget implementations now use a
TextureSet
system for defining textures to use in various hovered and focused states
Fixes
- Fix apparent concurrent modification problem with screen scope registration.
- Moved catalogue compat back to somewhere that Catalogue can actually find it.
- Fix crash on suggestion windows trying to substring empty suggestions.
- Fix config objects that don't implement
equals
not mapping properly between de/serializations, which improperly caused resets of data. - Fixed bug with update de/serialization not working properly on nested config sections