broadcastServerState method
Implementation
Future<void> broadcastServerState(WorldBloc world) async {
if (_closing) return;
final viewers = world.players
.where((channel) => userManager.getUser(channel) != null)
.toList(growable: false);
final needsBannedUsers = viewers.any(
(channel) => rolesAllowPermission(
userManager.getUser(channel)!.roles,
ServerPermission.banPlayers,
configManager.serverRoles,
),
);
final bannedUsers = needsBannedUsers
? await userManager.getBannedUsers()
: const <SetonixUser>[];
await Future.wait(
viewers.map(
(channel) => sendEvent(
ServerStateUpdated(
buildServerState(channel, world, bannedUsers: bannedUsers),
),
target: channel,
worldName: world.worldName,
),
),
);
}