# Lectern - v1.2.1
## Custom Skybox, Toast Lifecycle, Spear Gating
### API UPDATES
- **ISkyboxManager** — new. `showSkybox/removeSkybox/clearSkyboxes`. OptiFine-style 3:2 cube atlas with daytime fade window, blend mode, axis rotation.
- **IUIManager.removeToast** — explicit toast removal by id.
- **Toast** — record reshaped: `id`, `x/y` + alignment anchors, `bannerTexture` + `bodyTexture` overrides. Resending an id updates in place; far moves ease, close moves snap.
- **ImpactFrame** — record dropped; `triggerImpactFrame(player)` is arg-free.
### PLUGIN UPDATES
- **Custom Skybox effect** — server-driven OptiFine-style cube skybox. Fades by daytime ticks, rotates with the celestial bodies.
- **Toast lifecycle** — multi-toast by id with pop-in/out, position interpolation, alignment anchors. Anchored top-center by default.
- **Impact Frame rework** — single-fire 200ms freeze. Captures framebuffer, force-glows entities, runs a grayscale + quantized-contrast shader for the flat manga look.
- **Spear gating** — `spear_usage=false` blocks all four entry points: right-click charge, left-click stab, left-click block hit, piercing-weapon lunge. Detects via `#minecraft:spears` tag.
- **/lectern packet** — subcommands for `toast`, `impact_frame`, `explosion`, `skybox`.
### PLUGIN FIXES
- **`/lectern version` showed `${VERSION}`** — moved to a Maven-filtered resource loaded at static init.
- **Explosion shockwave one-sided** — flat ring now renders both faces.
- **Debug log noise** — dropped pre-handshake warns, per-effect setActive prints, and dev-only stdout spam.
### INTERNAL UPDATES
- Bumped **Lectern-API** + **Lectern-Impl** to `1.2.1`.