更改每个播放器的标签表名称。 (子母)

问题描述 投票:1回答:1

你好

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


问题:

假设您有PlayerAPlayerB。如果PlayerA出现在选项卡列表中,则其名称应为绿色,而PlayerB的名称应为红色。

但是如果PlayerB查看他的选项卡列表,PlayerB的名称应为绿色,而PlayerA的名称应为红色。

所以基本上,您自己的名字应该标记为绿色(颜色代码'a'),而对手应该使用红色名称(颜色代码'c')。


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

提前感谢。

plugins minecraft bukkit bungeecord
1个回答
0
投票

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

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

  1. 使用[[PlayerA。uuid向玩家A发送带有动作remove player的数据包(有关动作列表,请参见wiki。
  2. 将具有动作remove player
  3. PlayerB
  4. 。uuid的数据包发送到PlayerA重复
  5. 1
  6. 2,但是将数据包发送到playerB。 发送带有以下内容的数据包:动作add player
  7. PlayerA
  8. 。uuid和彩色的[[PlayerA's PlayerA的显示名称(在您的情况下为绿色)显示给PlayerA。发送带有以下内容的数据包:动作add playerPlayerB。uuid和彩色的[[PlayerB's PlayerA的显示名称(在您的情况下为红色)显示给PlayerA。
  9. 重复45,但是将数据包发送到playerB并反转颜色。
  • 对于数据包管理,您可以使用ProtocolLib插件。如果要在标签列表中和头部上方显示每位玩家的可见颜色,则可以对记分板团队数据包使用类似的算法。或者,您可以尝试为每位玩家可见的前缀找到已实现的插件API。
  • © www.soinside.com 2019 - 2024. All rights reserved.