
Free Minecraft Models
Put custom models in your Minecraft server without client mods, for free!
14.2K
46
Список изменений
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
(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.
Метаданные
Канал релиза
Release
Номер версии
2.5.0
Загрузчики
PaperPurpurSpigot
Версии игры
1.21.4–26.1.2
Загрузок
816
Дата публикации
1 мес. назад

