Dialogue, Subtitles & Interactive Choices
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.
SkCine dialogue should support localized cinematic storytelling written directly in .sk files. UI presentation is permitted; it is not a GUI editor.
Speaker and subtitle
add cine dialogue "<gold>Guardian:</gold> Who enters my realm?" at 1 second to {_scene}
set cine dialogue mode of {_scene} to "subtitle"
set cine dialogue typing speed of {_scene} to 4
The typing-speed unit must be explicitly defined in the implementation (e.g. chars per tick), with caps to avoid packet floods. Never treat formatting bytes as visible characters in typewriter calculations.
Modes
| Mode | Pros | Caveats |
|---|---|---|
| Chat | High compatibility | Chat history stays |
| Title/subtitle | Cinematic and readable | Display limits; must respect title timing |
| Action bar | Compact | Overwrites other action bar sources temporarily |
| Boss bar | Stable progress/message | Requires ownership-aware cleanup |
| Text display | In-world dialogue | Visibility and distance constraints |
| Choice inventory | Clear interactive choices | Inventory is for playing dialogue, not authoring scenes |
Branching decisions
add cine choice "accept" named "Accept the quest" to {_scene} at 3 seconds
add cine choice "decline" named "Leave" to {_scene} at 3 seconds
on cine choice:
if event-cine-choice-id is "accept":
send "Quest accepted!" to event-player
Callback contract: event values are only valid inside their declared event scopes; verify native parse types. For rewards, use your own authoritative Skript logic and make it idempotent.
Localisation and placeholders
Support audience-specific rendered text, explicit locale/fallback values, and safe placeholder interpolation. Prefer Adventure MiniMessage with escaping for untrusted text, not raw insertion of arbitrary player input.
Timeout policies
Choices need duration, default selection, close/cancel behavior and reconnect policy. A timed-out choice should send a distinct event reason; it must not arbitrarily choose accept for economy-sensitive actions.