Skip to Content

Board

Everything visual lives in menu.yml.

Titles

menu.yml
board: titles: board: "&#54ADF4&lTic-Tac-Toe" turn: "&#54ADF4%player%&8's turn" win: "&#8DFF87%player% won!" draw: "&#FFA42DDraw!" forfeit: "&#8DFF87%player% wins"
TitleShown
boardWhile playing, when game.dynamic-title is off
turnWhile playing, when dynamic-title is on
winOn a win
drawOn a draw
forfeitWhen someone leaves or times out

%player% is whoever the title is about: the player to move, or the winner.

Markers

menu.yml
markers: first: material: BLUE_DYE display_name: "&#54ADF4● %player%" lore: [] use-player-head: false second: material: WHITE_DYE display_name: "&#F0F8FF○ %player%" lore: [] use-player-head: false winner: material: LIME_STAINED_GLASS_PANE display_name: "&#8DFF87⭐ %player%" lore: [] empty: enabled: true material: GRAY_STAINED_GLASS_PANE display_name: "&8Empty cell" lore: []
MarkerUsed for
firstCells of the player who moves first
secondCells of the other one
winnerThe three winning cells, when game.highlight-winning-line is on
emptyA free cell. enabled: false leaves it blank

use-player-head swaps the material for that player’s head. Any material of your server version works.

%player% inside a marker is the owner of that cell, so the board reads as two named players rather than two symbols.

Sounds

menu.yml
sounds: move: "BLOCK_NOTE_BLOCK_HAT:1:1" win: "ENTITY_PLAYER_LEVELUP:1:1" lose: "ENTITY_VILLAGER_NO:1:1" draw: "BLOCK_NOTE_BLOCK_BASS:1:1" challenge: "ENTITY_EXPERIENCE_ORB_PICKUP:1:1"

The format is NAME:volume:pitch. Both enum names (BLOCK_NOTE_BLOCK_HAT) and namespaced keys (block.note_block.hat) work. Use "" or none to mute one.

win plays for the winner, lose for the other player, challenge for whoever receives one.

Last updated: September 16, 2026 bySenkexin2fc986d