FreeMinecraftModels Content Packages
Official FMM content is now exposed as managed Nightbreak packages.
Current Official Packages
The current plugin defines five premade official packages, mixing prop and item content:
| Pack | Type | Config filename | Folder name | Nightbreak slug |
|---|---|---|---|---|
Basic Furniture Pack | Props | basic_furniture_pack | Basic Furniture Pack | basic-furniture-pack |
BetterStructures Prop Pack | Props | betterstructures_prop_pack | bs prop pack | betterstructures-prop-pack |
EliteMobs Prop Pack | Props | elitemobs_prop_pack | em_dungeon_prop_pack | elitemobs-prop-pack |
Craftenmine's Weapons Item Pack | Custom items | craftenmines_weapons_item_pack | fmm_craftenmine_weapons_items_pack | craftenmines-weapons-item-pack |
Craftenmine Tools Item Pack | Custom items | craftenmine_tools_item_pack | fmm_craftenmine_tools_items_pack | craftenmine-tools-item-pack |
The config filename is the .yml entry under plugins/FreeMinecraftModels/content_packages/. The folder name is the directory the pack's models actually live under inside models/ or models_disabled/, and is also the default content/script file prefix.
Each package has a local folder name, a Nightbreak slug, a version field, and an enabled/disabled state in content_packages. The two Craftenmine item packs ship custom items (models with material: set) that work with the full Lua item-script surface.
What The Setup Menu Manages
/fmm setup is the current source of truth for package state. The menu can distinguish between:
- installed packages
- downloaded but currently disabled packages
- outdated packages
- packages that require Nightbreak access
The setup menu also triggers background refreshes for package versions and access checks, so the menu is the right place to verify current package state.
Folder Behavior
The plugin uses package-state folder moves for enabled and disabled content:
- enabled model folders live in
models/<folderName> - disabled model folders live in
models_disabled/<folderName> - enabled script files live in
scripts/ - disabled script files live in
scripts_disabled/
That means a package can be fully downloaded on disk without being active in the runtime model list. When a package is installed or uninstalled, both its model folder and any matching script files are moved together.
File Prefixes
Each content package config has a contentFilePrefixes field and a scriptFilePrefixes field (both default to the package's folderName). Content files whose names start with any of the contentFilePrefixes and script files in the scripts/ folder whose names start with any of the scriptFilePrefixes are considered part of the package and are moved with it during install/uninstall.
Download and Install Lifecycle
There are two distinct steps:
- Download the package content.
Downloads go into
plugins/FreeMinecraftModels/importsand then trigger a reload/import pass. - Keep the package enabled or disabled.
The setup menu installs and uninstalls packages by moving their folders between
modelsandmodels_disabled.
Bulk operations follow the same model:
/fmm downloadalldownloads the plugin jar update and then every accessible package that is missing or outdated. Content can be applied by FMM's follow-up reload; the plugin jar itself still requires a server restart/fmm downloadallcontentdoes the same content sweep without the plugin jar update/fmm updatecontent(alias/fmm updateallcontent) updates only outdated packages
All three bulk content sweeps reload FreeMinecraftModels automatically after successful package downloads so the newly downloaded content becomes available. The reload only fires when at least one package actually downloaded — a run that finds nothing to do reports No new content to download! and skips the reload.
Bulk operations are guarded against overlapping runs: while one is in progress, a second bulk command is refused rather than started alongside it. They also require a linked Nightbreak token, and abort early on an authentication failure.
Repairing A Package
The normal download commands compare version numbers, so a package whose files got corrupted or partially deleted still looks "current" and is skipped. /fmm forcereinstallcontent <package|all> exists for that case: it re-downloads the selected content regardless of version, then reloads.
- Tab completion offers
allplus every package's Nightbreak slug (basic-furniture-pack,betterstructures-prop-pack,elitemobs-prop-pack,craftenmines-weapons-item-pack,craftenmine-tools-item-pack). allonly covers packages FMM detects as downloaded. If a pack's files are completely missing, it reportsNo downloaded content was detected. Specify a package slug directly if its files are completely missing.— name the slug instead.- An unknown selector reports
Unknown Nightbreak content package: <name>. - It shares the same overlapping-run guard as the other bulk operations, and requires
freeminecraftmodels.*.
Admin Content Browser
/fmm admin opens an in-game inventory GUI that lets admins browse all installed content at a glance. The browser shows:
- all installed packages (with separate prop and item counts)
- unpackaged model folders (with separate prop and item counts)
- individual props (models without
material:in their YML config) - custom items (models that have
material:set in their YML config)
Props and items are displayed distinctly: props use yellow styling and a paper icon, while custom items use purple styling and show their configured material. A model that has material: set in its YML config appears only as a custom item, never as both a prop and an item.
Clicking any entry in the admin browser gives the player a copy of that item. For custom items, the given item includes the configured material, enchantments, lore, and the fmm_item_id PDC tag. This is the fastest way to obtain props, custom items, or model items for testing and building without needing to know the exact model ID or command syntax.
Enchantment content
Package activation and deactivation now include managed enchantment YAML/Lua alongside models and prop scripts. Enabled content lives under enchantments/; disabled content moves to enchantments_disabled/. Keep each package's provider definitions and referenced scripts together. A missing enchantment provider is not replaced by the retired item-script runtime.