{"id":9269,"date":"2026-05-31T18:34:26","date_gmt":"2026-05-31T15:34:26","guid":{"rendered":"https:\/\/vpesports.com\/minecraft\/mods\/ageratum\/"},"modified":"2026-05-31T18:34:26","modified_gmt":"2026-05-31T15:34:26","slug":"ageratum","status":"publish","type":"mod","link":"https:\/\/vpesports.com\/minecraft\/mods\/ageratum\/","title":{"rendered":"Ageratum"},"content":{"rendered":"<div align=\"center\">\n<p># Ageratum<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/cdn.modrinth.com\/data\/9YApuDd3\/61364fba871740b28fdbeb591c6fca7586fc129f_96.webp\" style=\"width: 128px; height: 128px\" alt=\"Ageratum Logo\"><\/p>\n<p>![](https:\/\/cdn.jsdelivr.net\/npm\/@intergrav\/devins-badges@3\/assets\/cozy\/built-with\/java21_vector.svg)<br \/>\n![](https:\/\/cdn.jsdelivr.net\/npm\/@intergrav\/devins-badges@3\/assets\/cozy\/supported\/neoforge_vector.svg)<\/p>\n<p>![](https:\/\/cdn.jsdelivr.net\/npm\/@intergrav\/devins-badges@3\/assets\/cozy\/unsupported\/fabric_vector.svg)<br \/>\n![](https:\/\/cdn.jsdelivr.net\/npm\/@intergrav\/devins-badges@3\/assets\/cozy\/unsupported\/forge_vector.svg)<\/p>\n<p>![][Modrinth]<br \/>\n![][CurseForge]<\/p>\n<p>![][Documentation]<br \/>\n![][Patreon]<br \/>\n![][Discord]<\/p>\n<p>![License][License]<br \/>\n![Asset License][Asset License]<\/p>\n<p>[Patreon]: https:\/\/www.patreon.com\/gugle2308<br \/>\n[License]: https:\/\/spdx.org\/licenses\/LGPL-3.0-only.html<br \/>\n[Asset License]: https:\/\/gist.github.com\/Gu-ZT\/38961ed5c97500cf61b04ab048fa38ad<br \/>\n[Modrinth]: https:\/\/modrinth.com\/mod\/ageratum<br \/>\n[CurseForge]: https:\/\/www.curseforge.com\/minecraft\/mc-mods\/ageratum<br \/>\n[Documentation]: https:\/\/ageratum.anvilcraft.dev\/<br \/>\n[Discord]: https:\/\/discord.gg\/4ZsG8m9XcM<\/p>\n<\/div>\n<p>A guidebook mod for Minecraft NeoForge, designed to provide in-game guides for other mods. Ageratum offers rich Markdown<br \/>\nrendering, i18n localization, and an extensible custom syntax\/component system.<\/p>\n<p>## Documentation<\/p>\n<p>## Features<\/p>\n<p>### Core Markdown Support<\/p>\n<p>\u2705 **Block Elements**<\/p>\n<p>&#8211; ATX headings (`# ~ ######`) and Setext headings (underline style)<br \/>\n&#8211; Paragraphs and line breaks<br \/>\n&#8211; Ordered, unordered, and task lists (multi-level nesting)<br \/>\n&#8211; Blockquotes (multi-level nesting)<br \/>\n&#8211; Fenced code blocks (backticks and tildes) and indented code blocks<br \/>\n&#8211; Horizontal rules<br \/>\n&#8211; Tables with alignment settings<br \/>\n&#8211; Images (namespace-local references)<\/p>\n<p>\u2705 **Inline Elements**<\/p>\n<p>&#8211; **bold**, *italic*, ~~strikethrough~~<br \/>\n&#8211; Inline code spans (multi-backtick support)<br \/>\n&#8211; Links and autolinks<br \/>\n&#8211; Escape character support<br \/>\n&#8211; Custom color tags<br \/>\n&#8211; **Hover and Click Events** (`<hover>` and `<click>` tags)<\/p>\n<p>\u2705 **Advanced Features**<\/p>\n<p>&#8211; Reference link definitions and reference link syntax<br \/>\n&#8211; Automatic link expansion<br \/>\n&#8211; Code block line numbers<br \/>\n&#8211; Table column alignment (left\/center\/right)<\/p>\n<p>### Internationalization (i18n)<\/p>\n<p>&#8211; Documents organized by `ageratum\/<language_code>\/` (e.g., `en_us`, `zh_cn`)<br \/>\n&#8211; Default fallback to `en_us` if localized version missing<br \/>\n&#8211; Full support for multi-byte characters (Chinese, Japanese, etc.)<\/p>\n<p>### Extension Syntax<\/p>\n<p>Two block-level extension syntaxes for custom components:<\/p>\n<p>#### 1. Colon Syntax<\/p>\n<p>&#8220;`markdown<br \/>\n::: info<br \/>\nThis is an info box.<br \/>\n:::<\/p>\n<p>::: tip<br \/>\nThis is a tip.<br \/>\n:::<\/p>\n<p>::: warning<br \/>\nThis is a warning.<br \/>\n:::<\/p>\n<p>::: danger<br \/>\nThis is a danger warning.<br \/>\n:::<br \/>\n&#8220;`<\/p>\n<p>#### 2. Tag Syntax<\/p>\n<p>&#8220;`markdown<br \/>\n<namespace:component key=\"value\" param=123><br \/>\nBlock content supports Markdown syntax.<br \/>\n<\/namespace:component><\/p>\n<p><namespace:component\/><br \/>\nSelf-closing form without content.<br \/>\n&#8220;`<\/p>\n<p>Namespace can be omitted (defaults to `ageratum:`).<\/p>\n<p>### Built-in Extension Components<\/p>\n<p>&#8211; `ageratum:info` &#8211; Blue info box<br \/>\n&#8211; `ageratum:tip` &#8211; Green tip box<br \/>\n&#8211; `ageratum:warning` &#8211; Orange warning box<br \/>\n&#8211; `ageratum:danger` &#8211; Red danger box<\/p>\n<p>### Hover and Click Events<\/p>\n<p>Support interactive text that allows players to hover for tooltips or click to perform actions.<\/p>\n<p>#### Hover Events (`<hover>`)<\/p>\n<p>Display tooltip text when hovering over text:<\/p>\n<p>&#8220;`markdown<br \/>\n<hover type=\"SHOW_TEXT\" data=\"This is the tooltip\">Hover over me<\/hover><br \/>\n&#8220;`<\/p>\n<p>**Supported Types:**<\/p>\n<p>&#8211; `SHOW_TEXT` &#8211; Display plain text tooltip (`data` is the tooltip content)<\/p>\n<p>#### Click Events (`<click>`)<\/p>\n<p>Execute an action when clicking on text:<\/p>\n<p>&#8220;`markdown<br \/>\n<click type=\"OPEN_URL\" data=\"https:\/\/example.com\">Click to open link<\/click><br \/>\n<click type=\"COPY_TO_CLIPBOARD\" data=\"Text to copy\">Click to copy<\/click><br \/>\n<click type=\"SUGGEST_COMMAND\" data=\"\/say hello\">Click to suggest command<\/click><br \/>\n&#8220;`<\/p>\n<p>**Supported Types:**<\/p>\n<p>&#8211; `OPEN_URL` &#8211; Open a URL (`data` is the complete URL)<br \/>\n&#8211; `COPY_TO_CLIPBOARD` &#8211; Copy text to clipboard (`data` is the text to copy)<br \/>\n&#8211; `SUGGEST_COMMAND` &#8211; Suggest a command in chat (`data` is the command text)<\/p>\n<p>#### Combining Styles<\/p>\n<p>You can combine multiple styles in the same text:<\/p>\n<p>&#8220;`markdown<br \/>\n<hover type=\"SHOW_TEXT\" data=\"This is a tooltip\"><click type=\"OPEN_URL\" data=\"https:\/\/example.com\">Click and hover on me!<\/click><\/hover><br \/>\n&#8220;`<\/p>\n<p>### Recipe Component (`<recipe\/>`)<\/p>\n<p>Use the `recipe` extension to render recipes directly inside Markdown documents:<\/p>\n<p>&#8220;`markdown<br \/>\n<recipe id=\"minecraft:acacia_boat\"\/><br \/>\n&#8220;`<\/p>\n<p>&#8211; `id`: required, target recipe `ResourceLocation`<br \/>\n&#8211; Built-in support: `RecipeType.CRAFTING` (crafting table recipes)<br \/>\n&#8211; Rendering behavior: each input slot displays the first candidate item from its `Ingredient`<br \/>\n&#8211; Fallback behavior: if client level is unavailable, recipe is missing, or no factory matches, the component renders with no visible height<\/p>\n<p>You can register additional recipe component factories through `AgeratumRegistries.RECIPE_COMPONENT_FACTORIES`:<\/p>\n<p>&#8220;`java<br \/>\npublic static final DeferredHolder<MDRecipeComponent.RecipeComponentFactory<?>, MDRecipeComponent.RecipeComponentFactory<?>> SMELTING =<br \/>\n    AgeratumRegistries.RECIPE_COMPONENT_FACTORIES.register(<br \/>\n        &#8220;smelting&#8221;,<br \/>\n        () -> MDRecipeComponent.RecipeComponentFactory.create(RecipeType.SMELTING, MDSmeltingRecipeComponent::new)<br \/>\n    );<br \/>\n&#8220;`<\/p>\n<p>### Structure NBT Component (`<structure\/>`)<\/p>\n<p>Use the structure extension to render a summary, top-down block preview, and bounded NBT tree for `.nbt` structure files directly inside documents:<\/p>\n<p>&#8220;`markdown<br \/>\n<structure id=\"minecraft:village\/plains\/houses\/plains_small_house_1\"\/><\/p>\n<p><structure id=\".\/test.nbt\"\/><br \/>\n&#8220;`<\/p>\n<p>&#8211; `id` \/ `path`: required, target structure file `ResourceLocation`<br \/>\n&#8211; `maxDepth`: optional, maximum expansion depth, default `2`<br \/>\n&#8211; `maxEntries`: optional, maximum number of keys\/list entries shown per level, default `12`<br \/>\n&#8211; Relative paths are supported and resolved against the current document directory, including `.nbt` files placed next to the Markdown document inside the resource pack; in preview mode the matching file is loaded from `run\/ageratum_review\/`<br \/>\n&#8211; The component first shows structure metadata such as size, palette, block count, and entity count, then renders a top-down block preview followed by a depth-limited NBT tree<br \/>\n&#8211; Hovering a block in the preview shows its block ID, structure coordinates, palette index, and whether it carries block-entity NBT<\/p>\n<p>### Preloading &#038; Caching<\/p>\n<p>&#8211; Automatically scans and pre-parses Markdown documents to `MDComponent` lists on resource load<br \/>\n&#8211; Opens cached components immediately without parsing delay<br \/>\n&#8211; Auto-refreshes cache on resource reload<\/p>\n<p>### Cross-side Guide Opening<\/p>\n<p>&#8220;`java<br \/>\n\/\/ Client: open directly<br \/>\nAgeratum.openGuide(ResourceLocation location);<\/p>\n<p>\/\/ Server: notify client via network packet<br \/>\nAgeratum.<\/p>\n<p>openGuide(ResourceLocation location);<br \/>\n&#8220;`<\/p>\n<p>## Project Structure<\/p>\n<p>### Directory Layout<\/p>\n<p>&#8220;`<br \/>\nsrc\/main\/java\/dev\/anvilcraft\/resource\/ageratum\/<br \/>\n\u251c\u2500\u2500 Ageratum.java                           \/\/ Main mod class + command registration<br \/>\n\u251c\u2500\u2500 GuideDocumentLoader.java                \/\/ Document loading utils<br \/>\n\u251c\u2500\u2500 GuideDocumentCache.java                 \/\/ Preload cache &#038; reload listener<br \/>\n\u2502<br \/>\n\u251c\u2500\u2500 client\/<br \/>\n\u2502   \u251c\u2500\u2500 AgeratumClient.java                 \/\/ Client hooks (reserved)<br \/>\n\u2502   \u251c\u2500\u2500 gui\/<br \/>\n\u2502   \u2502   \u2514\u2500\u2500 GuideScreen.java                \/\/ Guide reading GUI<br \/>\n\u2502   \u2514\u2500\u2500 feat\/markdown\/<br \/>\n\u2502       \u251c\u2500\u2500 MarkdownParser.java             \/\/ Markdown block-level parser<br \/>\n\u2502       \u251c\u2500\u2500 BuiltinExtensionComponents.java \/\/ Built-in extension registration<br \/>\n\u2502       \u251c\u2500\u2500 BlockExtensionState.java        \/\/ Block extension state machine<br \/>\n\u2502       \u251c\u2500\u2500 SelfClosingBlockExtensionState.java<br \/>\n\u2502       \u251c\u2500\u2500 ExtensionParamParser.java       \/\/ Parameter parsing utility<br \/>\n\u2502       \u251c\u2500\u2500 MDExtensionContext.java         \/\/ Extension execution context<br \/>\n\u2502       \u251c\u2500\u2500 MDExtensionComponentFactory.java \/\/ Extension factory interface<br \/>\n\u2502       \u2514\u2500\u2500 component\/<br \/>\n\u2502           \u251c\u2500\u2500 MDComponent.java            \/\/ Base class + inline parsing<br \/>\n\u2502           \u251c\u2500\u2500 MDTextComponent.java        \/\/ Plain text paragraphs<br \/>\n\u2502           \u251c\u2500\u2500 MDHeaderComponent.java      \/\/ Headings<br \/>\n\u2502           \u251c\u2500\u2500 MDCodeBlockComponent.java   \/\/ Code blocks<br \/>\n\u2502           \u251c\u2500\u2500 MDListComponent.java        \/\/ Lists (inc. task lists)<br \/>\n\u2502           \u251c\u2500\u2500 MDQuoteComponent.java       \/\/ Blockquotes<br \/>\n\u2502           \u251c\u2500\u2500 MDTableComponent.java       \/\/ Tables<br \/>\n\u2502           \u251c\u2500\u2500 MDImageComponent.java       \/\/ Images<br \/>\n\u2502           \u251c\u2500\u2500 MDHorizontalRuleComponent.java<br \/>\n\u2502           \u2514\u2500\u2500 MDNoticeBoxComponent.java   \/\/ Notice box container<br \/>\n\u2502<br \/>\n\u2514\u2500\u2500 network\/<br \/>\n    \u251c\u2500\u2500 AgeratumNetwork.java                \/\/ Network registration &#038; dispatch<br \/>\n    \u2514\u2500\u2500 OpenGuidePayload.java               \/\/ Guide open network packet<br \/>\n&#8220;`<\/p>\n<p>### Design Principles<\/p>\n<p>&#8211; **Separation of Concerns**: Each class handles a single responsibility<br \/>\n&#8211; **No Oversized Classes**: Longest files ~400 lines, all inner classes extracted<br \/>\n&#8211; **Comprehensive Documentation**: Chinese Javadoc for all public APIs, inline comments for complex logic<br \/>\n&#8211; **Extensibility**: Register custom block types via `registerExtensionComponent()`<\/p>\n<p>## Usage Guide<\/p>\n<p>### Players<\/p>\n<p>Open guides with client command:<\/p>\n<p>&#8220;`<br \/>\n\/ageratum <namespace> [file]<\/p>\n<p>Examples:<br \/>\n\/ageratum ageratum                  # Opens ageratum:en_us\/index.md<br \/>\n\/ageratum mymod guide              # Opens mymod:en_us\/guide.md<br \/>\n\/ageratum mymod zh_cn\/tutorial     # Opens mymod:zh_cn\/tutorial.md<br \/>\n&#8220;`<\/p>\n<p>Tab completion supported for namespaces and file names.<\/p>\n<p>### Developers<\/p>\n<p>#### Register Custom Extension<\/p>\n<p>Use registration methods described in NeoForge docs:<\/p>\n<p>1. `DeferredRegister` (recommended)<br \/>\n2. `RegisterEvent` (advanced usage)<\/p>\n<p>&#8220;`java<br \/>\npublic static final DeferredRegister<MDExtensionComponentFactory> EXT_COMPONENT_FACTORIES =<br \/>\n    AgeratumRegistries.createExtensionComponentFactoryRegister(&#8220;your_modid&#8221;);<\/p>\n<p>public static final DeferredHolder<MDExtensionComponentFactory, MDExtensionComponentFactory> CUSTOM =<br \/>\n    EXT_COMPONENT_FACTORIES.register(<br \/>\n        &#8220;custom&#8221;, () -><br \/>\n            context -> new MyComponent(context.renderedContent(), context.params())<br \/>\n    );<\/p>\n<p>\/\/ In your mod constructor<br \/>\nEXT_COMPONENT_FACTORIES.<\/p>\n<p>register(modEventBus);<br \/>\n&#8220;`<\/p>\n<p>#### Register Custom Inline Style Parser<\/p>\n<p>Inline style parsers are registered through `INLINE_STYLE_PARSER_REGISTRY_KEY`. `MDComponent` queries this registry and resolves matches by<br \/>\nposition + parser priority.<\/p>\n<p>&#8220;`java<br \/>\npackage com.example.mymod.client.markdown;<\/p>\n<p>import dev.anvilcraft.resource.ageratum.client.feat.markdown.component.MDInlineStyleParser;<br \/>\nimport dev.anvilcraft.resource.ageratum.client.registries.AgeratumRegistries;<br \/>\nimport net.minecraft.network.chat.Style;<br \/>\nimport net.neoforged.neoforge.registries.DeferredHolder;<br \/>\nimport net.neoforged.neoforge.registries.DeferredRegister;<\/p>\n<p>import java.util.regex.Pattern;<\/p>\n<p>public final class MyInlineStyleParsers {<br \/>\n    \/\/ Use your own modid here, not ageratum<br \/>\n    public static final DeferredRegister<MDInlineStyleParser> INLINE_STYLE_PARSERS = DeferredRegister.create(<br \/>\n        AgeratumRegistries.INLINE_STYLE_PARSER_REGISTRY_KEY,<br \/>\n        &#8220;mymod&#8221;<br \/>\n    );<\/p>\n<p>    \/\/ Example tag: <rainbow>text<\/rainbow><br \/>\n    public static final DeferredHolder<MDInlineStyleParser, MDInlineStyleParser> RAINBOW =<br \/>\n        INLINE_STYLE_PARSERS.register(<br \/>\n            &#8220;rainbow&#8221;,<br \/>\n            () -> MDInlineStyleParser.create(<br \/>\n                100, \/\/ smaller value = higher precedence at same position<br \/>\n                Pattern.compile(&#8220;<rainbow>&#8220;),<br \/>\n                &#8220;<\/rainbow>&#8220;,<br \/>\n                (Style parentStyle, java.util.regex.Matcher matcher) -> parentStyle.withColor(0xFF55FF)<br \/>\n            )<br \/>\n        );<\/p>\n<p>    private MyInlineStyleParsers() {<br \/>\n    }<br \/>\n}<br \/>\n&#8220;`<\/p>\n<p>Register it in your client init:<\/p>\n<p>&#8220;`java<br \/>\npublic class MyModClient {<br \/>\n    public MyModClient(IEventBus modEventBus) {<br \/>\n        MyInlineStyleParsers.INLINE_STYLE_PARSERS.register(modEventBus);<br \/>\n    }<br \/>\n}<br \/>\n&#8220;`<\/p>\n<p>Markdown usage:<\/p>\n<p>&#8220;`markdown<br \/>\nnormal text <rainbow>colored text<\/rainbow> normal text<br \/>\n&#8220;`<\/p>\n<p>See full guide: `docs\/inline-style-parser-example.en.md`.<\/p>\n<p>#### Add Documentation<\/p>\n<p>Create in resource pack:<\/p>\n<p>&#8220;`<br \/>\nassets\/<namespace>\/ageratum\/<language>\/index.md<br \/>\nassets\/<namespace>\/ageratum\/en_us\/index.md<br \/>\nassets\/<namespace>\/ageratum\/zh_cn\/index.md<br \/>\n&#8220;`<\/p>\n<p>## License<\/p>\n<p>* Code unless otherwise stated default to our LICENSE file(LGPL-3.0)<br \/>\n* Non-Code assets (Located here) go by our ASSET_LICENSE file(ARR)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A guidebook mod for Minecraft NeoForge<\/p>\n","protected":false},"featured_media":9270,"template":"","meta":{"_minecraft_slug":"ageratum","_minecraft_project_id":"9YApuDd3","_minecraft_author":"Gu-ZT","_minecraft_license":"LGPL-3.0-only","_minecraft_downloads":270,"_minecraft_follows":3,"_minecraft_client_side":"required","_minecraft_server_side":"optional","_minecraft_storage_type":"zip","_minecraft_archive_name":"ageratum.zip","_minecraft_size_bytes":24885803,"_minecraft_version_count":42,"_minecraft_updated_at":"2026-05-15T20:06:19.446594Z","_minecraft_date_created":"2026-04-10T00:58:31.640579Z","_minecraft_date_modified":"2026-05-08T09:27:13.864744Z","_minecraft_project_url":"https:\/\/modrinth.com\/mod\/ageratum","_minecraft_icon_attachment_id":9270,"_minecraft_imported_at":"2026-05-31T15:34:27+00:00","_minecraft_import_hash":"0e622f282826376fd23fe0a792904414","_minecraft_versions":"","_minecraft_links":"","_minecraft_gallery":"","_minecraft_api_metadata":""},"mod_category":[873,158],"mod_loader":[160],"minecraft_version":[37],"class_list":["post-9269","mod","type-mod","status-publish","has-post-thumbnail","hentry","mod_category-library","mod_category-neoforge","mod_loader-neoforge","minecraft_version-1-21-1"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Ageratum - Minecraft<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/vpesports.com\/minecraft\/mods\/ageratum\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Ageratum - Minecraft\" \/>\n<meta property=\"og:description\" content=\"A guidebook mod for Minecraft NeoForge\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vpesports.com\/minecraft\/mods\/ageratum\/\" \/>\n<meta property=\"og:site_name\" content=\"Minecraft\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cdn.modrinth.com\/data\/9YApuDd3\/61364fba871740b28fdbeb591c6fca7586fc129f_96.webp\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/ageratum\\\/\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/ageratum\\\/\",\"name\":\"Ageratum - Minecraft\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/ageratum\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/ageratum\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/ageratum-icon-61364fba871740b28fdbeb591c6fca7586fc129f_96.webp\",\"datePublished\":\"2026-05-31T15:34:26+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/ageratum\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/ageratum\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/ageratum\\\/#primaryimage\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/ageratum-icon-61364fba871740b28fdbeb591c6fca7586fc129f_96.webp\",\"contentUrl\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/ageratum-icon-61364fba871740b28fdbeb591c6fca7586fc129f_96.webp\",\"width\":96,\"height\":96},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/ageratum\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Mods\",\"item\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Ageratum\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/#website\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/\",\"name\":\"Minecraft\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Ageratum - Minecraft","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/vpesports.com\/minecraft\/mods\/ageratum\/","og_locale":"en_US","og_type":"article","og_title":"Ageratum - Minecraft","og_description":"A guidebook mod for Minecraft NeoForge","og_url":"https:\/\/vpesports.com\/minecraft\/mods\/ageratum\/","og_site_name":"Minecraft","og_image":[{"url":"https:\/\/cdn.modrinth.com\/data\/9YApuDd3\/61364fba871740b28fdbeb591c6fca7586fc129f_96.webp","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/vpesports.com\/minecraft\/mods\/ageratum\/","url":"https:\/\/vpesports.com\/minecraft\/mods\/ageratum\/","name":"Ageratum - Minecraft","isPartOf":{"@id":"https:\/\/vpesports.com\/minecraft\/#website"},"primaryImageOfPage":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/ageratum\/#primaryimage"},"image":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/ageratum\/#primaryimage"},"thumbnailUrl":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/05\/ageratum-icon-61364fba871740b28fdbeb591c6fca7586fc129f_96.webp","datePublished":"2026-05-31T15:34:26+00:00","breadcrumb":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/ageratum\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vpesports.com\/minecraft\/mods\/ageratum\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/vpesports.com\/minecraft\/mods\/ageratum\/#primaryimage","url":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/05\/ageratum-icon-61364fba871740b28fdbeb591c6fca7586fc129f_96.webp","contentUrl":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/05\/ageratum-icon-61364fba871740b28fdbeb591c6fca7586fc129f_96.webp","width":96,"height":96},{"@type":"BreadcrumbList","@id":"https:\/\/vpesports.com\/minecraft\/mods\/ageratum\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/vpesports.com\/minecraft\/"},{"@type":"ListItem","position":2,"name":"Mods","item":"https:\/\/vpesports.com\/minecraft\/mods\/"},{"@type":"ListItem","position":3,"name":"Ageratum"}]},{"@type":"WebSite","@id":"https:\/\/vpesports.com\/minecraft\/#website","url":"https:\/\/vpesports.com\/minecraft\/","name":"Minecraft","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/vpesports.com\/minecraft\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod\/9269","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod"}],"about":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/types\/mod"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/media\/9270"}],"wp:attachment":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/media?parent=9269"}],"wp:term":[{"taxonomy":"mod_category","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod_category?post=9269"},{"taxonomy":"mod_loader","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod_loader?post=9269"},{"taxonomy":"minecraft_version","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/minecraft_version?post=9269"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}