public override void InitNew() { base.InitNew(); Name = "NPC-Farmer"; Build = true; KingdomsTracker.SendKingdomNotification($"Placed a {KingdomType} of size {Size} at {Origin}"); }
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); }
protected override void Update(Players.Player player) { if (Build) { Build = false; var builder = new NpcFarmBuilder(player, Origin, Size); builder.Build(); LootSpawner.SetPossibleLootSpots(builder.LootSpots); } else if (BedBlockTracker.GetCount(player) < 1) { KingdomsTracker.SendKingdomNotification($"Farm at {Origin} is dead! Lost all beds"); Kill(); } else { var stockpile = Stockpile.GetStockPile(player); var colony = Colony.Get(player); CheckItemAmount(stockpile, BuiltinBlocks.Bread, 5000); CheckFollower(player, colony); CheckItemAmount(stockpile, BuiltinBlocks.WheatStage1, 100); } }