oωo (owo-lib)

oωo (owo-lib)


A general utility, GUI and config library for modding on Fabric and Quilt

Client or server Library

Created2 years ago
Updated2 months ago

[1.19.3] oωo - 0.10.0




  • The new ColorPickerComponent presents an easy-to-use, self-contained way to choose a color. It visually presents a standard HSV picker, with a hue (and optionally alpha) slider and picker for value and saturation. The picker itself shows neither a color preview nor hex field - these can easily be added externally via the color selection event stream supplied by the picker
  • UI overlays like popup dialogs can now be easily realized via the new OverlayContainer, accessible via Containers.overlay(...). This component, when added to some parent (in most cases the root), renders an overlay covering the entire parent and places its child in the center. By default, it automatically closes itself when a click event is received outside the child
  • ItemComponent features the new tooltipFromItem utility method, which can be used to gather the full tooltip of an item stack, including extra tooltip data
  • Rendering of nametags in EntityComponent can now be toggled on a per-component basis
  • The new openAsContextMenu function on DropdownComponent enables easy integration of context menus into any screen
  • Animations on component properties now provide the finished() event stream which emits every time the animation finishes a full run in either direction
  • RenderEffectWrapper, accessible via Containers.renderEffect offers a hassle-free way to apply arbitrary rendering effects to its children. Check out the component's javadoc for a more complete overview


  • owo-ui's Color type is now supported in configs. This means it will be properly serialized as a string representing the color in #AARRGGBB format and displayed that way in the config screen. With this also comes an optional color picker, allowing your users to easily pick a color (optionally with alpha as well)
  • The Jankson serializer instance used by any given config wrapper can now be customized through the new, optional constructor parameter. This enables non-standard serialization of existing types and also allows serializing completely custom types
  • The @RangeConstraint annotation has gained the new decimalPlaces parameter which controls how many decimal places are shown when this option is edited as a slider


The Drawer class has gained a few new rendering functions to fill in missing functionality:

  • drawCircle and drawRing can be used to draw either a filled circle or ring with specific inner and outer radius respectively
  • drawLine draws an arbitrary line as a quad instead of using OpenGL's line mode, which allows more correct control over thickness

Additionally, the new GlProgram class and corresponding infrastructure enables usage of custom core shaders from mod namespaces. Two default programs are provided, although they are not currently part of stable public API:

  • OwoClient.BLUR_PROGRAM applies an approximate gaussian blur to the area it draws over
  • OwoClient.HSV_PROGRAM works much the same as the standard position-color program, but accepts the color attribute in HSVA format instead of RGBA



  • The HSV interface of Color has been improved: Constructing a color with a hue of 1 no longer causes it to become yellow instead of red and the new hsv() getter can be used to convert from RGB to HSV easily
  • The REI exclusion zone provider now gathers the components directly from the UI adapter instead of simply assuming that it's available as the first drawable child of the screen - this should fix some edge cases in which the exclusion zones were broken due to a different widget somehow being inserted into the screen before the UI adapter
  • The RenderablePlayerEntity inner class of EntityComponent is now publically accessible - this makes it easier to call methods on such entities and allows easily extending the class if so desired
  • DropdownComponent.requiresHover has been renamed to closeWhenNotHovered to more clearly communicate its purpose. The entire dropdown system has been slightly overhauled in general to be more visually pleasing and easier to use


  • OptionComponentFactory.Result now features two type parameters to more cleanly carry information about the contained components
  • All numeric, range-constrained config options can now be edited with either a slider or text field, at the discretion of the user



  • Sprite components with ticked sprites should now properly animate with Sodium's "Only animate visible textures" option enabled (BasiqueEvangelist, #78)
  • When cycling UI component focus with the Tab key, the first component no longer get skipped and the children of a grid layout are no longer focused in reverse order (#77)
  • Fire and the nametags of entities are now properly aligned in EntityComponent
  • Buttons and checkboxes in dropdown can now be properly clicked on the entire width of the dropdown
  • Layers now handle event parameters in a different way that works around a memory present in Fabric API's event system. This previously caused owo screen instances to be leaked, which is no longer the case (#81)


  • Items from OwoItemGroup sub-tabs which are not the first one are now properly indexed for search in the creative inventory
  • owo-sentinel now one again has full functionality when running on the Quilt Loader


owo-lib-0.10.0+1.19.3.jar(820.65 KiB) Primary Download

External resources

Project members





Technical information

Client side
Server side
Project ID