Skip to content
BasaltSoftware
Bedrock 1.26.60

Site colour

Discord
Esc

    ↑↓ moveEnter openEsc close

    Keyboard shortcuts
    Ctrl K
    Search the whole site, from any page
    /
    Jump to the sidebar search, or search the whole site where there isn't one
    Enter
    Open the top search result
    Esc
    Clear the search, or close this panel
    ?
    Show these shortcuts

    Class in @basalt/menus

    Extended by ChestMenu

    A container window with no block behind it. One menu can be open for many players at once, and a slot set while they have it open changes in front of each.

    import { Menu } from '@basalt/menus';

    Example

    A shop

    const shop = new Menu(MenuType.Chest, "Shop");
    shop.setItem(13, new ItemStack("minecraft:diamond", 1));
    shop.onClick((event) => {
    event.cancel = true;
    if (event.slot === 13) event.player.getComponent("minecraft:inventory")?.container.addItem(new ItemStack("minecraft:diamond", 1));
    });
    await shop.show(player);
    import { ItemStack, world, type Player } from '@minecraft/server';
    import { Menu, MenuType, type MenuClickEvent } from '@basalt/menus';
    function openKits(player: Player): void {
    const menu = new Menu(MenuType.Chest, 'Kits');
    // The handler runs when this slot is clicked. Cancelling keeps the item in the menu.
    menu.setItem(13, new ItemStack('minecraft:iron_sword'), (event: MenuClickEvent) => {
    event.cancel = true;
    event.player.sendMessage('You picked the warrior kit.');
    menu.close(event.player);
    });
    menu.show(player);
    }
    world.afterEvents.itemUse.subscribe((event) => {
    if (event.itemStack.typeId === 'minecraft:chest') openKits(event.source);
    });
    import { ItemStack, world } from '@minecraft/server';
    import { Menu, MenuType } from '@basalt/menus';
    function openKits(player) {
    const menu = new Menu(MenuType.Chest, 'Kits');
    // The handler runs when this slot is clicked. Cancelling keeps the item in the menu.
    menu.setItem(13, new ItemStack('minecraft:iron_sword'), (event) => {
    event.cancel = true;
    event.player.sendMessage('You picked the warrior kit.');
    menu.close(event.player);
    });
    menu.show(player);
    }
    world.afterEvents.itemUse.subscribe((event) => {
    if (event.itemStack.typeId === 'minecraft:chest')
    openKits(event.source);
    });
    constructor(type: MenuType, title?: Text);
    Parameters
    type
    MenuType
    titleoptional
    Text
    Throws
    • Error for a type that isn’t a MenuType.

    read-only

    readonly type: MenuType;

    read-only

    readonly size: number;

    How many slots it has.

    title: string;

    The window’s title, shown to players who open it after it’s set.

    getItem(slot: number): ItemStack | undefined;
    Parameters
    slot
    number
    Returns
    ItemStack | undefined
    Throws
    • RangeError for a slot the menu hasn’t.
    setItem(slot: number, itemStack?: ItemStack, onClick?: (event: MenuClickEvent) => void): void;

    Fills a slot, or empties it with undefined.

    Parameters
    slot
    number
    itemStackoptional
    ItemStack
    onClickoptional
    (event: MenuClickEvent) => voidClicks on this slot go to it rather than to the Menu.onClick handlers, as PowerNukkitX’s setItemHandler.
    Throws
    • RangeError for a slot the menu hasn’t.
    clear(): void;

    Empties every slot.

    onClick(callback: (event: MenuClickEvent) => void): (event: MenuClickEvent) => void;

    Runs for clicks on slots without a handler of their own. Every click is allowed without one.

    Parameters
    callback
    (event: MenuClickEvent) => void
    Returns
    (event: MenuClickEvent) => void
    onClose(callback: (event: MenuCloseEvent) => void): (event: MenuCloseEvent) => void;

    Runs when a player’s window closes: by them, by Menu.close, or as they die, teleport or leave.

    Parameters
    callback
    (event: MenuCloseEvent) => void
    Returns
    (event: MenuCloseEvent) => void
    show(player: Player): Promise<MenuCloseEvent>;

    Opens it for a player, closing any window they have open.

    Parameters
    player
    Player
    Returns
    Promise<MenuCloseEvent>A promise that resolves when their window closes.
    close(player?: Player): void;

    Closes it for one player, or for everyone without one.

    Parameters
    playeroptional
    Player
    Types

    MenuClickEvent.menu, MenuCloseEvent.menu