# 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()`