Config API with automatic GUIs, powerful validation options, server-client sync, and more!

Fzzy Config is a powerful multi-loader configuration engine for Minecraft Mods that meets you where you want to be. Quick and dirty or detailed and featureful, Fzzy Config will work with you. It provides a wide array of features above and beyond what you can find in other libraries.
Required
Required
Terms for using, modifying and redistributing this product.
16.06.2026 · Modrinth
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and...Screenshots and images from the original Modrinth page.











Published versions and original Modrinth files.
16.06.2026 · 227 806 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentValidatedField.translationProvider, ValidatedField.descriptionProvider, ValidatedField.attachProvider, and the associated Provider types are now static (as well as instance methods) so java users won't have to call .Companion. anymore (but can)ValidatedChoiceList and similar settings with an "inline" widget layout now properly show the tooltip for the individual options as well as the settings overall tooltip16.06.2026 · 6 233 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentValidatedField.translationProvider, ValidatedField.descriptionProvider, ValidatedField.attachProvider, and the associated Provider types are now static (as well as instance methods) so java users won't have to call .Companion. anymore (but can)ValidatedChoiceList and similar settings with an "inline" widget layout now properly show the tooltip for the individual options as well as the settings overall tooltip24.03.2026 · 820 240 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentValidatedField.translationProvider, ValidatedField.descriptionProvider, ValidatedField.attachProvider, and the associated Provider types are now static (as well as instance methods) so java users won't have to call .Companion. anymore (but can)ValidatedChoiceList and similar settings with an "inline" widget layout now properly show the tooltip for the individual options as well as the settings overall tooltip24.03.2026 · 21 165 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentValidatedField.translationProvider, ValidatedField.descriptionProvider, ValidatedField.attachProvider, and the associated Provider types are now static (as well as instance methods) so java users won't have to call .Companion. anymore (but can)ValidatedChoiceList and similar settings with an "inline" widget layout now properly show the tooltip for the individual options as well as the settings overall tooltip03.02.2026 · 1 966 431 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentValidatedField.translationProvider, ValidatedField.descriptionProvider, ValidatedField.attachProvider, and the associated Provider types are now static (as well as instance methods) so java users won't have to call .Companion. anymore (but can)ValidatedChoiceList and similar settings with an "inline" widget layout now properly show the tooltip for the individual options as well as the settings overall tooltip03.02.2026 · 330 664 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentValidatedField.translationProvider, ValidatedField.descriptionProvider, ValidatedField.attachProvider, and the associated Provider types are now static (as well as instance methods) so java users won't have to call .Companion. anymore (but can)ValidatedChoiceList and similar settings with an "inline" widget layout now properly show the tooltip for the individual options as well as the settings overall tooltip03.02.2026 · 121 417 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentValidatedField.translationProvider, ValidatedField.descriptionProvider, ValidatedField.attachProvider, and the associated Provider types are now static (as well as instance methods) so java users won't have to call .Companion. anymore (but can)ValidatedChoiceList and similar settings with an "inline" widget layout now properly show the tooltip for the individual options as well as the settings overall tooltip03.02.2026 · 53 706 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentValidatedField.translationProvider, ValidatedField.descriptionProvider, ValidatedField.attachProvider, and the associated Provider types are now static (as well as instance methods) so java users won't have to call .Companion. anymore (but can)ValidatedChoiceList and similar settings with an "inline" widget layout now properly show the tooltip for the individual options as well as the settings overall tooltip03.02.2026 · 247 227 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentValidatedField.translationProvider, ValidatedField.descriptionProvider, ValidatedField.attachProvider, and the associated Provider types are now static (as well as instance methods) so java users won't have to call .Companion. anymore (but can)ValidatedChoiceList and similar settings with an "inline" widget layout now properly show the tooltip for the individual options as well as the settings overall tooltip03.02.2026 · 1 858 793 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentValidatedField.translationProvider, ValidatedField.descriptionProvider, ValidatedField.attachProvider, and the associated Provider types are now static (as well as instance methods) so java users won't have to call .Companion. anymore (but can)ValidatedChoiceList and similar settings with an "inline" widget layout now properly show the tooltip for the individual options as well as the settings overall tooltip03.02.2026 · 910 594 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentValidatedField.translationProvider, ValidatedField.descriptionProvider, ValidatedField.attachProvider, and the associated Provider types are now static (as well as instance methods) so java users won't have to call .Companion. anymore (but can)ValidatedChoiceList and similar settings with an "inline" widget layout now properly show the tooltip for the individual options as well as the settings overall tooltip03.02.2026 · 31 674 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentValidatedField.translationProvider, ValidatedField.descriptionProvider, ValidatedField.attachProvider, and the associated Provider types are now static (as well as instance methods) so java users won't have to call .Companion. anymore (but can)ValidatedChoiceList and similar settings with an "inline" widget layout now properly show the tooltip for the individual options as well as the settings overall tooltip03.02.2026 · 3 179 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentValidatedField.translationProvider, ValidatedField.descriptionProvider, ValidatedField.attachProvider, and the associated Provider types are now static (as well as instance methods) so java users won't have to call .Companion. anymore (but can)ValidatedChoiceList and similar settings with an "inline" widget layout now properly show the tooltip for the individual options as well as the settings overall tooltip03.02.2026 · 2 500 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentValidatedField.translationProvider, ValidatedField.descriptionProvider, ValidatedField.attachProvider, and the associated Provider types are now static (as well as instance methods) so java users won't have to call .Companion. anymore (but can)ValidatedChoiceList and similar settings with an "inline" widget layout now properly show the tooltip for the individual options as well as the settings overall tooltip03.02.2026 · 271 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentValidatedField.translationProvider, ValidatedField.descriptionProvider, ValidatedField.attachProvider, and the associated Provider types are now static (as well as instance methods) so java users won't have to call .Companion. anymore (but can)ValidatedChoiceList and similar settings with an "inline" widget layout now properly show the tooltip for the individual options as well as the settings overall tooltip03.02.2026 · 1 236 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentValidatedField.translationProvider, ValidatedField.descriptionProvider, ValidatedField.attachProvider, and the associated Provider types are now static (as well as instance methods) so java users won't have to call .Companion. anymore (but can)ValidatedChoiceList and similar settings with an "inline" widget layout now properly show the tooltip for the individual options as well as the settings overall tooltip03.02.2026 · 3 415 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentValidatedField.translationProvider, ValidatedField.descriptionProvider, ValidatedField.attachProvider, and the associated Provider types are now static (as well as instance methods) so java users won't have to call .Companion. anymore (but can)ValidatedChoiceList and similar settings with an "inline" widget layout now properly show the tooltip for the individual options as well as the settings overall tooltip03.02.2026 · 1 566 353 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentValidatedField.translationProvider, ValidatedField.descriptionProvider, ValidatedField.attachProvider, and the associated Provider types are now static (as well as instance methods) so java users won't have to call .Companion. anymore (but can)ValidatedChoiceList and similar settings with an "inline" widget layout now properly show the tooltip for the individual options as well as the settings overall tooltip03.02.2026 · 2 156 948 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentValidatedField.translationProvider, ValidatedField.descriptionProvider, ValidatedField.attachProvider, and the associated Provider types are now static (as well as instance methods) so java users won't have to call .Companion. anymore (but can)ValidatedChoiceList and similar settings with an "inline" widget layout now properly show the tooltip for the individual options as well as the settings overall tooltip19.01.2026 · 187 120 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentFcTextProvider system to Validated FieldsValidatedField.translationProvider to attach a custom translation provider function to a field.ValidatedField.descriptionProvider to attach a custom description (tooltip) provider function to a field.ValidatedField.attachProvider to attach an arbitrary value provider. This system is experimental and currently largely unused except for some widget namesWIDGET_TITLE provider to create custom widget labelsConfigDeprecated annotation. Use this to mark a setting as deprecated in the config.Version annotation to update a setting while still being able to use the old setting to update/inform the content of the new one.ThreadingUtils (the file watcher utility) now uses kotlin coroutines internally and has more robust startup and shutdown processesValidatedCondition, ValidatedMapped, etc.)ValidatedAny19.01.2026 · 62 130 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentFcTextProvider system to Validated FieldsValidatedField.translationProvider to attach a custom translation provider function to a field.ValidatedField.descriptionProvider to attach a custom description (tooltip) provider function to a field.ValidatedField.attachProvider to attach an arbitrary value provider. This system is experimental and currently largely unused except for some widget namesWIDGET_TITLE provider to create custom widget labelsConfigDeprecated annotation. Use this to mark a setting as deprecated in the config.Version annotation to update a setting while still being able to use the old setting to update/inform the content of the new one.ThreadingUtils (the file watcher utility) now uses kotlin coroutines internally and has more robust startup and shutdown processesValidatedCondition, ValidatedMapped, etc.)ValidatedAny19.01.2026 · 19 584 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentFcTextProvider system to Validated FieldsValidatedField.translationProvider to attach a custom translation provider function to a field.ValidatedField.descriptionProvider to attach a custom description (tooltip) provider function to a field.ValidatedField.attachProvider to attach an arbitrary value provider. This system is experimental and currently largely unused except for some widget namesWIDGET_TITLE provider to create custom widget labelsConfigDeprecated annotation. Use this to mark a setting as deprecated in the config.Version annotation to update a setting while still being able to use the old setting to update/inform the content of the new one.ThreadingUtils (the file watcher utility) now uses kotlin coroutines internally and has more robust startup and shutdown processesValidatedCondition, ValidatedMapped, etc.)ValidatedAny19.01.2026 · 10 338 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentFcTextProvider system to Validated FieldsValidatedField.translationProvider to attach a custom translation provider function to a field.ValidatedField.descriptionProvider to attach a custom description (tooltip) provider function to a field.ValidatedField.attachProvider to attach an arbitrary value provider. This system is experimental and currently largely unused except for some widget namesWIDGET_TITLE provider to create custom widget labelsConfigDeprecated annotation. Use this to mark a setting as deprecated in the config.Version annotation to update a setting while still being able to use the old setting to update/inform the content of the new one.ThreadingUtils (the file watcher utility) now uses kotlin coroutines internally and has more robust startup and shutdown processesValidatedCondition, ValidatedMapped, etc.)ValidatedAny19.01.2026 · 39 924 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentFcTextProvider system to Validated FieldsValidatedField.translationProvider to attach a custom translation provider function to a field.ValidatedField.descriptionProvider to attach a custom description (tooltip) provider function to a field.ValidatedField.attachProvider to attach an arbitrary value provider. This system is experimental and currently largely unused except for some widget namesWIDGET_TITLE provider to create custom widget labelsConfigDeprecated annotation. Use this to mark a setting as deprecated in the config.Version annotation to update a setting while still being able to use the old setting to update/inform the content of the new one.ThreadingUtils (the file watcher utility) now uses kotlin coroutines internally and has more robust startup and shutdown processesValidatedCondition, ValidatedMapped, etc.)ValidatedAny19.01.2026 · 80 541 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentFcTextProvider system to Validated FieldsValidatedField.translationProvider to attach a custom translation provider function to a field.ValidatedField.descriptionProvider to attach a custom description (tooltip) provider function to a field.ValidatedField.attachProvider to attach an arbitrary value provider. This system is experimental and currently largely unused except for some widget namesWIDGET_TITLE provider to create custom widget labelsConfigDeprecated annotation. Use this to mark a setting as deprecated in the config.Version annotation to update a setting while still being able to use the old setting to update/inform the content of the new one.ThreadingUtils (the file watcher utility) now uses kotlin coroutines internally and has more robust startup and shutdown processesValidatedCondition, ValidatedMapped, etc.)ValidatedAny19.01.2026 · 114 241 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentFcTextProvider system to Validated FieldsValidatedField.translationProvider to attach a custom translation provider function to a field.ValidatedField.descriptionProvider to attach a custom description (tooltip) provider function to a field.ValidatedField.attachProvider to attach an arbitrary value provider. This system is experimental and currently largely unused except for some widget namesWIDGET_TITLE provider to create custom widget labelsConfigDeprecated annotation. Use this to mark a setting as deprecated in the config.Version annotation to update a setting while still being able to use the old setting to update/inform the content of the new one.ThreadingUtils (the file watcher utility) now uses kotlin coroutines internally and has more robust startup and shutdown processesValidatedCondition, ValidatedMapped, etc.)ValidatedAny19.01.2026 · 1 964 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentFcTextProvider system to Validated FieldsValidatedField.translationProvider to attach a custom translation provider function to a field.ValidatedField.descriptionProvider to attach a custom description (tooltip) provider function to a field.ValidatedField.attachProvider to attach an arbitrary value provider. This system is experimental and currently largely unused except for some widget namesWIDGET_TITLE provider to create custom widget labelsConfigDeprecated annotation. Use this to mark a setting as deprecated in the config.Version annotation to update a setting while still being able to use the old setting to update/inform the content of the new one.ThreadingUtils (the file watcher utility) now uses kotlin coroutines internally and has more robust startup and shutdown processesValidatedCondition, ValidatedMapped, etc.)ValidatedAny19.01.2026 · 462 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentFcTextProvider system to Validated FieldsValidatedField.translationProvider to attach a custom translation provider function to a field.ValidatedField.descriptionProvider to attach a custom description (tooltip) provider function to a field.ValidatedField.attachProvider to attach an arbitrary value provider. This system is experimental and currently largely unused except for some widget namesWIDGET_TITLE provider to create custom widget labelsConfigDeprecated annotation. Use this to mark a setting as deprecated in the config.Version annotation to update a setting while still being able to use the old setting to update/inform the content of the new one.ThreadingUtils (the file watcher utility) now uses kotlin coroutines internally and has more robust startup and shutdown processesValidatedCondition, ValidatedMapped, etc.)ValidatedAny19.01.2026 · 286 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentFcTextProvider system to Validated FieldsValidatedField.translationProvider to attach a custom translation provider function to a field.ValidatedField.descriptionProvider to attach a custom description (tooltip) provider function to a field.ValidatedField.attachProvider to attach an arbitrary value provider. This system is experimental and currently largely unused except for some widget namesWIDGET_TITLE provider to create custom widget labelsConfigDeprecated annotation. Use this to mark a setting as deprecated in the config.Version annotation to update a setting while still being able to use the old setting to update/inform the content of the new one.ThreadingUtils (the file watcher utility) now uses kotlin coroutines internally and has more robust startup and shutdown processesValidatedCondition, ValidatedMapped, etc.)ValidatedAny19.01.2026 · 37 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentFcTextProvider system to Validated FieldsValidatedField.translationProvider to attach a custom translation provider function to a field.ValidatedField.descriptionProvider to attach a custom description (tooltip) provider function to a field.ValidatedField.attachProvider to attach an arbitrary value provider. This system is experimental and currently largely unused except for some widget namesWIDGET_TITLE provider to create custom widget labelsConfigDeprecated annotation. Use this to mark a setting as deprecated in the config.Version annotation to update a setting while still being able to use the old setting to update/inform the content of the new one.ThreadingUtils (the file watcher utility) now uses kotlin coroutines internally and has more robust startup and shutdown processesValidatedCondition, ValidatedMapped, etc.)ValidatedAny19.01.2026 · 138 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentFcTextProvider system to Validated FieldsValidatedField.translationProvider to attach a custom translation provider function to a field.ValidatedField.descriptionProvider to attach a custom description (tooltip) provider function to a field.ValidatedField.attachProvider to attach an arbitrary value provider. This system is experimental and currently largely unused except for some widget namesWIDGET_TITLE provider to create custom widget labelsConfigDeprecated annotation. Use this to mark a setting as deprecated in the config.Version annotation to update a setting while still being able to use the old setting to update/inform the content of the new one.ThreadingUtils (the file watcher utility) now uses kotlin coroutines internally and has more robust startup and shutdown processesValidatedCondition, ValidatedMapped, etc.)ValidatedAny19.01.2026 · 214 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentFcTextProvider system to Validated FieldsValidatedField.translationProvider to attach a custom translation provider function to a field.ValidatedField.descriptionProvider to attach a custom description (tooltip) provider function to a field.ValidatedField.attachProvider to attach an arbitrary value provider. This system is experimental and currently largely unused except for some widget namesWIDGET_TITLE provider to create custom widget labelsConfigDeprecated annotation. Use this to mark a setting as deprecated in the config.Version annotation to update a setting while still being able to use the old setting to update/inform the content of the new one.ThreadingUtils (the file watcher utility) now uses kotlin coroutines internally and has more robust startup and shutdown processesValidatedCondition, ValidatedMapped, etc.)ValidatedAny19.01.2026 · 75 580 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentFcTextProvider system to Validated FieldsValidatedField.translationProvider to attach a custom translation provider function to a field.ValidatedField.descriptionProvider to attach a custom description (tooltip) provider function to a field.ValidatedField.attachProvider to attach an arbitrary value provider. This system is experimental and currently largely unused except for some widget namesWIDGET_TITLE provider to create custom widget labelsConfigDeprecated annotation. Use this to mark a setting as deprecated in the config.Version annotation to update a setting while still being able to use the old setting to update/inform the content of the new one.ThreadingUtils (the file watcher utility) now uses kotlin coroutines internally and has more robust startup and shutdown processesValidatedCondition, ValidatedMapped, etc.)ValidatedAny19.01.2026 · 154 389 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentFcTextProvider system to Validated FieldsValidatedField.translationProvider to attach a custom translation provider function to a field.ValidatedField.descriptionProvider to attach a custom description (tooltip) provider function to a field.ValidatedField.attachProvider to attach an arbitrary value provider. This system is experimental and currently largely unused except for some widget namesWIDGET_TITLE provider to create custom widget labelsConfigDeprecated annotation. Use this to mark a setting as deprecated in the config.Version annotation to update a setting while still being able to use the old setting to update/inform the content of the new one.ThreadingUtils (the file watcher utility) now uses kotlin coroutines internally and has more robust startup and shutdown processesValidatedCondition, ValidatedMapped, etc.)ValidatedAny21.12.2025 · 60 605 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentonUpdateServer events that take a ServerUpdateContext. The old events are deprecated. They will stop working (no crashes) in 0.8.0, with full removal scheduled for 0.9.0RegistryBuilder platform system for creating modded registries in a loader-agnostic way, along with other registry-related utils.PlatformApi#createRegistryBuilder. Much like registrars, a builder is created for a specific namespace.ValidatedEnum now has more widget types, including INLINE and SCROLLABLEValidationResult.bimap error nesting order flipped, the output results error context is now the parent context21.12.2025 · 211 867 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentonUpdateServer events that take a ServerUpdateContext. The old events are deprecated. They will stop working (no crashes) in 0.8.0, with full removal scheduled for 0.9.0RegistryBuilder platform system for creating modded registries in a loader-agnostic way, along with other registry-related utils.PlatformApi#createRegistryBuilder. Much like registrars, a builder is created for a specific namespace.ValidatedEnum now has more widget types, including INLINE and SCROLLABLEValidationResult.bimap error nesting order flipped, the output results error context is now the parent context14.12.2025 · 337 532 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentonUpdateServer events that take a ServerUpdateContext. The old events are deprecated. They will stop working (no crashes) in 0.8.0, with full removal scheduled for 0.9.0RegistryBuilder platform system for creating modded registries in a loader-agnostic way, along with other registry-related utils.PlatformApi#createRegistryBuilder. Much like registrars, a builder is created for a specific namespace.ValidatedEnum now has more widget types, including INLINE and SCROLLABLEValidationResult.bimap error nesting order flipped, the output results error context is now the parent context14.12.2025 · 220 021 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentonUpdateServer events that take a ServerUpdateContext. The old events are deprecated. They will stop working (no crashes) in 0.8.0, with full removal scheduled for 0.9.0RegistryBuilder platform system for creating modded registries in a loader-agnostic way, along with other registry-related utils.PlatformApi#createRegistryBuilder. Much like registrars, a builder is created for a specific namespace.ValidatedEnum now has more widget types, including INLINE and SCROLLABLEValidationResult.bimap error nesting order flipped, the output results error context is now the parent context14.12.2025 · 67 109 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentonUpdateServer events that take a ServerUpdateContext. The old events are deprecated. They will stop working (no crashes) in 0.8.0, with full removal scheduled for 0.9.0RegistryBuilder platform system for creating modded registries in a loader-agnostic way, along with other registry-related utils.PlatformApi#createRegistryBuilder. Much like registrars, a builder is created for a specific namespace.ValidatedEnum now has more widget types, including INLINE and SCROLLABLEValidationResult.bimap error nesting order flipped, the output results error context is now the parent context14.12.2025 · 77 145 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentonUpdateServer events that take a ServerUpdateContext. The old events are deprecated. They will stop working (no crashes) in 0.8.0, with full removal scheduled for 0.9.0RegistryBuilder platform system for creating modded registries in a loader-agnostic way, along with other registry-related utils.PlatformApi#createRegistryBuilder. Much like registrars, a builder is created for a specific namespace.ValidatedEnum now has more widget types, including INLINE and SCROLLABLEValidationResult.bimap error nesting order flipped, the output results error context is now the parent context14.12.2025 · 127 126 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentonUpdateServer events that take a ServerUpdateContext. The old events are deprecated. They will stop working (no crashes) in 0.8.0, with full removal scheduled for 0.9.0RegistryBuilder platform system for creating modded registries in a loader-agnostic way, along with other registry-related utils.PlatformApi#createRegistryBuilder. Much like registrars, a builder is created for a specific namespace.ValidatedEnum now has more widget types, including INLINE and SCROLLABLEValidationResult.bimap error nesting order flipped, the output results error context is now the parent context14.12.2025 · 25 332 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentonUpdateServer events that take a ServerUpdateContext. The old events are deprecated. They will stop working (no crashes) in 0.8.0, with full removal scheduled for 0.9.0RegistryBuilder platform system for creating modded registries in a loader-agnostic way, along with other registry-related utils.PlatformApi#createRegistryBuilder. Much like registrars, a builder is created for a specific namespace.ValidatedEnum now has more widget types, including INLINE and SCROLLABLEValidationResult.bimap error nesting order flipped, the output results error context is now the parent context14.12.2025 · 26 001 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentonUpdateServer events that take a ServerUpdateContext. The old events are deprecated. They will stop working (no crashes) in 0.8.0, with full removal scheduled for 0.9.0RegistryBuilder platform system for creating modded registries in a loader-agnostic way, along with other registry-related utils.PlatformApi#createRegistryBuilder. Much like registrars, a builder is created for a specific namespace.ValidatedEnum now has more widget types, including INLINE and SCROLLABLEValidationResult.bimap error nesting order flipped, the output results error context is now the parent context14.12.2025 · 3 320 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentonUpdateServer events that take a ServerUpdateContext. The old events are deprecated. They will stop working (no crashes) in 0.8.0, with full removal scheduled for 0.9.0RegistryBuilder platform system for creating modded registries in a loader-agnostic way, along with other registry-related utils.PlatformApi#createRegistryBuilder. Much like registrars, a builder is created for a specific namespace.ValidatedEnum now has more widget types, including INLINE and SCROLLABLEValidationResult.bimap error nesting order flipped, the output results error context is now the parent context14.12.2025 · 1 211 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentonUpdateServer events that take a ServerUpdateContext. The old events are deprecated. They will stop working (no crashes) in 0.8.0, with full removal scheduled for 0.9.0RegistryBuilder platform system for creating modded registries in a loader-agnostic way, along with other registry-related utils.PlatformApi#createRegistryBuilder. Much like registrars, a builder is created for a specific namespace.ValidatedEnum now has more widget types, including INLINE and SCROLLABLEValidationResult.bimap error nesting order flipped, the output results error context is now the parent context14.12.2025 · 545 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentonUpdateServer events that take a ServerUpdateContext. The old events are deprecated. They will stop working (no crashes) in 0.8.0, with full removal scheduled for 0.9.0RegistryBuilder platform system for creating modded registries in a loader-agnostic way, along with other registry-related utils.PlatformApi#createRegistryBuilder. Much like registrars, a builder is created for a specific namespace.ValidatedEnum now has more widget types, including INLINE and SCROLLABLEValidationResult.bimap error nesting order flipped, the output results error context is now the parent context14.12.2025 · 92 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentonUpdateServer events that take a ServerUpdateContext. The old events are deprecated. They will stop working (no crashes) in 0.8.0, with full removal scheduled for 0.9.0RegistryBuilder platform system for creating modded registries in a loader-agnostic way, along with other registry-related utils.PlatformApi#createRegistryBuilder. Much like registrars, a builder is created for a specific namespace.ValidatedEnum now has more widget types, including INLINE and SCROLLABLEValidationResult.bimap error nesting order flipped, the output results error context is now the parent context14.12.2025 · 350 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentonUpdateServer events that take a ServerUpdateContext. The old events are deprecated. They will stop working (no crashes) in 0.8.0, with full removal scheduled for 0.9.0RegistryBuilder platform system for creating modded registries in a loader-agnostic way, along with other registry-related utils.PlatformApi#createRegistryBuilder. Much like registrars, a builder is created for a specific namespace.ValidatedEnum now has more widget types, including INLINE and SCROLLABLEValidationResult.bimap error nesting order flipped, the output results error context is now the parent context14.12.2025 · 458 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentonUpdateServer events that take a ServerUpdateContext. The old events are deprecated. They will stop working (no crashes) in 0.8.0, with full removal scheduled for 0.9.0RegistryBuilder platform system for creating modded registries in a loader-agnostic way, along with other registry-related utils.PlatformApi#createRegistryBuilder. Much like registrars, a builder is created for a specific namespace.ValidatedEnum now has more widget types, including INLINE and SCROLLABLEValidationResult.bimap error nesting order flipped, the output results error context is now the parent context14.12.2025 · 629 553 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentonUpdateServer events that take a ServerUpdateContext. The old events are deprecated. They will stop working (no crashes) in 0.8.0, with full removal scheduled for 0.9.0RegistryBuilder platform system for creating modded registries in a loader-agnostic way, along with other registry-related utils.PlatformApi#createRegistryBuilder. Much like registrars, a builder is created for a specific namespace.ValidatedEnum now has more widget types, including INLINE and SCROLLABLEValidationResult.bimap error nesting order flipped, the output results error context is now the parent context14.12.2025 · 185 578 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentonUpdateServer events that take a ServerUpdateContext. The old events are deprecated. They will stop working (no crashes) in 0.8.0, with full removal scheduled for 0.9.0RegistryBuilder platform system for creating modded registries in a loader-agnostic way, along with other registry-related utils.PlatformApi#createRegistryBuilder. Much like registrars, a builder is created for a specific namespace.ValidatedEnum now has more widget types, including INLINE and SCROLLABLEValidationResult.bimap error nesting order flipped, the output results error context is now the parent context14.12.2025 · 1 133 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentonUpdateServer events that take a ServerUpdateContext. The old events are deprecated. They will stop working (no crashes) in 0.8.0, with full removal scheduled for 0.9.0RegistryBuilder platform system for creating modded registries in a loader-agnostic way, along with other registry-related utils.PlatformApi#createRegistryBuilder. Much like registrars, a builder is created for a specific namespace.ValidatedEnum now has more widget types, including INLINE and SCROLLABLEValidationResult.bimap error nesting order flipped, the output results error context is now the parent context14.12.2025 · 2 187 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentCustomWidget interface. This will be used for abstracting all FC widgets away from directly interacting with Element, Widget, etc. to reduce porting headache going forward. Updates related to CustomWidget will be sprinkled into the next versions.CustomTextWidget utilizing said CustomWidget interface.syncConfig method to the NetworkApi for manually syncing a server-side config to clients.CustomMultilineTextWidget now has an align-right methodRelevant has gained three new methods for modifier checks, needsCtrl, needsShift, needsAltPopupWidget's wrapped LayoutWidget now contributes to re-sizing the popup based on the dimensions it would like.ConfigGroup now acts properly with nested collapsedByDefaultConfigApi.buildTranslations can now "see" inside objects that may be wrapping a translated object (such as ValidatedAny)ValidationResult.reportTo no longer reports an error context has header information only.14.12.2025 · 1 860 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentonUpdateServer events that take a ServerUpdateContext. The old events are deprecated. They will stop working (no crashes) in 0.8.0, with full removal scheduled for 0.9.0RegistryBuilder platform system for creating modded registries in a loader-agnostic way, along with other registry-related utils.PlatformApi#createRegistryBuilder. Much like registrars, a builder is created for a specific namespace.ValidatedEnum now has more widget types, including INLINE and SCROLLABLEValidationResult.bimap error nesting order flipped, the output results error context is now the parent context14.12.2025 · 617 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentonUpdateServer events that take a ServerUpdateContext. The old events are deprecated. They will stop working (no crashes) in 0.8.0, with full removal scheduled for 0.9.0RegistryBuilder platform system for creating modded registries in a loader-agnostic way, along with other registry-related utils.PlatformApi#createRegistryBuilder. Much like registrars, a builder is created for a specific namespace.ValidatedEnum now has more widget types, including INLINE and SCROLLABLEValidationResult.bimap error nesting order flipped, the output results error context is now the parent context14.12.2025 · 563 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentonUpdateServer events that take a ServerUpdateContext. The old events are deprecated. They will stop working (no crashes) in 0.8.0, with full removal scheduled for 0.9.0RegistryBuilder platform system for creating modded registries in a loader-agnostic way, along with other registry-related utils.PlatformApi#createRegistryBuilder. Much like registrars, a builder is created for a specific namespace.ValidatedEnum now has more widget types, including INLINE and SCROLLABLEValidationResult.bimap error nesting order flipped, the output results error context is now the parent context14.12.2025 · 2 592 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentonUpdateServer events that take a ServerUpdateContext. The old events are deprecated. They will stop working (no crashes) in 0.8.0, with full removal scheduled for 0.9.0RegistryBuilder platform system for creating modded registries in a loader-agnostic way, along with other registry-related utils.PlatformApi#createRegistryBuilder. Much like registrars, a builder is created for a specific namespace.ValidatedEnum now has more widget types, including INLINE and SCROLLABLEValidationResult.bimap error nesting order flipped, the output results error context is now the parent context14.12.2025 · 1 065 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentonUpdateServer events that take a ServerUpdateContext. The old events are deprecated. They will stop working (no crashes) in 0.8.0, with full removal scheduled for 0.9.0RegistryBuilder platform system for creating modded registries in a loader-agnostic way, along with other registry-related utils.PlatformApi#createRegistryBuilder. Much like registrars, a builder is created for a specific namespace.ValidatedEnum now has more widget types, including INLINE and SCROLLABLEValidationResult.bimap error nesting order flipped, the output results error context is now the parent context10.12.2025 · 37 368 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentCustomWidget interface. This will be used for abstracting all FC widgets away from directly interacting with Element, Widget, etc. to reduce porting headache going forward. Updates related to CustomWidget will be sprinkled into the next versions.CustomTextWidget utilizing said CustomWidget interface.syncConfig method to the NetworkApi for manually syncing a server-side config to clients.CustomMultilineTextWidget now has an align-right methodRelevant has gained three new methods for modifier checks, needsCtrl, needsShift, needsAltPopupWidget's wrapped LayoutWidget now contributes to re-sizing the popup based on the dimensions it would like.ConfigGroup now acts properly with nested collapsedByDefaultConfigApi.buildTranslations can now "see" inside objects that may be wrapping a translated object (such as ValidatedAny)ValidationResult.reportTo no longer reports an error context has header information only.10.12.2025 · 253 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentCustomWidget interface. This will be used for abstracting all FC widgets away from directly interacting with Element, Widget, etc. to reduce porting headache going forward. Updates related to CustomWidget will be sprinkled into the next versions.CustomTextWidget utilizing said CustomWidget interface.syncConfig method to the NetworkApi for manually syncing a server-side config to clients.CustomMultilineTextWidget now has an align-right methodRelevant has gained three new methods for modifier checks, needsCtrl, needsShift, needsAltPopupWidget's wrapped LayoutWidget now contributes to re-sizing the popup based on the dimensions it would like.ConfigGroup now acts properly with nested collapsedByDefaultConfigApi.buildTranslations can now "see" inside objects that may be wrapping a translated object (such as ValidatedAny)ValidationResult.reportTo no longer reports an error context has header information only.09.10.2025 · 167 924 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentCustomWidget interface. This will be used for abstracting all FC widgets away from directly interacting with Element, Widget, etc. to reduce porting headache going forward. Updates related to CustomWidget will be sprinkled into the next versions.CustomTextWidget utilizing said CustomWidget interface.syncConfig method to the NetworkApi for manually syncing a server-side config to clients.CustomMultilineTextWidget now has an align-right methodRelevant has gained three new methods for modifier checks, needsCtrl, needsShift, needsAltPopupWidget's wrapped LayoutWidget now contributes to re-sizing the popup based on the dimensions it would like.ConfigGroup now acts properly with nested collapsedByDefaultConfigApi.buildTranslations can now "see" inside objects that may be wrapping a translated object (such as ValidatedAny)ValidationResult.reportTo no longer reports an error context has header information only.09.10.2025 · 234 635 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentCustomWidget interface. This will be used for abstracting all FC widgets away from directly interacting with Element, Widget, etc. to reduce porting headache going forward. Updates related to CustomWidget will be sprinkled into the next versions.CustomTextWidget utilizing said CustomWidget interface.syncConfig method to the NetworkApi for manually syncing a server-side config to clients.CustomMultilineTextWidget now has an align-right methodRelevant has gained three new methods for modifier checks, needsCtrl, needsShift, needsAltPopupWidget's wrapped LayoutWidget now contributes to re-sizing the popup based on the dimensions it would like.ConfigGroup now acts properly with nested collapsedByDefaultConfigApi.buildTranslations can now "see" inside objects that may be wrapping a translated object (such as ValidatedAny)ValidationResult.reportTo no longer reports an error context has header information only.09.10.2025 · 113 878 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentCustomWidget interface. This will be used for abstracting all FC widgets away from directly interacting with Element, Widget, etc. to reduce porting headache going forward. Updates related to CustomWidget will be sprinkled into the next versions.CustomTextWidget utilizing said CustomWidget interface.syncConfig method to the NetworkApi for manually syncing a server-side config to clients.CustomMultilineTextWidget now has an align-right methodRelevant has gained three new methods for modifier checks, needsCtrl, needsShift, needsAltPopupWidget's wrapped LayoutWidget now contributes to re-sizing the popup based on the dimensions it would like.ConfigGroup now acts properly with nested collapsedByDefaultConfigApi.buildTranslations can now "see" inside objects that may be wrapping a translated object (such as ValidatedAny)ValidationResult.reportTo no longer reports an error context has header information only.09.10.2025 · 53 787 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentCustomWidget interface. This will be used for abstracting all FC widgets away from directly interacting with Element, Widget, etc. to reduce porting headache going forward. Updates related to CustomWidget will be sprinkled into the next versions.CustomTextWidget utilizing said CustomWidget interface.syncConfig method to the NetworkApi for manually syncing a server-side config to clients.CustomMultilineTextWidget now has an align-right methodRelevant has gained three new methods for modifier checks, needsCtrl, needsShift, needsAltPopupWidget's wrapped LayoutWidget now contributes to re-sizing the popup based on the dimensions it would like.ConfigGroup now acts properly with nested collapsedByDefaultConfigApi.buildTranslations can now "see" inside objects that may be wrapping a translated object (such as ValidatedAny)ValidationResult.reportTo no longer reports an error context has header information only.09.10.2025 · 1 424 967 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentCustomWidget interface. This will be used for abstracting all FC widgets away from directly interacting with Element, Widget, etc. to reduce porting headache going forward. Updates related to CustomWidget will be sprinkled into the next versions.CustomTextWidget utilizing said CustomWidget interface.syncConfig method to the NetworkApi for manually syncing a server-side config to clients.CustomMultilineTextWidget now has an align-right methodRelevant has gained three new methods for modifier checks, needsCtrl, needsShift, needsAltPopupWidget's wrapped LayoutWidget now contributes to re-sizing the popup based on the dimensions it would like.ConfigGroup now acts properly with nested collapsedByDefaultConfigApi.buildTranslations can now "see" inside objects that may be wrapping a translated object (such as ValidatedAny)ValidationResult.reportTo no longer reports an error context has header information only.09.10.2025 · 699 278 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentCustomWidget interface. This will be used for abstracting all FC widgets away from directly interacting with Element, Widget, etc. to reduce porting headache going forward. Updates related to CustomWidget will be sprinkled into the next versions.CustomTextWidget utilizing said CustomWidget interface.syncConfig method to the NetworkApi for manually syncing a server-side config to clients.CustomMultilineTextWidget now has an align-right methodRelevant has gained three new methods for modifier checks, needsCtrl, needsShift, needsAltPopupWidget's wrapped LayoutWidget now contributes to re-sizing the popup based on the dimensions it would like.ConfigGroup now acts properly with nested collapsedByDefaultConfigApi.buildTranslations can now "see" inside objects that may be wrapping a translated object (such as ValidatedAny)ValidationResult.reportTo no longer reports an error context has header information only.09.10.2025 · 2 389 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentCustomWidget interface. This will be used for abstracting all FC widgets away from directly interacting with Element, Widget, etc. to reduce porting headache going forward. Updates related to CustomWidget will be sprinkled into the next versions.CustomTextWidget utilizing said CustomWidget interface.syncConfig method to the NetworkApi for manually syncing a server-side config to clients.CustomMultilineTextWidget now has an align-right methodRelevant has gained three new methods for modifier checks, needsCtrl, needsShift, needsAltPopupWidget's wrapped LayoutWidget now contributes to re-sizing the popup based on the dimensions it would like.ConfigGroup now acts properly with nested collapsedByDefaultConfigApi.buildTranslations can now "see" inside objects that may be wrapping a translated object (such as ValidatedAny)ValidationResult.reportTo no longer reports an error context has header information only.09.10.2025 · 3 373 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentCustomWidget interface. This will be used for abstracting all FC widgets away from directly interacting with Element, Widget, etc. to reduce porting headache going forward. Updates related to CustomWidget will be sprinkled into the next versions.CustomTextWidget utilizing said CustomWidget interface.syncConfig method to the NetworkApi for manually syncing a server-side config to clients.CustomMultilineTextWidget now has an align-right methodRelevant has gained three new methods for modifier checks, needsCtrl, needsShift, needsAltPopupWidget's wrapped LayoutWidget now contributes to re-sizing the popup based on the dimensions it would like.ConfigGroup now acts properly with nested collapsedByDefaultConfigApi.buildTranslations can now "see" inside objects that may be wrapping a translated object (such as ValidatedAny)ValidationResult.reportTo no longer reports an error context has header information only.09.10.2025 · 237 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentCustomWidget interface. This will be used for abstracting all FC widgets away from directly interacting with Element, Widget, etc. to reduce porting headache going forward. Updates related to CustomWidget will be sprinkled into the next versions.CustomTextWidget utilizing said CustomWidget interface.syncConfig method to the NetworkApi for manually syncing a server-side config to clients.CustomMultilineTextWidget now has an align-right methodRelevant has gained three new methods for modifier checks, needsCtrl, needsShift, needsAltPopupWidget's wrapped LayoutWidget now contributes to re-sizing the popup based on the dimensions it would like.ConfigGroup now acts properly with nested collapsedByDefaultConfigApi.buildTranslations can now "see" inside objects that may be wrapping a translated object (such as ValidatedAny)ValidationResult.reportTo no longer reports an error context has header information only.09.10.2025 · 567 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentCustomWidget interface. This will be used for abstracting all FC widgets away from directly interacting with Element, Widget, etc. to reduce porting headache going forward. Updates related to CustomWidget will be sprinkled into the next versions.CustomTextWidget utilizing said CustomWidget interface.syncConfig method to the NetworkApi for manually syncing a server-side config to clients.CustomMultilineTextWidget now has an align-right methodRelevant has gained three new methods for modifier checks, needsCtrl, needsShift, needsAltPopupWidget's wrapped LayoutWidget now contributes to re-sizing the popup based on the dimensions it would like.ConfigGroup now acts properly with nested collapsedByDefaultConfigApi.buildTranslations can now "see" inside objects that may be wrapping a translated object (such as ValidatedAny)ValidationResult.reportTo no longer reports an error context has header information only.09.10.2025 · 776 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentCustomWidget interface. This will be used for abstracting all FC widgets away from directly interacting with Element, Widget, etc. to reduce porting headache going forward. Updates related to CustomWidget will be sprinkled into the next versions.CustomTextWidget utilizing said CustomWidget interface.syncConfig method to the NetworkApi for manually syncing a server-side config to clients.CustomMultilineTextWidget now has an align-right methodRelevant has gained three new methods for modifier checks, needsCtrl, needsShift, needsAltPopupWidget's wrapped LayoutWidget now contributes to re-sizing the popup based on the dimensions it would like.ConfigGroup now acts properly with nested collapsedByDefaultConfigApi.buildTranslations can now "see" inside objects that may be wrapping a translated object (such as ValidatedAny)ValidationResult.reportTo no longer reports an error context has header information only.09.10.2025 · 361 161 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentCustomWidget interface. This will be used for abstracting all FC widgets away from directly interacting with Element, Widget, etc. to reduce porting headache going forward. Updates related to CustomWidget will be sprinkled into the next versions.CustomTextWidget utilizing said CustomWidget interface.syncConfig method to the NetworkApi for manually syncing a server-side config to clients.CustomMultilineTextWidget now has an align-right methodRelevant has gained three new methods for modifier checks, needsCtrl, needsShift, needsAltPopupWidget's wrapped LayoutWidget now contributes to re-sizing the popup based on the dimensions it would like.ConfigGroup now acts properly with nested collapsedByDefaultConfigApi.buildTranslations can now "see" inside objects that may be wrapping a translated object (such as ValidatedAny)ValidationResult.reportTo no longer reports an error context has header information only.09.10.2025 · 847 661 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentCustomWidget interface. This will be used for abstracting all FC widgets away from directly interacting with Element, Widget, etc. to reduce porting headache going forward. Updates related to CustomWidget will be sprinkled into the next versions.CustomTextWidget utilizing said CustomWidget interface.syncConfig method to the NetworkApi for manually syncing a server-side config to clients.CustomMultilineTextWidget now has an align-right methodRelevant has gained three new methods for modifier checks, needsCtrl, needsShift, needsAltPopupWidget's wrapped LayoutWidget now contributes to re-sizing the popup based on the dimensions it would like.ConfigGroup now acts properly with nested collapsedByDefaultConfigApi.buildTranslations can now "see" inside objects that may be wrapping a translated object (such as ValidatedAny)ValidationResult.reportTo no longer reports an error context has header information only.06.10.2025 · 919 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentValidatedColor has a new presets feature. These presets will be displayed in a "sub-pane" to the right of the main color popup.ValidatedColor#withColorPresetsValidatedNumber#setFormat extension function lets you define a custom DecimalFormat for your number settingspushChildLayout and popChildLayout in the Builder.SaveType.SEPARATE can now be opened out of the world (if it's entries can be) without caring about permissions checking, because the clients version will be considered separately anywayLayoutWidget in favor of a builder pattern. Migrate any custom LayoutWidget impls asap; removal scheduled for 0.8.0ValidatedCondition not passing widget size changes to it's delegate widget06.10.2025 · 33 118 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentValidatedColor has a new presets feature. These presets will be displayed in a "sub-pane" to the right of the main color popup.ValidatedColor#withColorPresetsValidatedNumber#setFormat extension function lets you define a custom DecimalFormat for your number settingspushChildLayout and popChildLayout in the Builder.SaveType.SEPARATE can now be opened out of the world (if it's entries can be) without caring about permissions checking, because the clients version will be considered separately anywayLayoutWidget in favor of a builder pattern. Migrate any custom LayoutWidget impls asap; removal scheduled for 0.8.0ValidatedCondition not passing widget size changes to it's delegate widget03.08.2025 · 520 278 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentValidatedColor has a new presets feature. These presets will be displayed in a "sub-pane" to the right of the main color popup.ValidatedColor#withColorPresetsValidatedNumber#setFormat extension function lets you define a custom DecimalFormat for your number settingspushChildLayout and popChildLayout in the Builder.SaveType.SEPARATE can now be opened out of the world (if it's entries can be) without caring about permissions checking, because the clients version will be considered separately anywayLayoutWidget in favor of a builder pattern. Migrate any custom LayoutWidget impls asap; removal scheduled for 0.8.0ValidatedCondition not passing widget size changes to it's delegate widget03.08.2025 · 120 339 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentValidatedColor has a new presets feature. These presets will be displayed in a "sub-pane" to the right of the main color popup.ValidatedColor#withColorPresetsValidatedNumber#setFormat extension function lets you define a custom DecimalFormat for your number settingspushChildLayout and popChildLayout in the Builder.SaveType.SEPARATE can now be opened out of the world (if it's entries can be) without caring about permissions checking, because the clients version will be considered separately anywayLayoutWidget in favor of a builder pattern. Migrate any custom LayoutWidget impls asap; removal scheduled for 0.8.0ValidatedCondition not passing widget size changes to it's delegate widget03.08.2025 · 75 275 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentValidatedColor has a new presets feature. These presets will be displayed in a "sub-pane" to the right of the main color popup.ValidatedColor#withColorPresetsValidatedNumber#setFormat extension function lets you define a custom DecimalFormat for your number settingspushChildLayout and popChildLayout in the Builder.SaveType.SEPARATE can now be opened out of the world (if it's entries can be) without caring about permissions checking, because the clients version will be considered separately anywayLayoutWidget in favor of a builder pattern. Migrate any custom LayoutWidget impls asap; removal scheduled for 0.8.0ValidatedCondition not passing widget size changes to it's delegate widget03.08.2025 · 938 815 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentValidatedColor has a new presets feature. These presets will be displayed in a "sub-pane" to the right of the main color popup.ValidatedColor#withColorPresetsValidatedNumber#setFormat extension function lets you define a custom DecimalFormat for your number settingspushChildLayout and popChildLayout in the Builder.SaveType.SEPARATE can now be opened out of the world (if it's entries can be) without caring about permissions checking, because the clients version will be considered separately anywayLayoutWidget in favor of a builder pattern. Migrate any custom LayoutWidget impls asap; removal scheduled for 0.8.0ValidatedCondition not passing widget size changes to it's delegate widget03.08.2025 · 6 782 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentValidatedColor has a new presets feature. These presets will be displayed in a "sub-pane" to the right of the main color popup.ValidatedColor#withColorPresetsValidatedNumber#setFormat extension function lets you define a custom DecimalFormat for your number settingspushChildLayout and popChildLayout in the Builder.SaveType.SEPARATE can now be opened out of the world (if it's entries can be) without caring about permissions checking, because the clients version will be considered separately anywayLayoutWidget in favor of a builder pattern. Migrate any custom LayoutWidget impls asap; removal scheduled for 0.8.0ValidatedCondition not passing widget size changes to it's delegate widget03.08.2025 · 794 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentValidatedColor has a new presets feature. These presets will be displayed in a "sub-pane" to the right of the main color popup.ValidatedColor#withColorPresetsValidatedNumber#setFormat extension function lets you define a custom DecimalFormat for your number settingspushChildLayout and popChildLayout in the Builder.SaveType.SEPARATE can now be opened out of the world (if it's entries can be) without caring about permissions checking, because the clients version will be considered separately anywayLayoutWidget in favor of a builder pattern. Migrate any custom LayoutWidget impls asap; removal scheduled for 0.8.0ValidatedCondition not passing widget size changes to it's delegate widget03.08.2025 · 1 165 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentValidatedColor has a new presets feature. These presets will be displayed in a "sub-pane" to the right of the main color popup.ValidatedColor#withColorPresetsValidatedNumber#setFormat extension function lets you define a custom DecimalFormat for your number settingspushChildLayout and popChildLayout in the Builder.SaveType.SEPARATE can now be opened out of the world (if it's entries can be) without caring about permissions checking, because the clients version will be considered separately anywayLayoutWidget in favor of a builder pattern. Migrate any custom LayoutWidget impls asap; removal scheduled for 0.8.0ValidatedCondition not passing widget size changes to it's delegate widget03.08.2025 · 65 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentValidatedColor has a new presets feature. These presets will be displayed in a "sub-pane" to the right of the main color popup.ValidatedColor#withColorPresetsValidatedNumber#setFormat extension function lets you define a custom DecimalFormat for your number settingspushChildLayout and popChildLayout in the Builder.SaveType.SEPARATE can now be opened out of the world (if it's entries can be) without caring about permissions checking, because the clients version will be considered separately anywayLayoutWidget in favor of a builder pattern. Migrate any custom LayoutWidget impls asap; removal scheduled for 0.8.0ValidatedCondition not passing widget size changes to it's delegate widget03.08.2025 · 2 273 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentValidatedColor has a new presets feature. These presets will be displayed in a "sub-pane" to the right of the main color popup.ValidatedColor#withColorPresetsValidatedNumber#setFormat extension function lets you define a custom DecimalFormat for your number settingspushChildLayout and popChildLayout in the Builder.SaveType.SEPARATE can now be opened out of the world (if it's entries can be) without caring about permissions checking, because the clients version will be considered separately anywayLayoutWidget in favor of a builder pattern. Migrate any custom LayoutWidget impls asap; removal scheduled for 0.8.0ValidatedCondition not passing widget size changes to it's delegate widget03.08.2025 · 240 113 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentValidatedColor has a new presets feature. These presets will be displayed in a "sub-pane" to the right of the main color popup.ValidatedColor#withColorPresetsValidatedNumber#setFormat extension function lets you define a custom DecimalFormat for your number settingspushChildLayout and popChildLayout in the Builder.SaveType.SEPARATE can now be opened out of the world (if it's entries can be) without caring about permissions checking, because the clients version will be considered separately anywayLayoutWidget in favor of a builder pattern. Migrate any custom LayoutWidget impls asap; removal scheduled for 0.8.0ValidatedCondition not passing widget size changes to it's delegate widget03.08.2025 · 224 255 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentValidatedColor has a new presets feature. These presets will be displayed in a "sub-pane" to the right of the main color popup.ValidatedColor#withColorPresetsValidatedNumber#setFormat extension function lets you define a custom DecimalFormat for your number settingspushChildLayout and popChildLayout in the Builder.SaveType.SEPARATE can now be opened out of the world (if it's entries can be) without caring about permissions checking, because the clients version will be considered separately anywayLayoutWidget in favor of a builder pattern. Migrate any custom LayoutWidget impls asap; removal scheduled for 0.8.0ValidatedCondition not passing widget size changes to it's delegate widget03.08.2025 · 773 646 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentValidatedColor has a new presets feature. These presets will be displayed in a "sub-pane" to the right of the main color popup.ValidatedColor#withColorPresetsValidatedNumber#setFormat extension function lets you define a custom DecimalFormat for your number settingspushChildLayout and popChildLayout in the Builder.SaveType.SEPARATE can now be opened out of the world (if it's entries can be) without caring about permissions checking, because the clients version will be considered separately anywayLayoutWidget in favor of a builder pattern. Migrate any custom LayoutWidget impls asap; removal scheduled for 0.8.0ValidatedCondition not passing widget size changes to it's delegate widget14.07.2025 · 87 884 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContent@IgnoreCommentsForDesc annotation. Use on your config class to have the translation parser ignore @Comment and @TomlComment for in-game descriptions.SaveType.SEPARATE can now be opened out of the world (if it's entries can be) without caring about permissions checking, because the clients version will be considered separately anyway14.07.2025 · 72 588 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContent@IgnoreCommentsForDesc annotation. Use on your config class to have the translation parser ignore @Comment and @TomlComment for in-game descriptions.SaveType.SEPARATE can now be opened out of the world (if it's entries can be) without caring about permissions checking, because the clients version will be considered separately anyway14.07.2025 · 56 617 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContent@IgnoreCommentsForDesc annotation. Use on your config class to have the translation parser ignore @Comment and @TomlComment for in-game descriptions.SaveType.SEPARATE can now be opened out of the world (if it's entries can be) without caring about permissions checking, because the clients version will be considered separately anyway14.07.2025 · 65 702 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContent@IgnoreCommentsForDesc annotation. Use on your config class to have the translation parser ignore @Comment and @TomlComment for in-game descriptions.SaveType.SEPARATE can now be opened out of the world (if it's entries can be) without caring about permissions checking, because the clients version will be considered separately anyway14.07.2025 · 104 483 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContent@IgnoreCommentsForDesc annotation. Use on your config class to have the translation parser ignore @Comment and @TomlComment for in-game descriptions.SaveType.SEPARATE can now be opened out of the world (if it's entries can be) without caring about permissions checking, because the clients version will be considered separately anyway14.07.2025 · 2 228 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContent@IgnoreCommentsForDesc annotation. Use on your config class to have the translation parser ignore @Comment and @TomlComment for in-game descriptions.SaveType.SEPARATE can now be opened out of the world (if it's entries can be) without caring about permissions checking, because the clients version will be considered separately anyway14.07.2025 · 261 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContent@IgnoreCommentsForDesc annotation. Use on your config class to have the translation parser ignore @Comment and @TomlComment for in-game descriptions.SaveType.SEPARATE can now be opened out of the world (if it's entries can be) without caring about permissions checking, because the clients version will be considered separately anyway14.07.2025 · 426 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContent@IgnoreCommentsForDesc annotation. Use on your config class to have the translation parser ignore @Comment and @TomlComment for in-game descriptions.SaveType.SEPARATE can now be opened out of the world (if it's entries can be) without caring about permissions checking, because the clients version will be considered separately anyway14.07.2025 · 630 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContent@IgnoreCommentsForDesc annotation. Use on your config class to have the translation parser ignore @Comment and @TomlComment for in-game descriptions.SaveType.SEPARATE can now be opened out of the world (if it's entries can be) without caring about permissions checking, because the clients version will be considered separately anyway14.07.2025 · 169 337 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContent@IgnoreCommentsForDesc annotation. Use on your config class to have the translation parser ignore @Comment and @TomlComment for in-game descriptions.SaveType.SEPARATE can now be opened out of the world (if it's entries can be) without caring about permissions checking, because the clients version will be considered separately anyway14.07.2025 · 186 002 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContent@IgnoreCommentsForDesc annotation. Use on your config class to have the translation parser ignore @Comment and @TomlComment for in-game descriptions.SaveType.SEPARATE can now be opened out of the world (if it's entries can be) without caring about permissions checking, because the clients version will be considered separately anyway04.07.2025 · 958 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentTranslatable.Name, Translatable.Desc, and Translatable.Prefix annotations for data generation of lang filesConfigApi.buildTranslations and ConfigApiJava.buildTranslations methods for hooking a config into a data generatorConfigApi.platform().buildRegistryTranslations Used for either RegistrySupplier objects built by a Registrar or Identifier used in a traditional registration systemConfigScreenProvider, allowing for registering of custom screen implementations in place of the Fzzy Config built inregisterScreenProvider added for registering your providerafterClose event in PopupWidgetisPressed method in Relevant interface (which is used by FzzyKeybind and ValidatedKeybind), which allows for assertive checking for a key state, above the existing reactive response method relevantValidationResult with a new ErrorEntry system and dramatically improved process flow for building complex errors and passing exceptions and other context informationinmap, outmap, and bimapCustomMultilineTextWidget to handle click and hover events, as well as now implementing a custom MultilineText implementationValidatedField bails out of deserialization only on critical errors, now letting correction take its course more oftenRegistrar system is no longer marked as experimental. Any further changes to the system will follow the standard released content deprecation and update systemConfigGroup.Pop properly pops multiple times if attached to one setting multiple timesClickableTextWidget and CustomMultilineTextWidget now properly show hover events03.07.2025 · 123 464 downloads
Stupid semantic versioning... now the fix should work with mods that add dependencies to "0.7.0+1.21.6" specifically
03.07.2025 · 325 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContent01.07.2025 · 3 043 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentTranslatable.Name, Translatable.Desc, and Translatable.Prefix annotations for data generation of lang filesConfigApi.buildTranslations and ConfigApiJava.buildTranslations methods for hooking a config into a data generatorConfigApi.platform().buildRegistryTranslations Used for either RegistrySupplier objects built by a Registrar or Identifier used in a traditional registration systemConfigScreenProvider, allowing for registering of custom screen implementations in place of the Fzzy Config built inregisterScreenProvider added for registering your providerafterClose event in PopupWidgetisPressed method in Relevant interface (which is used by FzzyKeybind and ValidatedKeybind), which allows for assertive checking for a key state, above the existing reactive response method relevantValidationResult with a new ErrorEntry system and dramatically improved process flow for building complex errors and passing exceptions and other context informationinmap, outmap, and bimapCustomMultilineTextWidget to handle click and hover events, as well as now implementing a custom MultilineText implementationValidatedField bails out of deserialization only on critical errors, now letting correction take its course more oftenRegistrar system is no longer marked as experimental. Any further changes to the system will follow the standard released content deprecation and update systemConfigGroup.Pop properly pops multiple times if attached to one setting multiple timesClickableTextWidget and CustomMultilineTextWidget now properly show hover events01.07.2025 · 248 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentTranslatable.Name, Translatable.Desc, and Translatable.Prefix annotations for data generation of lang filesConfigApi.buildTranslations and ConfigApiJava.buildTranslations methods for hooking a config into a data generatorConfigApi.platform().buildRegistryTranslations Used for either RegistrySupplier objects built by a Registrar or Identifier used in a traditional registration systemConfigScreenProvider, allowing for registering of custom screen implementations in place of the Fzzy Config built inregisterScreenProvider added for registering your providerafterClose event in PopupWidgetisPressed method in Relevant interface (which is used by FzzyKeybind and ValidatedKeybind), which allows for assertive checking for a key state, above the existing reactive response method relevantValidationResult with a new ErrorEntry system and dramatically improved process flow for building complex errors and passing exceptions and other context informationinmap, outmap, and bimapCustomMultilineTextWidget to handle click and hover events, as well as now implementing a custom MultilineText implementationValidatedField bails out of deserialization only on critical errors, now letting correction take its course more oftenRegistrar system is no longer marked as experimental. Any further changes to the system will follow the standard released content deprecation and update systemConfigGroup.Pop properly pops multiple times if attached to one setting multiple timesClickableTextWidget and CustomMultilineTextWidget now properly show hover events27.05.2025 · 269 409 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentTranslatable.Name, Translatable.Desc, and Translatable.Prefix annotations for data generation of lang filesConfigApi.buildTranslations and ConfigApiJava.buildTranslations methods for hooking a config into a data generatorConfigApi.platform().buildRegistryTranslations Used for either RegistrySupplier objects built by a Registrar or Identifier used in a traditional registration systemConfigScreenProvider, allowing for registering of custom screen implementations in place of the Fzzy Config built inregisterScreenProvider added for registering your providerafterClose event in PopupWidgetisPressed method in Relevant interface (which is used by FzzyKeybind and ValidatedKeybind), which allows for assertive checking for a key state, above the existing reactive response method relevantValidationResult with a new ErrorEntry system and dramatically improved process flow for building complex errors and passing exceptions and other context informationinmap, outmap, and bimapCustomMultilineTextWidget to handle click and hover events, as well as now implementing a custom MultilineText implementationValidatedField bails out of deserialization only on critical errors, now letting correction take its course more oftenRegistrar system is no longer marked as experimental. Any further changes to the system will follow the standard released content deprecation and update systemConfigGroup.Pop properly pops multiple times if attached to one setting multiple timesClickableTextWidget and CustomMultilineTextWidget now properly show hover events27.05.2025 · 75 761 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentTranslatable.Name, Translatable.Desc, and Translatable.Prefix annotations for data generation of lang filesConfigApi.buildTranslations and ConfigApiJava.buildTranslations methods for hooking a config into a data generatorConfigApi.platform().buildRegistryTranslations Used for either RegistrySupplier objects built by a Registrar or Identifier used in a traditional registration systemConfigScreenProvider, allowing for registering of custom screen implementations in place of the Fzzy Config built inregisterScreenProvider added for registering your providerafterClose event in PopupWidgetisPressed method in Relevant interface (which is used by FzzyKeybind and ValidatedKeybind), which allows for assertive checking for a key state, above the existing reactive response method relevantValidationResult with a new ErrorEntry system and dramatically improved process flow for building complex errors and passing exceptions and other context informationinmap, outmap, and bimapCustomMultilineTextWidget to handle click and hover events, as well as now implementing a custom MultilineText implementationValidatedField bails out of deserialization only on critical errors, now letting correction take its course more oftenRegistrar system is no longer marked as experimental. Any further changes to the system will follow the standard released content deprecation and update systemConfigGroup.Pop properly pops multiple times if attached to one setting multiple timesClickableTextWidget and CustomMultilineTextWidget now properly show hover events27.05.2025 · 170 253 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentTranslatable.Name, Translatable.Desc, and Translatable.Prefix annotations for data generation of lang filesConfigApi.buildTranslations and ConfigApiJava.buildTranslations methods for hooking a config into a data generatorConfigApi.platform().buildRegistryTranslations Used for either RegistrySupplier objects built by a Registrar or Identifier used in a traditional registration systemConfigScreenProvider, allowing for registering of custom screen implementations in place of the Fzzy Config built inregisterScreenProvider added for registering your providerafterClose event in PopupWidgetisPressed method in Relevant interface (which is used by FzzyKeybind and ValidatedKeybind), which allows for assertive checking for a key state, above the existing reactive response method relevantValidationResult with a new ErrorEntry system and dramatically improved process flow for building complex errors and passing exceptions and other context informationinmap, outmap, and bimapCustomMultilineTextWidget to handle click and hover events, as well as now implementing a custom MultilineText implementationValidatedField bails out of deserialization only on critical errors, now letting correction take its course more oftenRegistrar system is no longer marked as experimental. Any further changes to the system will follow the standard released content deprecation and update systemConfigGroup.Pop properly pops multiple times if attached to one setting multiple timesClickableTextWidget and CustomMultilineTextWidget now properly show hover events27.05.2025 · 600 649 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentTranslatable.Name, Translatable.Desc, and Translatable.Prefix annotations for data generation of lang filesConfigApi.buildTranslations and ConfigApiJava.buildTranslations methods for hooking a config into a data generatorConfigApi.platform().buildRegistryTranslations Used for either RegistrySupplier objects built by a Registrar or Identifier used in a traditional registration systemConfigScreenProvider, allowing for registering of custom screen implementations in place of the Fzzy Config built inregisterScreenProvider added for registering your providerafterClose event in PopupWidgetisPressed method in Relevant interface (which is used by FzzyKeybind and ValidatedKeybind), which allows for assertive checking for a key state, above the existing reactive response method relevantValidationResult with a new ErrorEntry system and dramatically improved process flow for building complex errors and passing exceptions and other context informationinmap, outmap, and bimapCustomMultilineTextWidget to handle click and hover events, as well as now implementing a custom MultilineText implementationValidatedField bails out of deserialization only on critical errors, now letting correction take its course more oftenRegistrar system is no longer marked as experimental. Any further changes to the system will follow the standard released content deprecation and update systemConfigGroup.Pop properly pops multiple times if attached to one setting multiple timesClickableTextWidget and CustomMultilineTextWidget now properly show hover events26.05.2025 · 2 453 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentTranslatable.Name, Translatable.Desc, and Translatable.Prefix annotations for data generation of lang filesConfigApi.buildTranslations and ConfigApiJava.buildTranslations methods for hooking a config into a data generatorConfigApi.platform().buildRegistryTranslations Used for either RegistrySupplier objects built by a Registrar or Identifier used in a traditional registration systemConfigScreenProvider, allowing for registering of custom screen implementations in place of the Fzzy Config built inregisterScreenProvider added for registering your providerafterClose event in PopupWidgetisPressed method in Relevant interface (which is used by FzzyKeybind and ValidatedKeybind), which allows for assertive checking for a key state, above the existing reactive response method relevantValidationResult with a new ErrorEntry system and dramatically improved process flow for building complex errors and passing exceptions and other context informationinmap, outmap, and bimapCustomMultilineTextWidget to handle click and hover events, as well as now implementing a custom MultilineText implementationValidatedField bails out of deserialization only on critical errors, now letting correction take its course more oftenRegistrar system is no longer marked as experimental. Any further changes to the system will follow the standard released content deprecation and update systemConfigGroup.Pop properly pops multiple times if attached to one setting multiple timesClickableTextWidget and CustomMultilineTextWidget now properly show hover events26.05.2025 · 857 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentTranslatable.Name, Translatable.Desc, and Translatable.Prefix annotations for data generation of lang filesConfigApi.buildTranslations and ConfigApiJava.buildTranslations methods for hooking a config into a data generatorConfigApi.platform().buildRegistryTranslations Used for either RegistrySupplier objects built by a Registrar or Identifier used in a traditional registration systemConfigScreenProvider, allowing for registering of custom screen implementations in place of the Fzzy Config built inregisterScreenProvider added for registering your providerafterClose event in PopupWidgetisPressed method in Relevant interface (which is used by FzzyKeybind and ValidatedKeybind), which allows for assertive checking for a key state, above the existing reactive response method relevantValidationResult with a new ErrorEntry system and dramatically improved process flow for building complex errors and passing exceptions and other context informationinmap, outmap, and bimapCustomMultilineTextWidget to handle click and hover events, as well as now implementing a custom MultilineText implementationValidatedField bails out of deserialization only on critical errors, now letting correction take its course more oftenRegistrar system is no longer marked as experimental. Any further changes to the system will follow the standard released content deprecation and update systemConfigGroup.Pop properly pops multiple times if attached to one setting multiple timesClickableTextWidget and CustomMultilineTextWidget now properly show hover events26.05.2025 · 334 118 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentTranslatable.Name, Translatable.Desc, and Translatable.Prefix annotations for data generation of lang filesConfigApi.buildTranslations and ConfigApiJava.buildTranslations methods for hooking a config into a data generatorConfigApi.platform().buildRegistryTranslations Used for either RegistrySupplier objects built by a Registrar or Identifier used in a traditional registration systemConfigScreenProvider, allowing for registering of custom screen implementations in place of the Fzzy Config built inregisterScreenProvider added for registering your providerafterClose event in PopupWidgetisPressed method in Relevant interface (which is used by FzzyKeybind and ValidatedKeybind), which allows for assertive checking for a key state, above the existing reactive response method relevantValidationResult with a new ErrorEntry system and dramatically improved process flow for building complex errors and passing exceptions and other context informationinmap, outmap, and bimapCustomMultilineTextWidget to handle click and hover events, as well as now implementing a custom MultilineText implementationValidatedField bails out of deserialization only on critical errors, now letting correction take its course more oftenRegistrar system is no longer marked as experimental. Any further changes to the system will follow the standard released content deprecation and update systemConfigGroup.Pop properly pops multiple times if attached to one setting multiple timesClickableTextWidget and CustomMultilineTextWidget now properly show hover events26.05.2025 · 1 516 406 downloads
ValidatedEnumMap is removedSmallSpriteDecoration#<init>SpriteDecorated#textureSet & textures is now a required overrideSpriteDecoration#<init>CustomButtonWidget#<init> & builder is now only non-override method for adding custom buttonActiveButtonWidgetTextlessActionWidgetDynamicListWidget.EntryPos and implementations made internalPopupWidget position elements; LayoutWidget no longer inherits from the PopupWidget variantPopupController from PopupParentElementSuggestionWindowListener and SuggestionWindowProvider moved out of internal sub-packageImmutableRelPosRenderUtil#renderBlurTranslatable.Result has been replaced with Translatable.ResultProvider. This affects EntrySearcher as well as Searcher.SearchContentTranslatable.Name, Translatable.Desc, and Translatable.Prefix annotations for data generation of lang filesConfigApi.buildTranslations and ConfigApiJava.buildTranslations methods for hooking a config into a data generatorConfigApi.platform().buildRegistryTranslations Used for either RegistrySupplier objects built by a Registrar or Identifier used in a traditional registration systemConfigScreenProvider, allowing for registering of custom screen implementations in place of the Fzzy Config built inregisterScreenProvider added for registering your providerafterClose event in PopupWidgetisPressed method in Relevant interface (which is used by FzzyKeybind and ValidatedKeybind), which allows for assertive checking for a key state, above the existing reactive response method relevantValidationResult with a new ErrorEntry system and dramatically improved process flow for building complex errors and passing exceptions and other context informationinmap, outmap, and bimapCustomMultilineTextWidget to handle click and hover events, as well as now implementing a custom MultilineText implementationValidatedField bails out of deserialization only on critical errors, now letting correction take its course more oftenRegistrar system is no longer marked as experimental. Any further changes to the system will follow the standard released content deprecation and update systemConfigGroup.Pop properly pops multiple times if attached to one setting multiple timesClickableTextWidget and CustomMultilineTextWidget now properly show hover events09.04.2025 · 167 154 downloads
ValidatedEntityAttribute is removedCustom[Widgets] are moved from the internal widget package to the custom packagePopupWidget has many deprecations, and probably at least one breaking change despite my best efforts. Deprecations scheduled for removal 0.7.0ActiveButtonWidget is unused and deprecated, marked for removal by 0.7.0TextlessActionWidget is unused and deprecated, marked for removal by 0.7.0ValidatedKeybind now stores the keycode in the output file based on a string key, rather than the raw int; but it will still accept the raw int for up-conversion purposes or if the key falls outside the typical set of GLFW keys.key.[type] prefix removed (except for mouse buttons, those start with mouse.)page.down versus the minecraft key.keyboard.page.downmouse.right versus key.mouse.rightValidatedTriState will now accept boolean inputs from the file, if a user accidentally uses true or false instead of the intended enum form "true" or "false"ValidatedAny is now robust against changing the number of fields in the wrapped object. Previously adding fields and then trying to read the pre-existing config file would result in total failure for the object, reverting to defaults.09.04.2025 · 107 324 downloads
ValidatedEntityAttribute is removedCustom[Widgets] are moved from the internal widget package to the custom packagePopupWidget has many deprecations, and probably at least one breaking change despite my best efforts. Deprecations scheduled for removal 0.7.0ActiveButtonWidget is unused and deprecated, marked for removal by 0.7.0TextlessActionWidget is unused and deprecated, marked for removal by 0.7.0ValidatedKeybind now stores the keycode in the output file based on a string key, rather than the raw int; but it will still accept the raw int for up-conversion purposes or if the key falls outside the typical set of GLFW keys.key.[type] prefix removed (except for mouse buttons, those start with mouse.)page.down versus the minecraft key.keyboard.page.downmouse.right versus key.mouse.rightValidatedTriState will now accept boolean inputs from the file, if a user accidentally uses true or false instead of the intended enum form "true" or "false"ValidatedAny is now robust against changing the number of fields in the wrapped object. Previously adding fields and then trying to read the pre-existing config file would result in total failure for the object, reverting to defaults.09.04.2025 · 417 533 downloads
ValidatedEntityAttribute is removedCustom[Widgets] are moved from the internal widget package to the custom packagePopupWidget has many deprecations, and probably at least one breaking change despite my best efforts. Deprecations scheduled for removal 0.7.0ActiveButtonWidget is unused and deprecated, marked for removal by 0.7.0TextlessActionWidget is unused and deprecated, marked for removal by 0.7.0ValidatedKeybind now stores the keycode in the output file based on a string key, rather than the raw int; but it will still accept the raw int for up-conversion purposes or if the key falls outside the typical set of GLFW keys.key.[type] prefix removed (except for mouse buttons, those start with mouse.)page.down versus the minecraft key.keyboard.page.downmouse.right versus key.mouse.rightValidatedTriState will now accept boolean inputs from the file, if a user accidentally uses true or false instead of the intended enum form "true" or "false"ValidatedAny is now robust against changing the number of fields in the wrapped object. Previously adding fields and then trying to read the pre-existing config file would result in total failure for the object, reverting to defaults.09.04.2025 · 272 609 downloads
ValidatedEntityAttribute is removedCustom[Widgets] are moved from the internal widget package to the custom packagePopupWidget has many deprecations, and probably at least one breaking change despite my best efforts. Deprecations scheduled for removal 0.7.0ActiveButtonWidget is unused and deprecated, marked for removal by 0.7.0TextlessActionWidget is unused and deprecated, marked for removal by 0.7.0ValidatedKeybind now stores the keycode in the output file based on a string key, rather than the raw int; but it will still accept the raw int for up-conversion purposes or if the key falls outside the typical set of GLFW keys.key.[type] prefix removed (except for mouse buttons, those start with mouse.)page.down versus the minecraft key.keyboard.page.downmouse.right versus key.mouse.rightValidatedTriState will now accept boolean inputs from the file, if a user accidentally uses true or false instead of the intended enum form "true" or "false"ValidatedAny is now robust against changing the number of fields in the wrapped object. Previously adding fields and then trying to read the pre-existing config file would result in total failure for the object, reverting to defaults.09.04.2025 · 2 692 downloads
ValidatedEntityAttribute is removedCustom[Widgets] are moved from the internal widget package to the custom packagePopupWidget has many deprecations, and probably at least one breaking change despite my best efforts. Deprecations scheduled for removal 0.7.0ActiveButtonWidget is unused and deprecated, marked for removal by 0.7.0TextlessActionWidget is unused and deprecated, marked for removal by 0.7.0ValidatedKeybind now stores the keycode in the output file based on a string key, rather than the raw int; but it will still accept the raw int for up-conversion purposes or if the key falls outside the typical set of GLFW keys.key.[type] prefix removed (except for mouse buttons, those start with mouse.)page.down versus the minecraft key.keyboard.page.downmouse.right versus key.mouse.rightValidatedTriState will now accept boolean inputs from the file, if a user accidentally uses true or false instead of the intended enum form "true" or "false"ValidatedAny is now robust against changing the number of fields in the wrapped object. Previously adding fields and then trying to read the pre-existing config file would result in total failure for the object, reverting to defaults.09.04.2025 · 2 008 downloads
ValidatedEntityAttribute is removedCustom[Widgets] are moved from the internal widget package to the custom packagePopupWidget has many deprecations, and probably at least one breaking change despite my best efforts. Deprecations scheduled for removal 0.7.0ActiveButtonWidget is unused and deprecated, marked for removal by 0.7.0TextlessActionWidget is unused and deprecated, marked for removal by 0.7.0ValidatedKeybind now stores the keycode in the output file based on a string key, rather than the raw int; but it will still accept the raw int for up-conversion purposes or if the key falls outside the typical set of GLFW keys.key.[type] prefix removed (except for mouse buttons, those start with mouse.)page.down versus the minecraft key.keyboard.page.downmouse.right versus key.mouse.rightValidatedTriState will now accept boolean inputs from the file, if a user accidentally uses true or false instead of the intended enum form "true" or "false"ValidatedAny is now robust against changing the number of fields in the wrapped object. Previously adding fields and then trying to read the pre-existing config file would result in total failure for the object, reverting to defaults.09.04.2025 · 258 235 downloads
ValidatedEntityAttribute is removedCustom[Widgets] are moved from the internal widget package to the custom packagePopupWidget has many deprecations, and probably at least one breaking change despite my best efforts. Deprecations scheduled for removal 0.7.0ActiveButtonWidget is unused and deprecated, marked for removal by 0.7.0TextlessActionWidget is unused and deprecated, marked for removal by 0.7.0ValidatedKeybind now stores the keycode in the output file based on a string key, rather than the raw int; but it will still accept the raw int for up-conversion purposes or if the key falls outside the typical set of GLFW keys.key.[type] prefix removed (except for mouse buttons, those start with mouse.)page.down versus the minecraft key.keyboard.page.downmouse.right versus key.mouse.rightValidatedTriState will now accept boolean inputs from the file, if a user accidentally uses true or false instead of the intended enum form "true" or "false"ValidatedAny is now robust against changing the number of fields in the wrapped object. Previously adding fields and then trying to read the pre-existing config file would result in total failure for the object, reverting to defaults.09.04.2025 · 235 841 downloads
ValidatedEntityAttribute is removedCustom[Widgets] are moved from the internal widget package to the custom packagePopupWidget has many deprecations, and probably at least one breaking change despite my best efforts. Deprecations scheduled for removal 0.7.0ActiveButtonWidget is unused and deprecated, marked for removal by 0.7.0TextlessActionWidget is unused and deprecated, marked for removal by 0.7.0ValidatedKeybind now stores the keycode in the output file based on a string key, rather than the raw int; but it will still accept the raw int for up-conversion purposes or if the key falls outside the typical set of GLFW keys.key.[type] prefix removed (except for mouse buttons, those start with mouse.)page.down versus the minecraft key.keyboard.page.downmouse.right versus key.mouse.rightValidatedTriState will now accept boolean inputs from the file, if a user accidentally uses true or false instead of the intended enum form "true" or "false"ValidatedAny is now robust against changing the number of fields in the wrapped object. Previously adding fields and then trying to read the pre-existing config file would result in total failure for the object, reverting to defaults.29.03.2025 · 383 downloads
ValidatedEntityAttribute is removedCustom[Widgets] are moved from the internal widget package to the custom packagePopupWidget has many deprecations, and probably at least one breaking change despite my best efforts. Deprecations scheduled for removal 0.7.0ActiveButtonWidget is unused and deprecated, marked for removal by 0.7.0TextlessActionWidget is unused and deprecated, marked for removal by 0.7.0SaveType method in ConfigOVERWRITE - Client configs will be overwritten when receiving a sync from a server. Default and previous behaviorSEPARATE - Client configs will not be saved locally when updated from a server. Actions that modify gamestate before sync can't be included in these config type (Action.RESTART and Action.RELOG), as they won't be able to properly sync up this game state if they can't overwrite the local file.Translatable.ResultProvider super-class for more nuanced and efficient storage of translation results. Currently, half-wired-in until 0.7.0.Result can be cached with the new Translatable.createScopedResultTranslatable.Result now implements Searcher.SearchContent directly, and is now deprecated in favor of the new ResultProviderTranslatable.createResult/Translatable.createScopedResultConfigEntry can now process searches using the ContentBuilder.searchResult method. This presents valid "child" search results when the parent list is searched.ValidatedAny now has its own search barConfigScreenManager passes Config and entry Content misc. context to entry creators@Translation (or the entire class is marked with @Translation) will now properly render the translated name in the popup headerConfigGroup involving kotlin constructors.29.03.2025 · 6 943 downloads
ValidatedEntityAttribute is removedCustom[Widgets] are moved from the internal widget package to the custom packagePopupWidget has many deprecations, and probably at least one breaking change despite my best efforts. Deprecations scheduled for removal 0.7.0ActiveButtonWidget is unused and deprecated, marked for removal by 0.7.0TextlessActionWidget is unused and deprecated, marked for removal by 0.7.0SaveType method in ConfigOVERWRITE - Client configs will be overwritten when receiving a sync from a server. Default and previous behaviorSEPARATE - Client configs will not be saved locally when updated from a server. Actions that modify gamestate before sync can't be included in these config type (Action.RESTART and Action.RELOG), as they won't be able to properly sync up this game state if they can't overwrite the local file.Translatable.ResultProvider super-class for more nuanced and efficient storage of translation results. Currently, half-wired-in until 0.7.0.Result can be cached with the new Translatable.createScopedResultTranslatable.Result now implements Searcher.SearchContent directly, and is now deprecated in favor of the new ResultProviderTranslatable.createResult/Translatable.createScopedResultConfigEntry can now process searches using the ContentBuilder.searchResult method. This presents valid "child" search results when the parent list is searched.ValidatedAny now has its own search barConfigScreenManager passes Config and entry Content misc. context to entry creators@Translation (or the entire class is marked with @Translation) will now properly render the translated name in the popup headerConfigGroup involving kotlin constructors.29.03.2025 · 23 685 downloads
ValidatedEntityAttribute is removedCustom[Widgets] are moved from the internal widget package to the custom packagePopupWidget has many deprecations, and probably at least one breaking change despite my best efforts. Deprecations scheduled for removal 0.7.0ActiveButtonWidget is unused and deprecated, marked for removal by 0.7.0TextlessActionWidget is unused and deprecated, marked for removal by 0.7.0SaveType method in ConfigOVERWRITE - Client configs will be overwritten when receiving a sync from a server. Default and previous behaviorSEPARATE - Client configs will not be saved locally when updated from a server. Actions that modify gamestate before sync can't be included in these config type (Action.RESTART and Action.RELOG), as they won't be able to properly sync up this game state if they can't overwrite the local file.Translatable.ResultProvider super-class for more nuanced and efficient storage of translation results. Currently, half-wired-in until 0.7.0.Result can be cached with the new Translatable.createScopedResultTranslatable.Result now implements Searcher.SearchContent directly, and is now deprecated in favor of the new ResultProviderTranslatable.createResult/Translatable.createScopedResultConfigEntry can now process searches using the ContentBuilder.searchResult method. This presents valid "child" search results when the parent list is searched.ValidatedAny now has its own search barConfigScreenManager passes Config and entry Content misc. context to entry creators@Translation (or the entire class is marked with @Translation) will now properly render the translated name in the popup headerConfigGroup involving kotlin constructors.29.03.2025 · 81 202 downloads
ValidatedEntityAttribute is removedCustom[Widgets] are moved from the internal widget package to the custom packagePopupWidget has many deprecations, and probably at least one breaking change despite my best efforts. Deprecations scheduled for removal 0.7.0ActiveButtonWidget is unused and deprecated, marked for removal by 0.7.0TextlessActionWidget is unused and deprecated, marked for removal by 0.7.0SaveType method in ConfigOVERWRITE - Client configs will be overwritten when receiving a sync from a server. Default and previous behaviorSEPARATE - Client configs will not be saved locally when updated from a server. Actions that modify gamestate before sync can't be included in these config type (Action.RESTART and Action.RELOG), as they won't be able to properly sync up this game state if they can't overwrite the local file.Translatable.ResultProvider super-class for more nuanced and efficient storage of translation results. Currently, half-wired-in until 0.7.0.Result can be cached with the new Translatable.createScopedResultTranslatable.Result now implements Searcher.SearchContent directly, and is now deprecated in favor of the new ResultProviderTranslatable.createResult/Translatable.createScopedResultConfigEntry can now process searches using the ContentBuilder.searchResult method. This presents valid "child" search results when the parent list is searched.ValidatedAny now has its own search barConfigScreenManager passes Config and entry Content misc. context to entry creators@Translation (or the entire class is marked with @Translation) will now properly render the translated name in the popup headerConfigGroup involving kotlin constructors.29.03.2025 · 23 486 downloads
ValidatedEntityAttribute is removedCustom[Widgets] are moved from the internal widget package to the custom packagePopupWidget has many deprecations, and probably at least one breaking change despite my best efforts. Deprecations scheduled for removal 0.7.0ActiveButtonWidget is unused and deprecated, marked for removal by 0.7.0TextlessActionWidget is unused and deprecated, marked for removal by 0.7.0SaveType method in ConfigOVERWRITE - Client configs will be overwritten when receiving a sync from a server. Default and previous behaviorSEPARATE - Client configs will not be saved locally when updated from a server. Actions that modify gamestate before sync can't be included in these config type (Action.RESTART and Action.RELOG), as they won't be able to properly sync up this game state if they can't overwrite the local file.Translatable.ResultProvider super-class for more nuanced and efficient storage of translation results. Currently, half-wired-in until 0.7.0.Result can be cached with the new Translatable.createScopedResultTranslatable.Result now implements Searcher.SearchContent directly, and is now deprecated in favor of the new ResultProviderTranslatable.createResult/Translatable.createScopedResultConfigEntry can now process searches using the ContentBuilder.searchResult method. This presents valid "child" search results when the parent list is searched.ValidatedAny now has its own search barConfigScreenManager passes Config and entry Content misc. context to entry creators@Translation (or the entire class is marked with @Translation) will now properly render the translated name in the popup headerConfigGroup involving kotlin constructors.29.03.2025 · 270 downloads
ValidatedEntityAttribute is removedCustom[Widgets] are moved from the internal widget package to the custom packagePopupWidget has many deprecations, and probably at least one breaking change despite my best efforts. Deprecations scheduled for removal 0.7.0ActiveButtonWidget is unused and deprecated, marked for removal by 0.7.0TextlessActionWidget is unused and deprecated, marked for removal by 0.7.0SaveType method in ConfigOVERWRITE - Client configs will be overwritten when receiving a sync from a server. Default and previous behaviorSEPARATE - Client configs will not be saved locally when updated from a server. Actions that modify gamestate before sync can't be included in these config type (Action.RESTART and Action.RELOG), as they won't be able to properly sync up this game state if they can't overwrite the local file.Translatable.ResultProvider super-class for more nuanced and efficient storage of translation results. Currently, half-wired-in until 0.7.0.Result can be cached with the new Translatable.createScopedResultTranslatable.Result now implements Searcher.SearchContent directly, and is now deprecated in favor of the new ResultProviderTranslatable.createResult/Translatable.createScopedResultConfigEntry can now process searches using the ContentBuilder.searchResult method. This presents valid "child" search results when the parent list is searched.ValidatedAny now has its own search barConfigScreenManager passes Config and entry Content misc. context to entry creators@Translation (or the entire class is marked with @Translation) will now properly render the translated name in the popup headerConfigGroup involving kotlin constructors.29.03.2025 · 24 531 downloads
ValidatedEntityAttribute is removedCustom[Widgets] are moved from the internal widget package to the custom packagePopupWidget has many deprecations, and probably at least one breaking change despite my best efforts. Deprecations scheduled for removal 0.7.0ActiveButtonWidget is unused and deprecated, marked for removal by 0.7.0TextlessActionWidget is unused and deprecated, marked for removal by 0.7.0SaveType method in ConfigOVERWRITE - Client configs will be overwritten when receiving a sync from a server. Default and previous behaviorSEPARATE - Client configs will not be saved locally when updated from a server. Actions that modify gamestate before sync can't be included in these config type (Action.RESTART and Action.RELOG), as they won't be able to properly sync up this game state if they can't overwrite the local file.Translatable.ResultProvider super-class for more nuanced and efficient storage of translation results. Currently, half-wired-in until 0.7.0.Result can be cached with the new Translatable.createScopedResultTranslatable.Result now implements Searcher.SearchContent directly, and is now deprecated in favor of the new ResultProviderTranslatable.createResult/Translatable.createScopedResultConfigEntry can now process searches using the ContentBuilder.searchResult method. This presents valid "child" search results when the parent list is searched.ValidatedAny now has its own search barConfigScreenManager passes Config and entry Content misc. context to entry creators@Translation (or the entire class is marked with @Translation) will now properly render the translated name in the popup headerConfigGroup involving kotlin constructors.29.03.2025 · 37 038 downloads
ValidatedEntityAttribute is removedCustom[Widgets] are moved from the internal widget package to the custom packagePopupWidget has many deprecations, and probably at least one breaking change despite my best efforts. Deprecations scheduled for removal 0.7.0ActiveButtonWidget is unused and deprecated, marked for removal by 0.7.0TextlessActionWidget is unused and deprecated, marked for removal by 0.7.0SaveType method in ConfigOVERWRITE - Client configs will be overwritten when receiving a sync from a server. Default and previous behaviorSEPARATE - Client configs will not be saved locally when updated from a server. Actions that modify gamestate before sync can't be included in these config type (Action.RESTART and Action.RELOG), as they won't be able to properly sync up this game state if they can't overwrite the local file.Translatable.ResultProvider super-class for more nuanced and efficient storage of translation results. Currently, half-wired-in until 0.7.0.Result can be cached with the new Translatable.createScopedResultTranslatable.Result now implements Searcher.SearchContent directly, and is now deprecated in favor of the new ResultProviderTranslatable.createResult/Translatable.createScopedResultConfigEntry can now process searches using the ContentBuilder.searchResult method. This presents valid "child" search results when the parent list is searched.ValidatedAny now has its own search barConfigScreenManager passes Config and entry Content misc. context to entry creators@Translation (or the entire class is marked with @Translation) will now properly render the translated name in the popup headerConfigGroup involving kotlin constructors.21.03.2025 · 23 442 downloads
ValidatedEntityAttribute is removedCustom[Widgets] are moved from the internal widget package to the custom packagePopupWidget has many deprecations, and probably at least one breaking change despite my best efforts. Deprecations scheduled for removal 0.7.0ActiveButtonWidget is unused and deprecated, marked for removal by 0.7.0TextlessActionWidget is unused and deprecated, marked for removal by 0.7.0TOML, JSON, JSON5, JSONC. Select your desired format by overriding fileType in the config class.@Comment or @TomlCommentPopupController from PopupParentElement, allowing for smoother implementation of popups into existing screens.21.03.2025 · 20 549 downloads
ValidatedEntityAttribute is removedCustom[Widgets] are moved from the internal widget package to the custom packagePopupWidget has many deprecations, and probably at least one breaking change despite my best efforts. Deprecations scheduled for removal 0.7.0ActiveButtonWidget is unused and deprecated, marked for removal by 0.7.0TextlessActionWidget is unused and deprecated, marked for removal by 0.7.0TOML, JSON, JSON5, JSONC. Select your desired format by overriding fileType in the config class.@Comment or @TomlCommentPopupController from PopupParentElement, allowing for smoother implementation of popups into existing screens.21.03.2025 · 14 435 downloads
ValidatedEntityAttribute is removedCustom[Widgets] are moved from the internal widget package to the custom packagePopupWidget has many deprecations, and probably at least one breaking change despite my best efforts. Deprecations scheduled for removal 0.7.0ActiveButtonWidget is unused and deprecated, marked for removal by 0.7.0TextlessActionWidget is unused and deprecated, marked for removal by 0.7.0TOML, JSON, JSON5, JSONC. Select your desired format by overriding fileType in the config class.@Comment or @TomlCommentPopupController from PopupParentElement, allowing for smoother implementation of popups into existing screens.21.03.2025 · 373 downloads
ValidatedEntityAttribute is removedCustom[Widgets] are moved from the internal widget package to the custom packagePopupWidget has many deprecations, and probably at least one breaking change despite my best efforts. Deprecations scheduled for removal 0.7.0ActiveButtonWidget is unused and deprecated, marked for removal by 0.7.0TextlessActionWidget is unused and deprecated, marked for removal by 0.7.0TOML, JSON, JSON5, JSONC. Select your desired format by overriding fileType in the config class.@Comment or @TomlCommentPopupController from PopupParentElement, allowing for smoother implementation of popups into existing screens.21.03.2025 · 15 821 downloads
ValidatedEntityAttribute is removedCustom[Widgets] are moved from the internal widget package to the custom packagePopupWidget has many deprecations, and probably at least one breaking change despite my best efforts. Deprecations scheduled for removal 0.7.0ActiveButtonWidget is unused and deprecated, marked for removal by 0.7.0TextlessActionWidget is unused and deprecated, marked for removal by 0.7.0TOML, JSON, JSON5, JSONC. Select your desired format by overriding fileType in the config class.@Comment or @TomlCommentPopupController from PopupParentElement, allowing for smoother implementation of popups into existing screens.21.03.2025 · 21 002 downloads
ValidatedEntityAttribute is removedCustom[Widgets] are moved from the internal widget package to the custom packagePopupWidget has many deprecations, and probably at least one breaking change despite my best efforts. Deprecations scheduled for removal 0.7.0ActiveButtonWidget is unused and deprecated, marked for removal by 0.7.0TextlessActionWidget is unused and deprecated, marked for removal by 0.7.0TOML, JSON, JSON5, JSONC. Select your desired format by overriding fileType in the config class.@Comment or @TomlCommentPopupController from PopupParentElement, allowing for smoother implementation of popups into existing screens.16.03.2025 · 6 544 downloads
ValidatedEntityAttribute is removedCustom[Widgets] are moved from the internal widget package to the custom packagePopupWidget has many deprecations, and probably at least one breaking change despite my best efforts. Deprecations scheduled for removal 0.7.0ActiveButtonWidget is unused and deprecated, marked for removal by 0.7.0TextlessActionWidget is unused and deprecated, marked for removal by 0.7.0@RootConfig annotation for marking a config as a "root" config. The settings will appear "inline" with the landing page config buttons, instead of in its own sub-GUI. All other aspects of the config interaction remain unchanged; loading, saving, calling from, etc. so an existing config can be marked as root with no breakage.ConfigApi.isScreenOpen/ConfigApiJava.isSceenOpen methods for checking if a Config GUI is currently open.DynamicListWidget has a new scrollToEntry method for scrolling directly to a list element.ConfigApi.openScreen now supports passing in scope args for scrolling to them and opening them as applicable. If you have a config my_mod:config with a Object setting coolObject, passing my_mod.config.coolObject to openScreen will open the config GUI, scroll to the object setting, and open the object editing popup.EntryOpener interface for entries that have something to open on request. This is typically used for validation that has a popup edit menu.registerLenient[side] are now ported to all versions for usage parity.ValidatedColor popups now have a submit button for the hex string textbox, and the alpha edit box will be completely missing if the color doesn't support transparency.ConfigGroup now has an optional constructor parameter to start the config collapsed.ValidatedColor properly shows and accepts only 6-digit hex when it doesn't support transparency.ValidatedIdentifier and ValidatedTagKey properly focus their textboxes on open again, and their textboxes are aligned properly again.16.03.2025 · 32 680 downloads
ValidatedEntityAttribute is removedCustom[Widgets] are moved from the internal widget package to the custom packagePopupWidget has many deprecations, and probably at least one breaking change despite my best efforts. Deprecations scheduled for removal 0.7.0ActiveButtonWidget is unused and deprecated, marked for removal by 0.7.0TextlessActionWidget is unused and deprecated, marked for removal by 0.7.0@RootConfig annotation for marking a config as a "root" config. The settings will appear "inline" with the landing page config buttons, instead of in its own sub-GUI. All other aspects of the config interaction remain unchanged; loading, saving, calling from, etc. so an existing config can be marked as root with no breakage.ConfigApi.isScreenOpen/ConfigApiJava.isSceenOpen methods for checking if a Config GUI is currently open.DynamicListWidget has a new scrollToEntry method for scrolling directly to a list element.ConfigApi.openScreen now supports passing in scope args for scrolling to them and opening them as applicable. If you have a config my_mod:config with a Object setting coolObject, passing my_mod.config.coolObject to openScreen will open the config GUI, scroll to the object setting, and open the object editing popup.EntryOpener interface for entries that have something to open on request. This is typically used for validation that has a popup edit menu.registerLenient[side] are now ported to all versions for usage parity.ValidatedColor popups now have a submit button for the hex string textbox, and the alpha edit box will be completely missing if the color doesn't support transparency.ConfigGroup now has an optional constructor parameter to start the config collapsed.ValidatedColor properly shows and accepts only 6-digit hex when it doesn't support transparency.ValidatedIdentifier and ValidatedTagKey properly focus their textboxes on open again, and their textboxes are aligned properly again.16.03.2025 · 9 244 downloads
ValidatedEntityAttribute is removedCustom[Widgets] are moved from the internal widget package to the custom packagePopupWidget has many deprecations, and probably at least one breaking change despite my best efforts. Deprecations scheduled for removal 0.7.0ActiveButtonWidget is unused and deprecated, marked for removal by 0.7.0TextlessActionWidget is unused and deprecated, marked for removal by 0.7.0@RootConfig annotation for marking a config as a "root" config. The settings will appear "inline" with the landing page config buttons, instead of in its own sub-GUI. All other aspects of the config interaction remain unchanged; loading, saving, calling from, etc. so an existing config can be marked as root with no breakage.ConfigApi.isScreenOpen/ConfigApiJava.isSceenOpen methods for checking if a Config GUI is currently open.DynamicListWidget has a new scrollToEntry method for scrolling directly to a list element.ConfigApi.openScreen now supports passing in scope args for scrolling to them and opening them as applicable. If you have a config my_mod:config with a Object setting coolObject, passing my_mod.config.coolObject to openScreen will open the config GUI, scroll to the object setting, and open the object editing popup.EntryOpener interface for entries that have something to open on request. This is typically used for validation that has a popup edit menu.registerLenient[side] are now ported to all versions for usage parity.ValidatedColor popups now have a submit button for the hex string textbox, and the alpha edit box will be completely missing if the color doesn't support transparency.ConfigGroup now has an optional constructor parameter to start the config collapsed.ValidatedColor properly shows and accepts only 6-digit hex when it doesn't support transparency.ValidatedIdentifier and ValidatedTagKey properly focus their textboxes on open again, and their textboxes are aligned properly again.16.03.2025 · 183 downloads
ValidatedEntityAttribute is removedCustom[Widgets] are moved from the internal widget package to the custom packagePopupWidget has many deprecations, and probably at least one breaking change despite my best efforts. Deprecations scheduled for removal 0.7.0ActiveButtonWidget is unused and deprecated, marked for removal by 0.7.0TextlessActionWidget is unused and deprecated, marked for removal by 0.7.0@RootConfig annotation for marking a config as a "root" config. The settings will appear "inline" with the landing page config buttons, instead of in its own sub-GUI. All other aspects of the config interaction remain unchanged; loading, saving, calling from, etc. so an existing config can be marked as root with no breakage.ConfigApi.isScreenOpen/ConfigApiJava.isSceenOpen methods for checking if a Config GUI is currently open.DynamicListWidget has a new scrollToEntry method for scrolling directly to a list element.ConfigApi.openScreen now supports passing in scope args for scrolling to them and opening them as applicable. If you have a config my_mod:config with a Object setting coolObject, passing my_mod.config.coolObject to openScreen will open the config GUI, scroll to the object setting, and open the object editing popup.EntryOpener interface for entries that have something to open on request. This is typically used for validation that has a popup edit menu.registerLenient[side] are now ported to all versions for usage parity.ValidatedColor popups now have a submit button for the hex string textbox, and the alpha edit box will be completely missing if the color doesn't support transparency.ConfigGroup now has an optional constructor parameter to start the config collapsed.ValidatedColor properly shows and accepts only 6-digit hex when it doesn't support transparency.ValidatedIdentifier and ValidatedTagKey properly focus their textboxes on open again, and their textboxes are aligned properly again.16.03.2025 · 14 882 downloads
ValidatedEntityAttribute is removedCustom[Widgets] are moved from the internal widget package to the custom packagePopupWidget has many deprecations, and probably at least one breaking change despite my best efforts. Deprecations scheduled for removal 0.7.0ActiveButtonWidget is unused and deprecated, marked for removal by 0.7.0TextlessActionWidget is unused and deprecated, marked for removal by 0.7.0@RootConfig annotation for marking a config as a "root" config. The settings will appear "inline" with the landing page config buttons, instead of in its own sub-GUI. All other aspects of the config interaction remain unchanged; loading, saving, calling from, etc. so an existing config can be marked as root with no breakage.ConfigApi.isScreenOpen/ConfigApiJava.isSceenOpen methods for checking if a Config GUI is currently open.DynamicListWidget has a new scrollToEntry method for scrolling directly to a list element.ConfigApi.openScreen now supports passing in scope args for scrolling to them and opening them as applicable. If you have a config my_mod:config with a Object setting coolObject, passing my_mod.config.coolObject to openScreen will open the config GUI, scroll to the object setting, and open the object editing popup.EntryOpener interface for entries that have something to open on request. This is typically used for validation that has a popup edit menu.registerLenient[side] are now ported to all versions for usage parity.ValidatedColor popups now have a submit button for the hex string textbox, and the alpha edit box will be completely missing if the color doesn't support transparency.ConfigGroup now has an optional constructor parameter to start the config collapsed.ValidatedColor properly shows and accepts only 6-digit hex when it doesn't support transparency.ValidatedIdentifier and ValidatedTagKey properly focus their textboxes on open again, and their textboxes are aligned properly again.16.03.2025 · 17 273 downloads
ValidatedEntityAttribute is removedCustom[Widgets] are moved from the internal widget package to the custom packagePopupWidget has many deprecations, and probably at least one breaking change despite my best efforts. Deprecations scheduled for removal 0.7.0ActiveButtonWidget is unused and deprecated, marked for removal by 0.7.0TextlessActionWidget is unused and deprecated, marked for removal by 0.7.0@RootConfig annotation for marking a config as a "root" config. The settings will appear "inline" with the landing page config buttons, instead of in its own sub-GUI. All other aspects of the config interaction remain unchanged; loading, saving, calling from, etc. so an existing config can be marked as root with no breakage.ConfigApi.isScreenOpen/ConfigApiJava.isSceenOpen methods for checking if a Config GUI is currently open.DynamicListWidget has a new scrollToEntry method for scrolling directly to a list element.ConfigApi.openScreen now supports passing in scope args for scrolling to them and opening them as applicable. If you have a config my_mod:config with a Object setting coolObject, passing my_mod.config.coolObject to openScreen will open the config GUI, scroll to the object setting, and open the object editing popup.EntryOpener interface for entries that have something to open on request. This is typically used for validation that has a popup edit menu.registerLenient[side] are now ported to all versions for usage parity.ValidatedColor popups now have a submit button for the hex string textbox, and the alpha edit box will be completely missing if the color doesn't support transparency.ConfigGroup now has an optional constructor parameter to start the config collapsed.ValidatedColor properly shows and accepts only 6-digit hex when it doesn't support transparency.ValidatedIdentifier and ValidatedTagKey properly focus their textboxes on open again, and their textboxes are aligned properly again.09.03.2025 · 17 095 downloads
ValidatedEntityAttribute is removedCustom[Widgets] are moved from the internal widget package to the custom packagePopupWidget has many deprecations, and probably at least one breaking change despite my best efforts. Deprecations scheduled for removal 0.7.0ActiveButtonWidget is unused and deprecated, marked for removal by 0.7.0TextlessActionWidget is unused and deprecated, marked for removal by 0.7.0registerLenientS2C and registerLenientC2S methods in the NetworkApi. These methods will be propagated to all versions of Fzzy Config in 0.6.6, though in most versions will have no behavior difference compared to registerS2C/C2SNetworkApi.canSend now checks that one of it's registered methods can in fact send.09.03.2025 · 1 162 downloads
ValidatedEntityAttribute is removedCustom[Widgets] are moved from the internal widget package to the custom packagePopupWidget has many deprecations, and probably at least one breaking change despite my best efforts. Deprecations scheduled for removal 0.7.0ActiveButtonWidget is unused and deprecated, marked for removal by 0.7.0TextlessActionWidget is unused and deprecated, marked for removal by 0.7.006.03.2025 · 148 216 downloads
ValidatedEntityAttribute is removedCustom[Widgets] are moved from the internal widget package to the custom packagePopupWidget has many deprecations, and probably at least one breaking change despite my best efforts. Deprecations scheduled for removal 0.7.0ActiveButtonWidget is unused and deprecated, marked for removal by 0.7.0TextlessActionWidget is unused and deprecated, marked for removal by 0.7.0
WidgetEntry for easy creation of Dynamic Lists wrapping a collection of widgets.SCROLLABLE for ValidatedChoiceList and ValidatedChoice which opens a scrollable and searchable widget listValidatedChoice now includes the INLINE widget type previously only available on the list versionValidatedChoiceList now has its own decorator, distinguishing it from a normal list TriState utility enum and corresponding ValidatedTriState validation for configs. Like most tri-states, has TRUE, FALSE, and DEFAULT choices, and two different widget options for selecting between them.FzzyKeybind system that builds on the ContextType system introduced in 0.6.0.ValidatedKeybind validation added for configurable keybind handling.ConfigScreen context handler that is used to handle GUI inputs.wdithFunction and heightFunction to PopupWidget, allowing for dynamic sizing based on screen and previous dimension context.keybinds.toml controls the inputs used for interacting with Config GUIs.RegistrySupplier now implements RegistryEntry directly, as well as passing its reference entry. This includes a breaking experimental change, getKey has changed to getRegistryKeyValidatedChoice and ValidatedChoiceListDynamicListWidget, deferring several allocations until neededConfigScreenManager now caches config GUI templates incrementally, instead of front-loading all screen templates at once. This has some side effects, namely that each screen now has a separate Update Manager, so restoring defaults, reverting changes, etc. is now sectioned off per-config instead of global to the namespace. The "Root" screen update manager can see any loaded children managers, so changes can be managed from the root screen into any child screens that have been loaded and modified.ValidatedAny popup saying "Revert Changes" for both the revert and restore defaults buttonValidatedCondition now properly considers its conditions when determining default and changed states. A Validated Condition that has failed conditions will always be considered "default"ConfigScreenNarrator now properly strips out formatting codes before narrating the text content (this also affects the vanilla screen narrator)ValidatedIdentifier config widgets not being properly navigable with keyboard.06.03.2025 · 24 105 downloads
ValidatedEntityAttribute is removedCustom[Widgets] are moved from the internal widget package to the custom packagePopupWidget has many deprecations, and probably at least one breaking change despite my best efforts. Deprecations scheduled for removal 0.7.0ActiveButtonWidget is unused and deprecated, marked for removal by 0.7.0TextlessActionWidget is unused and deprecated, marked for removal by 0.7.0
WidgetEntry for easy creation of Dynamic Lists wrapping a collection of widgets.SCROLLABLE for ValidatedChoiceList and ValidatedChoice which opens a scrollable and searchable widget listValidatedChoice now includes the INLINE widget type previously only available on the list versionValidatedChoiceList now has its own decorator, distinguishing it from a normal list TriState utility enum and corresponding ValidatedTriState validation for configs. Like most tri-states, has TRUE, FALSE, and DEFAULT choices, and two different widget options for selecting between them.FzzyKeybind system that builds on the ContextType system introduced in 0.6.0.ValidatedKeybind validation added for configurable keybind handling.ConfigScreen context handler that is used to handle GUI inputs.wdithFunction and heightFunction to PopupWidget, allowing for dynamic sizing based on screen and previous dimension context.keybinds.toml controls the inputs used for interacting with Config GUIs.RegistrySupplier now implements RegistryEntry directly, as well as passing its reference entry. This includes a breaking experimental change, getKey has changed to getRegistryKeyValidatedChoice and ValidatedChoiceListDynamicListWidget, deferring several allocations until neededConfigScreenManager now caches config GUI templates incrementally, instead of front-loading all screen templates at once. This has some side effects, namely that each screen now has a separate Update Manager, so restoring defaults, reverting changes, etc. is now sectioned off per-config instead of global to the namespace. The "Root" screen update manager can see any loaded children managers, so changes can be managed from the root screen into any child screens that have been loaded and modified.ValidatedAny popup saying "Revert Changes" for both the revert and restore defaults buttonValidatedCondition now properly considers its conditions when determining default and changed states. A Validated Condition that has failed conditions will always be considered "default"ConfigScreenNarrator now properly strips out formatting codes before narrating the text content (this also affects the vanilla screen narrator)ValidatedIdentifier config widgets not being properly navigable with keyboard.06.03.2025 · 25 717 downloads
ValidatedEntityAttribute is removedCustom[Widgets] are moved from the internal widget package to the custom packagePopupWidget has many deprecations, and probably at least one breaking change despite my best efforts. Deprecations scheduled for removal 0.7.0ActiveButtonWidget is unused and deprecated, marked for removal by 0.7.0TextlessActionWidget is unused and deprecated, marked for removal by 0.7.0
WidgetEntry for easy creation of Dynamic Lists wrapping a collection of widgets.SCROLLABLE for ValidatedChoiceList and ValidatedChoice which opens a scrollable and searchable widget listValidatedChoice now includes the INLINE widget type previously only available on the list versionValidatedChoiceList now has its own decorator, distinguishing it from a normal list TriState utility enum and corresponding ValidatedTriState validation for configs. Like most tri-states, has TRUE, FALSE, and DEFAULT choices, and two different widget options for selecting between them.FzzyKeybind system that builds on the ContextType system introduced in 0.6.0.ValidatedKeybind validation added for configurable keybind handling.ConfigScreen context handler that is used to handle GUI inputs.wdithFunction and heightFunction to PopupWidget, allowing for dynamic sizing based on screen and previous dimension context.keybinds.toml controls the inputs used for interacting with Config GUIs.RegistrySupplier now implements RegistryEntry directly, as well as passing its reference entry. This includes a breaking experimental change, getKey has changed to getRegistryKeyValidatedChoice and ValidatedChoiceListDynamicListWidget, deferring several allocations until neededConfigScreenManager now caches config GUI templates incrementally, instead of front-loading all screen templates at once. This has some side effects, namely that each screen now has a separate Update Manager, so restoring defaults, reverting changes, etc. is now sectioned off per-config instead of global to the namespace. The "Root" screen update manager can see any loaded children managers, so changes can be managed from the root screen into any child screens that have been loaded and modified.ValidatedAny popup saying "Revert Changes" for both the revert and restore defaults buttonValidatedCondition now properly considers its conditions when determining default and changed states. A Validated Condition that has failed conditions will always be considered "default"ConfigScreenNarrator now properly strips out formatting codes before narrating the text content (this also affects the vanilla screen narrator)ValidatedIdentifier config widgets not being properly navigable with keyboard.06.03.2025 · 183 downloads
ValidatedEntityAttribute is removedCustom[Widgets] are moved from the internal widget package to the custom packagePopupWidget has many deprecations, and probably at least one breaking change despite my best efforts. Deprecations scheduled for removal 0.7.0ActiveButtonWidget is unused and deprecated, marked for removal by 0.7.0TextlessActionWidget is unused and deprecated, marked for removal by 0.7.0
WidgetEntry for easy creation of Dynamic Lists wrapping a collection of widgets.SCROLLABLE for ValidatedChoiceList and ValidatedChoice which opens a scrollable and searchable widget listValidatedChoice now includes the INLINE widget type previously only available on the list versionValidatedChoiceList now has its own decorator, distinguishing it from a normal list TriState utility enum and corresponding ValidatedTriState validation for configs. Like most tri-states, has TRUE, FALSE, and DEFAULT choices, and two different widget options for selecting between them.FzzyKeybind system that builds on the ContextType system introduced in 0.6.0.ValidatedKeybind validation added for configurable keybind handling.ConfigScreen context handler that is used to handle GUI inputs.wdithFunction and heightFunction to PopupWidget, allowing for dynamic sizing based on screen and previous dimension context.keybinds.toml controls the inputs used for interacting with Config GUIs.RegistrySupplier now implements RegistryEntry directly, as well as passing its reference entry. This includes a breaking experimental change, getKey has changed to getRegistryKeyValidatedChoice and ValidatedChoiceListDynamicListWidget, deferring several allocations until neededConfigScreenManager now caches config GUI templates incrementally, instead of front-loading all screen templates at once. This has some side effects, namely that each screen now has a separate Update Manager, so restoring defaults, reverting changes, etc. is now sectioned off per-config instead of global to the namespace. The "Root" screen update manager can see any loaded children managers, so changes can be managed from the root screen into any child screens that have been loaded and modified.ValidatedAny popup saying "Revert Changes" for both the revert and restore defaults buttonValidatedCondition now properly considers its conditions when determining default and changed states. A Validated Condition that has failed conditions will always be considered "default"ConfigScreenNarrator now properly strips out formatting codes before narrating the text content (this also affects the vanilla screen narrator)ValidatedIdentifier config widgets not being properly navigable with keyboard.06.03.2025 · 11 113 downloads
ValidatedEntityAttribute is removedCustom[Widgets] are moved from the internal widget package to the custom packagePopupWidget has many deprecations, and probably at least one breaking change despite my best efforts. Deprecations scheduled for removal 0.7.0ActiveButtonWidget is unused and deprecated, marked for removal by 0.7.0TextlessActionWidget is unused and deprecated, marked for removal by 0.7.0
WidgetEntry for easy creation of Dynamic Lists wrapping a collection of widgets.SCROLLABLE for ValidatedChoiceList and ValidatedChoice which opens a scrollable and searchable widget listValidatedChoice now includes the INLINE widget type previously only available on the list versionValidatedChoiceList now has its own decorator, distinguishing it from a normal list TriState utility enum and corresponding ValidatedTriState validation for configs. Like most tri-states, has TRUE, FALSE, and DEFAULT choices, and two different widget options for selecting between them.FzzyKeybind system that builds on the ContextType system introduced in 0.6.0.ValidatedKeybind validation added for configurable keybind handling.ConfigScreen context handler that is used to handle GUI inputs.wdithFunction and heightFunction to PopupWidget, allowing for dynamic sizing based on screen and previous dimension context.keybinds.toml controls the inputs used for interacting with Config GUIs.RegistrySupplier now implements RegistryEntry directly, as well as passing its reference entry. This includes a breaking experimental change, getKey has changed to getRegistryKeyValidatedChoice and ValidatedChoiceListDynamicListWidget, deferring several allocations until neededConfigScreenManager now caches config GUI templates incrementally, instead of front-loading all screen templates at once. This has some side effects, namely that each screen now has a separate Update Manager, so restoring defaults, reverting changes, etc. is now sectioned off per-config instead of global to the namespace. The "Root" screen update manager can see any loaded children managers, so changes can be managed from the root screen into any child screens that have been loaded and modified.ValidatedAny popup saying "Revert Changes" for both the revert and restore defaults buttonValidatedCondition now properly considers its conditions when determining default and changed states. A Validated Condition that has failed conditions will always be considered "default"ConfigScreenNarrator now properly strips out formatting codes before narrating the text content (this also affects the vanilla screen narrator)ValidatedIdentifier config widgets not being properly navigable with keyboard.06.03.2025 · 9 344 downloads
ValidatedEntityAttribute is removedCustom[Widgets] are moved from the internal widget package to the custom packagePopupWidget has many deprecations, and probably at least one breaking change despite my best efforts. Deprecations scheduled for removal 0.7.0ActiveButtonWidget is unused and deprecated, marked for removal by 0.7.0TextlessActionWidget is unused and deprecated, marked for removal by 0.7.0
WidgetEntry for easy creation of Dynamic Lists wrapping a collection of widgets.SCROLLABLE for ValidatedChoiceList and ValidatedChoice which opens a scrollable and searchable widget listValidatedChoice now includes the INLINE widget type previously only available on the list versionValidatedChoiceList now has its own decorator, distinguishing it from a normal list TriState utility enum and corresponding ValidatedTriState validation for configs. Like most tri-states, has TRUE, FALSE, and DEFAULT choices, and two different widget options for selecting between them.FzzyKeybind system that builds on the ContextType system introduced in 0.6.0.ValidatedKeybind validation added for configurable keybind handling.ConfigScreen context handler that is used to handle GUI inputs.wdithFunction and heightFunction to PopupWidget, allowing for dynamic sizing based on screen and previous dimension context.keybinds.toml controls the inputs used for interacting with Config GUIs.RegistrySupplier now implements RegistryEntry directly, as well as passing its reference entry. This includes a breaking experimental change, getKey has changed to getRegistryKeyValidatedChoice and ValidatedChoiceListDynamicListWidget, deferring several allocations until neededConfigScreenManager now caches config GUI templates incrementally, instead of front-loading all screen templates at once. This has some side effects, namely that each screen now has a separate Update Manager, so restoring defaults, reverting changes, etc. is now sectioned off per-config instead of global to the namespace. The "Root" screen update manager can see any loaded children managers, so changes can be managed from the root screen into any child screens that have been loaded and modified.ValidatedAny popup saying "Revert Changes" for both the revert and restore defaults buttonValidatedCondition now properly considers its conditions when determining default and changed states. A Validated Condition that has failed conditions will always be considered "default"ConfigScreenNarrator now properly strips out formatting codes before narrating the text content (this also affects the vanilla screen narrator)ValidatedIdentifier config widgets not being properly navigable with keyboard.01.02.2025 · 41 159 downloads
ValidatedEntityAttribute is removedCustom[Widgets] are moved from the internal widget package to the custom packagePopupWidget has many deprecations, and probably at least one breaking change despite my best effortsActiveButtonWidget is unused and deprecated, marked for removal by 0.7.0TextlessActionWidget is unused and deprecated, marked for removal by 0.7.0TextureProvider interface for generic provision of textures based on active/hovered state.Single and Quad variants of TextureSet added for sets with one texture regardless of state, and sets with all four textures different, respectively.TextureSet now implements the TextureProvider interfaceCustomPressableWidget and therefore CustomButtonWidget now use TextureProvider instead of directly TextureSet in their implementations.textureSet method of SpriteDecorated is now deprecated and defaulted, with a scheduled removal of 0.7.0.SpriteDecoration and SmallSpriteDecoration constructors with TextureSet are likewise deprecated, with new overloads taking TextureProviderTextureIds are now explicitly typed as TextureProvider instead. ValidatedChoiceList now shows highlights around "unselected" options to better indicate that they are still active button elements.ValidatedChoiceList popup widgets being too narrow for the popup with very short choice titles.LayoutWidget01.02.2025 · 282 254 downloads
ValidatedEntityAttribute is removedCustom[Widgets] are moved from the internal widget package to the custom packagePopupWidget has many deprecations, and probably at least one breaking change despite my best effortsActiveButtonWidget is unused and deprecated, marked for removal by 0.7.0TextlessActionWidget is unused and deprecated, marked for removal by 0.7.0TextureProvider interface for generic provision of textures based on active/hovered state.Single and Quad variants of TextureSet added for sets with one texture regardless of state, and sets with all four textures different, respectively.TextureSet now implements the TextureProvider interfaceCustomPressableWidget and therefore CustomButtonWidget now use TextureProvider instead of directly TextureSet in their implementations.textureSet method of SpriteDecorated is now deprecated and defaulted, with a scheduled removal of 0.7.0.SpriteDecoration and SmallSpriteDecoration constructors with TextureSet are likewise deprecated, with new overloads taking TextureProviderTextureIds are now explicitly typed as TextureProvider instead. ValidatedChoiceList now shows highlights around "unselected" options to better indicate that they are still active button elements.ValidatedChoiceList popup widgets being too narrow for the popup with very short choice titles.LayoutWidget01.02.2025 · 187 906 downloads
ValidatedEntityAttribute is removedCustom[Widgets] are moved from the internal widget package to the custom packagePopupWidget has many deprecations, and probably at least one breaking change despite my best effortsActiveButtonWidget is unused and deprecated, marked for removal by 0.7.0TextlessActionWidget is unused and deprecated, marked for removal by 0.7.0TextureProvider interface for generic provision of textures based on active/hovered state.Single and Quad variants of TextureSet added for sets with one texture regardless of state, and sets with all four textures different, respectively.TextureSet now implements the TextureProvider interfaceCustomPressableWidget and therefore CustomButtonWidget now use TextureProvider instead of directly TextureSet in their implementations.textureSet method of SpriteDecorated is now deprecated and defaulted, with a scheduled removal of 0.7.0.SpriteDecoration and SmallSpriteDecoration constructors with TextureSet are likewise deprecated, with new overloads taking TextureProviderTextureIds are now explicitly typed as TextureProvider instead. ValidatedChoiceList now shows highlights around "unselected" options to better indicate that they are still active button elements.ValidatedChoiceList popup widgets being too narrow for the popup with very short choice titles.LayoutWidget01.02.2025 · 855 downloads
ValidatedEntityAttribute is removedCustom[Widgets] are moved from the internal widget package to the custom packagePopupWidget has many deprecations, and probably at least one breaking change despite my best effortsActiveButtonWidget is unused and deprecated, marked for removal by 0.7.0TextlessActionWidget is unused and deprecated, marked for removal by 0.7.0TextureProvider interface for generic provision of textures based on active/hovered state.Single and Quad variants of TextureSet added for sets with one texture regardless of state, and sets with all four textures different, respectively.TextureSet now implements the TextureProvider interfaceCustomPressableWidget and therefore CustomButtonWidget now use TextureProvider instead of directly TextureSet in their implementations.textureSet method of SpriteDecorated is now deprecated and defaulted, with a scheduled removal of 0.7.0.SpriteDecoration and SmallSpriteDecoration constructors with TextureSet are likewise deprecated, with new overloads taking TextureProviderTextureIds are now explicitly typed as TextureProvider instead. ValidatedChoiceList now shows highlights around "unselected" options to better indicate that they are still active button elements.ValidatedChoiceList popup widgets being too narrow for the popup with very short choice titles.LayoutWidget01.02.2025 · 26 261 downloads
ValidatedEntityAttribute is removedCustom[Widgets] are moved from the internal widget package to the custom packagePopupWidget has many deprecations, and probably at least one breaking change despite my best effortsActiveButtonWidget is unused and deprecated, marked for removal by 0.7.0TextlessActionWidget is unused and deprecated, marked for removal by 0.7.0TextureProvider interface for generic provision of textures based on active/hovered state.Single and Quad variants of TextureSet added for sets with one texture regardless of state, and sets with all four textures different, respectively.TextureSet now implements the TextureProvider interfaceCustomPressableWidget and therefore CustomButtonWidget now use TextureProvider instead of directly TextureSet in their implementations.textureSet method of SpriteDecorated is now deprecated and defaulted, with a scheduled removal of 0.7.0.SpriteDecoration and SmallSpriteDecoration constructors with TextureSet are likewise deprecated, with new overloads taking TextureProviderTextureIds are now explicitly typed as TextureProvider instead. ValidatedChoiceList now shows highlights around "unselected" options to better indicate that they are still active button elements.ValidatedChoiceList popup widgets being too narrow for the popup with very short choice titles.LayoutWidget01.02.2025 · 90 903 downloads
ValidatedEntityAttribute is removedCustom[Widgets] are moved from the internal widget package to the custom packagePopupWidget has many deprecations, and probably at least one breaking change despite my best effortsActiveButtonWidget is unused and deprecated, marked for removal by 0.7.0TextlessActionWidget is unused and deprecated, marked for removal by 0.7.0TextureProvider interface for generic provision of textures based on active/hovered state.Single and Quad variants of TextureSet added for sets with one texture regardless of state, and sets with all four textures different, respectively.TextureSet now implements the TextureProvider interfaceCustomPressableWidget and therefore CustomButtonWidget now use TextureProvider instead of directly TextureSet in their implementations.textureSet method of SpriteDecorated is now deprecated and defaulted, with a scheduled removal of 0.7.0.SpriteDecoration and SmallSpriteDecoration constructors with TextureSet are likewise deprecated, with new overloads taking TextureProviderTextureIds are now explicitly typed as TextureProvider instead. ValidatedChoiceList now shows highlights around "unselected" options to better indicate that they are still active button elements.ValidatedChoiceList popup widgets being too narrow for the popup with very short choice titles.LayoutWidget24.01.2025 · 32 246 downloads
ValidatedEntityAttribute is removedCustom[Widgets] are moved from the internal widget package to the custom packagePopupWidget has many deprecations, and probably at least one breaking change despite my best effortsActiveButtonWidget is unused and deprecated, marked for removal by 0.7.0TextlessActionWidget is unused and deprecated, marked for removal by 0.7.0ValidatedChoiceList. Similar to ValidatedChoice, but the list version allows for enabling/disabling of none to all of the possible options while the Choice is one and always one of the choices from the options.toChoiceSet helper method in ValidatedList, ValidatedSet, and ValidatedChoice for creation of choice lists from the backing validation.testVersion method to PlatformApi for platform-agnostic testing of MC or mod versionCustomButtonWidget now accepts an activeSupplier to dynamically update active state, and a messageSupplier to dynamically update the button label. See the builder for details.@Validated[Number].Restrict annotations now accept an optional ValidatedNumber.WidgetType with the new third param typeActiveButtonWidget as built or extended-from CustomButtonWidget, and ActiveButtonWidget is now deprecated.TextlessActionWidget as built CustomButtonWidget, and TextlessActionWidget is now deprecated.24.01.2025 · 18 196 downloads
ValidatedEntityAttribute is removedCustom[Widgets] are moved from the internal widget package to the custom packagePopupWidget has many deprecations, and probably at least one breaking change despite my best effortsActiveButtonWidget is unused and deprecated, marked for removal by 0.7.0TextlessActionWidget is unused and deprecated, marked for removal by 0.7.0ValidatedChoiceList. Similar to ValidatedChoice, but the list version allows for enabling/disabling of none to all of the possible options while the Choice is one and always one of the choices from the options.toChoiceSet helper method in ValidatedList, ValidatedSet, and ValidatedChoice for creation of choice lists from the backing validation.testVersion method to PlatformApi for platform-agnostic testing of MC or mod versionCustomButtonWidget now accepts an activeSupplier to dynamically update active state, and a messageSupplier to dynamically update the button label. See the builder for details.@Validated[Number].Restrict annotations now accept an optional ValidatedNumber.WidgetType with the new third param typeActiveButtonWidget as built or extended-from CustomButtonWidget, and ActiveButtonWidget is now deprecated.TextlessActionWidget as built CustomButtonWidget, and TextlessActionWidget is now deprecated.24.01.2025 · 17 376 downloads
ValidatedEntityAttribute is removedCustom[Widgets] are moved from the internal widget package to the custom packagePopupWidget has many deprecations, and probably at least one breaking change despite my best effortsActiveButtonWidget is unused and deprecated, marked for removal by 0.7.0TextlessActionWidget is unused and deprecated, marked for removal by 0.7.0ValidatedChoiceList. Similar to ValidatedChoice, but the list version allows for enabling/disabling of none to all of the possible options while the Choice is one and always one of the choices from the options.toChoiceSet helper method in ValidatedList, ValidatedSet, and ValidatedChoice for creation of choice lists from the backing validation.testVersion method to PlatformApi for platform-agnostic testing of MC or mod versionCustomButtonWidget now accepts an activeSupplier to dynamically update active state, and a messageSupplier to dynamically update the button label. See the builder for details.@Validated[Number].Restrict annotations now accept an optional ValidatedNumber.WidgetType with the new third param typeActiveButtonWidget as built or extended-from CustomButtonWidget, and ActiveButtonWidget is now deprecated.TextlessActionWidget as built CustomButtonWidget, and TextlessActionWidget is now deprecated.24.01.2025 · 179 downloads
ValidatedEntityAttribute is removedCustom[Widgets] are moved from the internal widget package to the custom packagePopupWidget has many deprecations, and probably at least one breaking change despite my best effortsActiveButtonWidget is unused and deprecated, marked for removal by 0.7.0TextlessActionWidget is unused and deprecated, marked for removal by 0.7.0ValidatedChoiceList. Similar to ValidatedChoice, but the list version allows for enabling/disabling of none to all of the possible options while the Choice is one and always one of the choices from the options.toChoiceSet helper method in ValidatedList, ValidatedSet, and ValidatedChoice for creation of choice lists from the backing validation.testVersion method to PlatformApi for platform-agnostic testing of MC or mod versionCustomButtonWidget now accepts an activeSupplier to dynamically update active state, and a messageSupplier to dynamically update the button label. See the builder for details.@Validated[Number].Restrict annotations now accept an optional ValidatedNumber.WidgetType with the new third param typeActiveButtonWidget as built or extended-from CustomButtonWidget, and ActiveButtonWidget is now deprecated.TextlessActionWidget as built CustomButtonWidget, and TextlessActionWidget is now deprecated.24.01.2025 · 2 582 downloads
ValidatedEntityAttribute is removedCustom[Widgets] are moved from the internal widget package to the custom packagePopupWidget has many deprecations, and probably at least one breaking change despite my best effortsActiveButtonWidget is unused and deprecated, marked for removal by 0.7.0TextlessActionWidget is unused and deprecated, marked for removal by 0.7.0ValidatedChoiceList. Similar to ValidatedChoice, but the list version allows for enabling/disabling of none to all of the possible options while the Choice is one and always one of the choices from the options.toChoiceSet helper method in ValidatedList, ValidatedSet, and ValidatedChoice for creation of choice lists from the backing validation.testVersion method to PlatformApi for platform-agnostic testing of MC or mod versionCustomButtonWidget now accepts an activeSupplier to dynamically update active state, and a messageSupplier to dynamically update the button label. See the builder for details.@Validated[Number].Restrict annotations now accept an optional ValidatedNumber.WidgetType with the new third param typeActiveButtonWidget as built or extended-from CustomButtonWidget, and ActiveButtonWidget is now deprecated.TextlessActionWidget as built CustomButtonWidget, and TextlessActionWidget is now deprecated.24.01.2025 · 6 967 downloads
ValidatedEntityAttribute is removedCustom[Widgets] are moved from the internal widget package to the custom packagePopupWidget has many deprecations, and probably at least one breaking change despite my best effortsActiveButtonWidget is unused and deprecated, marked for removal by 0.7.0TextlessActionWidget is unused and deprecated, marked for removal by 0.7.0ValidatedChoiceList. Similar to ValidatedChoice, but the list version allows for enabling/disabling of none to all of the possible options while the Choice is one and always one of the choices from the options.toChoiceSet helper method in ValidatedList, ValidatedSet, and ValidatedChoice for creation of choice lists from the backing validation.testVersion method to PlatformApi for platform-agnostic testing of MC or mod versionCustomButtonWidget now accepts an activeSupplier to dynamically update active state, and a messageSupplier to dynamically update the button label. See the builder for details.@Validated[Number].Restrict annotations now accept an optional ValidatedNumber.WidgetType with the new third param typeActiveButtonWidget as built or extended-from CustomButtonWidget, and ActiveButtonWidget is now deprecated.TextlessActionWidget as built CustomButtonWidget, and TextlessActionWidget is now deprecated.18.01.2025 · 9 678 downloads
ValidatedEntityAttribute is removedCustom[Widgets] are moved from the internal widget package to the custom packagePopupWidget has many deprecations, and probably at least one breaking change despite my best effortsRegistrar and it's implementations now expect Supplier<? extends T> instead of Supplier<T>18.01.2025 · 15 889 downloads
ValidatedEntityAttribute is removedCustom[Widgets] are moved from the internal widget package to the custom packagePopupWidget has many deprecations, and probably at least one breaking change despite my best effortsRegistrar and it's implementations now expect Supplier<? extends T> instead of Supplier<T>18.01.2025 · 20 419 downloads
ValidatedEntityAttribute is removedCustom[Widgets] are moved from the internal widget package to the custom packagePopupWidget has many deprecations, and probably at least one breaking change despite my best effortsRegistrar and it's implementations now expect Supplier<? extends T> instead of Supplier<T>18.01.2025 · 632 downloads
ValidatedEntityAttribute is removedCustom[Widgets] are moved from the internal widget package to the custom packagePopupWidget has many deprecations, and probably at least one breaking change despite my best effortsdrawNineSlice and renderBlur methods in RenderUtil for matching method signatures across versions. Part of an ongoing effort to unify the API across all versions.open ContextMenuPopup to Popups for easy third party creation of context menus.flatBuild in ContextResultBuilder that flattens the context map groups into one map.ContextResultBuilder build and other utility methods no longer accidentally internal.18.01.2025 · 1 583 downloads
ValidatedEntityAttribute is removedCustom[Widgets] are moved from the internal widget package to the custom packagePopupWidget has many deprecations, and probably at least one breaking change despite my best effortsdrawNineSlice and renderBlur methods in RenderUtil for matching method signatures across versions. Part of an ongoing effort to unify the API across all versions.open ContextMenuPopup to Popups for easy third party creation of context menus.flatBuild in ContextResultBuilder that flattens the context map groups into one map.ContextResultBuilder build and other utility methods no longer accidentally internal.18.01.2025 · 16 247 downloads
ValidatedEntityAttribute is removedCustom[Widgets] are moved from the internal widget package to the custom packagePopupWidget has many deprecations, and probably at least one breaking change despite my best effortsdrawNineSlice and renderBlur methods in RenderUtil for matching method signatures across versions. Part of an ongoing effort to unify the API across all versions.open ContextMenuPopup to Popups for easy third party creation of context menus.flatBuild in ContextResultBuilder that flattens the context map groups into one map.ContextResultBuilder build and other utility methods no longer accidentally internal.17.01.2025 · 186 downloads
ValidatedEntityAttribute is removedCustom[Widgets] are moved from the internal widget package to the custom packagePopupWidget has many deprecations, and probably at least one breaking change despite my best effortsdrawNineSlice and renderBlur methods in RenderUtil for matching method signatures across versions. Part of an ongoing effort to unify the API across all versions.open ContextMenuPopup to Popups for easy third party creation of context menus.flatBuild in ContextResultBuilder that flattens the context map groups into one map.ContextResultBuilder build and other utility methods no longer accidentally internal.17.01.2025 · 455 downloads
ValidatedEntityAttribute is removedCustom[Widgets] are moved from the internal widget package to the custom packagePopupWidget has many deprecations, and probably at least one breaking change despite my best effortsdrawNineSlice and renderBlur methods in RenderUtil for matching method signatures across versions. Part of an ongoing effort to unify the API across all versions.open ContextMenuPopup to Popups for easy third party creation of context menus.flatBuild in ContextResultBuilder that flattens the context map groups into one map.ContextResultBuilder build and other utility methods no longer accidentally internal.17.01.2025 · 707 downloads
ValidatedEntityAttribute is removedCustom[Widgets] are moved from the internal widget package to the custom packagePopupWidget has many deprecations, and probably at least one breaking change despite my best effortsdrawNineSlice and renderBlur methods in RenderUtil for matching method signatures across versions. Part of an ongoing effort to unify the API across all versions.open ContextMenuPopup to Popups for easy third party creation of context menus.flatBuild in ContextResultBuilder that flattens the context map groups into one map.ContextResultBuilder build and other utility methods no longer accidentally internal.17.01.2025 · 49 downloads
ValidatedEntityAttribute is removedCustom[Widgets] are moved from the internal widget package to the custom packagePopupWidget has many deprecations, and probably at least one breaking change despite my best effortsdrawNineSlice and renderBlur methods in RenderUtil for matching method signatures across versions. Part of an ongoing effort to unify the API across all versions.open ContextMenuPopup to Popups for easy third party creation of context menus.flatBuild in ContextResultBuilder that flattens the context map groups into one map.ContextResultBuilder build and other utility methods no longer accidentally internal.17.01.2025 · 121 downloads
ValidatedEntityAttribute is removedCustom[Widgets] are moved from the internal widget package to the custom packagePopupWidget has many deprecations, and probably at least one breaking change despite my best effortsdrawNineSlice and renderBlur methods in RenderUtil for matching method signatures across versions. Part of an ongoing effort to unify the API across all versions.open ContextMenuPopup to Popups for easy third party creation of context menus.flatBuild in ContextResultBuilder that flattens the context map groups into one map.ContextResultBuilder build and other utility methods no longer accidentally internal.17.01.2025 · 6 370 downloads
ValidatedEntityAttribute is removedCustom[Widgets] are moved from the internal widget package to the custom packagePopupWidget has many deprecations, and probably at least one breaking change despite my best effortsdrawNineSlice and renderBlur methods in RenderUtil for matching method signatures across versions. Part of an ongoing effort to unify the API across all versions.open ContextMenuPopup to Popups for easy third party creation of context menus.flatBuild in ContextResultBuilder that flattens the context map groups into one map.ContextResultBuilder build and other utility methods no longer accidentally internal.07.01.2025 · 4 724 downloads
ValidatedEntityAttribute is removedCustom[Widgets] are moved from the internal widget package to the custom packagePopupWidget has many deprecations, and probably at least one breaking change despite my best effortsCustomListWidget and the built-in implementation DynamicListWidget. 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.Searcher system for building simple search implementations from a collection of elements.ValidatedPair and corresponding method ValidatedPair.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.TEXTBOX_WITH_BUTTONS. The standard entrybox also has a small up and down button with this layout.Translatable now includes a prefix 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 additionTranslatable, be sure to override hasPrefix, prefix, and prefixKey as needed.ContextAction system that allows for powerful handling of context actions and key presses.ValidatedField now has several helper methods for easily creating custom entries without needing to fully re-implement the base design.LayoutWidget added, a generalization and improvement of the system in PopupWidget. This widget can be used to create automatically laid out collections of widgets using a DOM-like layout model.Pos system now implements SupplierDecoration system, now Decorated, a simple Drawable-like interface that allows passing of different types of icons to various FC systems, dynamically rendered, animated, etc.TextureSet system for defining textures to use in various hovered and focused statesequals not mapping properly between de/serializations, which improperly caused resets of data.07.01.2025 · 34 420 downloads
ValidatedEntityAttribute is removedCustom[Widgets] are moved from the internal widget package to the custom packagePopupWidget has many deprecations, and probably at least one breaking change despite my best effortsCustomListWidget and the built-in implementation DynamicListWidget. 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.Searcher system for building simple search implementations from a collection of elements.ValidatedPair and corresponding method ValidatedPair.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.TEXTBOX_WITH_BUTTONS. The standard entrybox also has a small up and down button with this layout.Translatable now includes a prefix 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 additionTranslatable, be sure to override hasPrefix, prefix, and prefixKey as needed.ContextAction system that allows for powerful handling of context actions and key presses.ValidatedField now has several helper methods for easily creating custom entries without needing to fully re-implement the base design.LayoutWidget added, a generalization and improvement of the system in PopupWidget. This widget can be used to create automatically laid out collections of widgets using a DOM-like layout model.Pos system now implements SupplierDecoration system, now Decorated, a simple Drawable-like interface that allows passing of different types of icons to various FC systems, dynamically rendered, animated, etc.TextureSet system for defining textures to use in various hovered and focused statesequals not mapping properly between de/serializations, which improperly caused resets of data.07.01.2025 · 65 167 downloads
ValidatedEntityAttribute is removedCustom[Widgets] are moved from the internal widget package to the custom packagePopupWidget has many deprecations, and probably at least one breaking change despite my best effortsCustomListWidget and the built-in implementation DynamicListWidget. 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.Searcher system for building simple search implementations from a collection of elements.ValidatedPair and corresponding method ValidatedPair.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.TEXTBOX_WITH_BUTTONS. The standard entrybox also has a small up and down button with this layout.Translatable now includes a prefix 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 additionTranslatable, be sure to override hasPrefix, prefix, and prefixKey as needed.ContextAction system that allows for powerful handling of context actions and key presses.ValidatedField now has several helper methods for easily creating custom entries without needing to fully re-implement the base design.LayoutWidget added, a generalization and improvement of the system in PopupWidget. This widget can be used to create automatically laid out collections of widgets using a DOM-like layout model.Pos system now implements SupplierDecoration system, now Decorated, a simple Drawable-like interface that allows passing of different types of icons to various FC systems, dynamically rendered, animated, etc.TextureSet system for defining textures to use in various hovered and focused statesequals not mapping properly between de/serializations, which improperly caused resets of data.07.01.2025 · 330 downloads
ValidatedEntityAttribute is removedCustom[Widgets] are moved from the internal widget package to the custom packagePopupWidget has many deprecations, and probably at least one breaking change despite my best effortsCustomListWidget and the built-in implementation DynamicListWidget. 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.Searcher system for building simple search implementations from a collection of elements.ValidatedPair and corresponding method ValidatedPair.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.TEXTBOX_WITH_BUTTONS. The standard entrybox also has a small up and down button with this layout.Translatable now includes a prefix 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 additionTranslatable, be sure to override hasPrefix, prefix, and prefixKey as needed.ContextAction system that allows for powerful handling of context actions and key presses.ValidatedField now has several helper methods for easily creating custom entries without needing to fully re-implement the base design.LayoutWidget added, a generalization and improvement of the system in PopupWidget. This widget can be used to create automatically laid out collections of widgets using a DOM-like layout model.Pos system now implements SupplierDecoration system, now Decorated, a simple Drawable-like interface that allows passing of different types of icons to various FC systems, dynamically rendered, animated, etc.TextureSet system for defining textures to use in various hovered and focused statesequals not mapping properly between de/serializations, which improperly caused resets of data.07.01.2025 · 3 280 downloads
ValidatedEntityAttribute is removedCustom[Widgets] are moved from the internal widget package to the custom packagePopupWidget has many deprecations, and probably at least one breaking change despite my best effortsCustomListWidget and the built-in implementation DynamicListWidget. 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.Searcher system for building simple search implementations from a collection of elements.ValidatedPair and corresponding method ValidatedPair.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.TEXTBOX_WITH_BUTTONS. The standard entrybox also has a small up and down button with this layout.Translatable now includes a prefix 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 additionTranslatable, be sure to override hasPrefix, prefix, and prefixKey as needed.ContextAction system that allows for powerful handling of context actions and key presses.ValidatedField now has several helper methods for easily creating custom entries without needing to fully re-implement the base design.LayoutWidget added, a generalization and improvement of the system in PopupWidget. This widget can be used to create automatically laid out collections of widgets using a DOM-like layout model.Pos system now implements SupplierDecoration system, now Decorated, a simple Drawable-like interface that allows passing of different types of icons to various FC systems, dynamically rendered, animated, etc.TextureSet system for defining textures to use in various hovered and focused statesequals not mapping properly between de/serializations, which improperly caused resets of data.07.01.2025 · 9 476 downloads
ValidatedEntityAttribute is removedCustom[Widgets] are moved from the internal widget package to the custom packagePopupWidget has many deprecations, and probably at least one breaking change despite my best effortsCustomListWidget and the built-in implementation DynamicListWidget. 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.Searcher system for building simple search implementations from a collection of elements.ValidatedPair and corresponding method ValidatedPair.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.TEXTBOX_WITH_BUTTONS. The standard entrybox also has a small up and down button with this layout.Translatable now includes a prefix 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 additionTranslatable, be sure to override hasPrefix, prefix, and prefixKey as needed.ContextAction system that allows for powerful handling of context actions and key presses.ValidatedField now has several helper methods for easily creating custom entries without needing to fully re-implement the base design.LayoutWidget added, a generalization and improvement of the system in PopupWidget. This widget can be used to create automatically laid out collections of widgets using a DOM-like layout model.Pos system now implements SupplierDecoration system, now Decorated, a simple Drawable-like interface that allows passing of different types of icons to various FC systems, dynamically rendered, animated, etc.TextureSet system for defining textures to use in various hovered and focused statesequals not mapping properly between de/serializations, which improperly caused resets of data.07.12.2024 · 14 657 downloads
ValidatedEntityAttribute. Reimplement usages of this class as needed.isDev method in PlatformApi for checking if the instance is running in a development environment.Registrar system for platform-agnostic registration of objects. This API is experimental, with scheduled stability by 0.6.0.RegistrySupplier instances, much like the (Neo)Forge deferred registry system.onRegisteredClient and onRegisteredServer to the EventApi for listening to config registrations and only acting after the config has been successfully registered.ValidatedField.validateAndSet, validateAndSetFlagged that accepts EntryFlag.Flag (and inspects the field own flags) and changes set behavior based on flags present.EntryFlag.Flag.QUIET: flagged field won't call listeners on changeEntryFlag.Flag.STRONG: field validateAndSet/validateAndSetFlagged will use strong validation. Weak validation is standard.EntryFlag.Flag.UPDATE: field will update its current sync state when the value is set.ValidationResult.report that takes a string consumer directly for immediate reporting of issues.Codecs helper class in PortingUtils for handling version-agnostic Packet Codecs. Thanks Mojang.ConfigApi.isConfigLoaded(scope) has been deprecated in favor of ConfigApi.isConfigLoaded(scope, type). This new overload can check for client configs; the now-deprecated method only checked synced ones.ValidatedEntityAttribute for removal in 0.6.0. It is completely unused as far as I can tell with a github-wide search, and quite an unstable concept in general. If needed, a similar validation can be built for your own usage.ValidatedEntityAttribute.Builder and EntityAttributeInstanceHolder07.12.2024 · 50 688 downloads
ValidatedEntityAttribute. Reimplement usages of this class as needed.isDev method in PlatformApi for checking if the instance is running in a development environment.Registrar system for platform-agnostic registration of objects. This API is experimental, with scheduled stability by 0.6.0.RegistrySupplier instances, much like the (Neo)Forge deferred registry system.onRegisteredClient and onRegisteredServer to the EventApi for listening to config registrations and only acting after the config has been successfully registered.ValidatedField.validateAndSet, validateAndSetFlagged that accepts EntryFlag.Flag (and inspects the field own flags) and changes set behavior based on flags present.EntryFlag.Flag.QUIET: flagged field won't call listeners on changeEntryFlag.Flag.STRONG: field validateAndSet/validateAndSetFlagged will use strong validation. Weak validation is standard.EntryFlag.Flag.UPDATE: field will update its current sync state when the value is set.ValidationResult.report that takes a string consumer directly for immediate reporting of issues.Codecs helper class in PortingUtils for handling version-agnostic Packet Codecs. Thanks Mojang.ConfigApi.isConfigLoaded(scope) has been deprecated in favor of ConfigApi.isConfigLoaded(scope, type). This new overload can check for client configs; the now-deprecated method only checked synced ones.ValidatedEntityAttribute for removal in 0.6.0. It is completely unused as far as I can tell with a github-wide search, and quite an unstable concept in general. If needed, a similar validation can be built for your own usage.ValidatedEntityAttribute.Builder and EntityAttributeInstanceHolder07.12.2024 · 42 785 downloads
ValidatedEntityAttribute. Reimplement usages of this class as needed.isDev method in PlatformApi for checking if the instance is running in a development environment.Registrar system for platform-agnostic registration of objects. This API is experimental, with scheduled stability by 0.6.0.RegistrySupplier instances, much like the (Neo)Forge deferred registry system.onRegisteredClient and onRegisteredServer to the EventApi for listening to config registrations and only acting after the config has been successfully registered.ValidatedField.validateAndSet, validateAndSetFlagged that accepts EntryFlag.Flag (and inspects the field own flags) and changes set behavior based on flags present.EntryFlag.Flag.QUIET: flagged field won't call listeners on changeEntryFlag.Flag.STRONG: field validateAndSet/validateAndSetFlagged will use strong validation. Weak validation is standard.EntryFlag.Flag.UPDATE: field will update its current sync state when the value is set.ValidationResult.report that takes a string consumer directly for immediate reporting of issues.Codecs helper class in PortingUtils for handling version-agnostic Packet Codecs. Thanks Mojang.ConfigApi.isConfigLoaded(scope) has been deprecated in favor of ConfigApi.isConfigLoaded(scope, type). This new overload can check for client configs; the now-deprecated method only checked synced ones.ValidatedEntityAttribute for removal in 0.6.0. It is completely unused as far as I can tell with a github-wide search, and quite an unstable concept in general. If needed, a similar validation can be built for your own usage.ValidatedEntityAttribute.Builder and EntityAttributeInstanceHolder07.12.2024 · 25 366 downloads
ValidatedEntityAttribute. Reimplement usages of this class as needed.isDev method in PlatformApi for checking if the instance is running in a development environment.Registrar system for platform-agnostic registration of objects. This API is experimental, with scheduled stability by 0.6.0.RegistrySupplier instances, much like the (Neo)Forge deferred registry system.onRegisteredClient and onRegisteredServer to the EventApi for listening to config registrations and only acting after the config has been successfully registered.ValidatedField.validateAndSet, validateAndSetFlagged that accepts EntryFlag.Flag (and inspects the field own flags) and changes set behavior based on flags present.EntryFlag.Flag.QUIET: flagged field won't call listeners on changeEntryFlag.Flag.STRONG: field validateAndSet/validateAndSetFlagged will use strong validation. Weak validation is standard.EntryFlag.Flag.UPDATE: field will update its current sync state when the value is set.ValidationResult.report that takes a string consumer directly for immediate reporting of issues.Codecs helper class in PortingUtils for handling version-agnostic Packet Codecs. Thanks Mojang.ConfigApi.isConfigLoaded(scope) has been deprecated in favor of ConfigApi.isConfigLoaded(scope, type). This new overload can check for client configs; the now-deprecated method only checked synced ones.ValidatedEntityAttribute for removal in 0.6.0. It is completely unused as far as I can tell with a github-wide search, and quite an unstable concept in general. If needed, a similar validation can be built for your own usage.ValidatedEntityAttribute.Builder and EntityAttributeInstanceHolder07.12.2024 · 248 887 downloads
ValidatedEntityAttribute. Reimplement usages of this class as needed.isDev method in PlatformApi for checking if the instance is running in a development environment.Registrar system for platform-agnostic registration of objects. This API is experimental, with scheduled stability by 0.6.0.RegistrySupplier instances, much like the (Neo)Forge deferred registry system.onRegisteredClient and onRegisteredServer to the EventApi for listening to config registrations and only acting after the config has been successfully registered.ValidatedField.validateAndSet, validateAndSetFlagged that accepts EntryFlag.Flag (and inspects the field own flags) and changes set behavior based on flags present.EntryFlag.Flag.QUIET: flagged field won't call listeners on changeEntryFlag.Flag.STRONG: field validateAndSet/validateAndSetFlagged will use strong validation. Weak validation is standard.EntryFlag.Flag.UPDATE: field will update its current sync state when the value is set.ValidationResult.report that takes a string consumer directly for immediate reporting of issues.Codecs helper class in PortingUtils for handling version-agnostic Packet Codecs. Thanks Mojang.ConfigApi.isConfigLoaded(scope) has been deprecated in favor of ConfigApi.isConfigLoaded(scope, type). This new overload can check for client configs; the now-deprecated method only checked synced ones.ValidatedEntityAttribute for removal in 0.6.0. It is completely unused as far as I can tell with a github-wide search, and quite an unstable concept in general. If needed, a similar validation can be built for your own usage.ValidatedEntityAttribute.Builder and EntityAttributeInstanceHolder07.12.2024 · 111 downloads
ValidatedEntityAttribute. Reimplement usages of this class as needed.isDev method in PlatformApi for checking if the instance is running in a development environment.Registrar system for platform-agnostic registration of objects. This API is experimental, with scheduled stability by 0.6.0.RegistrySupplier instances, much like the (Neo)Forge deferred registry system.onRegisteredClient and onRegisteredServer to the EventApi for listening to config registrations and only acting after the config has been successfully registered.ValidatedField.validateAndSet, validateAndSetFlagged that accepts EntryFlag.Flag (and inspects the field own flags) and changes set behavior based on flags present.EntryFlag.Flag.QUIET: flagged field won't call listeners on changeEntryFlag.Flag.STRONG: field validateAndSet/validateAndSetFlagged will use strong validation. Weak validation is standard.EntryFlag.Flag.UPDATE: field will update its current sync state when the value is set.ValidationResult.report that takes a string consumer directly for immediate reporting of issues.Codecs helper class in PortingUtils for handling version-agnostic Packet Codecs. Thanks Mojang.ConfigApi.isConfigLoaded(scope) has been deprecated in favor of ConfigApi.isConfigLoaded(scope, type). This new overload can check for client configs; the now-deprecated method only checked synced ones.ValidatedEntityAttribute for removal in 0.6.0. It is completely unused as far as I can tell with a github-wide search, and quite an unstable concept in general. If needed, a similar validation can be built for your own usage.ValidatedEntityAttribute.Builder and EntityAttributeInstanceHolder07.12.2024 · 4 396 downloads
ValidatedEntityAttribute. Reimplement usages of this class as needed.isDev method in PlatformApi for checking if the instance is running in a development environment.Registrar system for platform-agnostic registration of objects. This API is experimental, with scheduled stability by 0.6.0.RegistrySupplier instances, much like the (Neo)Forge deferred registry system.onRegisteredClient and onRegisteredServer to the EventApi for listening to config registrations and only acting after the config has been successfully registered.ValidatedField.validateAndSet, validateAndSetFlagged that accepts EntryFlag.Flag (and inspects the field own flags) and changes set behavior based on flags present.EntryFlag.Flag.QUIET: flagged field won't call listeners on changeEntryFlag.Flag.STRONG: field validateAndSet/validateAndSetFlagged will use strong validation. Weak validation is standard.EntryFlag.Flag.UPDATE: field will update its current sync state when the value is set.ValidationResult.report that takes a string consumer directly for immediate reporting of issues.Codecs helper class in PortingUtils for handling version-agnostic Packet Codecs. Thanks Mojang.ConfigApi.isConfigLoaded(scope) has been deprecated in favor of ConfigApi.isConfigLoaded(scope, type). This new overload can check for client configs; the now-deprecated method only checked synced ones.ValidatedEntityAttribute for removal in 0.6.0. It is completely unused as far as I can tell with a github-wide search, and quite an unstable concept in general. If needed, a similar validation can be built for your own usage.ValidatedEntityAttribute.Builder and EntityAttributeInstanceHolder06.12.2024 · 464 downloads
ValidatedEntityAttribute. Reimplement usages of this class as needed.isDev method in PlatformApi for checking if the instance is running in a development environment.Registrar system for platform-agnostic registration of objects. This API is experimental, with scheduled stability by 0.6.0.RegistrySupplier instances, much like the (Neo)Forge deferred registry system.onRegisteredClient and onRegisteredServer to the EventApi for listening to config registrations and only acting after the config has been successfully registered.ValidatedField.validateAndSet, validateAndSetFlagged that accepts EntryFlag.Flag (and inspects the field own flags) and changes set behavior based on flags present.EntryFlag.Flag.QUIET: flagged field won't call listeners on changeEntryFlag.Flag.STRONG: field validateAndSet/validateAndSetFlagged will use strong validation. Weak validation is standard.EntryFlag.Flag.UPDATE: field will update its current sync state when the value is set.ValidationResult.report that takes a string consumer directly for immediate reporting of issues.Codecs helper class in PortingUtils for handling version-agnostic Packet Codecs. Thanks Mojang.ConfigApi.isConfigLoaded(scope) has been deprecated in favor of ConfigApi.isConfigLoaded(scope, type). This new overload can check for client configs; the now-deprecated method only checked synced ones.ValidatedEntityAttribute for removal in 0.6.0. It is completely unused as far as I can tell with a github-wide search, and quite an unstable concept in general. If needed, a similar validation can be built for your own usage.ValidatedEntityAttribute.Builder and EntityAttributeInstanceHolder06.12.2024 · 737 downloads
ValidatedEntityAttribute. Reimplement usages of this class as needed.isDev method in PlatformApi for checking if the instance is running in a development environment.Registrar system for platform-agnostic registration of objects. This API is experimental, with scheduled stability by 0.6.0.RegistrySupplier instances, much like the (Neo)Forge deferred registry system.onRegisteredClient and onRegisteredServer to the EventApi for listening to config registrations and only acting after the config has been successfully registered.ValidatedField.validateAndSet, validateAndSetFlagged that accepts EntryFlag.Flag (and inspects the field own flags) and changes set behavior based on flags present.EntryFlag.Flag.QUIET: flagged field won't call listeners on changeEntryFlag.Flag.STRONG: field validateAndSet/validateAndSetFlagged will use strong validation. Weak validation is standard.EntryFlag.Flag.UPDATE: field will update its current sync state when the value is set.ValidationResult.report that takes a string consumer directly for immediate reporting of issues.Codecs helper class in PortingUtils for handling version-agnostic Packet Codecs. Thanks Mojang.ConfigApi.isConfigLoaded(scope) has been deprecated in favor of ConfigApi.isConfigLoaded(scope, type). This new overload can check for client configs; the now-deprecated method only checked synced ones.ValidatedEntityAttribute for removal in 0.6.0. It is completely unused as far as I can tell with a github-wide search, and quite an unstable concept in general. If needed, a similar validation can be built for your own usage.ValidatedEntityAttribute.Builder and EntityAttributeInstanceHolder06.12.2024 · 250 329 downloads
ValidatedEntityAttribute. Reimplement usages of this class as needed.isDev method in PlatformApi for checking if the instance is running in a development environment.Registrar system for platform-agnostic registration of objects. This API is experimental, with scheduled stability by 0.6.0.RegistrySupplier instances, much like the (Neo)Forge deferred registry system.onRegisteredClient and onRegisteredServer to the EventApi for listening to config registrations and only acting after the config has been successfully registered.ValidatedField.validateAndSet, validateAndSetFlagged that accepts EntryFlag.Flag (and inspects the field own flags) and changes set behavior based on flags present.EntryFlag.Flag.QUIET: flagged field won't call listeners on changeEntryFlag.Flag.STRONG: field validateAndSet/validateAndSetFlagged will use strong validation. Weak validation is standard.EntryFlag.Flag.UPDATE: field will update its current sync state when the value is set.ValidationResult.report that takes a string consumer directly for immediate reporting of issues.Codecs helper class in PortingUtils for handling version-agnostic Packet Codecs. Thanks Mojang.ConfigApi.isConfigLoaded(scope) has been deprecated in favor of ConfigApi.isConfigLoaded(scope, type). This new overload can check for client configs; the now-deprecated method only checked synced ones.ValidatedEntityAttribute for removal in 0.6.0. It is completely unused as far as I can tell with a github-wide search, and quite an unstable concept in general. If needed, a similar validation can be built for your own usage.ValidatedEntityAttribute.Builder and EntityAttributeInstanceHolder24.11.2024 · 3 433 downloads
@IgnoreVisibility not handling private classes with non-private memberstransient not working properly for de/serializationConfigSection now properly marks it's internal key as transient.24.11.2024 · 17 446 downloads
@IgnoreVisibility not handling private classes with non-private memberstransient not working properly for de/serializationConfigSection now properly marks it's internal key as transient.24.11.2024 · 309 downloads
@IgnoreVisibility not handling private classes with non-private memberstransient not working properly for de/serializationConfigSection now properly marks it's internal key as transient.24.11.2024 · 13 354 downloads
@IgnoreVisibility not handling private classes with non-private memberstransient not working properly for de/serializationConfigSection now properly marks it's internal key as transient.24.11.2024 · 2 241 753 downloads
@IgnoreVisibility not handling private classes with non-private memberstransient not working properly for de/serializationConfigSection now properly marks it's internal key as transient.24.11.2024 · 110 downloads
@IgnoreVisibility not handling private classes with non-private memberstransient not working properly for de/serializationConfigSection now properly marks it's internal key as transient.24.11.2024 · 2 274 downloads
@IgnoreVisibility not handling private classes with non-private memberstransient not working properly for de/serializationConfigSection now properly marks it's internal key as transient.24.11.2024 · 58 downloads
@IgnoreVisibility not handling private classes with non-private memberstransient not working properly for de/serializationConfigSection now properly marks it's internal key as transient.24.11.2024 · 73 downloads
@IgnoreVisibility not handling private classes with non-private memberstransient not working properly for de/serializationConfigSection now properly marks it's internal key as transient.24.11.2024 · 18 372 downloads
@IgnoreVisibility not handling private classes with non-private memberstransient not working properly for de/serializationConfigSection now properly marks it's internal key as transient.16.11.2024 · 538 downloads
ConfigScreenWidget for easily creating a textless 20x20 widget to open your config from another screen.TextlessButtonWidget is no longer final; make a custom implementation if you want!ValidatedField.toSet(collection) returning a list, not a set.toSet and accepted that it returns a ValidatedList instead, rather than raising an issue with me. Their field will now not match the type returned.16.11.2024 · 8 986 downloads
ConfigScreenWidget for easily creating a textless 20x20 widget to open your config from another screen.TextlessButtonWidget is no longer final; make a custom implementation if you want!ValidatedField.toSet(collection) returning a list, not a set.toSet and accepted that it returns a ValidatedList instead, rather than raising an issue with me. Their field will now not match the type returned.16.11.2024 · 283 downloads
ConfigScreenWidget for easily creating a textless 20x20 widget to open your config from another screen.TextlessButtonWidget is no longer final; make a custom implementation if you want!ValidatedField.toSet(collection) returning a list, not a set.toSet and accepted that it returns a ValidatedList instead, rather than raising an issue with me. Their field will now not match the type returned.16.11.2024 · 754 downloads
ConfigScreenWidget for easily creating a textless 20x20 widget to open your config from another screen.TextlessButtonWidget is no longer final; make a custom implementation if you want!ValidatedField.toSet(collection) returning a list, not a set.toSet and accepted that it returns a ValidatedList instead, rather than raising an issue with me. Their field will now not match the type returned.16.11.2024 · 11 077 downloads
ConfigScreenWidget for easily creating a textless 20x20 widget to open your config from another screen.TextlessButtonWidget is no longer final; make a custom implementation if you want!ValidatedField.toSet(collection) returning a list, not a set.toSet and accepted that it returns a ValidatedList instead, rather than raising an issue with me. Their field will now not match the type returned.16.11.2024 · 75 downloads
ConfigScreenWidget for easily creating a textless 20x20 widget to open your config from another screen.TextlessButtonWidget is no longer final; make a custom implementation if you want!ValidatedField.toSet(collection) returning a list, not a set.toSet and accepted that it returns a ValidatedList instead, rather than raising an issue with me. Their field will now not match the type returned.16.11.2024 · 2 012 downloads
ConfigScreenWidget for easily creating a textless 20x20 widget to open your config from another screen.TextlessButtonWidget is no longer final; make a custom implementation if you want!ValidatedField.toSet(collection) returning a list, not a set.toSet and accepted that it returns a ValidatedList instead, rather than raising an issue with me. Their field will now not match the type returned.16.11.2024 · 68 downloads
ConfigScreenWidget for easily creating a textless 20x20 widget to open your config from another screen.TextlessButtonWidget is no longer final; make a custom implementation if you want!ValidatedField.toSet(collection) returning a list, not a set.toSet and accepted that it returns a ValidatedList instead, rather than raising an issue with me. Their field will now not match the type returned.16.11.2024 · 78 downloads
ConfigScreenWidget for easily creating a textless 20x20 widget to open your config from another screen.TextlessButtonWidget is no longer final; make a custom implementation if you want!ValidatedField.toSet(collection) returning a list, not a set.toSet and accepted that it returns a ValidatedList instead, rather than raising an issue with me. Their field will now not match the type returned.16.11.2024 · 17 396 downloads
ConfigScreenWidget for easily creating a textless 20x20 widget to open your config from another screen.TextlessButtonWidget is no longer final; make a custom implementation if you want!ValidatedField.toSet(collection) returning a list, not a set.toSet and accepted that it returns a ValidatedList instead, rather than raising an issue with me. Their field will now not match the type returned.26.10.2024 · 10 141 downloads
EntryFlag to ValidatedField and ConfigAction. Currently only has one flag REQUIRES_WORLD. A field marked with REQUIRES_WORLD marks that the player needs to be in-game for the setting to work properly. The config screen will show Not in Game instead of the setting, when not in game.ofDynamicKey builder methods to ValidatedIdentifier. Use of ofRegistryKey for non-synced dynamic registries (Loot registries, or modded dynamic registries that don't sync, primarily) is now deprecated and will log a warning. ofDynamicKey handles synchronization of predicated registry lists more robustly.ValidatedIdentifier now automatically applies REQUIRES_WORLD to validation for dynamic registries, which require the world to be loaded. They will now not be available out of game.ClickAction.RUN_COMMAND or ClickAction.SUGGEST_COMMAND now automatically apply REQUIRES_WORLDValidatedIdentifier without validation no longer tries to "force" you to use the minecraft namespace in the text box26.10.2024 · 42 364 downloads
EntryFlag to ValidatedField and ConfigAction. Currently only has one flag REQUIRES_WORLD. A field marked with REQUIRES_WORLD marks that the player needs to be in-game for the setting to work properly. The config screen will show Not in Game instead of the setting, when not in game.ofDynamicKey builder methods to ValidatedIdentifier. Use of ofRegistryKey for non-synced dynamic registries (Loot registries, or modded dynamic registries that don't sync, primarily) is now deprecated and will log a warning. ofDynamicKey handles synchronization of predicated registry lists more robustly.ValidatedIdentifier now automatically applies REQUIRES_WORLD to validation for dynamic registries, which require the world to be loaded. They will now not be available out of game.ClickAction.RUN_COMMAND or ClickAction.SUGGEST_COMMAND now automatically apply REQUIRES_WORLDValidatedIdentifier without validation no longer tries to "force" you to use the minecraft namespace in the text box26.10.2024 · 711 downloads
EntryFlag to ValidatedField and ConfigAction. Currently only has one flag REQUIRES_WORLD. A field marked with REQUIRES_WORLD marks that the player needs to be in-game for the setting to work properly. The config screen will show Not in Game instead of the setting, when not in game.ofDynamicKey builder methods to ValidatedIdentifier. Use of ofRegistryKey for non-synced dynamic registries (Loot registries, or modded dynamic registries that don't sync, primarily) is now deprecated and will log a warning. ofDynamicKey handles synchronization of predicated registry lists more robustly.ValidatedIdentifier now automatically applies REQUIRES_WORLD to validation for dynamic registries, which require the world to be loaded. They will now not be available out of game.ClickAction.RUN_COMMAND or ClickAction.SUGGEST_COMMAND now automatically apply REQUIRES_WORLDValidatedIdentifier without validation no longer tries to "force" you to use the minecraft namespace in the text box26.10.2024 · 2 947 downloads
EntryFlag to ValidatedField and ConfigAction. Currently only has one flag REQUIRES_WORLD. A field marked with REQUIRES_WORLD marks that the player needs to be in-game for the setting to work properly. The config screen will show Not in Game instead of the setting, when not in game.ofDynamicKey builder methods to ValidatedIdentifier. Use of ofRegistryKey for non-synced dynamic registries (Loot registries, or modded dynamic registries that don't sync, primarily) is now deprecated and will log a warning. ofDynamicKey handles synchronization of predicated registry lists more robustly.ValidatedIdentifier now automatically applies REQUIRES_WORLD to validation for dynamic registries, which require the world to be loaded. They will now not be available out of game.ClickAction.RUN_COMMAND or ClickAction.SUGGEST_COMMAND now automatically apply REQUIRES_WORLDValidatedIdentifier without validation no longer tries to "force" you to use the minecraft namespace in the text box26.10.2024 · 147 163 downloads
EntryFlag to ValidatedField and ConfigAction. Currently only has one flag REQUIRES_WORLD. A field marked with REQUIRES_WORLD marks that the player needs to be in-game for the setting to work properly. The config screen will show Not in Game instead of the setting, when not in game.ofDynamicKey builder methods to ValidatedIdentifier. Use of ofRegistryKey for non-synced dynamic registries (Loot registries, or modded dynamic registries that don't sync, primarily) is now deprecated and will log a warning. ofDynamicKey handles synchronization of predicated registry lists more robustly.ValidatedIdentifier now automatically applies REQUIRES_WORLD to validation for dynamic registries, which require the world to be loaded. They will now not be available out of game.ClickAction.RUN_COMMAND or ClickAction.SUGGEST_COMMAND now automatically apply REQUIRES_WORLDValidatedIdentifier without validation no longer tries to "force" you to use the minecraft namespace in the text box26.10.2024 · 73 downloads
EntryFlag to ValidatedField and ConfigAction. Currently only has one flag REQUIRES_WORLD. A field marked with REQUIRES_WORLD marks that the player needs to be in-game for the setting to work properly. The config screen will show Not in Game instead of the setting, when not in game.ofDynamicKey builder methods to ValidatedIdentifier. Use of ofRegistryKey for non-synced dynamic registries (Loot registries, or modded dynamic registries that don't sync, primarily) is now deprecated and will log a warning. ofDynamicKey handles synchronization of predicated registry lists more robustly.ValidatedIdentifier now automatically applies REQUIRES_WORLD to validation for dynamic registries, which require the world to be loaded. They will now not be available out of game.ClickAction.RUN_COMMAND or ClickAction.SUGGEST_COMMAND now automatically apply REQUIRES_WORLDValidatedIdentifier without validation no longer tries to "force" you to use the minecraft namespace in the text box26.10.2024 · 2 936 downloads
EntryFlag to ValidatedField and ConfigAction. Currently only has one flag REQUIRES_WORLD. A field marked with REQUIRES_WORLD marks that the player needs to be in-game for the setting to work properly. The config screen will show Not in Game instead of the setting, when not in game.ofDynamicKey builder methods to ValidatedIdentifier. Use of ofRegistryKey for non-synced dynamic registries (Loot registries, or modded dynamic registries that don't sync, primarily) is now deprecated and will log a warning. ofDynamicKey handles synchronization of predicated registry lists more robustly.ValidatedIdentifier now automatically applies REQUIRES_WORLD to validation for dynamic registries, which require the world to be loaded. They will now not be available out of game.ClickAction.RUN_COMMAND or ClickAction.SUGGEST_COMMAND now automatically apply REQUIRES_WORLDValidatedIdentifier without validation no longer tries to "force" you to use the minecraft namespace in the text box26.10.2024 · 66 downloads
EntryFlag to ValidatedField and ConfigAction. Currently only has one flag REQUIRES_WORLD. A field marked with REQUIRES_WORLD marks that the player needs to be in-game for the setting to work properly. The config screen will show Not in Game instead of the setting, when not in game.ofDynamicKey builder methods to ValidatedIdentifier. Use of ofRegistryKey for non-synced dynamic registries (Loot registries, or modded dynamic registries that don't sync, primarily) is now deprecated and will log a warning. ofDynamicKey handles synchronization of predicated registry lists more robustly.ValidatedIdentifier now automatically applies REQUIRES_WORLD to validation for dynamic registries, which require the world to be loaded. They will now not be available out of game.ClickAction.RUN_COMMAND or ClickAction.SUGGEST_COMMAND now automatically apply REQUIRES_WORLDValidatedIdentifier without validation no longer tries to "force" you to use the minecraft namespace in the text box26.10.2024 · 91 downloads
EntryFlag to ValidatedField and ConfigAction. Currently only has one flag REQUIRES_WORLD. A field marked with REQUIRES_WORLD marks that the player needs to be in-game for the setting to work properly. The config screen will show Not in Game instead of the setting, when not in game.ofDynamicKey builder methods to ValidatedIdentifier. Use of ofRegistryKey for non-synced dynamic registries (Loot registries, or modded dynamic registries that don't sync, primarily) is now deprecated and will log a warning. ofDynamicKey handles synchronization of predicated registry lists more robustly.ValidatedIdentifier now automatically applies REQUIRES_WORLD to validation for dynamic registries, which require the world to be loaded. They will now not be available out of game.ClickAction.RUN_COMMAND or ClickAction.SUGGEST_COMMAND now automatically apply REQUIRES_WORLDValidatedIdentifier without validation no longer tries to "force" you to use the minecraft namespace in the text box26.10.2024 · 43 667 downloads
EntryFlag to ValidatedField and ConfigAction. Currently only has one flag REQUIRES_WORLD. A field marked with REQUIRES_WORLD marks that the player needs to be in-game for the setting to work properly. The config screen will show Not in Game instead of the setting, when not in game.ofDynamicKey builder methods to ValidatedIdentifier. Use of ofRegistryKey for non-synced dynamic registries (Loot registries, or modded dynamic registries that don't sync, primarily) is now deprecated and will log a warning. ofDynamicKey handles synchronization of predicated registry lists more robustly.ValidatedIdentifier now automatically applies REQUIRES_WORLD to validation for dynamic registries, which require the world to be loaded. They will now not be available out of game.ClickAction.RUN_COMMAND or ClickAction.SUGGEST_COMMAND now automatically apply REQUIRES_WORLDValidatedIdentifier without validation no longer tries to "force" you to use the minecraft namespace in the text box23.10.2024 · 608 downloads
23.10.2024 · 329 downloads
23.10.2024 · 88 downloads
22.10.2024 · 97 downloads
ValidatedIdentifier.ofRegistryKey now works properly with the three types of tables that apparently aren't in the normal dynamic registry manager (loot, functions, predicates)@Translation negation not being respectedValidatedAny recognizes and prioritizes Translatable entries like normal config settings do22.10.2024 · 73 downloads
ValidatedIdentifier.ofRegistryKey now works properly with the three types of tables that apparently aren't in the normal dynamic registry manager (loot, functions, predicates)@Translation negation not being respectedValidatedAny recognizes and prioritizes Translatable entries like normal config settings do22.10.2024 · 3 619 downloads
21.10.2024 · 86 downloads
ValidatedIdentifier.ofRegistryKey now works properly with the three types of tables that apparently aren't in the normal dynamic registry manager (loot, functions, predicates)@Translation negation not being respectedValidatedAny recognizes and prioritizes Translatable entries like normal config settings do21.10.2024 · 7 961 downloads
ValidatedIdentifier.ofRegistryKey now works properly with the three types of tables that apparently aren't in the normal dynamic registry manager (loot, functions, predicates)@Translation negation not being respectedValidatedAny recognizes and prioritizes Translatable entries like normal config settings do21.10.2024 · 155 downloads
ValidatedIdentifier.ofRegistryKey now works properly with the three types of tables that apparently aren't in the normal dynamic registry manager (loot, functions, predicates)@Translation negation not being respectedValidatedAny recognizes and prioritizes Translatable entries like normal config settings do21.10.2024 · 370 downloads
ValidatedIdentifier.ofRegistryKey now works properly with the three types of tables that apparently aren't in the normal dynamic registry manager (loot, functions, predicates)@Translation negation not being respectedValidatedAny recognizes and prioritizes Translatable entries like normal config settings do21.10.2024 · 9 051 downloads
ValidatedIdentifier.ofRegistryKey now works properly with the three types of tables that apparently aren't in the normal dynamic registry manager (loot, functions, predicates)@Translation negation not being respectedValidatedAny recognizes and prioritizes Translatable entries like normal config settings do21.10.2024 · 2 586 downloads
ValidatedIdentifier.ofRegistryKey now works properly with the three types of tables that apparently aren't in the normal dynamic registry manager (loot, functions, predicates)@Translation negation not being respectedValidatedAny recognizes and prioritizes Translatable entries like normal config settings do21.10.2024 · 66 downloads
ValidatedIdentifier.ofRegistryKey now works properly with the three types of tables that apparently aren't in the normal dynamic registry manager (loot, functions, predicates)@Translation negation not being respectedValidatedAny recognizes and prioritizes Translatable entries like normal config settings do21.10.2024 · 76 downloads
ValidatedIdentifier.ofRegistryKey now works properly with the three types of tables that apparently aren't in the normal dynamic registry manager (loot, functions, predicates)@Translation negation not being respectedValidatedAny recognizes and prioritizes Translatable entries like normal config settings do21.10.2024 · 824 downloads
ValidatedIdentifier.ofRegistryKey now works properly with the three types of tables that apparently aren't in the normal dynamic registry manager (loot, functions, predicates)@Translation negation not being respectedValidatedAny recognizes and prioritizes Translatable entries like normal config settings do16.10.2024 · 82 downloads
ValdiatedCondition validation wrapper. Gate the wrapped value behind conditional checks added via withCondition when get is called. If checks fail, a fallback will be supplied instead of the stored "live" value, and the setting will be locked in-GUI.toCondition in ValidatedField to convert one to a ValidatedConditionText.isEmpty() and Text.isNotEmpty() extension functions in FcTexttoLinebreakText in FcText to convert a list of text into one text split by newlines16.10.2024 · 16 678 downloads
ValdiatedCondition validation wrapper. Gate the wrapped value behind conditional checks added via withCondition when get is called. If checks fail, a fallback will be supplied instead of the stored "live" value, and the setting will be locked in-GUI.toCondition in ValidatedField to convert one to a ValidatedConditionText.isEmpty() and Text.isNotEmpty() extension functions in FcTexttoLinebreakText in FcText to convert a list of text into one text split by newlines16.10.2024 · 326 downloads
ValdiatedCondition validation wrapper. Gate the wrapped value behind conditional checks added via withCondition when get is called. If checks fail, a fallback will be supplied instead of the stored "live" value, and the setting will be locked in-GUI.toCondition in ValidatedField to convert one to a ValidatedConditionText.isEmpty() and Text.isNotEmpty() extension functions in FcTexttoLinebreakText in FcText to convert a list of text into one text split by newlines16.10.2024 · 327 downloads
ValdiatedCondition validation wrapper. Gate the wrapped value behind conditional checks added via withCondition when get is called. If checks fail, a fallback will be supplied instead of the stored "live" value, and the setting will be locked in-GUI.toCondition in ValidatedField to convert one to a ValidatedConditionText.isEmpty() and Text.isNotEmpty() extension functions in FcTexttoLinebreakText in FcText to convert a list of text into one text split by newlines16.10.2024 · 233 318 downloads
ValdiatedCondition validation wrapper. Gate the wrapped value behind conditional checks added via withCondition when get is called. If checks fail, a fallback will be supplied instead of the stored "live" value, and the setting will be locked in-GUI.toCondition in ValidatedField to convert one to a ValidatedConditionText.isEmpty() and Text.isNotEmpty() extension functions in FcTexttoLinebreakText in FcText to convert a list of text into one text split by newlines16.10.2024 · 805 downloads
ValdiatedCondition validation wrapper. Gate the wrapped value behind conditional checks added via withCondition when get is called. If checks fail, a fallback will be supplied instead of the stored "live" value, and the setting will be locked in-GUI.toCondition in ValidatedField to convert one to a ValidatedConditionText.isEmpty() and Text.isNotEmpty() extension functions in FcTexttoLinebreakText in FcText to convert a list of text into one text split by newlines16.10.2024 · 51 downloads
ValdiatedCondition validation wrapper. Gate the wrapped value behind conditional checks added via withCondition when get is called. If checks fail, a fallback will be supplied instead of the stored "live" value, and the setting will be locked in-GUI.toCondition in ValidatedField to convert one to a ValidatedConditionText.isEmpty() and Text.isNotEmpty() extension functions in FcTexttoLinebreakText in FcText to convert a list of text into one text split by newlines16.10.2024 · 75 downloads
ValdiatedCondition validation wrapper. Gate the wrapped value behind conditional checks added via withCondition when get is called. If checks fail, a fallback will be supplied instead of the stored "live" value, and the setting will be locked in-GUI.toCondition in ValidatedField to convert one to a ValidatedConditionText.isEmpty() and Text.isNotEmpty() extension functions in FcTexttoLinebreakText in FcText to convert a list of text into one text split by newlines16.10.2024 · 8 359 downloads
ValdiatedCondition validation wrapper. Gate the wrapped value behind conditional checks added via withCondition when get is called. If checks fail, a fallback will be supplied instead of the stored "live" value, and the setting will be locked in-GUI.toCondition in ValidatedField to convert one to a ValidatedConditionText.isEmpty() and Text.isNotEmpty() extension functions in FcTexttoLinebreakText in FcText to convert a list of text into one text split by newlines13.10.2024 · 812 downloads
ValidatedIdentifier.ofRegistryKey now takes ? extends Registry like the other helper method types, instead of just Registry.13.10.2024 · 87 downloads
ValidatedIdentifier.ofRegistryKey now takes ? extends Registry like the other helper method types, instead of just Registry.13.10.2024 · 5 353 downloads
ValidatedIdentifier.ofRegistryKey now takes ? extends Registry like the other helper method types, instead of just Registry.13.10.2024 · 167 downloads
ValidatedIdentifier.ofRegistryKey now takes ? extends Registry like the other helper method types, instead of just Registry.13.10.2024 · 232 downloads
ValidatedIdentifier.ofRegistryKey now takes ? extends Registry like the other helper method types, instead of just Registry.13.10.2024 · 25 569 downloads
ValidatedIdentifier.ofRegistryKey now takes ? extends Registry like the other helper method types, instead of just Registry.13.10.2024 · 934 downloads
ValidatedIdentifier.ofRegistryKey now takes ? extends Registry like the other helper method types, instead of just Registry.13.10.2024 · 52 downloads
ValidatedIdentifier.ofRegistryKey now takes ? extends Registry like the other helper method types, instead of just Registry.13.10.2024 · 69 downloads
ValidatedIdentifier.ofRegistryKey now takes ? extends Registry like the other helper method types, instead of just Registry.13.10.2024 · 1 996 downloads
ValidatedIdentifier.ofRegistryKey now takes ? extends Registry like the other helper method types, instead of just Registry.04.10.2024 · 145 downloads
ValidatedEnum popups now center the enum buttons on popups with very long enum names04.10.2024 · 74 downloads
ValidatedEnum popups now center the enum buttons on popups with very long enum names04.10.2024 · 15 872 downloads
ValidatedEnum popups now center the enum buttons on popups with very long enum names04.10.2024 · 212 downloads
ValidatedEnum popups now center the enum buttons on popups with very long enum names04.10.2024 · 511 downloads
ValidatedEnum popups now center the enum buttons on popups with very long enum names04.10.2024 · 46 441 downloads
ValidatedEnum popups now center the enum buttons on popups with very long enum names04.10.2024 · 16 973 downloads
ValidatedEnum popups now center the enum buttons on popups with very long enum names04.10.2024 · 68 downloads
ValidatedEnum popups now center the enum buttons on popups with very long enum names04.10.2024 · 92 downloads
ValidatedEnum popups now center the enum buttons on popups with very long enum names04.10.2024 · 5 109 downloads
ValidatedEnum popups now center the enum buttons on popups with very long enum names03.10.2024 · 92 downloads
ValidatedFloat and Double; the values within will now be formatted like #.##, instead of showing the entire fractional part.ValidatedNumber is provided with a min >= max.Item, Block, EntityType, and Fluid as types that can be automatically wrapped with validation without having to specify it yourself.@Translation at the config-level will add the option to use the prefix itself as a lang key for the config title.RELOAD_RESOURCES action on config-level alerts@Translation not working for config sections03.10.2024 · 64 downloads
ValidatedFloat and Double; the values within will now be formatted like #.##, instead of showing the entire fractional part.ValidatedNumber is provided with a min >= max.Item, Block, EntityType, and Fluid as types that can be automatically wrapped with validation without having to specify it yourself.@Translation at the config-level will add the option to use the prefix itself as a lang key for the config title.RELOAD_RESOURCES action on config-level alerts@Translation not working for config sections03.10.2024 · 6 454 downloads
ValidatedFloat and Double; the values within will now be formatted like #.##, instead of showing the entire fractional part.ValidatedNumber is provided with a min >= max.Item, Block, EntityType, and Fluid as types that can be automatically wrapped with validation without having to specify it yourself.@Translation at the config-level will add the option to use the prefix itself as a lang key for the config title.RELOAD_RESOURCES action on config-level alerts@Translation not working for config sections03.10.2024 · 100 downloads
ValidatedFloat and Double; the values within will now be formatted like #.##, instead of showing the entire fractional part.ValidatedNumber is provided with a min >= max.Item, Block, EntityType, and Fluid as types that can be automatically wrapped with validation without having to specify it yourself.@Translation at the config-level will add the option to use the prefix itself as a lang key for the config title.RELOAD_RESOURCES action on config-level alerts@Translation not working for config sections03.10.2024 · 135 downloads
ValidatedFloat and Double; the values within will now be formatted like #.##, instead of showing the entire fractional part.ValidatedNumber is provided with a min >= max.Item, Block, EntityType, and Fluid as types that can be automatically wrapped with validation without having to specify it yourself.@Translation at the config-level will add the option to use the prefix itself as a lang key for the config title.RELOAD_RESOURCES action on config-level alerts@Translation not working for config sections03.10.2024 · 996 downloads
ValidatedFloat and Double; the values within will now be formatted like #.##, instead of showing the entire fractional part.ValidatedNumber is provided with a min >= max.Item, Block, EntityType, and Fluid as types that can be automatically wrapped with validation without having to specify it yourself.@Translation at the config-level will add the option to use the prefix itself as a lang key for the config title.RELOAD_RESOURCES action on config-level alerts@Translation not working for config sections03.10.2024 · 191 downloads
ValidatedFloat and Double; the values within will now be formatted like #.##, instead of showing the entire fractional part.ValidatedNumber is provided with a min >= max.Item, Block, EntityType, and Fluid as types that can be automatically wrapped with validation without having to specify it yourself.@Translation at the config-level will add the option to use the prefix itself as a lang key for the config title.RELOAD_RESOURCES action on config-level alerts@Translation not working for config sections03.10.2024 · 65 downloads
ValidatedFloat and Double; the values within will now be formatted like #.##, instead of showing the entire fractional part.ValidatedNumber is provided with a min >= max.Item, Block, EntityType, and Fluid as types that can be automatically wrapped with validation without having to specify it yourself.@Translation at the config-level will add the option to use the prefix itself as a lang key for the config title.RELOAD_RESOURCES action on config-level alerts@Translation not working for config sections03.10.2024 · 64 downloads
ValidatedFloat and Double; the values within will now be formatted like #.##, instead of showing the entire fractional part.ValidatedNumber is provided with a min >= max.Item, Block, EntityType, and Fluid as types that can be automatically wrapped with validation without having to specify it yourself.@Translation at the config-level will add the option to use the prefix itself as a lang key for the config title.RELOAD_RESOURCES action on config-level alerts@Translation not working for config sections03.10.2024 · 2 283 downloads
ValidatedFloat and Double; the values within will now be formatted like #.##, instead of showing the entire fractional part.ValidatedNumber is provided with a min >= max.Item, Block, EntityType, and Fluid as types that can be automatically wrapped with validation without having to specify it yourself.@Translation at the config-level will add the option to use the prefix itself as a lang key for the config title.RELOAD_RESOURCES action on config-level alerts@Translation not working for config sections25.09.2024 · 160 downloads
ValidatedField mapping. Validation can be mapped to validation of any other convertible type with the new map methods.ValidatedRegistryType maps ValidatedIdentifier 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.ValidatedField now has a helper codec method for generating a Codec of the underlying type.ValidatedField now has a listener system that triggers on any set of the field. This listener is a Consumer<ValidatedField<T>> and is added with withListenerEventApi and corresponding direct implementations in the Config classConfigApionSyncClient - 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 sideConfigAction, 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.PlatformApi for simple cross-loader tasks like checking if the game state is client-sided or not.PressableWidget or ButtonWidget, which was causing issues with Visual Overhaul or any other mod that leaks the constructor of the widget. It is recommended to use the Custom variants of those classes for any custom validation implementation.ValidatedIdentifier can now bind to dynamic registries using the ofRegistryKey initializer methods.25.09.2024 · 11 159 downloads
ValidatedField mapping. Validation can be mapped to validation of any other convertible type with the new map methods.ValidatedRegistryType maps ValidatedIdentifier 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.ValidatedField now has a helper codec method for generating a Codec of the underlying type.ValidatedField now has a listener system that triggers on any set of the field. This listener is a Consumer<ValidatedField<T>> and is added with withListenerEventApi and corresponding direct implementations in the Config classConfigApionSyncClient - 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 sideConfigAction, 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.PlatformApi for simple cross-loader tasks like checking if the game state is client-sided or not.PressableWidget or ButtonWidget, which was causing issues with Visual Overhaul or any other mod that leaks the constructor of the widget. It is recommended to use the Custom variants of those classes for any custom validation implementation.ValidatedIdentifier can now bind to dynamic registries using the ofRegistryKey initializer methods.25.09.2024 · 255 downloads
ValidatedField mapping. Validation can be mapped to validation of any other convertible type with the new map methods.ValidatedRegistryType maps ValidatedIdentifier 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.ValidatedField now has a helper codec method for generating a Codec of the underlying type.ValidatedField now has a listener system that triggers on any set of the field. This listener is a Consumer<ValidatedField<T>> and is added with withListenerEventApi and corresponding direct implementations in the Config classConfigApionSyncClient - 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 sideConfigAction, 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.PlatformApi for simple cross-loader tasks like checking if the game state is client-sided or not.PressableWidget or ButtonWidget, which was causing issues with Visual Overhaul or any other mod that leaks the constructor of the widget. It is recommended to use the Custom variants of those classes for any custom validation implementation.ValidatedIdentifier can now bind to dynamic registries using the ofRegistryKey initializer methods.25.09.2024 · 453 downloads
ValidatedField mapping. Validation can be mapped to validation of any other convertible type with the new map methods.ValidatedRegistryType maps ValidatedIdentifier 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.ValidatedField now has a helper codec method for generating a Codec of the underlying type.ValidatedField now has a listener system that triggers on any set of the field. This listener is a Consumer<ValidatedField<T>> and is added with withListenerEventApi and corresponding direct implementations in the Config classConfigApionSyncClient - 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 sideConfigAction, 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.PlatformApi for simple cross-loader tasks like checking if the game state is client-sided or not.PressableWidget or ButtonWidget, which was causing issues with Visual Overhaul or any other mod that leaks the constructor of the widget. It is recommended to use the Custom variants of those classes for any custom validation implementation.ValidatedIdentifier can now bind to dynamic registries using the ofRegistryKey initializer methods.25.09.2024 · 10 632 downloads
ValidatedField mapping. Validation can be mapped to validation of any other convertible type with the new map methods.ValidatedRegistryType maps ValidatedIdentifier 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.ValidatedField now has a helper codec method for generating a Codec of the underlying type.ValidatedField now has a listener system that triggers on any set of the field. This listener is a Consumer<ValidatedField<T>> and is added with withListenerEventApi and corresponding direct implementations in the Config classConfigApionSyncClient - 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 sideConfigAction, 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.PlatformApi for simple cross-loader tasks like checking if the game state is client-sided or not.PressableWidget or ButtonWidget, which was causing issues with Visual Overhaul or any other mod that leaks the constructor of the widget. It is recommended to use the Custom variants of those classes for any custom validation implementation.ValidatedIdentifier can now bind to dynamic registries using the ofRegistryKey initializer methods.25.09.2024 · 1 092 downloads
ValidatedField mapping. Validation can be mapped to validation of any other convertible type with the new map methods.ValidatedRegistryType maps ValidatedIdentifier 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.ValidatedField now has a helper codec method for generating a Codec of the underlying type.ValidatedField now has a listener system that triggers on any set of the field. This listener is a Consumer<ValidatedField<T>> and is added with withListenerEventApi and corresponding direct implementations in the Config classConfigApionSyncClient - 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 sideConfigAction, 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.PlatformApi for simple cross-loader tasks like checking if the game state is client-sided or not.PressableWidget or ButtonWidget, which was causing issues with Visual Overhaul or any other mod that leaks the constructor of the widget. It is recommended to use the Custom variants of those classes for any custom validation implementation.ValidatedIdentifier can now bind to dynamic registries using the ofRegistryKey initializer methods.25.09.2024 · 70 downloads
ValidatedField mapping. Validation can be mapped to validation of any other convertible type with the new map methods.ValidatedRegistryType maps ValidatedIdentifier 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.ValidatedField now has a helper codec method for generating a Codec of the underlying type.ValidatedField now has a listener system that triggers on any set of the field. This listener is a Consumer<ValidatedField<T>> and is added with withListenerEventApi and corresponding direct implementations in the Config classConfigApionSyncClient - 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 sideConfigAction, 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.PlatformApi for simple cross-loader tasks like checking if the game state is client-sided or not.PressableWidget or ButtonWidget, which was causing issues with Visual Overhaul or any other mod that leaks the constructor of the widget. It is recommended to use the Custom variants of those classes for any custom validation implementation.ValidatedIdentifier can now bind to dynamic registries using the ofRegistryKey initializer methods.25.09.2024 · 77 downloads
ValidatedField mapping. Validation can be mapped to validation of any other convertible type with the new map methods.ValidatedRegistryType maps ValidatedIdentifier 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.ValidatedField now has a helper codec method for generating a Codec of the underlying type.ValidatedField now has a listener system that triggers on any set of the field. This listener is a Consumer<ValidatedField<T>> and is added with withListenerEventApi and corresponding direct implementations in the Config classConfigApionSyncClient - 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 sideConfigAction, 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.PlatformApi for simple cross-loader tasks like checking if the game state is client-sided or not.PressableWidget or ButtonWidget, which was causing issues with Visual Overhaul or any other mod that leaks the constructor of the widget. It is recommended to use the Custom variants of those classes for any custom validation implementation.ValidatedIdentifier can now bind to dynamic registries using the ofRegistryKey initializer methods.25.09.2024 · 11 693 downloads
ValidatedField mapping. Validation can be mapped to validation of any other convertible type with the new map methods.ValidatedRegistryType maps ValidatedIdentifier 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.ValidatedField now has a helper codec method for generating a Codec of the underlying type.ValidatedField now has a listener system that triggers on any set of the field. This listener is a Consumer<ValidatedField<T>> and is added with withListenerEventApi and corresponding direct implementations in the Config classConfigApionSyncClient - 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 sideConfigAction, 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.PlatformApi for simple cross-loader tasks like checking if the game state is client-sided or not.PressableWidget or ButtonWidget, which was causing issues with Visual Overhaul or any other mod that leaks the constructor of the widget. It is recommended to use the Custom variants of those classes for any custom validation implementation.ValidatedIdentifier can now bind to dynamic registries using the ofRegistryKey initializer methods.14.09.2024 · 117 downloads
@JvmStatic addition in ConfigApi that accidentally breaks code using the previous way, thanks to Kotlins assertion of an "additional" static simply being false (it replaces with a static)14.09.2024 · 18 122 downloads
@JvmStatic addition in ConfigApi that accidentally breaks code using the previous way, thanks to Kotlins assertion of an "additional" static simply being false (it replaces with a static)14.09.2024 · 317 downloads
@JvmStatic addition in ConfigApi that accidentally breaks code using the previous way, thanks to Kotlins assertion of an "additional" static simply being false (it replaces with a static)14.09.2024 · 1 078 downloads
@JvmStatic addition in ConfigApi that accidentally breaks code using the previous way, thanks to Kotlins assertion of an "additional" static simply being false (it replaces with a static)14.09.2024 · 83 324 downloads
@JvmStatic addition in ConfigApi that accidentally breaks code using the previous way, thanks to Kotlins assertion of an "additional" static simply being false (it replaces with a static)14.09.2024 · 1 797 downloads
@JvmStatic addition in ConfigApi that accidentally breaks code using the previous way, thanks to Kotlins assertion of an "additional" static simply being false (it replaces with a static)14.09.2024 · 75 downloads
@JvmStatic addition in ConfigApi that accidentally breaks code using the previous way, thanks to Kotlins assertion of an "additional" static simply being false (it replaces with a static)14.09.2024 · 87 downloads
@JvmStatic addition in ConfigApi that accidentally breaks code using the previous way, thanks to Kotlins assertion of an "additional" static simply being false (it replaces with a static)14.09.2024 · 5 125 downloads
@JvmStatic addition in ConfigApi that accidentally breaks code using the previous way, thanks to Kotlins assertion of an "additional" static simply being false (it replaces with a static)14.09.2024 · 100 downloads
FcText.MutableText#command cleanly defines a Run Command click actionMutableText#tooltip adds a hovered tooltip to textMutableText#underline underlines the textMutableText#bold bolds the textMutableText#italic italicizes the textMutableText#strikethrough strikes through the textMutableText#colored colors the text with any RGB colorAny#transSupplied translates the receiver, with a supplied fallback literal if necessary. Useful if the fallback is computationally intensiveAny#descSupplied describes the receiver, with a supplied fallback literal if necessary. Useful if the fallback is computationally intensiveTranslation annotation. Yet another way to translate your in-game config settings!prefix.[fieldName] and prefix.[fieldName].desc. This applies to all instances of the field, so repeating units of the same setting will share a lang key!/fzzy_config_restart shuts down the client/fzzy_config_leave_game disconnects you from the current game and returns you to the proper title screen./fzzy_config_reload_resources reloads resources (F3+T)RELOG will have a leave game click action, and so on)@JvmStatic for ConfigApi#network14.09.2024 · 189 downloads
FcText.MutableText#command cleanly defines a Run Command click actionMutableText#tooltip adds a hovered tooltip to textMutableText#underline underlines the textMutableText#bold bolds the textMutableText#italic italicizes the textMutableText#strikethrough strikes through the textMutableText#colored colors the text with any RGB colorAny#transSupplied translates the receiver, with a supplied fallback literal if necessary. Useful if the fallback is computationally intensiveAny#descSupplied describes the receiver, with a supplied fallback literal if necessary. Useful if the fallback is computationally intensiveTranslation annotation. Yet another way to translate your in-game config settings!prefix.[fieldName] and prefix.[fieldName].desc. This applies to all instances of the field, so repeating units of the same setting will share a lang key!/fzzy_config_restart shuts down the client/fzzy_config_leave_game disconnects you from the current game and returns you to the proper title screen./fzzy_config_reload_resources reloads resources (F3+T)RELOG will have a leave game click action, and so on)@JvmStatic for ConfigApi#network14.09.2024 · 66 downloads
FcText.MutableText#command cleanly defines a Run Command click actionMutableText#tooltip adds a hovered tooltip to textMutableText#underline underlines the textMutableText#bold bolds the textMutableText#italic italicizes the textMutableText#strikethrough strikes through the textMutableText#colored colors the text with any RGB colorAny#transSupplied translates the receiver, with a supplied fallback literal if necessary. Useful if the fallback is computationally intensiveAny#descSupplied describes the receiver, with a supplied fallback literal if necessary. Useful if the fallback is computationally intensiveTranslation annotation. Yet another way to translate your in-game config settings!prefix.[fieldName] and prefix.[fieldName].desc. This applies to all instances of the field, so repeating units of the same setting will share a lang key!/fzzy_config_restart shuts down the client/fzzy_config_leave_game disconnects you from the current game and returns you to the proper title screen./fzzy_config_reload_resources reloads resources (F3+T)RELOG will have a leave game click action, and so on)@JvmStatic for ConfigApi#network14.09.2024 · 83 downloads
FcText.MutableText#command cleanly defines a Run Command click actionMutableText#tooltip adds a hovered tooltip to textMutableText#underline underlines the textMutableText#bold bolds the textMutableText#italic italicizes the textMutableText#strikethrough strikes through the textMutableText#colored colors the text with any RGB colorAny#transSupplied translates the receiver, with a supplied fallback literal if necessary. Useful if the fallback is computationally intensiveAny#descSupplied describes the receiver, with a supplied fallback literal if necessary. Useful if the fallback is computationally intensiveTranslation annotation. Yet another way to translate your in-game config settings!prefix.[fieldName] and prefix.[fieldName].desc. This applies to all instances of the field, so repeating units of the same setting will share a lang key!/fzzy_config_restart shuts down the client/fzzy_config_leave_game disconnects you from the current game and returns you to the proper title screen./fzzy_config_reload_resources reloads resources (F3+T)RELOG will have a leave game click action, and so on)@JvmStatic for ConfigApi#network14.09.2024 · 175 downloads
FcText.MutableText#command cleanly defines a Run Command click actionMutableText#tooltip adds a hovered tooltip to textMutableText#underline underlines the textMutableText#bold bolds the textMutableText#italic italicizes the textMutableText#strikethrough strikes through the textMutableText#colored colors the text with any RGB colorAny#transSupplied translates the receiver, with a supplied fallback literal if necessary. Useful if the fallback is computationally intensiveAny#descSupplied describes the receiver, with a supplied fallback literal if necessary. Useful if the fallback is computationally intensiveTranslation annotation. Yet another way to translate your in-game config settings!prefix.[fieldName] and prefix.[fieldName].desc. This applies to all instances of the field, so repeating units of the same setting will share a lang key!/fzzy_config_restart shuts down the client/fzzy_config_leave_game disconnects you from the current game and returns you to the proper title screen./fzzy_config_reload_resources reloads resources (F3+T)RELOG will have a leave game click action, and so on)@JvmStatic for ConfigApi#network14.09.2024 · 80 downloads
FcText.MutableText#command cleanly defines a Run Command click actionMutableText#tooltip adds a hovered tooltip to textMutableText#underline underlines the textMutableText#bold bolds the textMutableText#italic italicizes the textMutableText#strikethrough strikes through the textMutableText#colored colors the text with any RGB colorAny#transSupplied translates the receiver, with a supplied fallback literal if necessary. Useful if the fallback is computationally intensiveAny#descSupplied describes the receiver, with a supplied fallback literal if necessary. Useful if the fallback is computationally intensiveTranslation annotation. Yet another way to translate your in-game config settings!prefix.[fieldName] and prefix.[fieldName].desc. This applies to all instances of the field, so repeating units of the same setting will share a lang key!/fzzy_config_restart shuts down the client/fzzy_config_leave_game disconnects you from the current game and returns you to the proper title screen./fzzy_config_reload_resources reloads resources (F3+T)RELOG will have a leave game click action, and so on)@JvmStatic for ConfigApi#network14.09.2024 · 71 downloads
FcText.MutableText#command cleanly defines a Run Command click actionMutableText#tooltip adds a hovered tooltip to textMutableText#underline underlines the textMutableText#bold bolds the textMutableText#italic italicizes the textMutableText#strikethrough strikes through the textMutableText#colored colors the text with any RGB colorAny#transSupplied translates the receiver, with a supplied fallback literal if necessary. Useful if the fallback is computationally intensiveAny#descSupplied describes the receiver, with a supplied fallback literal if necessary. Useful if the fallback is computationally intensiveTranslation annotation. Yet another way to translate your in-game config settings!prefix.[fieldName] and prefix.[fieldName].desc. This applies to all instances of the field, so repeating units of the same setting will share a lang key!/fzzy_config_restart shuts down the client/fzzy_config_leave_game disconnects you from the current game and returns you to the proper title screen./fzzy_config_reload_resources reloads resources (F3+T)RELOG will have a leave game click action, and so on)@JvmStatic for ConfigApi#network14.09.2024 · 72 downloads
FcText.MutableText#command cleanly defines a Run Command click actionMutableText#tooltip adds a hovered tooltip to textMutableText#underline underlines the textMutableText#bold bolds the textMutableText#italic italicizes the textMutableText#strikethrough strikes through the textMutableText#colored colors the text with any RGB colorAny#transSupplied translates the receiver, with a supplied fallback literal if necessary. Useful if the fallback is computationally intensiveAny#descSupplied describes the receiver, with a supplied fallback literal if necessary. Useful if the fallback is computationally intensiveTranslation annotation. Yet another way to translate your in-game config settings!prefix.[fieldName] and prefix.[fieldName].desc. This applies to all instances of the field, so repeating units of the same setting will share a lang key!/fzzy_config_restart shuts down the client/fzzy_config_leave_game disconnects you from the current game and returns you to the proper title screen./fzzy_config_reload_resources reloads resources (F3+T)RELOG will have a leave game click action, and so on)@JvmStatic for ConfigApi#network14.09.2024 · 214 downloads
FcText.MutableText#command cleanly defines a Run Command click actionMutableText#tooltip adds a hovered tooltip to textMutableText#underline underlines the textMutableText#bold bolds the textMutableText#italic italicizes the textMutableText#strikethrough strikes through the textMutableText#colored colors the text with any RGB colorAny#transSupplied translates the receiver, with a supplied fallback literal if necessary. Useful if the fallback is computationally intensiveAny#descSupplied describes the receiver, with a supplied fallback literal if necessary. Useful if the fallback is computationally intensiveTranslation annotation. Yet another way to translate your in-game config settings!prefix.[fieldName] and prefix.[fieldName].desc. This applies to all instances of the field, so repeating units of the same setting will share a lang key!/fzzy_config_restart shuts down the client/fzzy_config_leave_game disconnects you from the current game and returns you to the proper title screen./fzzy_config_reload_resources reloads resources (F3+T)RELOG will have a leave game click action, and so on)@JvmStatic for ConfigApi#network11.09.2024 · 260 downloads
11.09.2024 · 66 downloads
11.09.2024 · 72 downloads
11.09.2024 · 1 098 downloads
10.09.2024 · 79 downloads
configure_update list command to list the current quarantined updates, to help get the proper id names now that the argument for the command is a simple string.configure_update command now uses a string argument to avoid needing to serialize a custom argument. Fzzy config should work with vanilla clients again.09.09.2024 · 8 654 downloads
configure_update list command to list the current quarantined updates, to help get the proper id names now that the argument for the command is a simple string.configure_update command now uses a string argument to avoid needing to serialize a custom argument. Fzzy config should work with vanilla clients again.09.09.2024 · 182 downloads
configure_update list command to list the current quarantined updates, to help get the proper id names now that the argument for the command is a simple string.configure_update command now uses a string argument to avoid needing to serialize a custom argument. Fzzy config should work with vanilla clients again.09.09.2024 · 399 downloads
configure_update list command to list the current quarantined updates, to help get the proper id names now that the argument for the command is a simple string.configure_update command now uses a string argument to avoid needing to serialize a custom argument. Fzzy config should work with vanilla clients again.09.09.2024 · 5 680 downloads
configure_update list command to list the current quarantined updates, to help get the proper id names now that the argument for the command is a simple string.configure_update command now uses a string argument to avoid needing to serialize a custom argument. Fzzy config should work with vanilla clients again.09.09.2024 · 126 downloads
configure_update list command to list the current quarantined updates, to help get the proper id names now that the argument for the command is a simple string.configure_update command now uses a string argument to avoid needing to serialize a custom argument. Fzzy config should work with vanilla clients again.09.09.2024 · 71 downloads
configure_update list command to list the current quarantined updates, to help get the proper id names now that the argument for the command is a simple string.configure_update command now uses a string argument to avoid needing to serialize a custom argument. Fzzy config should work with vanilla clients again.09.09.2024 · 71 downloads
configure_update list command to list the current quarantined updates, to help get the proper id names now that the argument for the command is a simple string.configure_update command now uses a string argument to avoid needing to serialize a custom argument. Fzzy config should work with vanilla clients again.09.09.2024 · 988 downloads
configure_update list command to list the current quarantined updates, to help get the proper id names now that the argument for the command is a simple string.configure_update command now uses a string argument to avoid needing to serialize a custom argument. Fzzy config should work with vanilla clients again.08.09.2024 · 2 030 downloads
@WithCustomPerms and @AdminLevel for definition of user permissions using LuckPerms/Forge Permissions API "Node" style permissions/configure_update command, accepting or denying the update as needed.@RequiresAction annotation that supplants the functionality of the now-deprecated RequiresRestartValidatedString#fromValues for creation of a Validated string with a vararg set of allowable strings, no list wrapper needed.@RequiresRestartValidatedChoice now properly updates its tooltip after each selection change.ConfigApiJava into the most recent versions.ValidatedSet#toChoices08.09.2024 · 95 downloads
@WithCustomPerms and @AdminLevel for definition of user permissions using LuckPerms/Forge Permissions API "Node" style permissions/configure_update command, accepting or denying the update as needed.@RequiresAction annotation that supplants the functionality of the now-deprecated RequiresRestartValidatedString#fromValues for creation of a Validated string with a vararg set of allowable strings, no list wrapper needed.@RequiresRestartValidatedChoice now properly updates its tooltip after each selection change.ConfigApiJava into the most recent versions.ValidatedSet#toChoices08.09.2024 · 157 downloads
@WithCustomPerms and @AdminLevel for definition of user permissions using LuckPerms/Forge Permissions API "Node" style permissions/configure_update command, accepting or denying the update as needed.@RequiresAction annotation that supplants the functionality of the now-deprecated RequiresRestartValidatedString#fromValues for creation of a Validated string with a vararg set of allowable strings, no list wrapper needed.@RequiresRestartValidatedChoice now properly updates its tooltip after each selection change.ConfigApiJava into the most recent versions.ValidatedSet#toChoices08.09.2024 · 3 527 downloads
@WithCustomPerms and @AdminLevel for definition of user permissions using LuckPerms/Forge Permissions API "Node" style permissions/configure_update command, accepting or denying the update as needed.@RequiresAction annotation that supplants the functionality of the now-deprecated RequiresRestartValidatedString#fromValues for creation of a Validated string with a vararg set of allowable strings, no list wrapper needed.@RequiresRestartValidatedChoice now properly updates its tooltip after each selection change.ConfigApiJava into the most recent versions.ValidatedSet#toChoices08.09.2024 · 151 downloads
@WithCustomPerms and @AdminLevel for definition of user permissions using LuckPerms/Forge Permissions API "Node" style permissions/configure_update command, accepting or denying the update as needed.@RequiresAction annotation that supplants the functionality of the now-deprecated RequiresRestartValidatedString#fromValues for creation of a Validated string with a vararg set of allowable strings, no list wrapper needed.@RequiresRestartValidatedChoice now properly updates its tooltip after each selection change.ConfigApiJava into the most recent versions.ValidatedSet#toChoices08.09.2024 · 63 downloads
@WithCustomPerms and @AdminLevel for definition of user permissions using LuckPerms/Forge Permissions API "Node" style permissions/configure_update command, accepting or denying the update as needed.@RequiresAction annotation that supplants the functionality of the now-deprecated RequiresRestartValidatedString#fromValues for creation of a Validated string with a vararg set of allowable strings, no list wrapper needed.@RequiresRestartValidatedChoice now properly updates its tooltip after each selection change.ConfigApiJava into the most recent versions.ValidatedSet#toChoices08.09.2024 · 70 downloads
@WithCustomPerms and @AdminLevel for definition of user permissions using LuckPerms/Forge Permissions API "Node" style permissions/configure_update command, accepting or denying the update as needed.@RequiresAction annotation that supplants the functionality of the now-deprecated RequiresRestartValidatedString#fromValues for creation of a Validated string with a vararg set of allowable strings, no list wrapper needed.@RequiresRestartValidatedChoice now properly updates its tooltip after each selection change.ConfigApiJava into the most recent versions.ValidatedSet#toChoices08.09.2024 · 348 downloads
@WithCustomPerms and @AdminLevel for definition of user permissions using LuckPerms/Forge Permissions API "Node" style permissions/configure_update command, accepting or denying the update as needed.@RequiresAction annotation that supplants the functionality of the now-deprecated RequiresRestartValidatedString#fromValues for creation of a Validated string with a vararg set of allowable strings, no list wrapper needed.@RequiresRestartValidatedChoice now properly updates its tooltip after each selection change.ConfigApiJava into the most recent versions.ValidatedSet#toChoices29.08.2024 · 3 290 downloads
26.08.2024 · 106 downloads
ConfigApiJava which includes methods that may cause IDE issues if called by java code directly from ConfigApi.translate helper method to ValidatedChoice for shortcutting common translation/description provider creation.min(a,b) and max(a,b) to ExpressionValidatedExpression widget now includes max and min, and the widget buttons have descriptive tooltips.@ConvertFrom file candidate if it is missing (already converted, or never existed), rather than tossing an exception into the log.26.08.2024 · 20 304 downloads
ConfigApiJava which includes methods that may cause IDE issues if called by java code directly from ConfigApi.translate helper method to ValidatedChoice for shortcutting common translation/description provider creation.min(a,b) and max(a,b) to ExpressionValidatedExpression widget now includes max and min, and the widget buttons have descriptive tooltips.@ConvertFrom file candidate if it is missing (already converted, or never existed), rather than tossing an exception into the log.26.08.2024 · 6 007 downloads
ConfigApiJava which includes methods that may cause IDE issues if called by java code directly from ConfigApi.translate helper method to ValidatedChoice for shortcutting common translation/description provider creation.min(a,b) and max(a,b) to ExpressionValidatedExpression widget now includes max and min, and the widget buttons have descriptive tooltips.@ConvertFrom file candidate if it is missing (already converted, or never existed), rather than tossing an exception into the log.26.08.2024 · 293 597 downloads
ConfigApiJava which includes methods that may cause IDE issues if called by java code directly from ConfigApi.translate helper method to ValidatedChoice for shortcutting common translation/description provider creation.min(a,b) and max(a,b) to ExpressionValidatedExpression widget now includes max and min, and the widget buttons have descriptive tooltips.@ConvertFrom file candidate if it is missing (already converted, or never existed), rather than tossing an exception into the log.24.08.2024 · 2 442 downloads
ValidatedChoice now has the params translationProvider and descriptionProvider, BiFunctions that let you convert the choices base translation key and an instance of the choice into a Text instance. Useful for creating translations/Descriptions for strings or other choices that aren't Translatable.ValidatedList.toChoices now lets the user define translation and widget behavior.24.08.2024 · 308 downloads
ValidatedChoice now has the params translationProvider and descriptionProvider, BiFunctions that let you convert the choices base translation key and an instance of the choice into a Text instance. Useful for creating translations/Descriptions for strings or other choices that aren't Translatable.ValidatedList.toChoices now lets the user define translation and widget behavior.24.08.2024 · 806 downloads
ValidatedChoice now has the params translationProvider and descriptionProvider, BiFunctions that let you convert the choices base translation key and an instance of the choice into a Text instance. Useful for creating translations/Descriptions for strings or other choices that aren't Translatable.ValidatedList.toChoices now lets the user define translation and widget behavior.20.06.2024 · 169 171 downloads
ValidatedEnum cycling style widget crashing client with certain kotlin enums.20.06.2024 · 5 071 downloads
ValidatedEnum cycling style widget crashing client with certain kotlin enums.20.06.2024 · 115 272 downloads
ValidatedEnum cycling style widget crashing client with certain kotlin enums.13.06.2024 · 753 downloads
cast and nullCast extension functions for functional programming style of type casting. Ex: val thing: MyType2 = myType1.cast<MyType2>().withThing().doAnotherThing()Expression with pre-compiled shortcuts for many situations; optimized constant usage.hashcode and equals methods for direct comparison.13.06.2024 · 1 765 downloads
cast and nullCast extension functions for functional programming style of type casting. Ex: val thing: MyType2 = myType1.cast<MyType2>().withThing().doAnotherThing()Expression with pre-compiled shortcuts for many situations; optimized constant usage.hashcode and equals methods for direct comparison.13.06.2024 · 26 196 downloads
cast and nullCast extension functions for functional programming style of type casting. Ex: val thing: MyType2 = myType1.cast<MyType2>().withThing().doAnotherThing()Expression with pre-compiled shortcuts for many situations; optimized constant usage.hashcode and equals methods for direct comparison.24.05.2024 · 238 downloads
ValidatedIngredient interface to a new popup with two list editors, list viewers, and "Clear" buttons.supplyTooltipOnOverflow method to SuppliedTextWidget that allows for provision of a tooltip in case the text widget overflows and "trims" the input. This can be identical to the text supplier (can be the text supplier instance itself), or can be a separate supplier with, for example, newlines instead of commas separating text elementsValidatedIngredient now supports both tags and item IDs, instead of just item ids. The constructor now accepts Set<Object>, which can be composed of TagKeys and Identifiers (for tags and items, respectively)20.05.2024 · 142 downloads
ValidatedIngredient interface to a new popup with two list editors, list viewers, and "Clear" buttons.supplyTooltipOnOverflow method to SuppliedTextWidget that allows for provision of a tooltip in case the text widget overflows and "trims" the input. This can be identical to the text supplier (can be the text supplier instance itself), or can be a separate supplier with, for example, newlines instead of commas separating text elementsValidatedIngredient now supports both tags and item IDs, instead of just item ids. The constructor now accepts Set<Object>, which can be composed of TagKeys and Identifiers (for tags and items, respectively)20.05.2024 · 8 854 downloads
ValidatedIngredient interface to a new popup with two list editors, list viewers, and "Clear" buttons.supplyTooltipOnOverflow method to SuppliedTextWidget that allows for provision of a tooltip in case the text widget overflows and "trims" the input. This can be identical to the text supplier (can be the text supplier instance itself), or can be a separate supplier with, for example, newlines instead of commas separating text elementsValidatedIngredient now supports both tags and item IDs, instead of just item ids. The constructor now accepts Set<Object>, which can be composed of TagKeys and Identifiers (for tags and items, respectively)20.05.2024 · 306 690 downloads
ValidatedIngredient interface to a new popup with two list editors, list viewers, and "Clear" buttons.supplyTooltipOnOverflow method to SuppliedTextWidget that allows for provision of a tooltip in case the text widget overflows and "trims" the input. This can be identical to the text supplier (can be the text supplier instance itself), or can be a separate supplier with, for example, newlines instead of commas separating text elementsValidatedIngredient now supports both tags and item IDs, instead of just item ids. The constructor now accepts Set<Object>, which can be composed of TagKeys and Identifiers (for tags and items, respectively)18.05.2024 · 380 downloads
18.05.2024 · 156 downloads
Supplier overloads to ConfigApi to provide smoother interop with Java implementations, reducing the need for java mods to add fabric language kotlin to their compile class path.validateAndSet methods to ValidatedIngredient that allow for direct updating via Identifier, Set, or Tag without having to make your own Ingredient Provider instance first.18.05.2024 · 1 070 downloads
Supplier overloads to ConfigApi to provide smoother interop with Java implementations, reducing the need for java mods to add fabric language kotlin to their compile class path.validateAndSet methods to ValidatedIngredient that allow for direct updating via Identifier, Set, or Tag without having to make your own Ingredient Provider instance first.04.05.2024 · 17 829 downloads
ValidatedEntityAttribute for configuring paired EntityAttribute/EntityAttributeModifier instances.SuppliedTextWidget, a generic TextWidget that renders text from a Supplier of text rather than a static text input.toSet() methods in ValidatedField, allowing for quick wrapping of sets in the same manner as the pre-existing toList() methods.OnClickTextFieldWidget now renders its displayed text from the beginning, instead of the end.ValidatedString will throw an exception from the Regex constructor if the regex can't match to the default value givenValidatedDouble or ValidatedFloat with small ranges now have better slider scaling with keyboard navigation, instead of sticking to increments of 1.0configure command including all screen subscopes, not just the relevant subscopesValidatedEnum client crash related to certain types of Enums.OnClickTextFieldWidget improperly trapping keyboard navigation.04.05.2024 · 40 364 downloads
ValidatedEntityAttribute for configuring paired EntityAttribute/EntityAttributeModifier instances.SuppliedTextWidget, a generic TextWidget that renders text from a Supplier of text rather than a static text input.toSet() methods in ValidatedField, allowing for quick wrapping of sets in the same manner as the pre-existing toList() methods.OnClickTextFieldWidget now renders its displayed text from the beginning, instead of the end.ValidatedString will throw an exception from the Regex constructor if the regex can't match to the default value givenValidatedDouble or ValidatedFloat with small ranges now have better slider scaling with keyboard navigation, instead of sticking to increments of 1.0configure command including all screen subscopes, not just the relevant subscopesValidatedEnum client crash related to certain types of Enums.OnClickTextFieldWidget improperly trapping keyboard navigation.27.04.2024 · 668 downloads
IgnoreVisiblity annotation. A config marked with ignore visibility can have private/protected etc. fields/props. This was added for backwards compatibility with configs that may be using restricted visibility to store non-config information.IgnoreVisiblity stateOnClickTextFieldWidget now takes an OnInteractAction instance instead of a Consumer<OnClickTextFieldWidget>. This lets the text field pass key presses to whatever the widget desires (generally a newly pushed PopupWidget element)27.04.2024 · 2 780 downloads
IgnoreVisiblity annotation. A config marked with ignore visibility can have private/protected etc. fields/props. This was added for backwards compatibility with configs that may be using restricted visibility to store non-config information.IgnoreVisiblity stateOnClickTextFieldWidget now takes an OnInteractAction instance instead of a Consumer<OnClickTextFieldWidget>. This lets the text field pass key presses to whatever the widget desires (generally a newly pushed PopupWidget element)25.04.2024 · 361 downloads
Translatable now has a hasTranslation() and hasDescription method in case an inheritor can have valid descriptions or translations other than via the typical I18n key check.Entry Widget has gained the method widgetAndTooltipEntry, which attempts to apply a description tooltip to a widget, if applicable.EntryWidget is no longer a functional interfaceMapListWidget not properly firing mouseReleased on its children when the mouse is released out of that child's bounds.PopupWidgetScreen now correctly shows tooltips on screen even when popups are open.25.04.2024 · 638 downloads
Translatable now has a hasTranslation() and hasDescription method in case an inheritor can have valid descriptions or translations other than via the typical I18n key check.Entry Widget has gained the method widgetAndTooltipEntry, which attempts to apply a description tooltip to a widget, if applicable.EntryWidget is no longer a functional interfaceMapListWidget not properly firing mouseReleased on its children when the mouse is released out of that child's bounds.PopupWidgetScreen now correctly shows tooltips on screen even when popups are open.24.04.2024 · 149 downloads
ValidatedString methods not returning a ValidatedString as intended.24.04.2024 · 817 downloads
ValidatedString methods not returning a ValidatedString as intended.24.04.2024 · 107 downloads
ValidatedString.fromList() for easy construction of a ValidatedString from a known list of options or a supplier of potential options.EntrySuggester which has the SAM getSuggestions.AllowableStrings utility, much like AllowableIdentifiers. Implements EntryChecker and the new EntrySuggester.SuggestionBackedTextFieldWidget if an AllowableStrings is passed as its EntryChecker. Using the new fromList() automatically does this.ValidatedIdentifier.ofSuppliedList() to construct validation with lists that aren't tags/registries but may not be fully known at validation time.AllowableIdentifiers now implements EntryValidator and the new EntrySuggester.24.04.2024 · 212 downloads
ValidatedString.fromList() for easy construction of a ValidatedString from a known list of options or a supplier of potential options.EntrySuggester which has the SAM getSuggestions.AllowableStrings utility, much like AllowableIdentifiers. Implements EntryChecker and the new EntrySuggester.SuggestionBackedTextFieldWidget if an AllowableStrings is passed as its EntryChecker. Using the new fromList() automatically does this.ValidatedIdentifier.ofSuppliedList() to construct validation with lists that aren't tags/registries but may not be fully known at validation time.AllowableIdentifiers now implements EntryValidator and the new EntrySuggester.23.04.2024 · 92 downloads
23.04.2024 · 259 downloads
22.04.2024 · 544 downloads
ValidatedAny crashing on an object without a 0-arg constructor.22.04.2024 · 223 downloads
RequiresRestart annotation now applicable to classes. Not transitive through Sections yet.RequiresRestart and NonSync not being able to target java fields21.04.2024 · 143 downloads
RequiresRestart annotation now applicable to classes. Not transitive through Sections yet.RequiresRestart and NonSync not being able to target java fields21.04.2024 · 124 downloads
RequiresRestart annotation now applicable to classes. Not transitive through Sections yet.RequiresRestart and NonSync not being able to target java fields20.04.2024 · 1 003 downloads