# ICameraManager
> Manages camera effects for players running the Lectern client.
`gg.lode.lecternapi.api.manager.ICameraManager`
---
## Signature
```java
public interface ICameraManager
```
---
## Methods
### moveCamera
```java
void moveCamera(Player player, Vector position, float yaw, float pitch, float roll)
```
Moves the player's camera to a specific position and rotation.
| Parameter | Type | Description |
|---|---|---|
| `player` | `Player` | The target player. |
| `position` | `Vector` | The world position to move the camera to. |
| `yaw` | `float` | The camera yaw rotation. |
| `pitch` | `float` | The camera pitch rotation. |
| `roll` | `float` | The camera roll rotation. |
---
### stopCamera
```java
void stopCamera(Player player)
```
Stops the camera override and returns control to the player.
| Parameter | Type | Description |
|---|---|---|
| `player` | `Player` | The target player. |
---
### setFov
```java
void setFov(Player player, float fov)
```
Sets the player's field of view modifier.
| Parameter | Type | Description |
|---|---|---|
| `player` | `Player` | The target player. |
| `fov` | `float` | The FOV value. |
---
### resetFov
```java
void resetFov(Player player)
```
Resets the player's field of view to default.
| Parameter | Type | Description |
|---|---|---|
| `player` | `Player` | The target player. |
---
### screenshake
```java
void screenshake(Player player, int durationTicks, float intensity)
```
Starts a screen shake effect on the player.
| Parameter | Type | Description |
|---|---|---|
| `player` | `Player` | The target player. |
| `durationTicks` | `int` | The duration in ticks. |
| `intensity` | `float` | The shake intensity. |
---
### stopScreenshake
```java
void stopScreenshake(Player player)
```
Stops any active screen shake on the player.
| Parameter | Type | Description |
|---|---|---|
| `player` | `Player` | The target player. |
---
### setSmoothCamera
```java
void setSmoothCamera(Player player, boolean enabled)
```
Enables or disables smooth camera movement on the player.
| Parameter | Type | Description |
|---|---|---|
| `player` | `Player` | The target player. |
| `enabled` | `boolean` | `true` to enable smooth camera. |
---
### setForceThirdPerson
```java
void setForceThirdPerson(Player player, boolean enabled)
```
Forces the player into third-person camera mode.
| Parameter | Type | Description |
|---|---|---|
| `player` | `Player` | The target player. |
| `enabled` | `boolean` | `true` to force third-person. |
---
### setForceShoulderSurf
```java
void setForceShoulderSurf(Player player, boolean enabled)
```
Forces the player into shoulder surfing camera mode.
| Parameter | Type | Description |
|---|---|---|
| `player` | `Player` | The target player. |
| `enabled` | `boolean` | `true` to force shoulder surfing. |
---
### setBodyFollowCam
```java
void setBodyFollowCam(Player player, boolean enabled)
```
Enables or disables the body-follow-camera effect where the player's body rotation follows the camera direction.
| Parameter | Type | Description |
|---|---|---|
| `player` | `Player` | The target player. |
| `enabled` | `boolean` | `true` to enable body follow cam. |
---
### setPerspective
```java
void setPerspective(Player player, Perspective perspective)
```
Pins the player's camera to a perspective and holds it there.
A lock, not a nudge: the client re-asserts it every frame, so nothing the player or another
effect does moves the camera off it until `resetPerspective(Player)`. Locking to
`Perspective.FIRST_PERSON` is therefore a real thing to ask for, it is how a menu or a
cutscene keeps somebody who pressed F5 from looking at their own back.
`Perspective.THIRD_PERSON_FRONT` needs a client on the version that added this; an
older one falls back to first person rather than to a view nobody asked for.
| Parameter | Type | Description |
|---|---|---|
| `player` | `Player` | the target player |
| `perspective` | `Perspective` | the view to hold, never null |
---
### resetPerspective
```java
void resetPerspective(Player player)
```
Releases a `Perspective)` lock and hands F5 back.
| Parameter | Type |
|---|---|
| `player` | `Player` |
---
### setZoom
```java
void setZoom(Player player, boolean enabled)
```
Forces zoom on or off for the player. When forced on, the client behaves
as if the zoom keybind is held until forced off.
| Parameter | Type | Description |
|---|---|---|
| `player` | `Player` | the target player |
| `enabled` | `boolean` | true to force zoom on, false to release |
---
### setUnlockedCamera
```java
void setUnlockedCamera(Player player, boolean enabled)
void setUnlockedCamera(Player player, boolean enabled, boolean invertMouse, boolean invertMovement, boolean invertMovementSwimming)
```
Removes the ±90° pitch clamp on the player's camera, letting it keep
rotating past straight up or straight down and come out upside down behind them.
Uses the sensible defaults for the compensations: inverted mouse look while upside
down, normal walk direction, inverted walk direction while swimming.
Removes the ±90° pitch clamp on the player's camera, with control over the
compensations applied once the view passes vertical.
Past vertical the camera faces opposite the player's yaw, so mouse look, walk
direction and the sprint-jump impulse all read as mirrored. Each switch below undoes
that for one of them; turn them off if you want the raw, disorienting behaviour.
---
### setVerityCam
```java
void setVerityCam(Player player, UUID holder)
void setVerityCam(Player player, UUID holder, boolean offHand, boolean requireHeldItem, boolean lookAtHolder, float forward, float side, float up, float yawOffset, float pitchOffset)
```
Puts the viewer's camera behind Verity's face while it's being carried, the held
ball's point of view, looking back up at whoever picked it up.
Engages by itself once the holder has a Verity-tagged item in their main hand, and
releases when they put it away, so it can be armed ahead of the moment it's needed.
Puts the viewer's camera behind Verity's face, with full control over where the ball
sits and where it aims.
The viewer and the holder are independent, the camera is placed entirely on the
viewing client, so one player can be put behind the ball in another player's hand.
Hand offsets are relative to the holder's eyes and rotate with them: `forward`
out along their look, `side` to their right (negated for the off hand),
`up` vertically. The defaults approximate where a held item renders; raise
`forward` to pull the camera away from the holder's face.
---
### stopVerityCam
```java
void stopVerityCam(Player player)
```
Returns the viewer's camera to normal.
| Parameter | Type |
|---|---|
| `player` | `Player` |
---
## Related Pages
- [[ILecternAPI]]. Access via `getCameraManager()`