Skip to main content

GUI

Official compatibility

ElementReference
TypeWriterRequired. Use the official TypeWriter release supported by the extension release.
Related extensionsInstall the related extensions listed on this page before using entries that depend on them.

GUI

The GUI extension turns a TypeWriter entry into an interactive menu. Build the menu in the web interface: a layout organizes components, an item occupies one or more slots, and an interaction reacts to a click.

In practice

To create your first menu, use the Typewriter Web panel: click Add Page, then use Search bar or + to create the Open GUI action entry. Choose a simple layout, select it in mainLayoutId, then add a GuiItem with a LEFT interaction.

What do the main concepts mean?

ConceptRole
GUI entryTypeWriter configuration that opens or configures a menu.
MenuThe visible window and the player's session.
LayoutComponent organization: grid, pages, scrolling, frames, or overlays.
ComponentAn element placed in a layout: item, button, frame, or dynamic content.
InteractionA reaction to a click, key, command, or trigger.
layoutPoolThe menu's named layouts.
mainLayoutIdThe identifier of the root layout to display.

User guide

  1. Create an open_gui entry.
  2. Choose guiType, such as CHEST or CUSTOM, and set title.
  3. Add a simple layout with the identifier main.
  4. Set mainLayoutId to main.
  5. Add an item: item, displayName, lore, x, y.
  6. Add an interaction with type: LEFT and the action to execute.
  7. Add viewPermission if the slot must be hidden from some players.
  8. Test the menu in-game before adding scrollable or paginated layouts.

The 24 container types

The current GuiType code exposes the following values:

GuiTypeGuiTypeGuiTypeGuiType
ANVILBARRELBEACONBLAST_FURNACE
BOOKBREWING_STANDCARTOGRAPHY_TABLECRAFTING_TABLE
DISPENSERDROPPERENCHANTING_TABLEENDER_CHEST
FURNACEGRINDSTONEHOPPERLOOM
MERCHANTSHULKER_BOXSMITHING_TABLESMOKER
STONECUTTERVILLAGER_TRADECHESTCUSTOM

Features

  • simple, flex, paginated, scrollable, frame, composite, book, merchant, storage, and leaderboard layouts.
  • Inherited menus with baseMenuId.
  • Addressable views with views, defaultViewId, and gui:view.
  • Items with names, lore, criteria, animations, cooldowns, and separate permissions.
  • Dynamic buttons provided by other extensions, including Shops.
  • Input dialogs through input.
  • Persistent storage with gui_storage, with optional drop or destruction of the contents on close.
  • Fact-backed rankings with gui_leaderboard, including offline players.
  • MiniMessage rendering in titles, names, and lore.

Guides

Dependencies and integrations

GUI is a foundation extension for the TypeWriter runtime. The verified source module is Typewriter-GUIExtension, and its build integrates with BTC-CORE. Extensions that render their own menus, such as Shops, must use a compatible GUI version.

Build dependencies (QuestExtension, BasicExtension, PacketEvents, CraftEngine, and the editor's Ktor components) must not be turned into an independent installation procedure without checking the distributed release manifest.

Web editor

The web editor is available when editorEnabled is enabled in gui_config or plugins/Typewriter/gui_editor.yml. The current runtime uses HTTP and WebSocket on port 8082, with the /ws path. A token is generated and retained by default.

For remote use, explicitly configure the bind address, firewall, allowed origins, and TLS. auth-token: "disabled" disables authentication and is only suitable for an isolated environment.

Historical reference

Some constants and code helpers still mention 9093. Do not document this port as a second active port: the verified runtime implementation uses 8082.

Commands and permissions

GUI does not provide a standalone player command or global permission. Access is triggered by the entry that opens the menu. Configure slot permissions with viewPermission and clickPermission.

Troubleshooting

The extension is not visible

Check that the installed release matches the supported TypeWriter release and that the related extensions listed in the compatibility section are present.

An entry is missing

In the Typewriter Web panel, use the Search bar or the + button to find or create the entry with its exact identifier. Entry IDs and field names are case-sensitive; do not translate them.

The entry saves but nothing happens

Check that the entry is connected to the trigger, command, objective, event, or menu interaction required by its type. Test with optional permissions and criteria removed, then add them back one at a time.

An integration does not work

Verify the dependency and version shown in the extension card, then check the server log for the first error. Do not replace a missing dependency with a similarly named plugin unless the extension source explicitly supports it.