# IPacketMenuManager > Manages the lifecycle of PacketMenu instances for players. `gg.lode.lecternapi.api.manager.IPacketMenuManager` --- ## Signature ```java public interface IPacketMenuManager ``` --- ## Methods ### open ```java void open(Player player, PacketMenu menu) ``` Opens a menu for a player. If the player already has a menu open, it is closed first. The menu is initialized, all element packets are sent, and the button overlay is started automatically. | Parameter | Type | Description | |---|---|---| | `player` | `Player` | The target player. | | `menu` | `PacketMenu` | The menu to open. | --- ### close ```java void close(Player player) ``` Closes the currently open menu for a player, removing all elements and stopping the button overlay. If a close action was set on the menu, it is executed. | Parameter | Type | Description | |---|---|---| | `player` | `Player` | The target player. | --- ### getOpenMenu ```java @Nullable PacketMenu getOpenMenu(Player player) ``` Returns the currently open menu for a player, or `null` if none is open. | Parameter | Type | Description | |---|---|---| | `player` | `Player` | The target player. | **Returns:** `PacketMenu` — The open menu, or `null`. --- ### hasOpenMenu ```java default boolean hasOpenMenu(Player player) ``` Returns whether the player has a menu open. | Parameter | Type | Description | |---|---|---| | `player` | `Player` | The target player. | **Returns:** `boolean` — `true` if the player has an open menu. --- ## Related Pages - [[ILecternAPI]] — Access via `getPacketMenuManager()` - [[PacketMenu]] — Menu base class - [[ButtonListener]] — Button event handler - [[MenuTransform]] — Element positioning