Skip to content

Commit 882d25b

Browse files
committed
feat: scale, view range, translation and rotation for text displays
1 parent e0665e3 commit 882d25b

File tree

1 file changed

+27
-4
lines changed

1 file changed

+27
-4
lines changed

src/main/kotlin/cc/modlabs/kpaper/visuals/display/TextDisplayManager.kt

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,16 @@ import com.github.retrooper.packetevents.PacketEvents
55
import com.github.retrooper.packetevents.protocol.entity.data.EntityData
66
import com.github.retrooper.packetevents.protocol.entity.data.EntityDataTypes
77
import com.github.retrooper.packetevents.protocol.entity.type.EntityTypes
8+
import com.github.retrooper.packetevents.util.Quaternion4f
89
import com.github.retrooper.packetevents.wrapper.play.server.WrapperPlayServerDestroyEntities
910
import com.github.retrooper.packetevents.wrapper.play.server.WrapperPlayServerEntityMetadata
1011
import com.github.retrooper.packetevents.wrapper.play.server.WrapperPlayServerSpawnEntity
1112
import com.github.retrooper.packetevents.util.Vector3d
13+
import com.github.retrooper.packetevents.util.Vector3f
1214
import dev.fruxz.stacked.text
1315
import org.bukkit.Location
1416
import org.bukkit.entity.Player
17+
import org.joml.Quaternionf
1518
import java.util.*
1619
import java.util.concurrent.ConcurrentHashMap
1720
import 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

Comments
 (0)