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 MkDocs using the Material theme. 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
pip install -r requirements.txt
# Serve locally with live reload
mkdocs serve
# Build static site
mkdocs buildThe local server runs at http://127.0.0.1:8000 by default.
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
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
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/