A general utility, GUI and config library for modding on Fabric and Quilt
Features include:
-
owo-ui, a fully-featured declarative UI library for building dynamic, beautiful screens with blazingly fast development times
-
owo-config, a built-in, customizable configuration system built on top of owo-ui. It provides many of the same features as Cloth Config while many new conveniences, like server-client config synchronization, added on top
-
A fully automatic registration system that is designed to be as generic as possible. It is simple and non-verbose to use for basic registries, yet the underlying API tree is flexible and can also be used for many custom registration solutions
-
Item Group extensions which allow for sub-tabs inside your mod's group as well as a host of other features like custom buttons, textures and item variant handling
-
A fully-featured networking layer with fully automatic serialization, handshaking to ensure client compatibility and a built-in solution for triggering parametrized particle events in a side-agnostic manner
-
Client-sided particle helpers that allow for easily composing multi-particle effects
-
Rich text translations, allowing you to use Minecraft's text component format in your language files to provide styled text without any code
owo is documented in two main ways:
- There is rich, detailed JavaDoc throughout the entire codebase
- There is a wiki with in-depth explanations and tutorials for most of owo's features over at https://docs.wispforest.io/owo/features
All Versions
+ Add Version| Name | Game version | Platforms | Published | Downloads | Actions |
|---|---|---|---|---|---|
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 |
- The game no longer crashes when running with REI, and the REI integration of the library mostly works again
- Resolve [crash](https://github.com/wisp-forest/owo-lib/issues/480) with translation arg unpacker passing a null value instead of empty array
## Additions
BaseOwoContainerScreenhas gained a secondary constructor which allows specifying the texture width and height, since they're now final
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.
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](https://docs.wispforest.io/owo/data-extensions/nested-lang).
## 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](https://docs.wispforest.io/owo/data-extensions/json5).
## 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](https://docs.wispforest.io/braid/getting-started). We'd love to get some early feedback!
- missing AT entry for setTooltipForNextFrameInternal causing missing tooltips
- 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
- 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
- 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
- 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
- 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
- (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
## 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. ## 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
- 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
- Fixed the optional flattening implementation introduced in the last build
- Decoding of sequence elements in NBT has been made idempotent
- Updated to 1.21.5
- As a consequence of the changes to Minecraft's rendering backend, the
GlProgramAPI has been removed since it is no longer necessary - As a further consequence of the above change, owo's built-in programs have changed API:
OwoClient.HSV_PROGRAMhas been superseded byOwoUIPipelines.GUI_HSVOwoClient.BLUR_PROGRAMhas been replaced with theOwoBlurRenderer, which uses the same shader and parameters under the hood
- Backport optional flattening fixes from 0.12.17
- Fix issues with errors relating to texture identifier being null
- Fix issue involved with ModDataLoader on Connector not being able to get any mod list
- Aggressively specialize lists generated by NbtSerializer.Sequence to fix deserialization of types like UUID which expect a specialized NBT array type (#363, Blodhgarm)
- Aggressively specialize lists generated by
NbtSerializer.Sequenceto fix deserialization of types likeUUIDwhich expect a specialized NBT array type (#363, Blodhgarm)