我目前正在制作Minecraft SkyWars-Plugin,并希望创建一个外观更好的标签列表。
假设您有 PlayerA 和 PlayerB 。如果 PlayerA 出现在选项卡列表中,则他的名字应该为绿色,而 PlayerB 的名字应该为红色。 / p>
但是如果 PlayerB 查看他的标签列表,则 PlayerB 的名称应为绿色,并且 PlayerA 的名称应为红色。
因此,基本上您自己的名字应该标记为绿色(颜色代码“ a”),对手应该使用红色名称(颜色代码“ c”)。
我该如何实现?我是否将包裹发送给每个玩家的标签列表?如果是这样,我应该/可以使用哪些软件包?
谢谢。
答案 0 :(得分:0)
您的问题可以通过两种方式解决。
如果您要在选项卡列表中仅仅显示每位玩家的可见颜色,则可以使用Player Info
数据包(规范https://wiki.vg/Protocol#Player_Info)来修改选项卡列表的内容。完整的有效代码可能非常庞大,因此我为您提供了一种算法(以下是我的意思是“数据包”是Player Info
数据包):
remove player
的数据包(具有动作列表,请参见 wiki )发送给 PlayerA .uuid到PlayerA remove player
和 PlayerB .uuid的数据包发送到PlayerA add player
, PlayerA .uuid和彩色的 PlayerA的PlayerA显示名称(在您的情况下为绿色)到PlayerA。< / li>
add player
, PlayerB .uuid和彩色的 PlayerB的PlayerA显示名称(在您的情况下为红色)到PlayerA。< / li>
对于数据包管理,您可以使用ProtocolLib插件。
如果要在选项卡列表中和头部上方显示每位玩家的可见颜色,则可以对记分板团队数据包使用类似的算法。或者,您可以尝试为每位玩家可见的前缀找到已实现的插件API。