# 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