BetterStructures Content Packages
BetterStructures now treats official content as managed packages instead of a pure manual-import workflow.
Main Commands
| Command | Purpose |
|---|---|
/bs initialize | First-time setup flow |
/bs setup | Browse and manage package state |
/bs downloadall | Downloads the plugin update (if any) and all available content, then reloads |
/bs downloadallcontent | Downloads all available content only (no plugin update) |
/bs updatecontent | Updates outdated content (alias: /bs updateallcontent) |
/bs forcereinstallcontent <package|all> | Re-downloads content even when the installed version is already current - the repair command for damaged or partially deleted packs |
/bs recommendedplugins | Lists companion plugins that pair well with BetterStructures |
/nightbreaklogin <token> | Shared Nightbreak token registration |
The download and update commands use the shared MagmaCore Nightbreak system bundled into BetterStructures for token checks, access checks and downloads. BetterStructures then imports the content through its own reload process.
Package Types
Each package declares a contentPackageType, and the setup menu offers one filter per type:
contentPackageType | Setup menu filter | Files land in |
|---|---|---|
STRUCTURE (default) | Structure Packs | plugins/BetterStructures/schematics/<folderNameV2> |
MODULAR | Module Packs | plugins/BetterStructures/modules/<folderNameV2> |
Use /bs setup to filter and inspect packages instead of relying on old static lists.
Package Config Fields
Each package is described by a config in plugins/BetterStructures/content_packages. You rarely need to edit these by hand - they ship with the plugin and are how it tracks package state - but the fields are:
| Key | Default | Description |
|---|---|---|
isEnabled | true | Package installation flag changed by the setup menu. When false, nothing inside the package's folder loads; see below. |
name | — | Display name shown in the setup menu |
description | — | Lore lines shown in the setup menu |
downloadLink | — | Manual download link shown when a package has no nightbreakSlug; managed downloads use the slug |
version | 0 | Local content version, compared against the remote version to decide whether the package is out of date |
folderNameV2 | — | Subfolder the package's files live in, under schematics or modules depending on the type |
contentPackageType | STRUCTURE | STRUCTURE or MODULAR |
nightbreakSlug | — | Nightbreak identifier used for access checks, downloads, and as the selector for /bs forcereinstallcontent |
Installing or uninstalling a package from the setup menu changes only the package's isEnabled and then triggers a reload. It does not edit the schematic or module configs inside the package. Uninstalling leaves the files on disk.
While a package has isEnabled: false, the schematic and module loaders skip its whole folder, schematics/<folderNameV2> or modules/<folderNameV2>, including subfolders. This applies to both STRUCTURE and MODULAR packages. Inside an enabled package, each schematic and module config still has its own isEnabled.
Package Contents
A BetterStructures package is a zip whose pack.meta declares betterstructures. A zip without pack.meta placed in plugins/BetterStructures/imports is treated the same way. Its top-level folders are unpacked by name:
| Folder in the package | Destination |
|---|---|
content_packages, schematics, modules, module_generators, generators, treasures, spawn_pools, components | The folder of the same name in plugins/BetterStructures |
custombosses, customitems, customtreasurechests, powers, enchantments | The folder of the same name in plugins/EliteMobs |
models or modelengine | FreeMinecraftModels' models folder, or ModelEngine's blueprints when only ModelEngine is installed |
scripts | plugins/FreeMinecraftModels/scripts |
freeminecraftmodels, elitemobs, betterstructures | The root of that plugin's data folder, keeping the layout inside, for example freeminecraftmodels/enchantments |
worldcontainer | The server's world container |
A top-level folder not in this table makes the importer reject the whole package. See Manual imports vs in-game management for the shared import rules.
When a package adds EliteMobs content, BetterStructures reloads EliteMobs after the import. When another plugin's package imports files into the BetterStructures folder, BetterStructures runs a content reload once its own startup has finished.
Package States
Depending on the package and your token state, BetterStructures can distinguish between:
- installed content
- downloaded but not enabled content
- outdated content
- content that needs Nightbreak access
The menu treats an existing package path as downloaded and combines that with the package's isEnabled flag to decide whether it is installed. This is a state indicator, not a file-integrity check: an empty or damaged folder can still appear installed. Use /bs forcereinstallcontent <package|all> to repair files. all selects packages currently detected as downloaded, installed or outdated; name the slug directly if the entire package folder is missing.
Manual Import Fallback
Manual imports still use:
plugins/BetterStructures/imports
Keep package zips intact, then reload BetterStructures if needed. Manual import is still supported, but it is no longer the main documented workflow.