diff --git a/src/main/kotlin/net/hareworks/ghostdisplays/internal/fake/FakeEntity.kt b/src/main/kotlin/net/hareworks/ghostdisplays/internal/fake/FakeEntity.kt index f3656d3..f6a5e88 100644 --- a/src/main/kotlin/net/hareworks/ghostdisplays/internal/fake/FakeEntity.kt +++ b/src/main/kotlin/net/hareworks/ghostdisplays/internal/fake/FakeEntity.kt @@ -7,4 +7,6 @@ open class FakeEntity( val entityId: Int, val uuid: UUID, var location: Location -) +) { + var isGlowing: Boolean = false +} diff --git a/src/main/kotlin/net/hareworks/ghostdisplays/internal/nms/DisplayPacketFactory.kt b/src/main/kotlin/net/hareworks/ghostdisplays/internal/nms/DisplayPacketFactory.kt index b5f70bf..10edf55 100644 --- a/src/main/kotlin/net/hareworks/ghostdisplays/internal/nms/DisplayPacketFactory.kt +++ b/src/main/kotlin/net/hareworks/ghostdisplays/internal/nms/DisplayPacketFactory.kt @@ -121,6 +121,9 @@ internal object DisplayPacketFactory { private fun buildDisplayMetadata(fake: FakeDisplay): MutableList> { val values = mutableListOf>() + var sharedFlags: Byte = 0 + if (fake.isGlowing) sharedFlags = (sharedFlags.toInt() or 0x40).toByte() + values.add(SynchedEntityData.DataValue.create(EntityDataFields.SHARED_FLAGS, sharedFlags)) values.add(SynchedEntityData.DataValue.create(EntityDataFields.TRANSLATION, fake.translation)) values.add(SynchedEntityData.DataValue.create(EntityDataFields.SCALE, fake.scale)) values.add(SynchedEntityData.DataValue.create(EntityDataFields.LEFT_ROTATION, fake.leftRotation)) diff --git a/src/main/kotlin/net/hareworks/ghostdisplays/internal/nms/EntityDataFields.kt b/src/main/kotlin/net/hareworks/ghostdisplays/internal/nms/EntityDataFields.kt index 40d8657..96db3e5 100644 --- a/src/main/kotlin/net/hareworks/ghostdisplays/internal/nms/EntityDataFields.kt +++ b/src/main/kotlin/net/hareworks/ghostdisplays/internal/nms/EntityDataFields.kt @@ -13,6 +13,19 @@ import org.joml.Vector3f @Suppress("UNCHECKED_CAST") internal object EntityDataFields { + // --- Entity (common) --- + + private val entityLookup = MethodHandles.privateLookupIn( + net.minecraft.world.entity.Entity::class.java, MethodHandles.lookup() + ) + + val SHARED_FLAGS: EntityDataAccessor = + entityLookup.findStaticGetter( + net.minecraft.world.entity.Entity::class.java, + "DATA_SHARED_FLAGS_ID", + EntityDataAccessor::class.java + ).invoke() as EntityDataAccessor + // --- Display (common) --- private val displayLookup = MethodHandles.privateLookupIn(