Skip to content

Releases: meigoc/DBetterModel

DBetterModel v5.0.0 | BM v1.15.0

25 Dec 14:34

Choose a tag to compare

for BetterModel v1.15.0, Minecraft 1.21.10, Denizen 1.3.1 (7236) @meigoc

Feat

  • Added bStats metrics integration.
  • Added shadow_radius mechanism to control bone shadow size.
  • Added billboard mechanism support directly to BMBoneTag.
  • New tags: <BMBoneTag.local_position> and <BMBoneTag.real_position>.
  • BMModelTag now accepts mechanisms (tint, glow, etc.) to apply changes to the entire model at once.

Refactor

  • Optimized bmpart command: skins now load asynchronously and apply immediately (removed artificial delay).
  • Updated <BMBoneTag.global_position> to return a standard LocationTag.
  • 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

02 Nov 16:44
ef50407

Choose a tag to compare

for BetterModel v1.14.0, Minecraft 1.21.8, Denizen 1.3.1 (7222) @meigoc

Added:

  • BetterModel 1.14.0 support

This version was created with the support of @isnsest

DBetterModel v4.2.0 | BM v1.13.4

19 Oct 19:35
f320abb

Choose a tag to compare

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 RenderedBone and its HitBox to 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 p in the model file).

This version was created with the support of @isnsest

DBetterModel v4.1.0 | BM v1.13.0

08 Oct 18:46
51998ac

Choose a tag to compare

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

09 Aug 14:17

Choose a tag to compare

for BetterModel v1.11.0, MC 1.21.4, Denizen 1.3.1 (7144) @meigoc

Fixes & Improvements

  • The interpolation_duration mechanism has been moved from the model level (BMModelTag) to the bone level (BMBoneTag). It now correctly applies only to the specified bone by calling RenderedBone.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 a LocationTag representing the bone's world Euler angles (pitch, yaw, roll).
  • Implemented a proactive cache clearing system. The ModelService now listens for BetterModel's CloseTrackerEvent to automatically purge cached data for removed models, preventing potential memory leaks.

New Features

  • Per-Player Animations: The old hide parameter has been deprecated and replaced with a native for:[<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 the bmmount command, 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 ModelService and BoneController layer. This greatly improves code maintainability, scalability, and clarity.
  • The BMBoneTag's adjust method 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.dbettermodel to meigo.dbettermodel.

This version was not created with anyone's support and has not been tested.

DBetterModel v3.4.0 | BM v1.10.2

30 Jul 14:41

Choose a tag to compare

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 offset Mechanism: Added an offset mechanism to BMBoneTag. This allows scripters to apply a local positional offset to a bone using a LocationTag without altering its currently displayed item or scale. Syntax: adjust <bone> offset:<location>.
  • New view_range Mechanism: Added a view_range mechanism to BMBoneTag. 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 item mechanism for BMBoneTag has been refactored. It no longer accepts a LocationTag for an offset. Its sole purpose is now to set the ItemTag for 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

27 Jul 18:17

Choose a tag to compare

for BetterModel v1.10.1, MC 1.21.4, Denizen 1.3.1 (7144) @meigoc

Added:

  • New Mechanism: Added a rotate mechanism to BMBoneTag. This allows scripters to apply an additional, non-cumulative rotation to a bone using a QuaternionTag. 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

27 Jul 16:43

Choose a tag to compare

for BetterModel v1.10.1, MC 1.21.4, Denizen 1.3.1 (7144) @meigoc

Refactored:

  • Extracted core bone manipulation logic from BMBoneTag into the new net.openproject.dbettermodel.api.BMBone API class. This significantly reduces complexity in the Denizen object layer, improves code structure, and enhances reusability.
  • Simplified BMBoneTag to act as a lightweight proxy, delegating all mechanism logic (tint, visible, item) to the new BMBone API.

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 scale mechanism to BMBoneTag. This allows scripters to adjust the non-uniform scale of a bone's displayed item using a LocationTag as a vector.
  • New Command Argument: Added an optional hide:<player> argument to the bmlimb command. This allows hiding all of the target player's active models from a specific observer player.

Changed:

  • Updated the syntax of the bmlimb command to include the new optional hide argument.
  • Modified BMLimbCommand's processing logic to interact with the target player's EntityTrackerRegistry to apply per-player visibility changes when the hide argument is used.

and more...

This version was created with the support of @isnsest

DBetterModel v3.1.0 | BM v1.10.1

25 Jul 17:47
5efe1bf

Choose a tag to compare

for BetterModel v1.10.1, MC 1.21.4, Denizen 1.3.1 (7144) @meigoc

Added:

  • Bone Visibility Mechanism (visible): Implemented a new mechanism for BMBoneTag to 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 for BMBoneTag that allows setting a custom ItemTag as the bone's model, with optional support for a local LocationTag offset. [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 the bmpart command. 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 new bmpart command 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 custom BoneItemMapper in conjunction with SkinManager#removeCache to 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

24 Jul 20:51
3dcb7c4

Choose a tag to compare

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 the PlayerManager#animate API, allowing scripts to trigger player-specific animations.
  • Billboard Control Command (bmboard): Added a command to apply Display.Billboard properties to any RenderedBone on a model tracker.
  • BMBoneTag Denizen Object: Introduced a new ObjectTag to represent RenderedBone, enabling fine-grained manipulation of model parts.
    • Added tags: .name, .global_position, .is_visible.
    • Added tint mechanism for dynamic colorization via RenderedBone#tint
  • First Model Accessor: The <BMEntityTag.model> tag now supports execution without a context argument to fetch the first available EntityTracker from the registry via EntityTrackerRegistry#first
  • Feat: Enhance BMState command to support layered animations by targeting specific model bones via a new bones argument.
  • Feat: Add optional bones argument to BMState command to enable animation layering.

Changed:

  • Multi-Model Targeting: Refactored BMStateCommand to require a model: argument, disambiguating the target EntityTracker on entities with multiple models.
  • API Utilization: Migrated all EntityTrackerRegistry lookups from a direct static call to the Optional-based BetterModel.registry() method, improving null safety and overall stability.
  • Argument Renaming: Renamed the player: argument to target: in BMLimbCommand to prevent conflicts with Denizen's reserved keywords.

Fixed:

  • Packet Update Latency: The bmboard command now dispatches a tracker.forceUpdate(true) call to ensure visual changes are immediately propagated to the client.
  • Fix: Resolve animation override behavior in BMState by enabling bone-specific targeting.

and more...

#1 Issue (fixed)

This version was created with the support of @isnsest