Skip to main content

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:

PackTypeConfig filenameFolder nameNightbreak slug
Basic Furniture PackPropsbasic_furniture_packBasic Furniture Packbasic-furniture-pack
BetterStructures Prop PackPropsbetterstructures_prop_packbs prop packbetterstructures-prop-pack
EliteMobs Prop PackPropselitemobs_prop_packem_dungeon_prop_packelitemobs-prop-pack
Craftenmine's Weapons Item PackCustom itemscraftenmines_weapons_item_packfmm_craftenmine_weapons_items_packcraftenmines-weapons-item-pack
Craftenmine Tools Item PackCustom itemscraftenmine_tools_item_packfmm_craftenmine_tools_items_packcraftenmine-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:

  1. Download the package content. Downloads go into plugins/FreeMinecraftModels/imports and then trigger a reload/import pass.
  2. Keep the package enabled or disabled. The setup menu installs and uninstalls packages by moving their folders between models and models_disabled.

Bulk operations follow the same model:

  • /fmm downloadall downloads 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 downloadallcontent does 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 all plus every package's Nightbreak slug (basic-furniture-pack, betterstructures-prop-pack, elitemobs-prop-pack, craftenmines-weapons-item-pack, craftenmine-tools-item-pack).
  • all only covers packages FMM detects as downloaded. If a pack's files are completely missing, it reports No 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.