Compatibility Warning
This release represents a build of the largely untested braid-ui-1.21 branch, hence it is marked as an alpha. It is not entirely equivalent in features to 0.13.0 for 1.21.11+ and the features which were backported have not been comprehensively tested for backwards compatibility with mods compiled against previous 1.21 versions of owo-lib.
This release is provided primarily for mods like Arcane Repository and Trickster, which want to make use of braid on 1.21. Besides fixes for major compatibility issues we will not be supporting or updating it.
This is a straightforward port to 26.1
API Renamings
In preparation for future unobfuscated versions of the game, owo-lib is now developed using the official Mojang Mappings and relevant API elements have been renamed accordingly. Besides a number of straight-forward adaptations (like World -> Level), this also meant that the core class of owo-ui (previously Component) had to be renamed to UIComponent to avoid a name collision with net.minecraft.network.chat.Component. Related classes follow suit, e.g. ParentComponent -> ParentUIComponent, Containers -> UIContainers.
Language Extensions
In addition to Rich Translations, owo-lib now supports nested language files which help to greatly reduce repetition in language keys. Additionally, to reduce conflict potential, all of owo's language extensions are now opt-in. Check out the relevant section of the docs.
JSON5 Support
The majority of JSON files in any data/resource pack can be converted to use JSON5 when owo-lib is configured to read and convert them to JSON on-the-fly. Once again, check out the docs.
braid UI framework
Due to unforeseen technical circumstances (I did not want to remap the entire library twice), this build includes an early pre-alpha version of the upcoming braid UI framework. While reasonably well-tested and somewhat mature feature-wise, we do not consider it ready for release and we make absolutely no guarantees about API stability.
If you want to try it out or toy around with it anyways, check out the getting started guide. We'd love to get some early feedback!
Fix issues with concurrency leading to missing packets for mods using owo networking
Fixes:
- missing AT entry for setTooltipForNextFrameInternal causing missing tooltips
Additions
- owo-ui components can use the new
inspectorDescriptorgetter to customize the text displayed below them when the inspector is active ReadViewandWriteViewhave new methods for getting/setting values in them using keyed Endecs
Fixes
ModDataLoadernow works properly in a development environment using split sources- The surface setter on
DropdownComponentnow correctly returns the dropdown
Fixes
- Labels with text that has an empty style no longer crash when clicked on
- Scissoring on draw contexts which have complex transforms should no longer incorrectly cut off content
Changes
- Ported to 1.21.9: Most features seem to work well from our limited testing, however full library coverage is not guaranteed. Please report any problems you find
- The
zIndexproperty of owo-ui components has been removed - it has been nonfunctional since 1.21.6
Add AT entry for simple map of DataComponentMap to resolve crashing
Attempt to resolve issues with client side loading of classes and methods leading to crashes
Fix issues with MergedComponentMapMixin At targets due to not being remapped
Changes
- (Breaking) Renamed
OwoItemGroup.getBackgroundTexturetogetOwoBackgroundTextureto avoid a naming conflict when developing in an environment with Mojang Mappings
Fixes
DerivedComponentMapshould play more nicely with other mods that manually check for component equality- owo-ui blur no longer flickers occasionally
- owo-ui scissoring no longer incorrectly stops rendering elements that are partially off-screen. This is most noticeable in scroll containers, like the one used in owo config
This release is primarily a port to 1.21.6/7. Due to the massive vanilla refactors around GUI rendering in particular, this is a larger-than-usual update and we expect there will be some bugs and porting mistakes - please report anything you find!
Changes
OwoBlurRendererhas been replaced withBlurQuadElementRenderStatein accordance with the vanilla GUI rendering changes
Removed
(Block|Entity|Item)RegistryContainerOwoItemSettings, replaced by interface injection onItem.SettingsDraggableContainer.alwaysOnTopCodecUtils.ofEndec, replaced bytoCodecConfigScreen.(registerProvider|getProvider|forEachProvider), replaced byConfigScreenProviders
Fixes:
- Issues where flashing occurred with owo blur renderer
- Incorrect scissoring behavior leading to non rendering gui elements particularly with scroll containers in owo configs.
- Proper fix for
DerivedComponentMapequality - Fix possible issues with Optional reading and writing within NBT losing references due to use of
IdentityHolder
Neoforge
Changes to how classes persist due to the removal of @OnlyIn could lead to issues but mostly taken care of.
Update attempts to remove dependency on FFAPI to resolve issues, fix missing owo item groups, and pull from upstream 1.21.1, and fix issues with optional serialization issues
This release is primarily a port to 1.21.6/7. Due to the massive vanilla refactors around GUI rendering in particular, this is a larger-than-usual update and we expect there will be some bugs and porting mistakes - please report anything you find!
Changes
OwoBlurRendererhas been replaced withBlurQuadElementRenderStatein accordance with the vanilla GUI rendering changes
Removed
(Block|Entity|Item)RegistryContainerOwoItemSettings, replaced by interface injection onItem.SettingsDraggableContainer.alwaysOnTopCodecUtils.ofEndec, replaced bytoCodecConfigScreen.(registerProvider|getProvider|forEachProvider), replaced byConfigScreenProviders
Initial port of owolib 0.12.21 for Neoforge
Fixes
- The blur pipeline now uses a custom vertex shader to avoid a random fog code dependency
OwoBlurRenderernow uses the depth buffer in its render pass to fix blur rendering issues on some drivers- owo no longer accidentally overwrites the vanilla
gui_texturedrender pipeline

