# IShapeshiftManager > Client-side disguises: renders a player (or any entity) as a different mob or as a block on a viewer's client. Purely visual and per-viewer — hitboxes, eye height and nametag handling follow the disguise on the viewer's client, while the server keeps the real entity. `gg.lode.lecternapi.api.manager.IShapeshiftManager` --- ## Signature ```java public interface IShapeshiftManager ``` --- ## Methods ### shapeshift ```java void shapeshift(Player viewer, Entity target, String entityTypeId) void shapeshift(Player viewer, Entity target, String entityTypeId, String variant) ``` Renders the target as the given entity type on the viewer's client. | Parameter | Type | Description | |---|---|---| | `viewer` | `Player` | The player whose client renders the disguise. | | `target` | `Entity` | The entity to disguise. | | `entityTypeId` | `String` | The entity type identifier (e.g. `"minecraft:pig"`). | | `variant` | `String` | Optional variant — registry ids for variant-registry mobs (e.g. `"minecraft:warm"` for pig), or lowercase enum names for others. Empty for default. | --- ### removeShapeshift ```java void removeShapeshift(Player viewer, Entity target) void removeShapeshift(Player viewer, UUID targetUuid) ``` Removes the target's disguise on the viewer's client. --- ### clearShapeshifts ```java void clearShapeshifts(Player viewer) ``` Removes every mob disguise on the viewer's client. --- ### blockShapeshift ```java void blockShapeshift(Player viewer, Entity target, String blockStateString) void blockShapeshift(Player viewer, Entity target, BlockData blockData) ``` Renders the target as a block on the viewer's client. Full blockstates are supported (e.g. `"minecraft:oak_stairs[facing=east,half=top]"`); the hitbox and eye height follow the block's outline shape. | Parameter | Type | Description | |---|---|---| | `viewer` | `Player` | The player whose client renders the disguise. | | `target` | `Entity` | The entity to disguise. | | `blockStateString` | `String` | Vanilla blockstate string. | | `blockData` | `BlockData` | Bukkit block data alternative. | --- ### removeBlockShapeshift ```java void removeBlockShapeshift(Player viewer, Entity target) void removeBlockShapeshift(Player viewer, UUID targetUuid) ``` Removes the target's block disguise on the viewer's client. --- ### clearBlockShapeshifts ```java void clearBlockShapeshifts(Player viewer) ``` Removes every block disguise on the viewer's client. --- ## Related Pages - [[ILecternAPI]] — Access via `getShapeshiftManager()`