From e3be42f686ee2629e4c849339a868d5229c7aed5 Mon Sep 17 00:00:00 2001 From: Bixilon Date: Mon, 2 Oct 2023 00:18:03 +0200 Subject: [PATCH] network: handle tab list data (1.7) --- .../packets/s2c/play/tab/LegacyTabListS2CP.kt | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/tab/LegacyTabListS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/tab/LegacyTabListS2CP.kt index 309b3beb9..ae7d99d9f 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/tab/LegacyTabListS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/tab/LegacyTabListS2CP.kt @@ -12,6 +12,8 @@ */ package de.bixilon.minosoft.protocol.packets.s2c.play.tab +import de.bixilon.minosoft.data.entities.entities.player.additional.PlayerAdditional +import de.bixilon.minosoft.protocol.ProtocolUtil.encodeNetwork import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.ProtocolVersions @@ -19,6 +21,7 @@ import de.bixilon.minosoft.protocol.protocol.buffers.play.PlayInByteBuffer import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType +import java.util.* class LegacyTabListS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val items: MutableMap = mutableMapOf() @@ -38,7 +41,24 @@ class LegacyTabListS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { } override fun handle(connection: PlayConnection) { - TODO("Can not handle tab packet!") + for ((name, ping) in items) { + val uuid = UUID.nameUUIDFromBytes(name.encodeNetwork()) // TODO: map with players (if possible) + + if (ping == null) { + connection.tabList.remove(uuid) + continue + } + + var item = connection.tabList.uuid[uuid] + + if (item == null) { + item = PlayerAdditional(name) + + connection.tabList.uuid[uuid] = item + connection.tabList.name[name] = item + } + item.ping = ping + } } override fun log(reducedLog: Boolean) {