Strata 0.3.0 for Minecraft 26.2
Curse Maven Snippet
What's new
Strata 0.3.0
Strata 0.3.0 adds Fabric server-owned screens and HUDs, shared browser editors and resource presentation, adopts Fabric API for networking and lifecycle integration, and unifies the platform entry-point names as Strata.
Keep all Strata artifacts on version 0.3.0 and install the Fabric runtime for the exact Minecraft version.
Platform entry points
Replace the old Paper and Velocity imports and rebuild consuming plugins; the removed classes are a source and binary compatibility change. The operations and execution ownership of those two APIs remain the same.
| Platform | Previous entry point | 0.3.0 entry point |
|---|---|---|
| Paper / Folia | dev.s7a.strata.paper.PaperUi |
dev.s7a.strata.paper.Strata |
| Velocity | dev.s7a.strata.velocity.VelocityUi |
dev.s7a.strata.velocity.Strata |
| Fabric server | No public server UI entry point | dev.s7a.strata.runtime.minecraft.fabric.Strata |
For example, change PaperUi.open(ownerPlugin, player) { ... } to Strata.open(ownerPlugin, player) { ... } after importing the Paper entry point.
Import aliases distinguish platform entry points in a source file that uses more than one.
The common UiDefinition, UiSession, DSL, and definition-opening extensions remain available.
Fabric server UI
The same exact-version Strata Mod can run on a physical client, a dedicated Fabric server, or an integrated singleplayer/LAN server.
A consuming server Mod supplies its ModContainer and the connected ServerPlayer to Strata.open on the native server thread.
The server owns definitions, state, and callbacks; the installed client handles layout, rendering, and immediate input.
The public API includes capabilities, owner-scoped projection registration and release, and typed StrataUiEvent notifications.
Register extensions and listeners after ServerLifecycleEvents.SERVER_STARTED, and open interfaces after client readiness.
Native container replacement retires ordinary remote Screens and container-bound HUDs; independent HUDs stay open.
Server shutdown releases all services and owners.
See the Fabric server guide for the compiled example and ownership contract.
Fabric API migration
Install Fabric API and Fabric Language Kotlin separately alongside Strata on every participating client and Fabric server. Fabric API is now required by the production runtime; previous client releases did not require it. Paper and Velocity servers still use their corresponding Strata plugins, while their clients also need Fabric API.
Client and server payload registration and receiving now use Fabric networking APIs. Client ticking, play connection lifetime, shutdown, and HUD registration use the matching official Fabric APIs for each supported Minecraft version. The private networking, tick, and HUD Mixins are removed. Native input observation, container transitions, and GPU lifetime hooks remain where they require a game integration boundary.
A Fabric play disconnect now closes remote UI and clears receive queues even when the underlying socket continues through configuration. Previously, the client tracked the socket and suspended processing outside play. The next play join negotiates a fresh generation; applications reopen UI after readiness. HUD ordering with other Mods now follows the supported Fabric callback, layer, or registry API for that Minecraft version.
Modrinth describes the client runtime as required and the server runtime as optional because client-owned UIs work without a Strata server. Using Fabric server-owned UIs requires the matching runtime and dependencies at both ends.
Modifier chains
Start modifier chains with Modifier.size(...), Modifier.padding(...), or any custom Modifier extension.
The Modifier companion object implements the empty chain, so a conditional can use if (enabled) Modifier.size(100, 40) else Modifier.
Parent-layout modifiers retain their existing scope restrictions.
Modifier is now an interface with an internal implementation for non-empty chains.
Recompile consumers against 0.3.0 and update all Strata artifacts together; compiled calls against the previous class are not binary compatible.
Chain order, read-only snapshots, value comparison, and retained component identity remain unchanged.
Text foreground and shadow
TextStyle is now an immutable value with independent foreground, shadow, and disabled-editor colors.
The four existing preset expressions remain available; for example, TextStyle.Inactive.copy(shadow = null) keeps muted text and removes its shadow.
Recompile consumers and replace enum-specific APIs and exhaustive enum branches with application-owned choices or direct style properties.
This is a source and binary compatibility change for consumers of the previous enum.
Text, TextField, and TextArea remote schemas also advance, so both endpoints must use matching Strata versions.
See the text guide for the color contract and compiled example, and the migration details for affected enum operations.
Shared browser UI
Common Kotlin definitions can now retain native browser TextField and TextArea editors, scroll and virtualized content, portable image drawing, nine-slice backgrounds, player heads and tiled map navigation. Matching keyed updates and resize preserve the editing element, selection and composition; touch swipes and pinches use the shared navigation protocol without activating rows while scrolling. Controls composed with common semantics and input modifiers expose accessible names, native focus and keyboard activation while retaining their logical identity and paint order. Chromium, Firefox and WebKit acceptance distinguishes automated composition and touch emulation from manual OS input-method and physical-device testing.
Use strata-api-multiplatform in common sources and strata-runtime-web in browser sources, with the same Strata version throughout the application.
Prepare images, browser fonts and optional skin sources through WebUiResources before mounting the shared definition.
Minecraft pack JSON, bitmap and Unihex fonts require an application-owned asset conversion pipeline; browser-native font loading does not perform that conversion.
See the browser guide for resource ownership, input behavior and capability boundaries.
Deprecations
Modifier.Empty is deprecated in 0.3.0 with a warning and an IDE replacement of Modifier.
It remains an alias for the same empty object until its scheduled removal in 1.0.0.
All other currently deprecated public APIs are also scheduled for removal in 1.0.0.
See the deprecation list for versions, replacements, and migration examples.
All Relations
- All Relations
- Embedded Library
- Optional Dependency
- Required Dependency
- Tool
- Incompatible
- Include

