更改每个玩家的 Tablist 名称。 (龙头)

Change Tablist names for each individual Player. (Spigot)

你好

我目前正在制作 Minecraft SkyWars-Plugin 并希望制作一个更好看的列表。


问题:

假设您有 PlayerAPlayerB.如果PlayerA在tablist上看,他的名字应该是绿色的,PlayerB[=42的名字应该是绿色的=]应该是红色的。

但是如果PlayerB查看他的列表,PlayerB的名字应该是绿色的,PlayerA的名字应该是红色的。

所以基本上你自己的名字应该被标记为绿色(颜色代码'a')而对手应该有一个红色的名字(颜色代码'c')。


我该如何实现?我是否将包裹发送给每个玩家以获取他的表格列表?如果是,我使用哪些包 should/can?

提前致谢。

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

如果你想在标签列表中显示每个玩家可见的颜色 ,你可以使用 Player Info 数据包(规范 https://wiki.vg/Protocol#Player_Info)作为标签列表内容修改。 full valid code可以很长,所以我给你一个算法(下面我的意思是"packet"是Player Info包):

  1. 使用 PlayerA.uuid 向 PlayerA
  2. 使用 PlayerB.uuid 向 PlayerA
  3. 发送带有操作 remove player 的数据包
  4. 重复12,但向玩家B发送数据包。
  5. 发送数据包:操作 add playerPlayerA.uuid 和彩色 PlayerA's PlayerA 的显示名称(在您的盒子是绿色的)给玩家A。
  6. 发送数据包:操作 add playerPlayerB.uuid 和彩色 PlayerB's PlayerA 的显示名称(在您的盒子是红色的)给玩家A。
  7. 重复45,但向玩家B发送数据包并反转颜色。

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

如果你想在表格列表和头顶上方显示每个玩家可见的颜色,你可以对记分牌团队数据包使用类似的算法。或者您可以尝试为每个玩家可见的前缀找到已实现的插件 api。