速食冻橘
请问ProtocolLib中玩家按tab显示玩家列表的包是哪个PacketType?如果没有,请问如何使PacketListener监听所有包?

洞穴夜莺
我想如果玩家只是按tab显示玩家列表应该不会发生发包
但是tab表中的内容刷新的时候服务端会向客户端发包

速食冻橘
洞穴夜莺 发表于 2020-8-22 22:12
我想如果玩家只是按tab显示玩家列表应该不会发生发包
但是tab表中的内容刷新的时候服务端会向客户端发包 ...

请问这个大概是什么PacketType呢?

William_Shi
洞穴夜莺 发表于 2020-8-22 22:12
我想如果玩家只是按tab显示玩家列表应该不会发生发包
但是tab表中的内容刷新的时候服务端会向客户端发包 ...

没有经过任何测试,但是这个看起来像
https://ci.dmulloy2.net/job/Prot ... _LIST_HEADER_FOOTER
但也有可能是如下操作导致的更新
https://bukkit.windit.net/javado ... g-java.lang.String-
所以按Tab本身可能发包也可能不发包,需要测试

洞穴夜莺
本帖最后由 洞穴夜莺 于 2020-8-23 09:40 编辑

查ProtocalLib源码可知PLAYER_LIST_HEADER_FOOTER的类名是PacketPlayOutPlayerListHeaderFooter
我查了Fabric的反混淆Jar,PlayerListHeaderS2CPacket没有任何在服务端被实例化的情况,仅有客户端收到包的处理逻辑
所以这可能是留给Mod/插件使用的包
Bukkit的源码我也查了
CraftPlayer#updatePlayerListHeaderFooter是整个jar中唯一实例化和发送PacketPlayOutPlayerListHeaderFooter的地方
CraftPlayer#setPlayerListHeaderFooter调用了CraftPlayer#updatePlayerListHeaderFooter

同时在实验中抓包并未抓到此包