public bool TryDoCommand(Players.Player causedBy, string chattext) { try { if (PermissionsManager.CheckAndWarnPermission(causedBy, KingdomsModEntries.MOD_PREFIX + $"kill{KingdomType}")) { NpcKingdom closestFarm; if (chattext.Equals($"/kill{KingdomType} all")) { KingdomsTracker.GetAllByType(KingdomType).ForEach(kingdom => kingdom.Kill()); KingdomsTracker.SendKingdomNotification($"killed all {KingdomType}"); } else if (KingdomsTracker.TryGetClosest(KingdomType, causedBy.VoxelPosition, out closestFarm)) { closestFarm.Kill(); KingdomsTracker.SendKingdomNotification($"Killed {KingdomType} at {closestFarm.Origin}"); } } } catch (Exception exception) { Log.WriteError($"Exception while parsing command; {exception.Message} - {exception.StackTrace}"); } return(true); }
public bool TryDoCommand(Players.Player causedBy, string chattext) { try { if (!Permissions.PermissionsManager.CheckAndWarnPermission(causedBy, KingdomsModEntries.MOD_PREFIX + "listfarms")) { return(true); } var m = Regex.Match(chattext, @"/kingdomlist( (?<kingdomType>.+))?"); if (!m.Success) { Chat.Send(causedBy, "Command didn't match, use /kingdomlist [kingdomType]"); return(true); } var kingdomType = m.Groups ["kingdomType"].Value; List <NpcKingdom> kingdoms; if (kingdomType.Length < 1 || "all".Equals(kingdomType)) { kingdoms = KingdomsTracker.GetAll(); } else { kingdoms = KingdomsTracker.GetAllByType(kingdomType); } var msg = string.Join("\n", kingdoms.Select(f => $"{kingdomType} at {f.Origin}").ToArray()); if (msg.Length < 1) { Chat.Send(causedBy, $"No '{kingdomType}' kingdoms found"); } else { Chat.Send(causedBy, msg); } } catch (Exception exception) { Log.WriteError($"Exception while parsing command; {exception.Message} - {exception.StackTrace}"); } return(true); }