Custom Types & Object Lifetimes
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.
| Type | Lifetime | Mutable? | Stores |
|---|---|---|---|
cinescene |
Owned by source script until unload | Build-time only | Blueprint, tracks, cues |
cineinstance |
One playback | Runtime state | Clock, audience, instance variables |
cinecamera |
Definition or scoped rig | Build-time and controlled runtime | Mode, path, focus |
cinekeyframe |
Parent track | Construction time | Timestamp, value, easing |
cinetimeline |
Scene definition | Construction time | Tracks, cue ordering |
cinetrack |
Timeline | Construction time | Typed evaluated items |
cineactor |
Instance/scene | Explicit ownership | Entity handle, path, visibility |
cinedisplay |
Instance or wrapper | Explicit ownership | Display transform |
cinedisplaygroup |
Parent scene | Build-time | Child transform references |
cineemitter |
Definition/instance | Configurable | Shape and budgets |
cinechoice |
Dialogue event | Scoped to choice | ID, label, timeout |
cineaudience |
Instance | Dynamic policy | Set of viewers |
cineeffect |
Registry | Immutable | Named preset |
Persistence
Skript global variables can outlive a script reload, but live Java handles are not reliable persistent save values. Prefer persistent string IDs and primitives; reconstruct scene definitions from .sk scripts. The addon should warn or refuse invalid serialization of a cineinstance.
Ownership examples
# Definition — reused by multiple viewers
set {_scene} to cine scene named "demo:welcome"
# Instance — unique runtime control handle
set {_playback} to play cine scene {_scene} for player
# Stop this specific playback
stop cine scene {_playback}
Implementation acceptance
Every custom type must define parser registration, expression type metadata, display string, equality/identity, safe invalidation and serialization policy. Never assume Skript will serialize arbitrary Kotlin instance objects safely.