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

49 lines
2.6 KiB
Markdown

# 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](architecture.md#deleted-dead-code).
## 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**: `mouseClickListeners`
`listeners.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.