更改每个玩家的Tablist名称。 (子母)

时间:2019-12-27 21:32:32

标签: plugins minecraft bukkit bungeecord

你好

我目前正在制作Minecraft SkyWars-Plugin,并希望创建一个外观更好的标签列表。


问题:

假设您有 PlayerA PlayerB 。如果 PlayerA 出现在选项卡列表中,则他的名字应该为绿色,而 PlayerB 的名字应该为红色。 / p>

但是如果 PlayerB 查看他的标签列表,则 PlayerB 的名称应为绿色,并且 PlayerA 的名称应为红色。

因此,基本上您自己的名字应该标记为绿色(颜色代码“ a”),对手应该使用红色名称(颜色代码“ c”)。


我该如何实现?我是否将包裹发送给每个玩家的标签列表?如果是这样,我应该/可以使用哪些软件包?

谢谢。

1 个答案:

答案 0 :(得分:0)

您的问题可以通过两种方式解决。

如果您要在选项卡列表中仅显示每位玩家的可见颜色,则可以使用Player Info数据包(规范https://wiki.vg/Protocol#Player_Info)来修改选项卡列表的内容。完整的有效代码可能非常庞大,因此我为您提供了一种算法(以下是我的意思是“数据包”是Player Info数据包):

  1. 将带有动作remove player的数据包(具有动作列表,请参见 wiki )发送给 PlayerA .uuid到PlayerA
  2. 将具有操作remove player PlayerB .uuid的数据包发送到PlayerA
  3. 重复 1 2 ,但将数据包发送到playerB。
  4. 发送带有以下内容的数据包:动作add player PlayerA .uuid和彩色的 PlayerA的PlayerA显示名称(在您的情况下为绿色)到PlayerA。< / li>
  5. 发送带有以下内容的数据包:动作add player PlayerB .uuid和彩色的 PlayerB的PlayerA显示名称(在您的情况下为红色)到PlayerA。< / li>
  6. 重复 4 5 ,但将数据包发送到playerB并反转颜色。

对于数据包管理,您可以使用ProtocolLib插件。

如果要在选项卡列表中和头部上方显示每位玩家的可见颜色,则可以对记分板团队数据包使用类似的算法。或者,您可以尝试为每位玩家可见的前缀找到已实现的插件API。