GUI
Official compatibility
| Element | Reference |
|---|---|
TypeWriter | Required. Use the official TypeWriter release supported by the extension release. |
| Related extensions | Install 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.
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?
| Concept | Role |
|---|---|
| GUI entry | TypeWriter configuration that opens or configures a menu. |
| Menu | The visible window and the player's session. |
| Layout | Component organization: grid, pages, scrolling, frames, or overlays. |
| Component | An element placed in a layout: item, button, frame, or dynamic content. |
| Interaction | A reaction to a click, key, command, or trigger. |
layoutPool | The menu's named layouts. |
mainLayoutId | The identifier of the root layout to display. |
User guide
- Create an
open_guientry. - Choose
guiType, such asCHESTorCUSTOM, and settitle. - Add a
simplelayout with the identifiermain. - Set
mainLayoutIdtomain. - Add an item:
item,displayName,lore,x,y. - Add an interaction with
type: LEFTand the action to execute. - Add
viewPermissionif the slot must be hidden from some players. - Test the menu in-game before adding scrollable or paginated layouts.
The 24 container types
The current GuiType code exposes the following values:
GuiType | GuiType | GuiType | GuiType |
|---|---|---|---|
ANVIL | BARREL | BEACON | BLAST_FURNACE |
BOOK | BREWING_STAND | CARTOGRAPHY_TABLE | CRAFTING_TABLE |
DISPENSER | DROPPER | ENCHANTING_TABLE | ENDER_CHEST |
FURNACE | GRINDSTONE | HOPPER | LOOM |
MERCHANT | SHULKER_BOX | SMITHING_TABLE | SMOKER |
STONECUTTER | VILLAGER_TRADE | CHEST | CUSTOM |
Features
simple,flex,paginated,scrollable,frame,composite,book,merchant,storage, andleaderboardlayouts.- Inherited menus with
baseMenuId. - Addressable views with
views,defaultViewId, andgui: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
- Understand a menu and create the first one
- Layouts, frames, and slots
- Interactions, commands, back navigation, and closing
- Views, tabs, and inheritance
- Menu recipes
- The
open_guiaction reference gui_configconfigurationgui_storageartifactgui_leaderboardrankinggui_leaderboard_populationartifact
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.
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.