Changes
- The slot management methods on
BaseOwoHandledScreen
now have overloads which directly accept a slot instance instead of just and ID - The Z-Offset of the inspector can now be customized in OwoUIAdapter
- The new ReiUIAdapter#wrap(WidgetWithBounds) allows embedding most if not all of REI's existing Widgets in an owo-ui-based REI display category
Fixes
- Mouse coordinates are now passed with proper offsets when propagating mouse events to the focused component
Changes
- Texture components have a new property -
blend
. When this is enabled, OpenGL alpha blending is properly set up and you can use translucent textures - All synced config options are now synced in
INFORM_SERVER
fashion even when playing singleplayer
Fixes
- The client-only
renderdoc
command is no longer registered on the server, allowing you to start servers with owo in debug mode again - The
visible-area
declaration in the UI Model XML schema no longer requires all values to be specified - The intersection comparisons used for mouse events and component visibility checks no longer over-account by one pixel
- String config options can now contain backslashes (#59)
Changes
Component customization
- Button rendering can now be completely customized, with a new flat renderer available among the defaults. This also means
TexturedButtonComponent
is now deprecated and superseded by thetexture
button renderer - Scrollbar rendering is now fully customizable as well. By default, this includes the two types of vanilla scrollbar used in game menus and the creative inventory screen as well as the default flat owo-ui scrollbar. Scroll containers can now also define an increment by which they are scrolled and the length of the scrollbar can be set to a fixed value
- owo-ui now features the
NinePatchRenderer
utility, which can draw a nine-patch style texture in both tiled and stretched mode with next to no performance impact. This is used to enable the new scrollbar rendering and also allows buttons to scale to arbitrary sizes, contrary to the vanilla implementation. As it is also used to draw the panel surface, performance on all screens that use panels should be improved
RenderDoc integration
When RenderDoc is injected into a game instance with owo installed, you can now take advantage of comprehensive bindings to RenderDoc API. In-game this enables the new /renderdoc
client command which opens a screen that lets you configure the RenderDoc overlay as well as take captures and launch the Replay UI. Additionally, when in an owo screen, CTRL+ALT+R can create a capture of only the draw calls relevant to screen - check out the docs over at https://docs.wispforest.io/owo/renderdoc/
Fixes
owo-ui
- Scroll containers now properly account for their child's margins and mount it with the current scroll position already applied
- Named text colors no longer need to be intentionally misspelled to get parsed properly
- The inspector can no longer go offscreen
- Vanilla widgets now properly propagate the focus events
- Component visiblity is now checked with the model view transform applied
- Labels no longer cause unnecessary state updates
- Tooltips now properly respect overflow clipping and component visibility
- Checkboxes now properly emit all checked/unchecked events
Other
@Nest
config entries can now have the same name as their class (#52)- sentinel now always runs in console-mode on macOS (#51)
Changes
- The biggest change in this release is the addition of the SlotComponent, a simple wrapper for handled screen slots. You can obtain the instance for a given slot via the
slotAsComponent(int)
method onBaseOwoHandledScreen
. It will then always move the linked slot to where the component gets placed by the layout and apply clipping properly - Config wrappers now create the full file path of a config - this allows properly grouping multiple configs in a directory
Fixes
- The Modrinth item group icon now matches current branding
- Status effects in the creative inventory now properly shift when there are item group buttons in the way
- Pressing tab in an owo item group with buttons or tabs no longer renders a tooltip whereever the cursor is
The 0.8 Update
This release marks the first public beta of owo-lib 0.8, the UI and Config update. As that name suggests the primary new features in this release are the owo-ui GUI framework and the owo-config configuration and screen generation library. You can find their respective documentation here:
- owo-ui: https://docs.wispforest.io/owo/ui/
- owo-config: https://docs.wispforest.io/owo/config/
Both of these additions are highly complex and introduce potential bugs. There has been extensive testing to try and ensure a smooth start, but of course we cannot guarantee that everything has been squashed. So while we consider it more than safe enough to use, keep this in mind and please report any bugs you may find.
Other changes
There have also been a number of smaller refactors and new deprecations across the entire library, notably ScreenUtils#generatePlayerSlots has been deprecated and replaced with the more flexible and powerful SlotGenerator utility. owo-sentinel has finally been fixed to work properly in 1.19 environments and the rich translations feature is now fully compatible with Server Translations API.
Another small new feature, courtesy of Blodhgarm, is the Recipe-specific Remainders API which, as the name suggests, enables recipe remainders to be defined and applied on a per-recipe level instead of globally.
Deprecated APIs
As this is a large release, the majority if not all previously deprecated APIs have been stripped and/or partly refactored. The majority of mods should be fine, although if you haven't updated in a while there's potential you need to fix some things.
Changes
- /heal and /damage now report the effective HP change
- Argument order in VectorSerializer now matches convention, store and storef have been renamed to put and putf
- sentinel is now intialized in a mixin plugin
- owo.text has been added - an experimental, currently undocumented API for making custom TextContent types
Fixes
- Copenhagen now uses a ThreadLocal map to avoid concurrency issues in worldgen
- WorldOps.teleportToDimension no longer swaps yaw and pitch
Headless environment support for sentinel, updated TagInjector framework, fix compatibility with Quilt Loader, add RegistryAccess, allow ClientParticles to randomize velocity on only one axis, deprecate @ElementType and @MapTypes, relocate RegistryHelper creation, add deferred packet and particle system handlers, add dispatched and polymorphic packet serializer framework, freeze particle systems