# ISharedControlManager
> Shared control sessions: splits a host player's input across other players. Each of the seven control aspects can be handed to a controller, whose inputs stream to the host's client while the host's own inputs for that aspect are suppressed. Assignments are additive — one controller can hold several aspects.
`gg.lode.lecternapi.api.manager.ISharedControlManager`
---
## Signature
```java
public interface ISharedControlManager
```
---
## Enums
### Aspect
```java
ISharedControlManager.Aspect
```
| Value | Description |
|---|---|
| `MOVE` | Walking (WASD). |
| `JUMP` | Jumping. |
| `SNEAK` | Sneaking. |
| `LOOK` | Camera / mouse look. |
| `ATTACK` | Attacking and breaking blocks. |
| `USE` | Using items and placing blocks. |
| `CRAFT` | Crafting and inventory access. |
---
## Methods
### start
```java
boolean start(Player host)
```
Starts a shared control session on the host. Returns `false` if one is already running for them.
---
### assign
```java
boolean assign(Player host, Aspect aspect, Player controller)
```
Hands one of the host's aspects to a controller. Additive: a controller keeps any aspects they already hold. Reassigning an aspect moves it from its previous holder.
---
### unassign
```java
boolean unassign(Player host, Aspect aspect)
```
Returns an aspect to the host. The affected controller keeps any other aspects they hold.
---
### stop
```java
boolean stop(UUID hostId)
```
Ends the host's session — every aspect returns to them and all controllers are released.
---
### stopAll
```java
void stopAll()
```
Ends every running session.
---
### isHost / isController
```java
boolean isHost(UUID playerId)
boolean isController(UUID playerId)
```
Whether the player is currently a session host / controlling at least one aspect of someone.
---
### getAssignments
```java
Map<UUID, Set<Aspect>> getAssignments(UUID hostId)
```
The host's current assignments: controller UUID → the aspects they hold. Empty map when no session is running.
---
## Related Pages
- [[ILecternAPI]] — Access via `getSharedControlManager()`