Skip to content

Releases: PZDonny/DisplayEntityUtils

3.5.1 | Skript Syntax Update & Bug Fixes

02 Apr 11:01
16ded40

Choose a tag to compare

Release Highlights

  • Updated Syntax📜
  • API Changes 🔨
  • Bug Fixes 🐛

A new Wiki has been released improving clarity in many areas and a better visual look

Skript Changes

  • Updated Spawn BDEngine Model from File to be a section, supporting more spawn options
deu spawn bde model "mymodel" at {_location} stored in {_activegroup}:
    packet: false
    teleport-duration: 2
    billboard: VERTICAL
    persistent: true
    visible: true
    brightness: 10 and 5 #Block and Sky, -1 and -1 to reset
    spawnanimation: true

SkriptHubViewTheDocs

API Changes

New Version: 3.5.1

Additions / Changes

  • Added SpawnedDisplayEntityGroup#toPacket(Location, GroupSpawnSettings) for converting a group to packet based, with group spawn settings supplied
  • Added BDEModel#spawn(Location, SpawnReason, GroupSpawnSettings) for spawning a BDEModel with group spawn settings supplied
  • Added BDEModel#createPacketGroup(Location) and BDEModel#createPacketGroup(Location, GroupSpawnSettings) for spawning a BDEModel as a packet-based group

Bug Fixes

  • Fixed an issue with Direction (Pitch, Yaw, Pivot) Skript syntax that changes a group/part/filter's looking direction not working as intended
  • Fixed Active Group Respect Entity Direction Skript syntax not using a group's teleport duration if not explicitly specified
  • Fixed an issue where adding a part to a PacketDisplayEntityGroup incorrectly updated the group's passenger entities

What's Changed

Full Changelog: 3.5.0...3.5.1

3.5.0 | Major Skript Recode & New Wiki

24 Mar 22:38
fce25f4

Choose a tag to compare

Release Highlights

  • New Wiki 🧾
  • New Command 💻
  • Reworked & Recoded Skript Syntax📜
  • API Changes 🔨

A new Wiki has been released improving clarity in many areas and a better visual look

Commands

New Command

  • Added /deu parts deselect
    • Deselect your currently selected part
    • Permission: deu.parts.select

Skript Changes

  • Updated to Skript v2.14.3
  • Reworked many of the syntaxes, avoiding conflicts, reducing redundancy, and overall improving syntax
    SkriptHubViewTheDocs

API Changes

New Version: 3.5.0

Breaking Changes

  • Removed playSpawnAnimation parameter from DisplayEntityGroup#createPacketGroup methods
  • DisplayGroupManager#getOrCreateNearbySpawnedGroups now returns a set of SpawnedDisplayEntityGroups instead of GroupResults

Additions / Changes

  • Added ActivePart#getItemDisplayTransform
  • Added ActivePart#getInterpolationDelay and ActivePart#getInterpolationDuration
  • Added methods to ActivePart
    • #getItemDisplayTransform
    • #getInterpolationDuration
    • #getInterpolationDelay
    • #getBillboard
  • Added GroupSpawnSettings#playSpawnAnimation
  • DisplayUtils#getFixedModelLocation now accepts an ActivePart rather than just a PacketDisplayEntityPart

QOL

  • Fixed incorrect messages when using commands or clicking clickable points

What's Changed

Full Changelog: 3.4.3...3.5.0

3.4.3 | Optimizations & New Skript Syntax

15 Mar 06:49
fa68d40

Choose a tag to compare

Release Highlights

  • New Skript Syntax📜
  • API Changes 🔨
  • Bug Fixes 🐛

Skript Changes

  • Updated to Skript v2.14.0
  • Added Player's Selected Active Part to get the selected active part of a player
set {_activepart} to player's selected part
  • Added Rotate Active Group/Part to update the axis rotation of an active group/part, in degrees.
deu rotate y of {_activegroup} by 45
deu rotate z of {_activepart} by 20
deu rotate world y of {_activepart} by 90

SkriptHubViewTheDocs

API Changes

DisplayGroupManager Changes

Important

Many changes have been made regarding how a group is retrieved from an entity, a location, chunk, or world

