跳到主要内容

受众

受众(Audiences)包装了一组可以接收消息的接收者。它们可以用于向单个玩家、玩家组或甚至整个服务器(包括控制台)发送消息。

谁是Audience?

所有的CommandSender都是单个受众。这包括玩家、控制台和命令方块。ServerTeamWorld都是转发受众。这意味着它们由多个受众组成。例如,服务器由所有在线玩家和控制台组成。

这意味着所有Audience方法都可以在CommandSenderServerTeamWorld上使用。

ForwardingAudience

ForwardingAudience包装了一组Audience实例,并将消息转发给所有这些实例。这对于一次向多个受众(玩家)发送消息很有用。

// Server是一个ForwardingAudience,包括所有在线玩家和控制台
ForwardingAudience audience = Bukkit.getServer();

// 要从玩家集合构建受众,使用:
Audience audience = Audience.audience(Audience...);
// 如果你传入单个Audience,它将按原样返回。如果你传入一组Audience,它们将被
// 包装在一个ForwardingAudience中。

Audience可以做什么?

受众用于与玩家交互。它们可以用来发送消息、播放声音、显示Boss栏等。它们主要用于向玩家发送API的其他部分。例如,你可以使用Audience#sendMessage(Component)向玩家发送Component

指针

受众还可以提供任意信息,如显示名称或UUID。这是通过指针系统完成的。

// 从受众成员获取uuid,返回Optional<UUID>
Optional<UUID> uuid = audience.get(Identity.UUID);

// 获取显示名称,返回默认值
Component name = audience.getOrDefault(Identity.DISPLAY_NAME, Component.text("没有显示名称!"));