Authoring Guide
Required frontmatter
Every .mdx file under docs/ needs at minimum:
---
title: Page Title
description: One-sentence summary shown in search results and link previews.
sidebar_position: 1
---
| Field | Required | Description |
|---|---|---|
title | Yes | Displayed in the sidebar and as the <h1>. |
description | Yes | Used by search and SEO meta tags. Keep it under 160 characters. |
sidebar_position | Yes | Controls sort order within a sidebar category. Lower = higher. |
sidebar_class_name | Sometimes | Set to category-index-hidden on index.mdx files to suppress the duplicate link Docusaurus adds when a category links to its own index. |
slug | Sometimes | Override the URL path. Usually only needed on top-level index.mdx files (e.g. slug: /contributing). |
Hero image convention
Every reference page begins with <ItemHeader id="…"/> immediately after the import block, before any other rendered content. The image floats right on desktop and collapses to full-width on mobile.
---
title: Grinder
description: Macerates items into Dusts.
sidebar_position: 3
---
import MachineStats from '@site/src/components/MachineStats';
<ItemHeader id="techreborn:grinder"/>
<MachineStats power={32} buffer={1000} tier="Low" inputSlots={1} outputSlots={1} />
## Overview
The Grinder …
| Prop | Default | Description |
|---|---|---|
id | — | Preferred: techreborn: or minecraft: item ID |
file | — | Escape hatch: filename without extension under /img/techreborn/ |
alt | derived | Override alt text |
size | 200 | Width in px |
float | "right" | "left", "right", or "none" |
For multi-item pages (e.g. armor set comparisons) or pages that lead directly into a wide table, use float="none" to avoid layout conflicts.
Recipe section pattern
Always use <RecipeFromData id="…" /> for recipes. Never hand-type a recipe grid.
## Recipes
<RecipeFromData id="techreborn:grinder/coal" />
If the recipe ID you need doesn't exist in src/data/recipes.json, leave a <!-- VERIFY: check if techreborn:xyz recipe exists in datagen --> comment and note it in your PR. Do not approximate or invent a recipe.
For a full list of a machine's recipes, use <MachineRecipeList> at the bottom of the page:
## All Recipes
<MachineRecipeList machine="grinder" />
Cross-linking conventions
| Use case | Syntax |
|---|---|
| Internal page link | [Cables](/docs/power/cables) |
| Inline item icon | <ItemIcon id="techreborn:copper_ingot" /> |
| Inline icon + name link | <ItemRef id="techreborn:copper_ingot" /> (phase 10, use once available) |
| External link | Standard Markdown [text](https://…) |
Prefer /docs/<path> absolute links for internal pages so they survive sidebar re-ordering.
Footnotes
Use GFM footnote syntax ([^1]) for asides and disclaimers that are true but genuinely skippable — things the reader doesn't need on the first pass. Group all footnote definitions at the bottom of the page.
The Fishing Station catches loot every 400 ticks by default.[^1]
[^1]: Timing and energy values are configurable in `techreborn.json`.
When to use footnotes:
- "Server-configurable" disclaimers on numeric defaults.
- Tier-edge cases (e.g., creative-only items with no recipe).
- Historical names or trivia that add color but aren't essential.
- Source citations if a value is non-obvious.
When NOT to use footnotes:
- Information the reader needs to act on — keep that in prose.
- Warnings about dangerous behavior — use
:::warning. - Tips — use
:::tip. - Trivia that adds nothing — skip it entirely.
Numbering: Per-page, starting at 1. Docusaurus auto-generates the back-link arrow; don't add manual back-links.
Walkthrough: adding a new machine page
-
Find the correct folder. Machine pages live under
docs/processing/lv-machines/,docs/processing/mv-machines/, ordocs/processing/hv-machines/depending on tier. -
Create the file. Name it after the machine, e.g.
docs/processing/lv-machines/grinder.mdx. -
Add frontmatter.
---title: Grinderdescription: Grinds ores and materials into dusts.sidebar_position: 5--- -
Write the opening. One or two sentences describing what the machine does and why a player would use it.
-
Add a stats block. Pull values from
src/data/or../TechReborn/src/main/java/techreborn/config/TechRebornConfig.java. Always note they are defaults.<MachineStats power={2} buffer={1000} tier="LV" inputSlots={1} outputSlots={1} /> -
Add the crafting recipe for the machine itself.
## Crafting<RecipeFromData id="techreborn:crafting/machines/grinder" /> -
Add all machine recipes at the bottom.
## Recipes<MachineRecipeList machine="grinder" /> -
Check
sidebars.ts. The folder uses{ type: "autogenerated" }, so no manual entry is needed unless you're adding a new folder.
Walkthrough: adding a new item page
-
Find the folder. Material item pages go under
docs/materials/. Per-item pages are generated by phase 16's script — checkdocs/items/before creating a manual page. -
Create the file, e.g.
docs/materials/copper.mdx. -
Frontmatter — same as above.
-
Content structure:
---title: Copper Ingotdescription: A basic metal ingot used in many Tech Reborn recipes.sidebar_position: 1---<ItemHeader id="techreborn:copper_ingot"/>**Copper Ingot** is smelted from Copper Ore and used widely in early-game recipes.## Obtaining<RecipeFromData id="techreborn:smelting/copper_ingot" />## UsesCopper Ingot appears as an input in many LV machine recipes. See the [Grinder](/docs/processing/lv-machines/grinder) page for one common use. -
Never invent recipes. If you can't find a recipe ID, leave a
<!-- VERIFY -->comment.