Animating Block, Item & Text Displays
API status — PROPOSED, NOT IMPLEMENTED. SkCine is currently a design specification in this conversation; no built SkCine.jar or syntax registry was supplied. All SkCine-specific examples are intended API contracts, not verified runnable
.sk. Do not advertise these as tested until each example passes a real Skript reload and runtime test.
Minecraft display entities are designed for client-interpolated visual transforms. SkCine should expose their useful properties through readable Skript syntax rather than requiring raw matrices for every animation.
Display target types
block display: block material/data, transform, brightness, billboard where supported.item display: item stack, transform, display context, rotation.text display: Adventure component, opacity/background, alignment, line width where supported.
Intended Skript example
set {_item} to new cine display actor from {_display}
set cine scale of {_item} to vector(0.5, 0.5, 0.5)
animate cine scale of {_item} to vector(1.6, 1.6, 1.6) over 30 ticks using "ease-out-back"
animate cine rotation of {_item} by 360 degrees over 4 seconds
Scene-relative groups
set {_group} to new cine display group named "loot"
add {_itemA} to cine display group {_group}
add {_itemB} to cine display group {_group}
set cine pivot of {_group} to {_center}
animate cine group {_group} to {_target} over 2 seconds
Implementation contract: local and world transform spaces must be unambiguous. Scale should not change unintended translations; pivot rotation and child transforms must compose consistently.
Constraints
- Display teleport interpolation 0–59 ticks on Paper 1.21.11; longer animations require intermediate updates or transformation interpolation. Paper Javadoc.
- Changing native display properties from unrelated plugins can conflict; use an ownership policy.
- Text fading and alpha need version/capability checks.
- Minecraft clients do not support arbitrary server-injected postprocessing.
Performance
Use server-side animation scheduling with client-side interpolation where possible. Cache group membership and object transforms; avoid per-viewer physical display duplication unless the backend truly needs it.