# ICutsceneManager > Manages cutscene playback for players running the Lectern client. `gg.lode.lecternapi.api.manager.ICutsceneManager` --- ## Signature ```java public interface ICutsceneManager ``` --- ## Overview ICutsceneManager provides control over scripted cutscene sequences. Cutscenes can include camera movement along paths, HUD overlays, screen effects, audio, and server-side callbacks at specific points in time. Use the [[Cutscene]] builder to create cutscene definitions, then play them via this manager. --- ## Methods ### play ```java void play(Player player, Cutscene cutscene) ``` Starts playing a cutscene for the target player. If a cutscene is already playing, it is stopped first. | Parameter | Type | Description | |---|---|---| | `player` | `Player` | The target player. | | `cutscene` | `Cutscene` | The cutscene definition to play. | --- ### playFile ```java void playFile(Player player, String fileName) ``` Plays a cutscene from a JSON file stored in the Lectern plugin's `cutscenes/` folder. The `.json` extension is appended automatically if missing. | Parameter | Type | Description | |---|---|---| | `player` | `Player` | The target player. | | `fileName` | `String` | The JSON file name (e.g. `"intro.json"`). | **Throws:** `IllegalArgumentException` if the file does not exist or cannot be parsed. --- ### pause ```java void pause(Player player) ``` Pauses the currently playing cutscene. The cutscene remains at its current tick and can be resumed. | Parameter | Type | Description | |---|---|---| | `player` | `Player` | The target player. | --- ### resume ```java void resume(Player player) ``` Resumes a paused cutscene from where it left off. | Parameter | Type | Description | |---|---|---| | `player` | `Player` | The target player. | --- ### stop ```java void stop(Player player) ``` Stops the currently playing cutscene and clears all cutscene state. | Parameter | Type | Description | |---|---|---| | `player` | `Player` | The target player. | --- ### seekTo ```java void seekTo(Player player, int tick) ``` Jumps the cutscene to a specific tick. Can be used during playback or while paused. | Parameter | Type | Description | |---|---|---| | `player` | `Player` | The target player. | | `tick` | `int` | The tick to seek to. | --- ### isPlaying ```java boolean isPlaying(Player player) ``` Checks if a cutscene is currently playing (not paused) for the target player. | Parameter | Type | Description | |---|---|---| | `player` | `Player` | The target player. | **Returns:** `true` if a cutscene is actively playing. --- ### getActiveCutsceneId ```java @Nullable String getActiveCutsceneId(Player player) ``` Gets the ID of the currently active cutscene, if any. | Parameter | Type | Description | |---|---|---| | `player` | `Player` | The target player. | **Returns:** The cutscene ID, or `null` if no cutscene is active. --- ## Example ```java ILecternAPI api = LecternAPI.getApi(); Player player = /* ... */; Cutscene intro = Cutscene.builder("intro") .at(0) .letterbox(true) .hideHud(true) .setCamera(100, 70, 200, 0, -10, 0) .cameraPath(path -> path .waypoint(Vec.of(100, 70, 200), 0, -10, 0, 0) .waypoint(Vec.of(120, 75, 220), 15, -5, 0, 60) .interpolation(CameraInterpolation.CATMULL_ROM)) .then(20) .showText("title", "<gold>Welcome</gold>", MenuTransform.at(0, 0).centered(), 3.0f) .then(60) .hideText("title") .callback(() -> player.sendMessage("Intro complete!")) .then(20) .letterbox(false) .hideHud(false) .releaseCamera() .onComplete(() -> player.teleport(spawnLocation)) .build(); api.getCutsceneManager().play(player, intro); ``` --- ## Related Pages - [[ILecternAPI]] — Access via `getCutsceneManager()` - [[Cutscene]] — Cutscene builder and definition - [[CutsceneCallbackEvent]] — Server-side callback event - [[CutsceneCompleteEvent]] — Cutscene completion event