Add Group check, reworked world check for instances.

This commit is contained in:
CakeAndBanana
2025-09-29 23:56:11 +02:00
parent 8a9d4b8daa
commit 0b7b543dd7
2 changed files with 31 additions and 14 deletions

View File

@@ -9,6 +9,7 @@ using LightlessSync.WebAPI;
using Lumina.Excel.Sheets;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using System.Linq;
namespace LightlessSync.UI;
@@ -141,8 +142,29 @@ internal class ContextMenu : IHostedService
private World GetWorld(uint worldId)
{
var sheet = _gameData.GetExcelSheet<World>()!;
return sheet.TryGetRow(worldId, out var world) ? world : sheet.First();
var luminaWorlds = sheet.Where(x =>
{
var dc = x.DataCenter.ValueNullable;
var name = x.Name.ExtractText();
var internalName = x.InternalName.ExtractText();
if (dc == null || dc.Value.Region == 0 || string.IsNullOrWhiteSpace(dc.Value.Name.ExtractText()))
return false;
if (string.IsNullOrWhiteSpace(name) || string.IsNullOrWhiteSpace(internalName))
return false;
if (name.Contains('-', StringComparison.Ordinal) || name.Contains('_', StringComparison.Ordinal))
return false;
return x.RowId > 3001 && IsChineseJapaneseKoreanString(name);
});
return luminaWorlds.FirstOrDefault(x => x.RowId == worldId);
}
private static bool IsChineseJapaneseKoreanString(string text) => text.All(IsChineseJapaneseKoreanCharacter);
private static bool IsChineseJapaneseKoreanCharacter(char c) => (c >= 0x4E00 && c <= 0x9FFF);
public bool IsWorldValid(uint worldId) => IsWorldValid(GetWorld(worldId));