Releases: meigoc/DBetterModel
DBetterModel v5.0.0 | BM v1.15.0
for BetterModel v1.15.0, Minecraft 1.21.10, Denizen 1.3.1 (7236) @meigoc
Feat
- Added bStats metrics integration.
- Added
shadow_radiusmechanism to control bone shadow size. - Added
billboardmechanism support directly toBMBoneTag. - New tags:
<BMBoneTag.local_position>and<BMBoneTag.real_position>. BMModelTagnow accepts mechanisms (tint, glow, etc.) to apply changes to the entire model at once.
Refactor
- Optimized
bmpartcommand: skins now load asynchronously and apply immediately (removed artificial delay). - Updated
<BMBoneTag.global_position>to return a standardLocationTag. - Improved internal rendering logic for better compatibility with BetterModel API.
- Removed forced skin cache clearing to improve performance.
DBetterModel v4.3.0 | BM v1.14.0
DBetterModel v4.2.0 | BM v1.13.4
for BetterModel v1.13.4, Minecraft 1.21.8, Denizen 1.3.1 (7222) @meigoc
Added:
- BetterModel 1.13.4 support
Bug Fixes
- bmmount: Fixed a command argument parsing error that caused a "Too many linear arguments" failure when executing the command.
- bmmount: Refactored the entire command logic to use the BetterModel API directly for mounting and dismounting entities from model bones.
- This resolves the core issue where the command would appear to succeed but had no effect.
- The command now correctly retrieves the
RenderedBoneand itsHitBoxto perform mount/dismount actions. - Added proper error handling to inform the user if the target bone is not a valid seat (i.e., not tagged with
pin the model file).
This version was created with the support of @isnsest
DBetterModel v4.1.0 | BM v1.13.0
for BetterModel v1.13.0, MC 1.21.4, Denizen 1.3.1 (7144) @meigoc
Added:
<PlayerTag.limb>: Returns the MapTag of the player’s limb animation data.
Example:map@[animation_name=roll;loop_mode=loop;default_loop_mode=play_once]<PlayerTag.limb_bones[<model_name>]>: Returns the MapTag of all player limb bones.- BetterModel 1.13.0 support
This version was created with the support of @isnsest
DBetterModel v4.0.0 | BM v1.11.0
for BetterModel v1.11.0, MC 1.21.4, Denizen 1.3.1 (7144) @meigoc
Fixes & Improvements
- The
interpolation_durationmechanism has been moved from the model level (BMModelTag) to the bone level (BMBoneTag). It now correctly applies only to the specified bone by callingRenderedBone.moveDuration(), fixing previous non-functional behavior. - Fixed the
<BMBoneTag.world_rotation>tag, which was incorrectly returning a quaternion. It has been replaced with<BMBoneTag.world_rotation_euler>, which now accurately returns aLocationTagrepresenting the bone's world Euler angles (pitch, yaw, roll). - Implemented a proactive cache clearing system. The
ModelServicenow listens for BetterModel'sCloseTrackerEventto automatically purge cached data for removed models, preventing potential memory leaks.
New Features
- Per-Player Animations: The old
hideparameter has been deprecated and replaced with a nativefor:[<player>|...<list_of_players>]argument in animation commands. This uses BetterModel's official API (AnimationModifier) to send animation packets only to specified players for significantly improved efficiency and reliability. - New Command -
bmmount: Added thebmmountcommand, allowing entities to be mounted on or dismounted from any bone that has a hitbox. - New Bone Mechanisms:
glow:<boolean>: Enables or disables the glowing effect for a specific bone.glow_color:<integer>: Sets the color of the glowing effect for a bone.
Refactoring
- The entire addon has been architecturally refactored. Logic has been decoupled from Denizen ObjectTags and centralized into a
ModelServiceandBoneControllerlayer. This greatly improves code maintainability, scalability, and clarity. - The
BMBoneTag'sadjustmethod has been simplified to a clean dispatcher, delegating all complex logic to the new service layer instead of containing dozens of conditional checks. - The project's Java package has been renamed from
net.openproject.dbettermodeltomeigo.dbettermodel.
This version was not created with anyone's support and has not been tested.
DBetterModel v3.4.0 | BM v1.10.2
for BetterModel v1.10.1, MC 1.21.4, Denizen 1.3.1 (7144) @meigoc
Fixed:
- Resolved a critical state management issue where applying transformations to a bone (e.g.,
scale,item,offset) would reset any previously applied transformations. The bone's state is now persistent across separate commands, allowing for cumulative adjustments.
Added:
- New
offsetMechanism: Added anoffsetmechanism toBMBoneTag. This allows scripters to apply a local positional offset to a bone using aLocationTagwithout altering its currently displayed item or scale. Syntax:adjust <bone> offset:<location>. - New
view_rangeMechanism: Added aview_rangemechanism toBMBoneTag. This allows scripters to set the render distance of a bone's display entity in blocks, using a decimal value. This is useful for hiding model parts in certain camera perspectives. Syntax:adjust <bone> view_range:<#.#>.
Changed:
- The
itemmechanism forBMBoneTaghas been refactored. It no longer accepts aLocationTagfor an offset. Its sole purpose is now to set theItemTagfor the bone, preserving any existing offset or scale.
This version was created with the support of @isnsest
DBetterModel v3.3.0 | BM v1.10.1
for BetterModel v1.10.1, MC 1.21.4, Denizen 1.3.1 (7144) @meigoc
Added:
- New Mechanism: Added a
rotatemechanism toBMBoneTag. This allows scripters to apply an additional, non-cumulative rotation to a bone using aQuaternionTag. The rotation is added to the bone's existing animation.
This version was created with the support of @isnsest
DBetterModel v3.2.0 | BM v1.10.1
for BetterModel v1.10.1, MC 1.21.4, Denizen 1.3.1 (7144) @meigoc
Refactored:
- Extracted core bone manipulation logic from
BMBoneTaginto the newnet.openproject.dbettermodel.api.BMBoneAPI class. This significantly reduces complexity in the Denizen object layer, improves code structure, and enhances reusability. - Simplified
BMBoneTagto act as a lightweight proxy, delegating all mechanism logic (tint, visible, item) to the newBMBoneAPI.
Added:
- New API Class: Introduced
net.openproject.dbettermodel.api.BMBone, a high-level API for programmatic control over individual model bones. It provides simplified methods for tinting, visibility (global and per-player), item setting, and scaling. - New Mechanism: Added a
scalemechanism toBMBoneTag. This allows scripters to adjust the non-uniform scale of a bone's displayed item using aLocationTagas a vector. - New Command Argument: Added an optional
hide:<player>argument to thebmlimbcommand. This allows hiding all of the target player's active models from a specific observer player.
Changed:
- Updated the syntax of the
bmlimbcommand to include the new optionalhideargument. - Modified
BMLimbCommand'sprocessing logic to interact with the target player'sEntityTrackerRegistryto apply per-player visibility changes when thehideargument is used.
and more...
This version was created with the support of @isnsest
DBetterModel v3.1.0 | BM v1.10.1
for BetterModel v1.10.1, MC 1.21.4, Denizen 1.3.1 (7144) @meigoc
Added:
- Bone Visibility Mechanism (
visible): Implemented a new mechanism forBMBoneTagto control bone visibility. It supports both global toggling and per-player visibility changes via packet manipulation. [EXPERIMENTALLY, THERE ARE PROBLEMS] - Bone Item Mechanism (
item): Introduced a mechanism forBMBoneTagthat allows setting a customItemTagas the bone's model, with optional support for a localLocationTagoffset. [This mechanism previously existed, but has been added again] - Configurable Skin Application Delay: Introduced a new option in
config.yml(options.skin-apply-delay-ticks) to allow server administrators to define the delay before a player skin part is applied to a model bone via thebmpartcommand. This provides greater flexibility and control over the timing of asynchronous operations, enabling fine-tuning for server performance and skin-fetching reliability. - Dynamic Skin Part Command (
bmpart): Implemented the newbmpartcommand to interface with BetterModel's skin and bone APIs. This command allows scripts to map a model bone to a player's skin part (e.g., head, arm), enabling dynamic model customization. The feature utilizes a customBoneItemMapperin conjunction withSkinManager#removeCacheto ensure skin textures are fetched and applied correctly, even when updated in real-time by other plugins. - SkinsRestorer Hook, new debug, new config and more
This version was created with the support of @isnsest
DBetterModel v3.0.0
for BetterModel v1.10.1, MC 1.21.4, Denizen 1.3.1 (7144) @meigoc
Dropped support for MC 1.20.4
Added:
- Player Animation Command (
bmlimb): Implemented a new command to directly interface with thePlayerManager#animateAPI, allowing scripts to trigger player-specific animations. - Billboard Control Command (
bmboard): Added a command to applyDisplay.Billboardproperties to anyRenderedBoneon a model tracker. BMBoneTagDenizen Object: Introduced a newObjectTagto representRenderedBone, enabling fine-grained manipulation of model parts.- Added tags:
.name,.global_position,.is_visible. - Added
tintmechanism for dynamic colorization viaRenderedBone#tint
- Added tags:
- First Model Accessor: The
<BMEntityTag.model>tag now supports execution without a context argument to fetch the first availableEntityTrackerfrom the registry viaEntityTrackerRegistry#first - Feat: Enhance
BMStatecommand to support layered animations by targeting specific modelbonesvia a new bones argument. - Feat: Add optional bones argument to
BMStatecommand to enable animation layering.
Changed:
- Multi-Model Targeting: Refactored
BMStateCommandto require amodel:argument, disambiguating the targetEntityTrackeron entities with multiple models. - API Utilization: Migrated all
EntityTrackerRegistrylookups from a direct static call to theOptional-basedBetterModel.registry()method, improving null safety and overall stability. - Argument Renaming: Renamed the
player:argument totarget:inBMLimbCommandto prevent conflicts with Denizen's reserved keywords.
Fixed:
- Packet Update Latency: The
bmboardcommand now dispatches atracker.forceUpdate(true)call to ensure visual changes are immediately propagated to the client. - Fix: Resolve animation override behavior in
BMStateby enabling bone-specific targeting.
and more...
#1 Issue (fixed)
This version was created with the support of @isnsest