@@ -5,13 +5,16 @@ import com.github.retrooper.packetevents.PacketEvents
55import com.github.retrooper.packetevents.protocol.entity.data.EntityData
66import com.github.retrooper.packetevents.protocol.entity.data.EntityDataTypes
77import com.github.retrooper.packetevents.protocol.entity.type.EntityTypes
8+ import com.github.retrooper.packetevents.util.Quaternion4f
89import com.github.retrooper.packetevents.wrapper.play.server.WrapperPlayServerDestroyEntities
910import com.github.retrooper.packetevents.wrapper.play.server.WrapperPlayServerEntityMetadata
1011import com.github.retrooper.packetevents.wrapper.play.server.WrapperPlayServerSpawnEntity
1112import com.github.retrooper.packetevents.util.Vector3d
13+ import com.github.retrooper.packetevents.util.Vector3f
1214import dev.fruxz.stacked.text
1315import org.bukkit.Location
1416import org.bukkit.entity.Player
17+ import org.joml.Quaternionf
1518import java.util.*
1619import java.util.concurrent.ConcurrentHashMap
1720import java.util.concurrent.atomic.AtomicInteger
@@ -277,9 +280,9 @@ class TextDisplayManager {
277280 Optional .of(UUID .randomUUID()),
278281 EntityTypes .TEXT_DISPLAY ,
279282 Vector3d (location.x, location.y + textDisplay.yOffset, location.z),
280- location.pitch.toFloat() ,
281- location.yaw.toFloat() ,
282- location.yaw.toFloat() ,
283+ location.pitch,
284+ location.yaw,
285+ location.yaw,
283286 0 ,
284287 Optional .of(Vector3d (0.0 , 0.0 , 0.0 ))
285288 )
@@ -306,9 +309,24 @@ class TextDisplayManager {
306309 private fun createMetadataPacket (textDisplay : TextDisplay ): WrapperPlayServerEntityMetadata {
307310 val metadataList = ArrayList <EntityData <* >>()
308311
312+ // translation
313+ metadataList.add(EntityData (11 , EntityDataTypes .VECTOR3F , textDisplay.translation))
314+
315+ // scale
316+ metadataList.add(EntityData (12 , EntityDataTypes .VECTOR3F , textDisplay.scale))
317+
318+ // rotation left
319+ metadataList.add(EntityData (13 , EntityDataTypes .QUATERNION , textDisplay.leftRotation))
320+
321+ // rotation right
322+ metadataList.add(EntityData (14 , EntityDataTypes .QUATERNION , textDisplay.rightRotation))
323+
309324 // Billboard mode (index 15)
310325 metadataList.add(EntityData (15 , EntityDataTypes .BYTE , textDisplay.billboard.billboardValue.toByte()))
311326
327+ // view range
328+ metadataList.add(EntityData (17 , EntityDataTypes .FLOAT , textDisplay.viewRange))
329+
312330 // Text content (index 23) - Must be sent before other text-specific metadata
313331 metadataList.add(EntityData (23 , EntityDataTypes .ADV_COMPONENT , text(textDisplay.text)))
314332
@@ -400,7 +418,12 @@ class TextDisplayManager {
400418 val glowing : Boolean = false ,
401419 val opacity : Int = -1 ,
402420 val displayFlags : List <TextDisplayFlags >,
403- val backgroundColor : Int = 0x00000000
421+ val backgroundColor : Int = 0x00000000 ,
422+ val scale : Vector3f = Vector3f (1f, 1f, 1f),
423+ val viewRange : Float = 1f ,
424+ val translation : Vector3f = Vector3f (0f, 0f, 0f),
425+ val leftRotation : Quaternion4f = Quaternion4f (0f, 0f, 0f, 1f),
426+ val rightRotation : Quaternion4f = Quaternion4f (0f, 0f, 0f, 1f),
404427 ) {
405428 /* *
406429 * Vertical offset from the base location.
0 commit comments