Group From Location

  • #getSpawnedGroups() - get all spawned groups registered in the current play session
  • #getSpawnedGroups(World) - get all spawned groups registered in a world
  • #getSpawnedGroups(Chunk) - get all spawned groups registered in a chunk
  • #getSpawnedGroupsByCreationTime(Chunk) - get all spawned groups registered in a chunk, keyed in a map by group creation time
  • #getNearbySpawnedGroups(Location, double) - get all nearby registered spawned groups in a radius
  • #getOrCreateNearestSpawnedGroup(Location, radius) - get and/or create many registered spawned groups in a radius
  • #getNearestSpawnedGroup(Location) - get the nearest registered spawned group in a radius
  • #getOrCreateNearestSpawnedGroup(Location, radius) - get and/or create the nearest registered spawned group in a radius

Group From Entity

  • #getSpawnedGroup(Display) - get a registered spawned group that a given Display is part of
  • #getOrCreateSpawnedGroup(Display) - get and/or create a registered spawned group that a given Display is part of
  • #getSpawnedGroup(Entity, radius) - get a registered spawned group that an eligible part entity is part of (Interaction, Mannequin)

Bug Fixes / QOL

  • Improved speed of group detection when a chunk loads for the first time
  • Fixed per-player animations not working
  • Fixed logic of AcitvePart#rotateDisplay
  • Fixed non-display parts (Interaction, Mannequin) becoming ungrouped after their chunk unloads and loads again
  • Fixed a memory leak related to group detection during chunk loads

What's Changed

Full Changelog: 3.4.2...3.4.3

3.4.2 | Skript Syntax and Bug Fixes

24 Jan 21:22
1a605f7

Choose a tag to compare

Release Highlights

  • Command Change 💻
  • New Skript Syntax📜
  • API Changes 🔨
  • Bug Fixes 🐛

Command Change

  • duration and delay arguments are now optional for /deu interaction scale command

Skript Changes

  • Added Active Group Player Scale Multiplier to apply a scale multiplier to a player's view of an ActiveGroup, on top of the group's current scale multiplier
set extra scale multiplier of {_activegroup} to 1.75 for {_player}

set extra scale multiplier of {_activegroup} to 2 for {_player} and ignore interaction entities

#Reset
set extra scale multiplier of {_activegroup} to 1 for {_player}

API Changes

New Version: 3.4.2

  • Added ActiveGroup#getId to the unique ID of a group
  • Added ActiveGroup#setPlayerScaleMultiplier to set the scale multiplier of a player's view of an ActiveGroup, on top of the group's current scale multiplier.

Bug Fixes / QOL

  • Fixed a NPE that could occur when placing a placaeble group
  • Fixed Interaction Click Types (iClickType) not being recognized in Skript syntax
  • Added missing tab completion to /deu parts move
  • PlaceholderAPI placeholders can now be used in Interaction commands

What's Changed

Full Changelog: 3.4.1...3.4.2

3.4.1 | Group Ride Changes & Bug Fixes

20 Jan 06:28
2631b77

Choose a tag to compare

Release Highlights

  • Display Controller Changes 🤖
  • New Skript Syntax📜
  • API Breaking Changes 🔨
  • Bug Fixes 🐛

Display Controllers

  • Updated the groupProperties section, allowing for offsets in any direction, instead of just vertical

    Updated section below

groupProperties:
  #Reverses this group's follow property directions
  #This is useful if your group was oriented in the opposite direction than intended
  flip: false
  #The ride offset that should be applied to the group when riding an entity, from the ridden position
  offset:
    x: 0
    y: 0
    z: 0
  #Determine if the group should be visible by default when spawned
  visibleByDefault: true

Skript Changes

  • Added Active Group Ride Offset to apply an offset to an active group while its riding an entity
set {_offsetvector} to {_activegroup}'s ride offset

set {_activegroup}'s ride offset to vector(0,1,0)

API Changes

New Version: 3.4.1

Breaking Changes

  • Replaced verticalOffset with a rideOffset vector in ActiveGroup. This allows for offset a group riding an entity in any direction, rather than just vertically

Bug Fixes / QOL

  • Fixed an issue causing chunks to load while despawning/unregistering a SpawnedDisplayEntityGroup, when they shouldn't force load
  • Made performance improvements when despawning/unregistering a group
  • Improved performance when updating a packet-based group's location
  • Fixed issues that prevented a .bdengine file from being read correctly

What's Changed

Full Changelog: 3.4.0...3.4.1

3.4.0 | Mannequins & Placeable Groups

02 Jan 08:51
09c3946

Choose a tag to compare

Release Highlights

  • Mannequin Entities 🚶‍♂️
  • Placeable Groups 🔳
  • Added and Changed Many Commands 💻
  • New Skript Syntax and Changes📜
  • New API Additions & Breaking Changes 🔨
  • Bug Fixes 🐛

