This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
This is the source repository for the BentoBox main documentation site at https://docs.bentobox.world. It is built with Zensical, the successor to Material for MkDocs, which reads the MkDocs-style mkdocs.yml. When commits are pushed to the master branch, ReadTheDocs.org automatically pulls the changes, builds the site, and publishes the updated documentation live within minutes.
# Install dependencies (Python 3.10+ required)
pip install -r requirements-zensical.txt
# Serve locally with live reload
zensical serve
# Build static site
zensical buildThe local server runs at http://localhost:8000 by default. .github/workflows/zensical.yml runs the same build on every push and PR.
Material for MkDocs reaches end of life on 2026-11-05, but the repo stays buildable with it: pip install -r requirements.txt && mkdocs build. Zensical reads the same mkdocs.yml. Differences: Zensical does not support the git-revision-date-localized plugin (so no "last updated" line), and theme.variant: classic is only read by Zensical (MkDocs ignores it). To fall back on Read the Docs, restore the mkdocs: section in .readthedocs.yml and point it at requirements.txt.
docs/— All Markdown source files, mirroring the nav structure inmkdocs.ymldocs/BentoBox/— Core BentoBox documentation (API, commands, config, permissions)docs/gamemodes/— One subdirectory per game mode (AcidIsland, AOneBlock, BSkyBlock, Boxed, CaveBlock, Poseidon, SkyGrid, StrangerRealms, etc.)docs/addons/— One subdirectory per addon (Bank, Biomes, Border, Challenges, Level, etc.)docs/Tutorials/— Developer tutorials (addon creation, API guides)
data/— CSV and JSON files used by MkDocs macros to generate dynamic contentplaceholders.csv— All placeholder variables across BentoBox and addonsflags.csv— Protection flags (type, icon, description, defaults, ranks)minecraft-block-and-entity.json— Block/entity icon CSS class mapping
docs/stylesheets/— Custom CSS loaded viaextra_cssinmkdocs.ymlbentobox-theme.css— Blueprint palette override for the Material slate scheme (navy/cyan; Space Grotesk + Inter Tight + JetBrains Mono). Also defines all.bb-*layout classes used exclusively bydocs/index.md.icons-minecraft-0.5.css— Minecraft block/entity icon sprites
main.py— MkDocs macros plugin entry point (define_env); defines all Jinja2 macros used in docsmkdocs.yml— Site configuration: nav tree, theme, plugins, Markdown extensions
index.md is structurally different from all other pages. It uses hide: [navigation, toc] frontmatter and its body is a single raw HTML block (no Markdown) built from .bb-* CSS classes defined in bentobox-theme.css. Do not add Markdown content or macros directly inside the .bb-homepage wrapper — use plain HTML.
The mkdocs-macros-plugin allows Jinja2 macro calls inside Markdown files. Macros defined in main.py:
{{ addon_description("AddonName") }}— Renders a standard "Useful links" info box (GitHub, issues, CI) for an addon{{ translations("RepoName") }}— Renders the translation status table for an addon. At build time it fetchessrc/main/resources/locales/fromBentoBoxWorld/<RepoName>on GitHub (defaults to thedevelopbranch) and computes a real percentage per locale by comparing each YAML file againsten-US.yml. Falls back gracefully if GitHub is unreachable. Set theGITHUB_TOKENenv var on the build host to lift the unauthenticated 60/hr rate limit.{{ placeholders_bundle("gamemode_name") }}— Renders all placeholders for a specific gamemode fromdata/placeholders.csv{{ placeholders_source("SourceName") }}— Renders placeholders from a specific addon/source{{ flags_bundle("FLAG_TYPE") }}— Renders a table of flags by type (e.g.,PROTECTION,SETTING) across all sources{{ flags_source("SourceName", "FLAG_TYPE") }}— Renders flags for a specific source
- Create the directory under
docs/gamemodes/<Name>/ordocs/addons/<Name>/ - Add an
index.mdwith the main documentation; use macros like{{ addon_description("Name") }}and{{ translations(...) }} - Register the new entry in the
nav:section ofmkdocs.yml - Add any new placeholders to
data/placeholders.csvand flags todata/flags.csv
The following pymdownx extensions are configured and usable in any doc page:
admonition, details, superfences, tabbed, tasklist, tilde, keys, progressbar, footnotes, attr_list
Admonition types commonly used: note, warning, info, tip
When you need to inspect source code for a dependency (e.g., BentoBox, addons):
- Check local Maven repo first:
~/.m2/repository/— sources jars are named*-sources.jar - Check the workspace: Look for sibling directories or Git submodules that may contain the dependency as a local project (e.g.,
../bentoBox,../addon-*) - Check Maven local cache for already-extracted sources before downloading anything
- Only download a jar or fetch from the internet if the above steps yield nothing useful
Prefer reading .java source files directly from a local Git clone over decompiling or extracting a jar.
In general, the latest version of BentoBox should be targeted.
Related projects are checked out as siblings under ~/git/:
Core:
bentobox/— core BentoBox framework
Game modes:
addon-acidisland/— AcidIsland game modeaddon-bskyblock/— BSkyBlock game modeBoxed/— Boxed game mode (expandable box area)CaveBlock/— CaveBlock game modeOneBlock/— AOneBlock game modeSkyGrid/— SkyGrid game modeRaftMode/— Raft survival game modeStrangerRealms/— StrangerRealms game modeBrix/— plot game modeparkour/— Parkour game modeposeidon/— Poseidon game modegg/— gg game mode
Addons:
addon-level/— island level calculationaddon-challenges/— challenges systemaddon-welcomewarpsigns/— warp signsaddon-limits/— block/entity limitsaddon-invSwitcher//invSwitcher/— inventory switcheraddon-biomes//Biomes/— biomes managementBank/— island bankBorder/— world border for islandsChat/— island chatCheckMeOut/— island submission/votingControlPanel/— game mode control panelConverter/— ASkyBlock to BSkyBlock converterDimensionalTrees/— dimension-specific treesdiscordwebhook/— Discord integrationDownloads/— BentoBox downloads siteDragonFights/— per-island ender dragon fightsExtraMobs/— additional mob spawning rulesFarmersDance/— twerking crop growthGravityFlux/— gravity addonGreenhouses-addon/— greenhouse biomesIslandFly/— island flight permissionIslandRankup/— island rankup systemLikes/— island likes/dislikesLimits/— block/entity limitslost-sheep/— lost sheep adventureMagicCobblestoneGenerator/— custom cobblestone generatorPortalStart/— portal-based island startpp/— pp addonRegionerator/— region managementResidence/— residence addonTopBlock/— top ten for OneBlockTwerkingForTrees/— twerking tree growthUpgrades/— island upgrades (Vault)Visit/— island visitingweblink/— web link addonCrowdBound/— CrowdBound addon
Data packs:
BoxedDataPack/— advancement datapack for Boxed
Documentation & tools:
docs/— main documentation sitedocs-chinese/— Chinese documentationdocs-french/— French documentationBentoBoxWorld.github.io/— GitHub Pages sitewebsite/— websitetranslation-tool/— translation tool
Check these for source before any network fetch.
world.bentobox:bentobox→~/git/bentobox/src/