FreeMinecraftModels 2.8.0:
- [New] Export models as a Bedrock entity bundle for Bedrock/Geyser integrations
- [New] Check for and one-click download FreeMinecraftModels updates in-game from the setup menu (auto-checks on boot; restart to apply)
- [New] Automatic Updates toggle (off by default), also exposed as autoDownloadPluginUpdates in config.yml
- [New] Recommended Plugins view in the setup menu (plus a recommendedplugins command) and a /nightbreak plugins catalog to browse MagmaGuy's other plugins
- [Tweak] Setup menu now manages model packs, plugin updates, and update settings together; bulk commands split into content download vs plugin update
- [Fix] Dynamic model carrier entities are now hidden by default so only the model is visible
FreeMinecraftModels 2.7.1:
- [Fix] Item Lua scripts now remain active for the full lifetime of the holding player
- [Tweak] Updated the bundled MagmaCore library
Note: this update adds full support for bedrock clients that connect via geyser or floodgate for proxied servers! ResourcePackManager is mandatory to make this work. This should now cover every possible case of bedrock clients connecting to serverss being able to see models.
FreeMinecraftModels 2.7.0:
- [New] sendCustomModelsToBedrockClientsV2 now defaults Bedrock custom-model display to true
- [New] /fmm debug bedrock [on|off] toggles runtime Bedrock display diagnostics
- [New] preventPropPlacementInProtectedRegions blocks prop placement in WorldGuard and GriefPrevention regions unless the player has freeminecraftmodels.bypassregionprotection
- [Fix] Projectile hits now connect with modeled entity hitboxes reliably, including fast arrows, tridents, and rotated models
- [Fix] Projectile hits on dynamic models now damage the underlying entity as projectile hits instead of melee/raw damage
- [Fix] Player disguises now hide and restore armor and held items for other viewers, including players who join or change worlds mid-disguise
- [Fix] MagmaCore Bedrock detection now recognizes Floodgate/Geyser players through plugin, UUID, and username fallbacks so Bedrock viewers stay on the custom-model packet path
- [Fix] MagmaCore NMS packet handling now avoids Bedrock bundle and entity-position desync issues on newer servers
- [Tweak] Prop Lua tables are cached per prop with lazy current_location updates
- [Tweak] Location protection now uses MagmaCore's shared location registry so WorldGuard, GriefPrevention, EliteMobs dungeons, and other registered providers can block protected prop placement
- [Tweak] Setup menu now uses MagmaCore's shared SetupMenuBuilder, Nightbreak setup icons, and setup-done handling
FreeMinecraftModels 2.6.0:
[New] Geyser/Floodgate support! Geyser/Floodgate clients can now see custom models. Requires ResourcePackManager for the conversions.
[New] Craftenmine's Weapons Item Pack — new free scripted item-model pack available now via Nightbreak (and /fmm setup)
[New] Craftenmine Tools Item Pack — new premium scripted item-model pack available now via Nightbreak (and /fmm setup)
[New] Player disguise system — /fmm disguise <model> [player] and /fmm undisguise [player] disguise yourself (or another player) as any loaded model; mirrors player movement, head rotation, and arm-swing animations
[New] /fmm disguiselist admin command to see all active disguises
[New] DisguiseAPI public class for third-party plugins (disguise / undisguise / isDisguised / getDisguiseModelID / getDisguisedPlayers)
[New] FmmReloadedEvent API — fires after FMM finishes initializing (startup and /fmm reload) so plugins shading FMM can re-attach their custom models
[Fix] Custom models on MC 26.1+ no longer fail to bake with "Cannot compute translucency out of bounds" errors (UV coordinates that went past texture bounds are now clamped)
[Fix] Custom models on MC 26.1+ no longer spam "Missing block model" warnings for empty/anchor-only bones
[Fix] Disguise invisibility now persists through milk buckets, /effect clear, and third-party effect strippers
[Fix] /fmm disguise with no model arg now self-disguises correctly instead of erroring
[Fix] freeminecraftmodels.* wildcard now properly grants the new disguise permissions
[Tweak] Various MagmaCore library improvements (MC 26 Spigot compatibility, Bedrock position sync, classloader isolation for shaded copies, etc.)
[Tweak] plugin.yml api-version updated from 1.18 to 1.21.4
[Tweak] Added .gitignore for Maven build artifacts and IDE files
FreeMinecraftModels 2.5.2:
- [Fix] Click hit detection on rotated entities — OrientedBoundingBox.update() was setting inverseRotationDirty=true after rotating but never actually transposing the rotation into inverseRotation, so rayIntersection / containsPoint silently used the stale identity inverse. Hit-detection on any entity not at yaw=0 was broken. The inverse is now computed inline (transpose of a pure rotation matrix) so clicks register correctly at every yaw.
- [Fix] LEFT_CLICK_AIR / RIGHT_CLICK_AIR no longer silently dropped — Bukkit reports air clicks with useInteractedBlock=DENY (there's no block to "use") and ignoreCancelled=true was treating that as "cancelled", skipping every air click and breaking hit detection on any entity without a block behind it. The handler now suppresses only when both useBlock and useItem are DENY (the real "another plugin cancelled this" signal).
- [Fix] OBB-edge left-clicks on dynamic entities now actually attack the underlying LivingEntity — previously the InteractionComponent default left-click path had no handler when no callback was registered, so OBB-edge clicks fell through silently and the entity stayed un-attackable outside its resized vanilla bbox. The default now forwards the swing to the underlying entity as a vanilla attack, with applyDamage gating to bypass OBBHitDetection's own EntityDamageByEntityEvent cancel for the dispatched hit.
- [Tweak] Per-player left-click cooldown (100ms) mirrors the existing right-click cooldown, so the same click can't double-fire from both the packet interaction entity path and the OBB raytrace path.
FreeMinecraftModels 2.5.0:
- [New] Furniture shop — optional Vault-backed /fmm shop opens a paginated GUI of craftable models that players can purchase with in-game currency, gated by the freeminecraftmodels.shop permission. Disabled by default; auto-disables if Vault or an economy provider is missing.
- [New] shop_config.yml config file with a master toggle, default price, menu title, price/click-to-buy lore formats, and configurable purchase/insufficient-funds/disabled/not-for-sale/inventory-full messages.
- [New] Per-recipe shopEnabled and shopPrice fields on PropRecipeConfig so individual recipes can opt out of the shop or set their own price (default falls back to ShopConfig.defaultPrice or 100).
- [New] ModeledEntity.setTintColor(Color) / getTintColor() API for a persistent per-entity dye tint applied through the leather-armor channel; the damage-flash animation now fades back to this color instead of undyed white.
- [New] ModeledEntity.setViewDistanceOverride(int) / getEffectiveViewDistance() API for per-entity view-distance caps — used by both SkeletonWatchers and PropBlockComponent.setPropBlocks so individual models can be made visible further than the plugin-wide DefaultConfig.maxModelViewDistance.
- [New] LocationAPI for third-party plugins to register dungeon detectors and region-protection providers via plain Predicate<Location> (no shaded types crossing classloaders), feeding the Lua em.location.is_in_dungeon and em.location.is_protected checks.
- [New] /fmm location diagnostic command reporting the count of registered dungeon locators and protection providers and what each predicate returns for the player's current location.
- [New] Lua entity-table enrichment — every entity table now exposes is_modeled, is_prop, and a nested model sub-table (model_id, play_animation, stop_animations, remove, is_dynamic) when the entity is an FMM model.
- [New] EliteMobs Lua bridge — when EliteMobs is installed, entity tables are enriched with is_elite, is_custom_boss, is_significant_boss, and an elite sub-table exposing level, name, health, max health, health/damage multipliers, and a remove() method.
- [New] Premade pickupable and double-storage prop scripts now query em.location.is_protected and em.location.is_in_dungeon and cancel the interaction in protected zones or dungeons, including a new on_right_click handler on the pickupable script that blocks mount fallback in those areas.
- [New] Soft-depend declarations for WorldGuard, WorldEdit, GriefPrevention, and Vault in plugin.yml so FMM loads after those protection/economy plugins when present.
- [New] Per-player local cooldown store on ScriptableItem — overrides getLocalCooldownStore to back cooldowns.set_local / check_local with a static map keyed by player UUID + itemId + script file, surviving item re-equip.
- [New] Per-player global cooldown store on ScriptableItem and per-prop global cooldown store on ScriptableProp for Lua scripting, with cleanup on player quit and prop destroy.
- [Fix] Fixed inverted Bedrock-client check in Bone.displayTo that prevented custom models from rendering for Bedrock players when sendCustomModelsToBedrockClients was enabled — the negation was the wrong way around so models were hidden exactly when they should have been shown.
- [Fix] Fixed item local cooldowns being wiped on every hotbar swap — ScriptableItem's ScriptInstance is destroyed on unequip, so the in-instance default map died with it; cooldowns are now persisted in a static map and cleared on player quit.
- [Fix] Fixed NullPointerException when playAnimation was called on a model that has no animations — AnimationComponent now null-guards animationManager and emits a single deduplicated warning per entity+animation pair instead of crashing or spamming the log.
- [Fix] Fixed bbmodels with freefloating cubes (cubes declared at the top of the outliner without a containing group) rendering as the missing-texture purple/black cube — BoneBlueprint.appendFreefloatingCubes now ingests bare-UUID outliner entries onto the auto-generated root bone, and ModelsFolder writes the matching item-model JSON instead of skipping the root.
- [Fix] Fixed prop right-click placement immediately triggering the right-click script or mount fallback — props now ignore click callbacks for 500 ms after spawn so the placement click can't double as an interaction.
- [Fix] Fixed prop right-click scripts being unable to suppress mount fallback — PropScriptManager.onPropRightClick now returns whether the script cancelled the event, and PropEntity only falls through to MountPointManager.tryMount when no script handled it.
- [Fix] Fixed persistent props leaking stale ModeledEntity references in loadedModeledEntitiesWithUnderlyingEntities when chunks unloaded — the underlying-entity mapping is now always cleared on remove, while the actual underlying despawn still only fires for non-persistent props.
- [Fix] Fixed double propEntities.put and double chunkHash assignment in PropEntity spawn that registered the wrong UUID — only the armorstand UUID is now stored.
- [Fix] Fixed OBBHitDetection.onPlayerInteract running for already-cancelled interaction events (e.g. cancelled by protection plugins) — the listener is now ignoreCancelled = true.
- [Fix] Fixed an async-vs-main-thread race in HitboxComponent.updatePacketInteractionEntityPosition where removePacketInteractionEntity could null packetInteractionEntity between the null check and the teleport — the field is now snapshotted into a local before use.
- [Fix] Fixed resendFakeBlocks running its scheduled re-show after the prop had been removed — the delayed task now bails out if isRemoved() is true.
- [Tweak] Bumped project version to 2.5.0 and added EliteMobs 10.2.0 and VaultAPI 1.7 as provided dependencies (with the JitPack repository for VaultAPI).
- [Tweak] Extracted EliteMobs custom-boss spawning out of the reflective block in LuaPropTable.spawn_boss into a dedicated EliteMobsBossSpawner class with direct API imports, isolated so EliteMobs classes only load when the call is actually made.
- [Tweak] Updated MagmaCore dependency to 2.2.0-SNAPSHOT.
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.
FreeMinecraftModels 2.3.18:
- [New] Modified EasyMinecraftGoals dependency to add the ability to make FMM display nametags with hex codes for advanced color control
FreeMinecraftModels 2.3.17:
- [New] Started implementing IK compatibility from blockbench
- [New] Added syncMovement property to DynamicEntity allowing models to be positioned independently from their underlying entity
- [New] Added packet-based Interaction entity support for click detection on prop models, providing more reliable interaction handling
- [Fix] Fixed UV mapping to use per-texture resolution instead of global resolution, fixing texture display issues on models with multiple textures of different sizes
- [Fix] Fixed duplicate texture name handling - textures with the same name now receive a numeric suffix to prevent file conflicts
- [Fix] Fixed NullPointerException when non-model files (e.g., PNG images) are placed in the models folder
- [Fix] Fixed viewer cleanup order in SkeletonWatchers to properly clean up state even when player goes offline
- [Tweak] Updated EasyMinecraftGoals dependency to 1.19.23
FreeMinecraftModels 2.3.16:
- [Critical fix] Fixes for papermc 1.21.11
FreeMinecraftModels 2.3.15:
- [New] Updated FreeMinecraftModels for Minecraft 1.21.11
- [New] Cube rotations now support arbitrary angles between -45 and 45 degrees on Minecraft 1.21.6+
- [Fix] Fixed UV mapping not correctly using the resolution property from bbmodel files, which could cause textures to appear incorrectly on models with non-16x16 resolution settings
- [Fix] Fixed OBB hitboxes not updating position for models without a configured hitbox blueprint
- [Fix] Fixed memory leaks and potential issues on plugin reload by properly clearing static data on shutdown
- [Tweak] Updated EasyMinecraftGoals dependency to 1.19.18
FreeMinecraftModels 2.3.14:
- [New] Animation scale keyframes now support per-axis scaling (X, Y, Z) instead of uniform scaling
- [New] Added automatic attack animation support for Evokers when summoning fangs
- [New] Added getBoneLocation() method to the Bone API
- [Fix] Fixed potential thread safety issues with entity visibility changes for Bedrock clients
- [Tweak] Updated EasyMinecraftGoals dependency to 1.19.17
FreeMinecraftModels 2.3.13:
- [Fix] Fixed error spam related to hiding models
FreeMinecraftModels 2.3.12:
- [New] Custom models can now correctly apply a damage tint for Minecraft versions 1.21.4-1.21.10
- [New] Conversions now correctly account for the inflate property
- [Fix] Fixed several problems with the fmmodel file format
- [Fix] Fixed errors related to animations
- [Tweak] Improved warning logging
FreeMinecraftModels 2.3.11:
- [New] Updated to support Block Bench 5!
- [Fix] Fixed animations being very jittery
- [Fix] Fixed issue where animated textures would not work when in the fmmodel format
FreeMinecraftModels 2.3.10:
- [New] Free Minecraft Models can now send functionally unlimited amounts of entities to players without causing problems (other than killing player FPS)
- [New] Tweaked the base model entity to be able to be moved independently of having an underlying entity, making true fake entities possible
- [New] Various tweaks and optimizations for MegaCraft Survivors have led to successfully loading up to 10,000 entities at 20 TPS (but only 14 FPS client side when viewing those entities at the same time, nothing I can do about that)
- [Fix] Fixed bug where mobs that would teleport would do so twice, resulting in pretty bad flickering
- [Fix] Fixed a number of warnings and bugs
FreeMinecraftModels 2.3.9:
- [New] Updated to Minecraft 1.21.9 and 1.21.10
- [Fix] Changed left click detection, should no longer incorrectly trigger when right clicking
FreeMinecraftModels 2.3.8:
- [New] Added the ability to instantly discover props when inserted into the world with the correct metadata (works with WorldEdit and the new BetterStructures structure generation)
- [Critical Fix] Fixed problems for Minecraft versions 1.21.0, 1.21.1, 1.21.2, 1.21.3
- [Fix] Fixed a number of concurrency errors
FreeMinecraftModels 2.3.7:
- [Fix] Critical fix, making the plugin appropriately async again for better performance
Yggdrasil is out! This is the first dungeon that features all custom boss models and scripting, resulting in incredibly unique behavior and feel! Check this trailer out!
As you can see, FreeMinecraftModels can now handle intensive load scenarios like this.
Download it now here!
FreeMinecraftModels 2.3.6:
- [New] Massive improvements to handling entities, they should now be removed from clients when out of sight correctly and should never desync again
- [New] Added `ItemifyCommand` and `ModelItemListener` for enhanced item interaction
- [Fix] Resolved hitbox and interaction redundancy, optimizing tick performance
- [Fix] Adjusted rotation handling in `CubeBlueprint` to prevent null values
- [Fix] Correctly scaled models using attribute-based scaling in living entities
- [Tweak] Defaulted task scheduling to synchronous where necessary
- [Tweak] Incremented dependencies for `EasyMinecraftGoals` and `EliteMobs`
FreeMinecraftModels 2.3.5:
- [Critical Fix] Fixed bug with props where they would multiply when reloading.
FreeMinecraftModels 2.3.4:
- [New] Support Minecraft 1.21.8
- [Fix] Fixed error related to disguising arrow projectiles
Note: with this, FMM should have full feature parity for all basic model design features with all other plugins.
FreeMinecraftModels 2.3.3:
- [New] New supports models that have textures of varying resolutions
- [New] Now supports animated textures
- [Fix] Fixed issues related to animating with non-start and non-finish keyframes
Note: While we tested this as much as we could, this is an absolutely massive update and may have some problems. Please feel free to report them on the discord server.
FreeMinecraftModels 2.3.2:
- [New] The plugin now runs almost entirely on async
- [New] Added the /fmm stats command to display how many models are currently loaded in the world
- [New] Added the entity hit by projectile callback which allows API users to configure custom behavior when models get hit by projectiles, as well as related events
- [New] Tentative addition of piercing enchant compatibility, may require further testing
- [New] Added documentation about callbacks
- [New] Fully standardized all entities and moved to using components in ModeledEntity to centralize behavior properly
- [New] The plugin now bundles all the packets into a single call for the most commonly sent packets
- [Fix] Modified the damage delivery system from attack to damage since attack seems to not tie into Minecraft's damage event system correctly
- [Fix] Fixed error that occurred when trying to remove props-
- [Fix] Fixed props not being removable after a reload/restart/chunk reload
- [Fix] Fixed a lot of redundant checks in hitboxes that were slowing down the server
- [Fix] Fixed problem where non-ops were getting messages about updating the plugin when out of date
- [Optimizations] Too many to list
FreeMinecraftModels 2.3.1:
- [New] Updated for Minecraft 1.21.7
- [Fix] Fixed a problem where persistent props would not return correctly
- [Fix] Fixed a problem where props would not be permanently removed correctly after being punched
- [Fix] Fixed other problems with prop loading
- [Tweak] Updated lombok
- [Tweak] Relocated reflections
Note: Many of the features here were written for my recent update of
ResurrectionChest, so you can check that out to see some of the new models and features!
FreeMinecraftModels 2.3.0:
- [New] Massive rewrites! This improves and adds a ton of features - the following changelog may not cover everything, but it tries to. This also brings a couple of API changes, which should be for the better in the long run as they seek to simplify how the API can be used while also making it far more powerful.
- [New] Added PlayerDisguiseEntity, basically allowing players to be used as dynamic entities for disguises
- [New] Added command /fmm disguise <modelName> which allows players to disguise themselves as specific models
- [New] Added command /fmm undisguise to remove disguises
- [New] Models can now use tag_ in bone names as meta indicators for name tags, displaying any set display name there
- This works with empty bones, where the pivot point will be used
- This also works with bones that contain cubes
- Models can have multiple name tags, or no name tags
- Name tags currently only use armor stands for maximum compatibility, text displays coming soon
- [New] Added new interpolation types for animations
- SMOOTH
- BEZIER
- STEP
- [New] Vastly improved the props system, which now uses callbacks via API to define behavior and can create packet-based blocks which respect prop rotation.
- This is key for making models 'solid' - for example, ResurrectionChest places packet-based barrier blocks where the chest should be, making the model solid
- [New - Internal] Centralized all behavior in ModeledEntity, and broke it up into components for better readability and usability.
- All FMM entities can now have underlying entities, and those entities can be of any Minecraft entity type
- All FMM entities now share the same core components, standardizing behavior and clearing out the previous unnecessary complexity
- Core interaction behavior (left-clicking, right-clicking and entering entity hitboxes) is now purely callback-based
- Since this is shared by all entity types, all entity types can now have fully custom callbacks
- Since this system is used internally, behavior can automatically be overriden by other plugins without requiring turning other features off
- Since this system uses callbacks, any interaction can do virtually anything, or nothing at all. This is showcased by ResurrectionChest opening death chests in that plugin.
- [New] Moved common math operations to MagmaCore
FreeMinecraftModels 2.2.0:
- [New] Updated for Minecraft 1.21.6
- [EXPERIMENTAL] Experimental feature - add the ability to disable custom models to non-java clients, making the plugin show the underlying vanilla Minecraft entities
- [Fix] Fixed floodgate detection, clients getting packets via floodgate should now correctly be detected as bedrock clients (if the admins have correctly set their server up for floodgate API use in accordance to floodgate docs)
- [Fix] Fixed reported security issue with the logify command
- [Tweak] Lowered minimum forced view distance for custom models, fixing some lower end MC clients getting overwhelmed with packets in densely packed zones
- [Fix] Fixed warnings related to the logify command
- [Tweak] Improved ReadMe
FreeMinecraftModels 2.1.0:
- [New] Rewrote the animation system
- [New] Plugins can now mess with model scale through the API
- [New] Living entities disguised with custom models now tint red when dying, emit particles (imitating Minecraft) and also shrink down at the end to fade away. Red tint is currently not working for Minecraft 1.21.4+
- [New] Added API endpoints for interactions:
- DynamicEntityLeftClickEvent
- DynamicEntityRightClickEvent
- DynamicEntityHitboxContactEvent
- StaticEntityLeftClickEvent
- StaticEntityRightClickEvent
- StaticEntityHitboxContactEvent (entity must be set to tick collision checks)
- PropEntityLeftClickEvent
- PropEntityRightClickEvent
- PropEntityHitboxContactEvent (entity must be set to tick collision checks)
- ModeledEntityLeftClickEvent
- ModeledEntityRightClickEvent
- ModeledEntityHitboxContactEvent (entity must be set to tick collision checks is not dynamic)
- [New] Dynamic Entities now scale up with the scale attribute in the underlying vanilla minecraft boss
- [New] Custom hitboxes now scale correctly with the current scale setting of the underlying entity or with the scale setting set by other plugins (they do not scale based on animations)
- [Fix] Death animations should now play once more
- [Fix] Fixed entity desync when entities teleport
- [Fix] Fixed hitboxes being halfway buried into the floor
- [Fix] Heads now cause bodies to rotate in a way very similar to Minecraft's, avoiding the issue where heads would sometimes rotate up to 180 degrees away from the body
- [Optimization] Now avoiding recalculating hitboxes when possible
- [Optimization] Now only calculating packet-related math when necessary
- [Refactor] Remade shutdown sequence to systematize it and prevent memory leaks
- [Fix] Static entities can now be killed by punching them as intended
- [Fix] Fixed bug where projectiles would incorrectly remove models
- [Fix] Fixed problem where x and z axis sizes for hitboxes were flipped around
- [Tweak] Hitbox debug command now also shows underlying entity, if any
- [Tweak] Capped resync at 1 second, to avoid entities flickering too much while doing tricky behavior that can cause desyncs
Heads up: This is basically a massive rewrite of FMM with an absolute load of new features, optimizations and so on. There's so much I forgot to log a lot of it, but there are two things I want to mention first and foremost:
- /fmm spawn PROP <modelName> can now be used to permanently spawn a decoration for your server. This will be heavily expanded on soon
- A massive rewrite was done to massively optimize several aspects of the plugin. I am still working on this, but I am currently aiming to make it feasible for servers to be running with hundreds if not thousands of models active. Join the
discord to give me feedback if you want to help!
FreeMinecraftModels 2.0.0:
- Added prop command & prop system
- Armor stands display rotations correctly
- Added scale to animations
- Updated for Minecraft 1.21.5
- Added a centralized ticking system for better performance
- Several improvements to the prop system, damage system and bounding box system
- A lot of optimizations around the watchers and animation system
- New correctly checking for remote updates
- Added new hitbox system which supports having x and z dimension be different for hitboxes, and increases accuracy as it supports hitboxes rotating when entities rotate (this is not something Minecraft can do) and can be toggled to do damage on contact
- Plugin is now more optimized around having significantly more entities
FreeMinecraftModels 1.6.0:
- [New] Improved commands
- [New] Added /logify command to allow admins to easily upload their latest log to maclo.gs
- Fixed problem with checking version on startup
FreeMinecraftModels 1.5.0:
- [New] Updated for Minecraft 1.21.4 & 1.21.3
- [New] Now using Minecraft 1.21.4's new resource pack structure which allows models to be set independent from vanilla items and not use numerical IDs, meaning there will no longer be any collisions between FMM models and any other plugins' custom data
FreeMinecraftModels 1.4.2:
- [New] Updated for Minecraft 1.21.1
- [New] Heads can now rotate individually. To tag a model head as a head, use "h_" at the start of the name
- [Fix] Fixed bug where teleporting an underlying dynamic entity would desync the custom model
- [Fix] Fixed issue where rotations for animations would get messed up if no keyframes were set for bones in animations
- [Fix] Fixed config.yml not generating correctly
- [Refactor] Removed dead code
FreeMinecraftModels 1.4.1:
- [New] Big improvements to animation smoothness for all versions
- [New] Moved repository to repo.magmaguy.com
FreeMinecraftModels 1.4.0:
- [New] Added MagmaCore
- All commands were rewritten
- All configuration file systems were redone
- Many classes moved to the core library
- [New] Repository moved to
http://magmaguy.com:50001/ , now self-hosted
- [New] Added optional synchronization with ResourcePackManager, which automatically merges and hosts the resource packs when FMM modifies them, even if the modification is done while the server is live (due to importing new content), and automatically distributes up-to-date packs. Use of ResourcePackManager is VERY HIGHLY RECOMMENDED.
- [New] Added warning messages for rare cases where cubes have textures on some faces and not others, which breaks Minecraft
- [New] Now clearing outdated resource in the generated resource pack
- [New] Changed interpolation for animations, they should now feel smooth
- [New] Changed the file generation to prevent it from generating invalid resource packs.
- [New] Multiple textures can now share the same name without causing errors
- [Fix] Fixed issue which could cause models to tilt by default when created in specific ways
- [Fix] Fixed issue which could cause bones to not rotate correctly when not creating a root bone (root bone is now autogenerated)
- [Fix] Now handling locales with problematic diacritics correctly (such as turkish)
- [Fix] Fixed error in async task
FreeMinecraftModels 1.11.2 changelog:
- Now working for Minecraft 1.21
FreeMinecraftModels 1.3.1 changelog:
- Fixed hitboxes for 1.20.6
- Hitboxes no longer bounce projectiles off
- Very minor tweaks to dormant code
FreeMinecraftModels 1.3.0 changelog:
- [New] Spent entirely too long fixing rotations, rotation system should not be very, very close to how blockbench displays them
- [New] 1.20.6 support
- [New] Started adding the prop system, still dormant code
1.2.2 Changelog:
- [New] Now compatible for Minecraft 1.20.4
- [New] Plugin should now send notifications if a newer version is out
- [New] Nearly full rewrite of the plugin
- [New] The plugin can now send both display entities and armor stands to player
- [New] FreeMinecraftModels now uses packets exclusively, making entities partially async - full async coming soon
- [New] Bedrock compatibility - servers using Floodgate will automatically have armor stands sent to bedrock clients instead of display entities, making the plugin natively support bedrock clients
- [Removal] No longer using CloudCommandFramework for commands, fixing various reload issues, improving API usability and drastically lowering the file size of the plugin
- [Tweak] Seriously improved the general accuracy of the model displays (now using transformation matrices)
- ... and probably several other things, it was a massive rewrite after all
FreeMinecraftModels 1.1.4 changelog:
- Updated for 1.20.4 compatibility
- Fixed hitboxes accidentally being half the size they were meant to be
FreeMinecraftModels 1.1.2 changelog:
- Generally completely rewrote bone generation, models should now be 1:1 accurate no matter the total size of the model (as long as they are within the usual size restrictions)
- Fixed critical texture issue with some models
- Fixed critical bone issue with some models
FreeMinecraftModels 1.1.1 changelog:
- Fixed issue where importing folders would throw the system into a loop
- Fixed error when looking at the sky while spawning a model
Note: This update adds all the minimum requirements to use FreeMinecraftModels as a drop-in replacement for ModelEngine by EliteMobs!
Version 1.1.0 changelog:
- [New] Added animations
- [New] Added hitboxes
- [New] Added dynamic entities
- [New - API] Added a maven repo
- [New] The plugin can now be used as a replacement for ModelEngine for EliteMobs! This should also be the case for many other plugins.
- [Reworks] Far too many changes to existing code to list, without changing behavior too much