General Updates

  • Many wiki updates
  • API Dependency Fixed
  • Added Placeable Groups, which are groups assigned to an item of a block type. When the block is placed, the corresponding group is spawned at the block's location
  • Added Mannequin Part Type

Commands

New Commands

  • Place Commands

    • The new /deu place ... commands can be used to assign groups to an block type item, spawning the group when the block is placed
    • View all related commands with /deu place
  • Mannequin Commands

    • /deu mannequin ... commands can be used to set/change the data of a selected mannequin entity
    • View all related commands with /deu mannequin
  • /deu text addline - Add an additional line of text to a text display

    • Permission: deu.text.set
  • /deu display resettranslation - Reset a display entity's translation

    • Permission: deu.display.translate

Changed Commands

  • Display Commands

    • /deu display ... commands are commands that were previously under /deu parts, but specifically apply to display entities. The following commands were moved with their new permissions
    • setblock | Permission: deu.display.setblock
    • glowcolor | Permission: deu.display.glowcolor
    • translate | Permission: deu.display.translate
    • scale | Permission: deu.display.transform
    • billboard | Permission: deu.display.billboard
    • brightness | Permission: deu.display.brightness
    • viewrange | Permission: deu.display.viewrange
  • /deu group move's duration is now optional

  • Added optional -all parameter to /deu parts move and /deu parts movehere

  • Added optional -all parameter to /deu interaction pivot

  • Added optional -addtogroup parameter to /deu parts create to automatically include the create part in a player's selected group

Removed Commands

  • Removed /deu interaction pivotselection

Animations

  • /playsound commands in an animation data are now converted to be played in the animation
  • Resource Pack sounds can now be added to Animation Frame Points

Skript Changes

  • Syntax for Mannequins and Placeable Groups will come in a future update

New Events

  • PreItemPlaceGroupEvent - called before a player places a group using an item of a block type
  • ItemPlaceGroupEvent - called when a player places a group using a item of a block type

API Changes

New Version: 3.4.0

Breaking Changes

  • AnimationSound has been renamed to DEUSound
  • Renamed ActivePart#getInteractionTranslation to ActivePart#getNonDisplayTranslation
  • Renamed DisplayUtils#getInteractionTranslation to DisplayUtils#getNonDisplayTranslation
  • Renamed PacketUtils#translateInteraction to PacketUtils#translateNonDisplay
  • Renamed ChunkAddGroupInteractionsEvent to ChunkAddGroupEntitiesEvent
  • Renamed ActivePart scale methods

    • #setXScale#setDisplayXScale
    • #setYScale#setDisplayYScale
    • #setZScale#setDisplayZScale
    • #setScale#setDisplayScale

Additions/Changes

  • New Events

    • PreItemPlaceGroupEvent - called before a player places a group using an item of a block type
    • ItemPlaceGroupEvent - called when a player places a group using a item of a block type
  • Added ActiveGroup#addEntity to add a part representative of the entity to the group
  • Added ActivePart#teleport
  • Added ActivePart#isDisplay to see if a part is of a display type
  • Added AcitvePart#canGlow to see if a part will visibly glow when glowing is applied to it
  • Added many Mannequin related methods to ActivePart
  • Added PlaceableGroupData to assign a group to an item
  • Added PlaceableGroupManager to change and get placeable group properties for/from an item
  • DisplayUtils#pivot methods now accept any entity, instead of only Interactions

Bug Fixes / QOL

  • /deu parts select now visually marks display entities instead of listing them in chat
    • Left clicking the entities presents a clickable message, adding the entity to the player's selected group
  • Fixed /deu parts adapttags not functioning as expected
  • Fixed /deu parts move & /deu parts movehere not working correctly in certain situations
  • DisplayUtils#isInGroup(Entity) now correctly checks if an entity is in a group
  • Fixed BDEngine Animation Datapack conversion for multi-command models
  • Fixed clicks on Interaction entities not being recognized in some cases
  • Improved accuracy of packet-based group's location update on its ridden entity
  • Group parts are no longer registered in two different locations, somewhat reducing memory usage
  • Players can no longer have invalid groups selected and successfully execute commands

What's Changed

Full Changelog: 3.3.8...3.4.0

3.3.8 | Bug Fixes

15 Dec 10:40
277444d

Choose a tag to compare

Release Highlights

  • Bug Fixes 🐛

