hud: tab: fix data of us

This commit is contained in:
Bixilon 2021-11-03 17:47:09 +01:00
parent ae9fd5cf63
commit 34d4d8bbcc
No known key found for this signature in database
GPG Key ID: 5CAD791931B09AC4

View File

@ -45,21 +45,21 @@ class TabListDataS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket() {
buffer.readVarInt() buffer.readVarInt()
} }
val action = if (buffer.readBoolean()) { val action = if (buffer.readBoolean()) {
PlayerListItemActions.UPDATE_LATENCY TabListItemActions.UPDATE_LATENCY
} else { } else {
PlayerListItemActions.REMOVE_PLAYER TabListItemActions.REMOVE_PLAYER
} }
val uuid: UUID = UUID.nameUUIDFromBytes(name.toByteArray(StandardCharsets.UTF_8)) val uuid: UUID = UUID.nameUUIDFromBytes(name.toByteArray(StandardCharsets.UTF_8))
val item = TabListItemData(name = name, ping = ping, remove = action == PlayerListItemActions.REMOVE_PLAYER) val item = TabListItemData(name = name, ping = ping, remove = action == TabListItemActions.REMOVE_PLAYER)
items[uuid] = item items[uuid] = item
} else { } else {
val action = PlayerListItemActions[buffer.readVarInt()] val action = TabListItemActions[buffer.readVarInt()]
val count: Int = buffer.readVarInt() val count: Int = buffer.readVarInt()
for (i in 0 until count) { for (i in 0 until count) {
val uuid: UUID = buffer.readUUID() val uuid: UUID = buffer.readUUID()
val data: TabListItemData val data: TabListItemData
when (action) { when (action) {
PlayerListItemActions.ADD -> { TabListItemActions.ADD -> {
val name = buffer.readString() val name = buffer.readString()
val playerProperties: MutableMap<String, PlayerProperty> = mutableMapOf() val playerProperties: MutableMap<String, PlayerProperty> = mutableMapOf()
for (index in 0 until buffer.readVarInt()) { for (index in 0 until buffer.readVarInt()) {
@ -87,13 +87,13 @@ class TabListDataS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket() {
displayName = displayName, displayName = displayName,
) )
} }
PlayerListItemActions.UPDATE_GAMEMODE -> { TabListItemActions.UPDATE_GAMEMODE -> {
data = TabListItemData(gamemode = Gamemodes[buffer.readVarInt()]) data = TabListItemData(gamemode = Gamemodes[buffer.readVarInt()])
} }
PlayerListItemActions.UPDATE_LATENCY -> { TabListItemActions.UPDATE_LATENCY -> {
data = TabListItemData(ping = buffer.readVarInt()) data = TabListItemData(ping = buffer.readVarInt())
} }
PlayerListItemActions.UPDATE_DISPLAY_NAME -> { TabListItemActions.UPDATE_DISPLAY_NAME -> {
val hasDisplayName = buffer.readBoolean() val hasDisplayName = buffer.readBoolean()
val displayName = if (hasDisplayName) { val displayName = if (hasDisplayName) {
buffer.readChatComponent() buffer.readChatComponent()
@ -105,7 +105,7 @@ class TabListDataS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket() {
displayName = displayName, displayName = displayName,
) )
} }
PlayerListItemActions.REMOVE_PLAYER -> { TabListItemActions.REMOVE_PLAYER -> {
data = TabListItemData(remove = true) data = TabListItemData(remove = true)
} }
} }
@ -165,17 +165,17 @@ class TabListDataS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket() {
item item
} ?: continue } ?: continue
if (entity === connection.player) {
entity.tabListItem.specialMerge(data)
continue
}
tabListItem.merge(data)
if (entity == null || entity !is PlayerEntity) { if (entity == null || entity !is PlayerEntity) {
continue continue
} }
if (entity === connection.player) {
entity.tabListItem.specialMerge(data)
} else {
tabListItem.merge(data)
}
entity.tabListItem = tabListItem entity.tabListItem = tabListItem
} }
connection.fireEvent(TabListEntryChangeEvent(connection, this)) connection.fireEvent(TabListEntryChangeEvent(connection, this))
@ -189,7 +189,7 @@ class TabListDataS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket() {
} }
enum class PlayerListItemActions { enum class TabListItemActions {
ADD, ADD,
UPDATE_GAMEMODE, UPDATE_GAMEMODE,
UPDATE_LATENCY, UPDATE_LATENCY,
@ -197,9 +197,9 @@ class TabListDataS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket() {
REMOVE_PLAYER, REMOVE_PLAYER,
; ;
companion object : ValuesEnum<PlayerListItemActions> { companion object : ValuesEnum<TabListItemActions> {
override val VALUES = values() override val VALUES = values()
override val NAME_MAP: Map<String, PlayerListItemActions> = KUtil.getEnumValues(VALUES) override val NAME_MAP: Map<String, TabListItemActions> = KUtil.getEnumValues(VALUES)
} }
} }
} }