lattice/docs/migration.md
2026-07-10 01:43:19 -04:00

2.6 KiB

Migrating from Knit / Vexel

Lattice replaces both libraries with one dependency. Remove knit and vexel from your build and fabric.mod.json, add lattice, then apply the mappings below. Behavior is preserved unless noted in architecture.md.

API mapping

Before After
Knit.EventBus / Vexel.eventBus Lattice.eventBus
VexelScreen + KnitScreen ui.UIScreen
VexelElement ui.Element
VexelWindow ui.Window
components.core.* (Container, Rectangle, Text, SvgImage, Tooltip) ui.component.*
elements.* (Button, Slider, …) ui.widget.*
components.base.enums.* (Pos, Size, Alignment, Offset) ui.*
animations.* (extensions, presets, EasingType) animation.*
api.RenderAPI / api.nvg.NVGRenderer render.Renderer / render.NVGRenderer
api.style.{Color, Font, Gradient, Image} render.*
GuiEvent.Render event.RenderEvent.Gui
KnitClient client.Client (client property is now minecraft)
KnitPlayer / KnitChat / KnitClipboard / KnitDesktop / KnitLoader client.Player / Chat / Clipboard / Desktop / Loader
KnitKeys / KnitMouse / KnitKeyboard / KnitInputs input.Keys / Mouse / Keyboard / Inputs
KnitKey / KnitMouseButton / KnitInputCode input.Key / MouseButton / InputCode
KnitResolution render.Resolution
KnitText / text.asKnit() text.Texts / asBuilder()
api.command.* (Commodore) command.* (unchanged API)
api.utils.{NumberUtils, StringUtils} util.*
TickScheduler.Client.x TickScheduler.x (now actually ticks)

Behavioral changes

  • One event bus. Anything registered on Vexel's bus moves to Lattice.eventBus. EventBus.post no longer takes checkHierarchy — subscribe to concrete event classes.
  • Renderer takes Int ARGB only: dropShadow and createImage no longer accept java.awt.Color; createImage lost its unused id parameter.
  • Element listener aliases removed: mouseClickListenerslisteners.mouseClick (the fluent onClick-style methods are unchanged).
  • Removed as dead code: WorldRenderEvent/RenderContext (were no-op stubs), TickEvent.Server, the server tick scheduler, timer API on TickScheduler, scrollbarIgnorePadding/scrollbarCustomPadding (use scrollbarPadding).
  • Assets: assets/vexel/* (default font, checkmark, dropdown icons) are now assets/lattice/*.
  • Widget palette now flows through ui.theme.Theme; values are unchanged, but you can retheme globally.