Bug Fixes / QOL

  • Fixed spawn/load animations not saving nor playing on packet-based groups
  • Fixed an NPE that occured when stopping animations
  • Fixed an issue where Interaction entities would have the incorrect pivot after cloning or converting a group to become packet-based
  • Frame Points & Packet Group Points are now hidden after despawning a group

What's Changed

Full Changelog: 3.3.7...3.3.8

3.3.7 | New Commands & Skript and Bug Fixes

14 Dec 11:31
9a8c283

Choose a tag to compare

Release Highlights

  • New Commands & Command Fixes 💻
  • Skript Changes/Fixes📜
  • New API Additions 🔨
  • Bug Fixes 🐛

Commands

New Commands

  • Added /deu group list
    • Lists all saved display entity groups/models
    • Permission: deu.list
  • Added /deu anim list
    • List all saved animations
    • Permission: deu.list
  • Added /deu anim listactive
    • List all animations currently playing on a group
    • Permission: deu.anim.listactive

Command Fixes

  • /deu group merge & /deu group setspawnanim now work as intended
  • Fixed /deu group setspawnanim's tab completion

Skript Changes/Fixes

  • Changed user input patterns:
    • Part Type: typepart-type
    • Interaction Click Type: typei-click-type
    • Animation Type: typeanimation-type
    • Group Spawn Reason: reasongroup-spawn-reason

    These changes prevent conflict with Skript syntax and other addons

API Changes

New Version: 3.3.7

  • Added ActiveGroup#getActiveAnimators to get all animators actively animating on a group

Bug Fixes / QOL

  • Fixed server performance issues when using animations, entity following, DisplayControllers, etc
  • Fixed packet-based parts (typically Interactions) not appearing in the correct position
  • Fixed an NPE that occurred when getting an Interaction part's commands

What's Changed

  • 3.3.7 by @PZDonny in #60
  • Fix parts appearing at incorrect position when autoshown to a player by @PZDonny in #61
  • Fix parts appearing at incorrect position, again... by @PZDonny in #62

Full Changelog: 3.3.6...3.3.7

3.3.6 | JSON Format & Animation Camera

11 Dec 08:25
eba65ff

Choose a tag to compare

Release Highlights

  • JSON File Format 🧶
  • Animation Camera 🎥
  • Added and Changed Commands 💻
  • New Skript Syntax and Changes📜
  • New API Additions & Breaking Changes 🔨
  • Bug Fixes 🐛

General Updates

  • The default command has been changed to /deu

    /mdis and /managedisplays will remain functional

  • BDEngine Datapack Conversion now supports BDEngine v2026.1 and its Animation Camera System
  • Added a JSON save format, making model and animation files editable

Commands

New Commands

  • Added /mdis anim savejson
    • Save an animation as a JSON file in the plugin's animations folder
    • Permission: deu.anim.save
  • Added /mdis anim selectjson
    • Select an animation from a JSON file in the plugin's animations folder
    • Permission: deu.anim.select
  • Added /mdis group savejson
    • Save a group as a JSON file in the plugin's savedentities folder
    • Permission: deu.group.save
  • Added /mdis group spawnjson
    • Spawn a group from a JSON file in the plugin's savedentities folder
    • Permission: deu.group.spawn

Changed Commands

  • /mdis anim play and /mdis anim previewplay now accept a -camera option to put the player in the animation's camera view

Skript Changes/Fixes

New Syntax

  • Added Animation Type of Display Animator to get the animation type of a Display Animator

    Example: set {_animtype} to {_displayanimator}'s animation type

  • Added Active Part Data to get or change the data of an active part

    Example 1: set {_spawnedpart}'s deu block to oak_stairs[facing=east]
    Example 2: set {_text} to {_packetpart}'s deu text

  • Added New Events
    • PrePacketGroupCreateEvent called before a PacketDisplayEntityGroup is created
    • AnimationCameraStartEvent called when a players begin viewing an animation camera
    • AnimationCameraEndEvent called when players finish viewing an animation camera
    • AniamtionCameraPlayerRemoved called when a player is removed from an animation camera before its finished
  • Added Is Player In Animation Camera? to check if a player is viewing an animation camera

    Example: if {_player} is in an animation camera:

  • Added Play Animation Camera to make a player follow an animation camera's path, without needing an animation playing

    Example 1: play camera on {_packetgroup} with {_animator} for {_player}
    Example 2: play camera on {_activegroup} using {_animation} for {_player} starting at frame 8 with a start transition of 3 seconds and an end delay of 10 ticks

  • Added Stop Animation Camera to remove a player from an animation camera

    Example: stop animation camera for {_player}

