fix(plugin): check for valid data

This commit is contained in:
Anna 2023-10-05 01:32:38 -04:00
parent 58eec899b4
commit 0147a3bafd
Signed by: anna
GPG Key ID: D0943384CD9F87D1
1 changed files with 12 additions and 10 deletions

View File

@ -48,6 +48,7 @@ public class Plugin : IDalamudPlugin {
var players = this.ObjectTable
.Where(obj => obj.ObjectKind == ObjectKind.Player && obj is PlayerCharacter)
.Cast<PlayerCharacter>()
.Where(player => player.IsValid() && player.Level > 0)
.Select(player => {
var pos = player.Position;
return new PlayerInfo(
@ -68,20 +69,21 @@ public class Plugin : IDalamudPlugin {
.ToList();
if (players.Count == 0 || this.ClientState.LocalPlayer is not { } player) {
Log.Verbose("no players to upload");
return;
}
// shuffle so first player isn't always local player
players.Shuffle();
var update = new Update(territory, player.CurrentWorld.Id, players);
var json = JsonConvert.SerializeObject(update, new JsonSerializerSettings {
ContractResolver = new DefaultContractResolver {
NamingStrategy = new SnakeCaseNamingStrategy(),
},
});
Task.Run(async () => {
// shuffle so first player isn't always local player
players.Shuffle();
var update = new Update(territory, player.CurrentWorld.Id, players);
var json = JsonConvert.SerializeObject(update, new JsonSerializerSettings {
ContractResolver = new DefaultContractResolver {
NamingStrategy = new SnakeCaseNamingStrategy(),
},
});
using var mem = new MemoryStream();
await using (var gz = new GZipStream(mem, CompressionLevel.Optimal)) {
await gz.WriteAsync(Encoding.UTF8.GetBytes(json));