internal async Task SendScoreboardInfo(ScoreboardObjectivePacket packet, UpdateScore scorePacket = null) { await this.client.QueuePacketAsync(packet); if (scorePacket != null) { await this.client.QueuePacketAsync(scorePacket); } }
public async Task RemoveObjectiveAsync() { var obj = new ScoreboardObjectivePacket { ObjectiveName = this.Objective.ObjectiveName, Mode = ScoreboardMode.Remove }; foreach (var(_, player) in this.server.OnlinePlayers) { if (player.CurrentScoreboard == this) { await player.client.QueuePacketAsync(obj); } } }
public async Task CreateOrUpdateObjectiveAsync(IChatMessage title, DisplayType displayType = DisplayType.Integer) { var packet = new ScoreboardObjectivePacket { ObjectiveName = this.name, Mode = this.Objective != null ? ScoreboardMode.Update : ScoreboardMode.Create, Value = title, Type = displayType }; if (this.Objective != null) { await this.UpdateObjectiveAsync(packet); } else { this.Objective = new ScoreboardObjective { ObjectiveName = this.name, Value = title, DisplayType = displayType }; foreach (var(_, player) in this.server.OnlinePlayers) { if (player.CurrentScoreboard == this) { await player.client.QueuePacketAsync(packet); foreach (var score in this.scores.Select(x => x.Value).OrderByDescending(x => x.Value)) { await player.client.QueuePacketAsync(new UpdateScore { EntityName = score.DisplayText, ObjectiveName = this.name, Action = 0, Value = score.Value }); } } } } }
private async Task UpdateObjectiveAsync(ScoreboardObjectivePacket packet) { foreach (var(_, player) in this.server.OnlinePlayers) { if (player.CurrentScoreboard == this) { await player.client.QueuePacketAsync(packet); foreach (var score in this.scores.Select(x => x.Value).OrderByDescending(x => x.Value)) { await player.client.QueuePacketAsync(new UpdateScore { EntityName = score.DisplayText, ObjectiveName = this.name, Action = 0, Value = score.Value }); } } } }