# IHiddenOverlayManager > Renders text and textures onto a capture-excluded overlay on the player's screen: the content is visible to the player but hidden from OBS-style screen recording/streaming. Ideal for passing a player information mid-recording that should not appear in the video (a code, a clue, a private instruction). `gg.lode.lecternapi.api.manager.IHiddenOverlayManager` --- ## Signature ```java public interface IHiddenOverlayManager ``` --- ## Notes Usage is fluent, build an element and call `Element.show()`: ```java LecternAPI.getApi().getHiddenOverlayManager() .text(player, "clue", "The code is 4821") .at(0, 20).align(HorizontalAlignment.CENTER, VerticalAlignment.TOP) .color(255, 215, 0).scale(2f) .fadeIn(400).duration(6000).fadeOut(600) .show(); ``` **Platform note:** capture exclusion is honored by OBS on Windows and macOS. On macOS 15+, full-display ScreenCaptureKit tools (e.g. CleanShot) capture the composited screen and will still see the overlay; on Windows it is hidden from all capture. The overlay is always visible to the player. --- ## Variants | Type | Description | |---|---| | `Element` | Common fluent options shared by text and texture elements. | | `HiddenText` | Fluent builder for a hidden text element. | | `HiddenTexture` | Fluent builder for a hidden texture element. | --- ## Methods ### text ```java HiddenText text(Player player, String reference, String text) ``` Begins a hidden text element. Plain strings render as-is; formatting is the bitmap font's ASCII set. | Parameter | Type | Description | |---|---|---| | `player` | `Player` | the target player | | `reference` | `String` | a unique id for this element (reuse to replace, pass to `hide`) | | `text` | `String` | the text content | --- ### texture ```java HiddenTexture texture(Player player, String reference, String textureId) ``` Begins a hidden texture element. | Parameter | Type | Description | |---|---|---| | `player` | `Player` | the target player | | `reference` | `String` | a unique id for this element | | `textureId` | `String` | the texture identifier (e.g. `"namespace:path"`) | --- ### hide ```java void hide(Player player, String reference) ``` Removes a hidden element by reference. | Parameter | Type | |---|---| | `player` | `Player` | | `reference` | `String` | --- ### hideAll ```java void hideAll(Player player) ``` Removes all hidden elements for the player. | Parameter | Type | |---|---| | `player` | `Player` | --- ## Example Put a clue on screen that the player can read but a stream cannot: ```java LecternAPI.getApi().getHiddenOverlayManager() .text(player, "clue", "The code is 4821") .at(0, 20) .align(HorizontalAlignment.CENTER, VerticalAlignment.TOP) .color(255, 215, 0) .fadeIn(400) .duration(6000) .fadeOut(600) .show(); ``` Nothing draws until `show()`. Each element has a reference you pick, so you can take it down early: ```java overlay.hide(player, "clue"); overlay.hideAll(player); ``` Read the platform note above before you rely on this for anything that matters. The exclusion holds for OBS-style capture, not for every screenshot tool on macOS. --- ## Related Pages - [[HorizontalAlignment]]. Left, centre, right - [[VerticalAlignment]]. Top, middle, bottom