Changes

  • Removed parttype_ and animtype_ prefixes for Part Type and Animation Type

    Interaction Entity Part Type is recognized as deu_interaction

  • In Active Part's Type's syntax, active is now optional
  • Saved Group to Packet Group now accepts Group Spawn Settings
  • Updated Animate Active Group to allow putting players in animation cameras, when the animation is for them.

    Example: start packet animation on {_packetgroup} with {_displayanimator} for {_player} and use camera

  • Updated Stop Animation to both stop a player from viewing an animation and remove them from an animation camera

    Example: stop animation on {_activegroup} from {_displayanimator} for {_players::*} and stop camera

SkriptHubViewTheDocs

API Changes

New Version: 3.3.6

Breaking Changes

  • Removed PacketDisplayEntityGroup#teleport(Location, boolean, boolean)

    The other #teleport is still exists

  • Removed PacketDisplayEntityGroup#teleportSafe

    #teleport is safe

  • Renamed #getDisplayTransformation, #getDisplayBrightness, #getDisplayViewRange, #getDisplayTeleportDuration to #getTransformation, #getBrightness, #getViewRange, #getTeleportDuration respectively, in ActivePart
  • DisplayAnimator#playUsingPackets now requires an AnimationType to be specified, when using the static method

Additions/Changes

  • Added #saveDisplayAnimationJson and #getAnimationFromJson to DisplayAnimationManager
  • Added #saveDisplayEntityGroupJson and #getGroupFromJson to DisplayGroupManager
  • Added a DisplayEntityGroup#createPacketGroup method that accepts GroupSpawnSettings
  • Added DisplayAnimator#playCamera to make a player follow an AnimationCamera's path
  • Added DisplayAnimator#stopCameraView to stop a player from following an AnimationCamera's path
  • Added DisplayAnimator#isInCamera to check if a player is in an animation camera
  • Added Events
    • PrePacketGroupCreateEvent called before a PacketDisplayEntityGroup is created
    • AnimationCameraStartEvent called when a players begin viewing an animation camera
    • AnimationCameraEndEvent called when players finish viewing an animation camera
    • AniamtionCameraPlayerRemoved called when a player is removed from an animation camera before its finished

Bug Fixes / QOL

  • Fixed Animation Frame Point sounds not loading nor playing correctly
  • Fixed an issue where teleporting PacketDisplayEntityGroups across worlds would not correctly update visibility in either world
  • Fixed an issue where if a PacketDisplayEntityGroup's vehicle changes worlds, its visibility would not correctly update in either world

What's Changed

Full Changelog: 3.3.5...3.3.6

3.3.5 | Folia Support, New Animation Particle, Bug Fixes

02 Nov 09:00
0d07caf

Choose a tag to compare

Release Highlights

  • Folia Support 🍃
  • New Animation Particle & Fixes 🎇
  • Updated Skript Syntax📜
  • API Changes 🔨
  • Bug Fixes 🐛

General

  • Added Folia Support
  • Added Tinted Leaves Animation Particle

Skript Changes/Fixes

Updated Syntax

  • Add/Remove Part Tag syntax now works for packet-based parts

    Example: add part tag "newtag" to {_packetpart}

  • Teleport Active Group now accepts multiple Active Groups
  • Active Group Follow Entity Direction no longer requires ft, prefixing every follow type

Fixes

  • Fixed packet-based groups not having their tag settable through Skript syntax

API Changes

New Version: 3.3.5

Additions

  • Added ActiveGroup#isRegistered, apply now to both SpawnedDisplayEntityGroup and PacketDisplayEntityGroup
  • Added ActivePart#addTags to add multiple tags to a part at once

Bug Fixes

  • Fixed an issue where adding more parts to a packet-based group could result in passenger desync when teleporting
  • Fixed an issue where a console error (NullPointerException) would occur when enabling autoshow for a packet-based group then quickly unregistering it.
  • Fixed Animation Particle building not functioning correctly on lower server versions (1.20.4 tested)
  • Fixed Animation Particles not spawning correctly on server version changes
  • Fixed saved block displays, saved as chain, not being recognized in versions 1.21.9+ due to the block being renamed to iron_chain
  • Enabling autoshow on packet-based groups no longer shows the group to players in other worlds

    This behavior is intended but was not working as expected

What's Changed

Full Changelog: 3.3.4...3.3.5