Skip to content

Custom Pages

Custom pages are your own tabs in the Info Hub book, defined in JSON - no code required. Each page gets its own line in the book’s left navigation. The Pages board of the admin window edits this file with a live preview.

File: custom/pages.json

TypeDescriptionUse Case
TEXTSimple text with color codesDonation page, welcome text, announcements
LISTList with expandable entriesChangelog, news, updates
FAQ_STYLEExpandable questions & answersTips & tricks, extended FAQ
GRIDItems with icons and actions; shown as a list in the bookQuick links, categories

Every page type has “page n of m” paging, so long pages are no longer cut off.


{
"pages": [
{
"id": "changelog",
"title": "Server Changelog",
"icon": "Ore_Prisma",
"type": "LIST",
"showInHub": true,
"quickAccess": false,
"command": "changelog",
"commandAliases": ["updates", "news"],
"permission": "",
"priority": 10,
"entries": [
{
"title": "v1.2.0 - Big Update",
"subtitle": "2026-02-01",
"content": "&aAdded:&r New spawn area\n&eChanged:&r Economy balancing\n&cFixed:&r Login issues"
},
{
"title": "v1.1.0 - Quality of Life",
"subtitle": "2026-01-15",
"content": "&aAdded:&r /home command\n&cFixed:&r Various bugs"
}
]
},
{
"id": "donate",
"title": "Support Us",
"icon": "Ore_Gold",
"type": "TEXT",
"showInHub": true,
"quickAccess": true,
"priority": 20,
"content": "&6Thank you for supporting our server!&r\n\nYour donations help us:\n- Keep the server running 24/7\n- Add new features\n\n&bHow to donate:&r\nVisit &6store.example.com&r"
},
{
"id": "tips",
"title": "Tips & Tricks",
"icon": "Furniture_Ancient_Torch",
"type": "FAQ_STYLE",
"showInHub": true,
"command": "tips",
"priority": 30,
"entries": [
{
"title": "How do I get started?",
"content": "Visit &6/spawn&r and follow the tutorial path.",
"tags": ["beginner", "tutorial"]
},
{
"title": "How do I claim land?",
"content": "Use a &eGolden Shovel&r to create claims!",
"tags": ["claims", "protection"]
}
]
}
]
}

FieldTypeRequiredDescription
idStringYesUnique page identifier
titleStringYesDisplay title
iconStringNoItem icon (e.g., Ore_Gold, Furniture_Ancient_Torch)
typeEnumYesTEXT, LIST, FAQ_STYLE, GRID
showInHubBooleanNoShow on main page (default: true)
quickAccessBooleanNoOld sidebar flag; tiles are configured in quickaccess.json (or jump to a page with infohub:page:<id>)
hiddenBooleanNoIf true, the page is only reachable with its own command (not in the navigation, default: false). A hidden page without a command cannot be opened at all, which is useful for drafts
commandStringNoRegister command (e.g., "changelog" → /changelog)
commandAliasesString[]NoAlternative commands
permissionStringNoPermission required to view
priorityIntegerNoSort order (lower = higher up, default: 99)
contentStringTEXT onlyText content with color codes
entriesArrayLIST/FAQList of entries
gridItemsArrayGRID onlyGrid items with icons and actions
i18nObjectNoOptional title / content per language (also on every entry)
FieldTypeRequiredDescription
titleStringYesEntry title
subtitleStringNoSubtitle (e.g., date)
contentStringYesContent with color codes
iconStringNoItem icon
tagsString[]NoSearch keywords (FAQ_STYLE only)

Simple text with a small markup:

MarkupResult
# Heading, ## SubheadingHeadings
- item, * item, • itemBullets
**bold**Bold
&a … &fColour codes
&oItalic
{
"id": "welcome",
"title": "Welcome",
"icon": "Deco_Book_Pile_Small",
"type": "TEXT",
"showInHub": true,
"content": "&6Welcome to our server!&r\n\nWe're glad you're here.\n\n&aEnjoy your stay!&r"
}

Expandable list with entries. Each entry has a title, optional subtitle, and collapsible content.

{
"id": "changelog",
"title": "Changelog",
"icon": "Ore_Prisma",
"type": "LIST",
"command": "changelog",
"entries": [
{
"title": "v1.2.0 - Major Update",
"subtitle": "2026-02-01",
"content": "&aNew features:&r\n- Feature 1\n- Feature 2"
}
]
}

Question and answer format with expandable answers. Supports tags for search filtering.

{
"id": "tips",
"title": "Tips & Tricks",
"icon": "Furniture_Ancient_Torch",
"type": "FAQ_STYLE",
"entries": [
{
"title": "How do I get started?",
"content": "Visit &6/spawn&r and follow the tutorial.",
"tags": ["beginner", "start"]
}
]
}

Button grid layout with icons and actions. Each item can execute a command, open a URL, or navigate to another custom page.

{
"id": "quicklinks",
"title": "Quick Links",
"icon": "Deco_Map",
"type": "GRID",
"showInHub": true,
"gridItems": [
{
"label": "Spawn",
"icon": "Ore_Prisma",
"action": "command",
"actionValue": "/spawn"
},
{
"label": "Shop",
"icon": "Ore_Gold",
"action": "command",
"actionValue": "/shop"
},
{
"label": "Changelog",
"icon": "Deco_Scroll",
"action": "page",
"actionValue": "changelog"
},
{
"label": "Website",
"icon": "Tool_Map",
"action": "url",
"actionValue": "https://example.com"
}
]
}
FieldTypeDescription
labelStringDisplay text on the grid button
iconStringItem ID for the button icon
actionStringAction type: "command", "url", or "page:pageId"
actionValueStringThe command, URL, or page ID to execute

Minecraft-style color codes are supported in all text fields:

CodeColorCodeColor
&0Black&8Dark Gray
&1Dark Blue&9Blue
&2Dark Green&aGreen
&3Dark Cyan&bCyan
&4Dark Red&cRed
&5Purple&dPink
&6Gold&eYellow
&7Gray&fWhite
&rReset (default color)

Example: "&aAdded:&r New feature" → “Added:” in Green, “New feature” in default color


Pages with showInHub: true get one line each in the left navigation of the book, sorted by priority (lower values first). Search finds custom pages down to the single entry when globalSearch.searchIn.pages is on.


When command is set, a command is automatically registered:

{
"command": "changelog",
"commandAliases": ["updates", "news"]
}

This registers: /changelog, /updates, /news

All commands open the corresponding page directly. A new or renamed command name needs a server restart.


Optionally set a permission to restrict page visibility:

{
"permission": "infohub.page.vip"
}

Only players with this permission can see the page. It is hidden from the navigation and search, and its command answers “no permission” for players without it (the command still shows up in autocomplete, because the permission is checked when it is used).


After editing pages.json, reload the configuration:

/ksinfoadmin reload

:::tip Hot Reload Changes to custom pages apply right after a reload or a save in the admin window - only new or renamed command names need a restart. Opening a page that does not exist (any more) returns to Start with “not available”. :::