Markdown Syntax Reference
Ageratum implements a core subset of CommonMark and extends it with several game-specific syntaxes.
Block Elements
Headings
Both ATX (#) and Setext (underline) styles are supported:
# Heading 1
## Heading 2
### Heading 3
#### Heading 4
##### Heading 5
###### Heading 6
Setext Heading 1
================
Setext Heading 2
----------------Paragraphs & Line Breaks
Consecutive non-empty lines form a single paragraph. An empty line starts a new paragraph:
This is the first paragraph.
This is the second paragraph.
This line is in the same paragraph (soft line break, merged when rendered).Note: Hard line breaks (two trailing spaces) are currently treated as soft line breaks.
Blockquotes
Multi-level nesting is supported using > characters:
> Level 1 blockquote
>> Level 2 blockquote
>>> Level 3 blockquote
> Back to level 1Lists
Unordered Lists
Supports -, +, * as list markers with multi-level nesting (4 spaces or 1 tab for indentation):
- Item A
- Sub-item A1
- Sub-sub-item A1a
- Item BEach level uses a different geometric symbol (●, ○, ■) when rendered.
Ordered Lists
1. First item
2. Second item
1. Sub-item
3. Third itemTask Lists
- [x] Completed task
- [ ] Incomplete task
- [x] Nested completed taskCode Blocks
Fenced Code Blocks (Backticks)
```java
public class Hello {
public static void main(String[] args) {
System.out.println("Hello, Ageratum!");
}
}
```Language tags are supported (currently affects display only, no syntax highlighting).
Fenced Code Blocks (Tildes)
~~~
Tilde-fenced code blocks work the same as backtick ones.
~~~Indented Code Blocks
Prefix lines with 4 spaces or 1 tab:
int x = 42;
System.out.println(x);Code block content is rendered literally — no Markdown parsing inside.
Horizontal Rules
Use three or more -, *, or _ (spaces allowed between them):
---
***
___Tables
Column alignment is controlled with ::
| Left-aligned | Center-aligned | Right-aligned |
|:-------------|:----------------:|---------------:|
| Cell A1 | Cell B1 | Cell C1 |
| **Bold** | `Code` | *Italic*|Table cells support inline Markdown (bold, italic, code spans, etc.).
Images
Images must be on their own line and use namespace-qualified paths:
Inline Elements
Bold
**bold** or __bold__Italic
*italic* or _italic_Underscore-style italic (
_italic_) cannot be immediately preceded or followed by letters or digits.
Strikethrough
~~strikethrough~~Inline Code
`code` or ``code with a `backtick` inside``Links
Inline Links
[link text](https://example.com)Reference Links
[link text][ref-id]
[collapsed][]
[shortcut]
[ref-id]: https://example.com
[collapsed]: https://example.com/c
[shortcut]: https://example.com/sAutolinks
<https://example.com>
<user@example.com>Escape Characters
CommonMark escapable punctuation (!, ", #, $, %, &, ', (, ), *, +, ,, -, ., /, :, ;, <, =, >, ?, @, [, \, ], ^, _, `, {, |, }, ~):
\*not italic\*
\[not a link\]Extension Syntax
Colon Syntax
Define notice boxes with ::: (4 built-in types):
::: info
This is an info notice.
:::
::: tip
This is a tip.
:::
::: warning
This is a warning.
:::
::: danger
This is a danger notice.
:::Content inside colon syntax supports full Markdown syntax (paragraphs, lists, code blocks, etc.).
Tag Syntax
Define custom block components using XML-style tags:
<namespace:component key="value" num=42>
Block content here — supports Markdown syntax.
</namespace:component>
<namespace:component key="value"/>namespacecan be omitted, defaulting toageratum- Parameters use
key="value"orkey=valueformat - Self-closing tags (
/>) have no block content
Built-in Extension Components
| Component ID | Trigger | Appearance |
|---|---|---|
ageratum:info | ::: info or <info/> | 🔵 Blue info box |
ageratum:tip | ::: tip or <tip/> | 🟢 Green tip box |
ageratum:warning | ::: warning or <warning/> | 🟠 Orange warning box |
ageratum:danger | ::: danger or <danger/> | 🔴 Red danger box |
ageratum:recipe | <recipe id="..."/> | Recipe rendering |
Recipe Component
<recipe id="minecraft:crafting_table"/>Parameters:
id: Required — target recipeResourceLocation
Built-in Inline Tags
Color Tag
<color=#FF5500>Orange text</color># followed by a 6-digit hex color code (RGB).
Obfuscated Tag
<o>Obfuscated text</o>Renders as randomly-changing "scrambled" characters.
Hover Events
<hover type="SHOW_TEXT" data="Tooltip content">Hover over me</hover>
<hover type="SHOW_ITEM" data="{\"id\":\"minecraft:diamond\",\"count\":1}">Hover for item</hover>
<hover type="SHOW_ENTITY" data="{\"type\":\"minecraft:zombie\",\"id\":\"...\",\"name\":\"Zombie\"}">Hover for entity</hover>Supported types:
type | data format | Description |
|---|---|---|
SHOW_TEXT | Plain string | Show text tooltip |
SHOW_ITEM | ItemStackInfo JSON | Show item tooltip |
SHOW_ENTITY | EntityTooltipInfo JSON | Show entity tooltip |
Click Events
<click type="OPEN_URL" data="https://example.com">Click to open</click>
<click type="COPY_TO_CLIPBOARD" data="Text to copy">Click to copy</click>
<click type="OPEN_FILE" data="C:/path/to/file.txt">Click to open file</click>
<click type="RUN_COMMAND" data="/ageratum ageratum">Click to run command</click>Supported types:
type | data format | Description |
|---|---|---|
OPEN_URL | Full URL | Open a web page |
COPY_TO_CLIPBOARD | Any text | Copy to clipboard |
OPEN_FILE | File path | Open a local file |
RUN_COMMAND | Command text | Execute immediately |
Combining Styles
Hover and click events can be nested:
<hover type="SHOW_TEXT" data="Tooltip"><click type="OPEN_URL" data="https://example.com">Hover or click!</click></hover>Unsupported Syntax
The following Markdown elements are not currently supported:
- Hard line breaks via two trailing spaces (treated as soft breaks)
- Block elements nested inside blockquotes (e.g. lists or code blocks within
>) - Footnotes
- Definition Lists
- Math formulas (LaTeX/MathJax)
- Raw HTML blocks
- Interactive task list checkboxes (rendered only, not clickable)