Tags
Creators
Details
Licensed GPL-3.0-only
Published 10 months ago
All versions
2.4.0
Release
Free Minecraft Models 2.4.04 months ago 1,891
Compatibility
Minecraft: Java Edition
26.1
1.21.4–1.21.11
Platforms
Paper
Purpur
Spigot
Changes
FreeMinecraftModels 2.4.0:
- [New] Updated for Minecraft 26.1.
- [New] Lua scripting for props — scripts can react to left-click, right-click, projectile hits, zone enter/leave, spawn, destroy, and tick events.
- [New] Lua scripting for custom items — 22 hooks including equip, unequip, left/right/shift-click, damage dealt/received, block break/place, and more.
- [New] Custom item system — define items with material, name, lore, enchantments, and Lua scripts via YML config alongside model files. A single model can be both a prop and a custom item.
- [New] Bow and crossbow draw state support — provide models with _idle, _draw_start, _draw_half, _draw_full (and _charged for crossbows) suffixes and FMM auto-generates the correct conditional resource pack JSON with pulling animations.
- [New] Item durability Lua API — get_durability, use_durability, use_durability_percentage for scripted item wear.
- [New] Persistent prop inventory and book Lua endpoints for interactive furniture.
- [New] Pickupable prop script and mount_ bone mount points for rideable models.
- [New] /fmm admin command — browse content packs, models, and custom items with click-to-get.
- [New] /fmm craftable player menu — browse and view crafting recipes for custom items with 3D model previews.
- [New] /fmm giveitem <item> admin command for giving custom items.
- [New] Display model support — sibling .json files processed during resource pack generation for custom item visuals.
- [New] ScriptedItemAPI for external plugin integration (used by EliteMobs).
- [New] Premade invulnerable.lua prop script — replaces old PropsConfig onlyRemovableByOPs behavior.
- [New] Lua entity bridge — scripts can check is_elite, is_custom_boss, is_significant_boss, health_multiplier, and damage_multiplier on targeted entities.
- [New] Lua API: player boss bars, action bars, and titles with tick-based auto-dismiss.
- [New] Lua API: raycast, spawn_firework, get_target_entity, get_eye_location, get_look_direction.
- [New] Lua API: send_block_change and reset_block with optional auto-reset timer.
- [New] Lua API: get_highest_block_y for terrain queries.
- [New] Lua API: player:sleep() and player:wake_up() endpoints.
- [New] Lua API: event context with cancel support for intercepting interactions.
- [New] Lua API: zone enter/leave tracking for spatial scripting.
- [New] Lua scripting engine and zone system integrated from MagmaCore 2.0.
- [New] EasyMinecraftGoals now bundled inside MagmaCore — no longer a separate dependency.
- [Fix] Props now place at center of hit block face instead of block corner.
- [Fix] Custom 3D models now render correctly in menu UIs.
- [Fix] Skull textures pre-cached at startup to avoid Steve head fallbacks in menus.
- [Fix] Left-click on props now uses FMM's own callback instead of Bukkit events (armor stands are invulnerable, so the event never fired).
- [Fix] Animation rotation now applied after base bone rotation so animations respect bone tilt.
- [Fix] Content package import routing for scripts and content_packages folders.
- [Fix] Fixed Nightbreak token "Invalid token format" errors caused by whitespace in copy-pasted tokens.
- [Fix] Fixed compatibility with Minecraft 26.1 — replaced removed SnakeYAML Base64Coder with java.util.Base64.
- [Tweak] Removed old PropsConfig system — fully replaced by Lua scripting.
- [Tweak] All item creation centralized through ModelItemFactory.
Optional dependencies
Any compatible version
Any compatible version
Any compatible version
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:dXA9IZkK:qdFcipQ8"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:dXA9IZkK:qdFcipQ8"
}

