/// <summary>Register the config menu if available.</summary> public void Register() { var defaultConfig = new ModConfig(); // get config menu var menu = this.ConfigMenu; if (!menu.IsLoaded) { return; } // register menu .Register() // main options .AddSectionTitle(I18n.Config_MainOptions) .AddNumberField( name: I18n.Config_Distance_Name, tooltip: () => I18n.Config_Distance_Tooltip(defaultValue: defaultConfig.Distance, maxRecommendedValue: 15), get: config => config.Distance, set: (config, value) => config.Distance = value, min: 1, max: 16 ) .AddNumberField( name: I18n.Config_Speed_Name, tooltip: () => I18n.Config_Speed_Tooltip(defaultValue: defaultConfig.TractorSpeed), get: config => config.TractorSpeed, set: (config, value) => config.TractorSpeed = value, min: -5, max: 10 ) .AddNumberField( name: I18n.Config_MagneticRadius_Name, tooltip: () => I18n.Config_MagneticRadius_Tooltip(defaultConfig.MagneticRadius), get: config => config.MagneticRadius, set: (config, value) => config.MagneticRadius = value, min: 0, max: 1000 ) .AddNumberField( name: I18n.Config_BuildPrice_Name, tooltip: () => I18n.Config_BuildPrice_Tooltip(defaultValue: defaultConfig.BuildPrice), get: config => config.BuildPrice, set: (config, value) => config.BuildPrice = value, min: 0, max: 1_000_000 ) .AddCheckbox( name: I18n.Config_CanSummonWithoutGarage_Name, tooltip: I18n.Config_CanSummonWithoutGarage_Tooltip, get: config => config.CanSummonWithoutGarage, set: (config, value) => config.CanSummonWithoutGarage = value ) .AddCheckbox( name: I18n.Config_InvincibleOnTractor_Name, tooltip: I18n.Config_InvincibleOnTractor_Tooltip, get: config => config.InvincibleOnTractor, set: (config, value) => config.InvincibleOnTractor = value ) .AddCheckbox( name: I18n.Config_HighlightRadius_Name, tooltip: I18n.Config_HighlightRadius_Tooltip, get: config => config.HighlightRadius, set: (config, value) => config.HighlightRadius = value ) // controls .AddSectionTitle(I18n.Config_Controls) .AddKeyBinding( name: I18n.Config_SummonKey_Name, tooltip: I18n.Config_SummonKey_Tooltip, get: config => config.Controls.SummonTractor, set: (config, value) => config.Controls.SummonTractor = value ) .AddKeyBinding( name: I18n.Config_DismissKey_Name, tooltip: I18n.Config_DismissKey_Tooltip, get: config => config.Controls.DismissTractor, set: (config, value) => config.Controls.DismissTractor = value ) .AddKeyBinding( name: I18n.Config_HoldToActivateKey_Name, tooltip: I18n.Config_HoldToActivateKey_Tooltip, get: config => config.Controls.HoldToActivate, set: (config, value) => config.Controls.HoldToActivate = value ) // axe .AddSectionTitle(I18n.Config_Axe) .AddCheckbox( name: I18n.Config_ChopFruitTreesSeeds_Name, tooltip: I18n.Config_ChopFruitTreesSeeds_Tooltip, get: config => config.StandardAttachments.Axe.ClearFruitTreeSeeds, set: (config, value) => config.StandardAttachments.Axe.ClearFruitTreeSeeds = value ) .AddCheckbox( name: I18n.Config_ChopFruitTreesSaplings_Name, tooltip: I18n.Config_ChopFruitTreesSaplings_Tooltip, get: config => config.StandardAttachments.Axe.ClearFruitTreeSaplings, set: (config, value) => config.StandardAttachments.Axe.ClearFruitTreeSaplings = value ) .AddCheckbox( name: I18n.Config_ChopFruitTreesGrown_Name, tooltip: I18n.Config_ChopFruitTreesGrown_Tooltip, get: config => config.StandardAttachments.Axe.CutGrownFruitTrees, set: (config, value) => config.StandardAttachments.Axe.CutGrownFruitTrees = value ) .AddCheckbox( name: I18n.Config_ChopTreesSeeds_Name, tooltip: I18n.Config_ChopTreesSeeds_Tooltip, get: config => config.StandardAttachments.Axe.ClearTreeSeeds, set: (config, value) => config.StandardAttachments.Axe.ClearTreeSeeds = value ) .AddCheckbox( name: I18n.Config_ChopTreesSaplings_Name, tooltip: I18n.Config_ChopTreesSaplings_Tooltip, get: config => config.StandardAttachments.Axe.ClearTreeSaplings, set: (config, value) => config.StandardAttachments.Axe.ClearTreeSaplings = value ) .AddCheckbox( name: I18n.Config_ChopTreesGrown_Name, tooltip: I18n.Config_ChopTreesGrown_Tooltip, get: config => config.StandardAttachments.Axe.CutGrownTrees, set: (config, value) => config.StandardAttachments.Axe.CutGrownTrees = value ) .AddCheckbox( name: I18n.Config_ChopBushes_Name, tooltip: I18n.Config_ChopBushes_Tooltip, get: config => config.StandardAttachments.Axe.CutBushes, set: (config, value) => config.StandardAttachments.Axe.CutBushes = value ) .AddCheckbox( name: I18n.Config_ClearDeadCrops_Name, tooltip: I18n.Config_ClearDeadCrops_Tooltip, get: config => config.StandardAttachments.Axe.ClearDeadCrops, set: (config, value) => config.StandardAttachments.Axe.ClearDeadCrops = value ) .AddCheckbox( name: I18n.Config_ClearLiveCrops_Name, tooltip: I18n.Config_ClearLiveCrops_Tooltip, get: config => config.StandardAttachments.Axe.ClearLiveCrops, set: (config, value) => config.StandardAttachments.Axe.ClearLiveCrops = value ) .AddCheckbox( name: I18n.Config_HarvestGiantCrops_Name, tooltip: I18n.Config_HarvestGiantCrops_Tooltip, get: config => config.StandardAttachments.Axe.CutGiantCrops, set: (config, value) => config.StandardAttachments.Axe.CutGiantCrops = value ) .AddCheckbox( name: I18n.Config_ClearDebris_Name, tooltip: I18n.Config_ClearDebris_Tooltip, get: config => config.StandardAttachments.Axe.ClearDebris, set: (config, value) => config.StandardAttachments.Axe.ClearDebris = value ) // hoe .AddSectionTitle(I18n.Config_Hoe) .AddCheckbox( name: I18n.Config_TillDirt_Name, tooltip: I18n.Config_TillDirt_Tooltip, get: config => config.StandardAttachments.Hoe.TillDirt, set: (config, value) => config.StandardAttachments.Hoe.TillDirt = value ) .AddCheckbox( name: I18n.Config_ClearWeeds_Name, tooltip: I18n.Config_ClearWeeds_Tooltip, get: config => config.StandardAttachments.Hoe.ClearWeeds, set: (config, value) => config.StandardAttachments.Hoe.ClearWeeds = value ) .AddCheckbox( name: I18n.Config_DigArtifactSpots_Name, tooltip: I18n.Config_DigArtifactSpots_Tooltip, get: config => config.StandardAttachments.Hoe.DigArtifactSpots, set: (config, value) => config.StandardAttachments.Hoe.DigArtifactSpots = value ) // pickaxe .AddSectionTitle(I18n.Config_Pickaxe) .AddCheckbox( name: I18n.Config_ClearDebris_Name, tooltip: I18n.Config_ClearDebris_Tooltip, get: config => config.StandardAttachments.PickAxe.ClearDebris, set: (config, value) => config.StandardAttachments.PickAxe.ClearDebris = value ) .AddCheckbox( name: I18n.Config_ClearDeadCrops_Name, tooltip: I18n.Config_ClearDeadCrops_Tooltip, get: config => config.StandardAttachments.PickAxe.ClearDeadCrops, set: (config, value) => config.StandardAttachments.PickAxe.ClearDeadCrops = value ) .AddCheckbox( name: I18n.Config_ClearTilledDirt_Name, tooltip: I18n.Config_ClearTilledDirt_Tooltip, get: config => config.StandardAttachments.PickAxe.ClearDirt, set: (config, value) => config.StandardAttachments.PickAxe.ClearDirt = value ) .AddCheckbox( name: I18n.Config_ClearWeeds_Name, tooltip: I18n.Config_ClearWeeds_Tooltip, get: config => config.StandardAttachments.PickAxe.ClearWeeds, set: (config, value) => config.StandardAttachments.PickAxe.ClearWeeds = value ) .AddCheckbox( name: I18n.Config_BreakFlooring_Name, tooltip: I18n.Config_BreakFlooring_Tooltip, get: config => config.StandardAttachments.PickAxe.ClearFlooring, set: (config, value) => config.StandardAttachments.PickAxe.ClearFlooring = value ) .AddCheckbox( name: I18n.Config_BreakBouldersAndMeteorites_Name, tooltip: I18n.Config_BreakBouldersAndMeteorites_Tooltip, get: config => config.StandardAttachments.PickAxe.ClearBouldersAndMeteorites, set: (config, value) => config.StandardAttachments.PickAxe.ClearBouldersAndMeteorites = value ) .AddCheckbox( name: I18n.Config_BreakObjects_Name, tooltip: I18n.Config_BreakObjects_Tooltip, get: config => config.StandardAttachments.PickAxe.ClearObjects, set: (config, value) => config.StandardAttachments.PickAxe.ClearObjects = value ) .AddCheckbox( name: I18n.Config_BreakMineContainers_Name, tooltip: I18n.Config_BreakMineContainers_Tooltip, get: config => config.StandardAttachments.PickAxe.BreakMineContainers, set: (config, value) => config.StandardAttachments.PickAxe.BreakMineContainers = value ) .AddCheckbox( name: I18n.Config_HarvestMineSpawns_Name, tooltip: I18n.Config_HarvestMineSpawns_Tooltip, get: config => config.StandardAttachments.PickAxe.HarvestMineSpawns, set: (config, value) => config.StandardAttachments.PickAxe.HarvestMineSpawns = value ) // scythe .AddSectionTitle(I18n.Config_Scythe) .AddCheckbox( name: I18n.Config_HarvestCrops_Name, tooltip: I18n.Config_HarvestCrops_Tooltip, get: config => config.StandardAttachments.Scythe.HarvestCrops, set: (config, value) => config.StandardAttachments.Scythe.HarvestCrops = value ) .AddCheckbox( name: I18n.Config_HarvestFlowers_Name, tooltip: I18n.Config_HarvestFlowers_Tooltip, get: config => config.StandardAttachments.Scythe.HarvestFlowers, set: (config, value) => config.StandardAttachments.Scythe.HarvestFlowers = value ) .AddCheckbox( name: I18n.Config_HarvestForage_Name, tooltip: I18n.Config_HarvestForage_Tooltip, get: config => config.StandardAttachments.Scythe.HarvestForage, set: (config, value) => config.StandardAttachments.Scythe.HarvestForage = value ) .AddCheckbox( name: I18n.Config_HarvestFruitTrees_Name, tooltip: I18n.Config_HarvestFruitTrees_Tooltip, get: config => config.StandardAttachments.Scythe.HarvestFruitTrees, set: (config, value) => config.StandardAttachments.Scythe.HarvestFruitTrees = value ) .AddCheckbox( name: I18n.Config_HarvestMachines_Name, tooltip: I18n.Config_HarvestMachines_Tooltip, get: config => config.StandardAttachments.Scythe.HarvestMachines, set: (config, value) => config.StandardAttachments.Scythe.HarvestMachines = value ) .AddCheckbox( name: I18n.Config_HarvestGrass_Name, tooltip: I18n.Config_HarvestGrass_Tooltip, get: config => config.StandardAttachments.Scythe.HarvestGrass, set: (config, value) => config.StandardAttachments.Scythe.HarvestGrass = value ) .AddCheckbox( name: I18n.Config_ClearDeadCrops_Name, tooltip: I18n.Config_ClearDeadCrops_Tooltip, get: config => config.StandardAttachments.Scythe.ClearDeadCrops, set: (config, value) => config.StandardAttachments.Scythe.ClearDeadCrops = value ) .AddCheckbox( name: I18n.Config_ClearWeeds_Name, tooltip: I18n.Config_ClearWeeds_Tooltip, get: config => config.StandardAttachments.Scythe.ClearWeeds, set: (config, value) => config.StandardAttachments.Scythe.ClearWeeds = value ) // melee blunt weapons .AddSectionTitle(I18n.Config_MeleeBlunt) .AddCheckbox( name: I18n.Config_AttackMonsters_Name, tooltip: I18n.Config_AttackMonsters_Tooltip, get: config => config.StandardAttachments.MeleeBlunt.AttackMonsters, set: (config, value) => config.StandardAttachments.MeleeBlunt.AttackMonsters = value ) .AddCheckbox( name: I18n.Config_BreakMineContainers_Name, tooltip: I18n.Config_BreakMineContainers_Tooltip, get: config => config.StandardAttachments.MeleeBlunt.BreakMineContainers, set: (config, value) => config.StandardAttachments.MeleeBlunt.BreakMineContainers = value ) // melee daggers .AddSectionTitle(I18n.Config_MeleeDagger) .AddCheckbox( name: I18n.Config_AttackMonsters_Name, tooltip: I18n.Config_AttackMonsters_Tooltip, get: config => config.StandardAttachments.MeleeDagger.AttackMonsters, set: (config, value) => config.StandardAttachments.MeleeDagger.AttackMonsters = value ) .AddCheckbox( name: I18n.Config_ClearDeadCrops_Name, tooltip: I18n.Config_ClearDeadCrops_Tooltip, get: config => config.StandardAttachments.MeleeDagger.ClearDeadCrops, set: (config, value) => config.StandardAttachments.MeleeDagger.ClearDeadCrops = value ) .AddCheckbox( name: I18n.Config_BreakMineContainers_Name, tooltip: I18n.Config_BreakMineContainers_Tooltip, get: config => config.StandardAttachments.MeleeDagger.BreakMineContainers, set: (config, value) => config.StandardAttachments.MeleeDagger.BreakMineContainers = value ) // melee sword .AddSectionTitle(I18n.Config_MeleeSword) .AddCheckbox( name: I18n.Config_AttackMonsters_Name, tooltip: I18n.Config_AttackMonsters_Tooltip, get: config => config.StandardAttachments.MeleeSword.AttackMonsters, set: (config, value) => config.StandardAttachments.MeleeSword.AttackMonsters = value ) .AddCheckbox( name: I18n.Config_ClearDeadCrops_Name, tooltip: I18n.Config_ClearDeadCrops_Tooltip, get: config => config.StandardAttachments.MeleeSword.ClearDeadCrops, set: (config, value) => config.StandardAttachments.MeleeSword.ClearDeadCrops = value ) .AddCheckbox( name: I18n.Config_BreakMineContainers_Name, tooltip: I18n.Config_BreakMineContainers_Tooltip, get: config => config.StandardAttachments.MeleeSword.BreakMineContainers, set: (config, value) => config.StandardAttachments.MeleeSword.BreakMineContainers = value ) // other .AddSectionTitle(I18n.Config_OtherTools) .AddCheckbox( name: I18n.Config_MilkPail_Name, tooltip: I18n.Config_MilkPail_Tooltip, get: config => config.StandardAttachments.MilkPail.Enable, set: (config, value) => config.StandardAttachments.MilkPail.Enable = value ) .AddCheckbox( name: I18n.Config_Shears_Name, tooltip: I18n.Config_Shears_Tooltip, get: config => config.StandardAttachments.Shears.Enable, set: (config, value) => config.StandardAttachments.Shears.Enable = value ) .AddCheckbox( name: I18n.Config_WateringCan_Name, tooltip: I18n.Config_WateringCan_Tooltip, get: config => config.StandardAttachments.WateringCan.Enable, set: (config, value) => config.StandardAttachments.WateringCan.Enable = value ) .AddCheckbox( name: I18n.Config_Fertilizer_Name, tooltip: I18n.Config_Fertilizer_Tooltip, get: config => config.StandardAttachments.Fertilizer.Enable, set: (config, value) => config.StandardAttachments.Fertilizer.Enable = value ) .AddCheckbox( name: I18n.Config_GrassStarters_Name, tooltip: I18n.Config_GrassStarters_Tooltip, get: config => config.StandardAttachments.GrassStarter.Enable, set: (config, value) => config.StandardAttachments.GrassStarter.Enable = value ) .AddCheckbox( name: I18n.Config_Seeds_Name, tooltip: I18n.Config_Seeds_Tooltip, get: config => config.StandardAttachments.Seeds.Enable, set: (config, value) => config.StandardAttachments.Seeds.Enable = value ) .AddCheckbox( name: I18n.Config_SeedBags_Name, tooltip: I18n.Config_SeedBags_Tooltip, get: config => config.StandardAttachments.SeedBagMod.Enable, set: (config, value) => config.StandardAttachments.SeedBagMod.Enable = value, enable: this.ModRegistry.IsLoaded(SeedBagAttachment.ModId) ) .AddCheckbox( name: I18n.Config_Slingshot_Name, tooltip: I18n.Config_Slingshot_Tooltip, get: config => config.StandardAttachments.Slingshot.Enable, set: (config, value) => config.StandardAttachments.Slingshot.Enable = value ) // custom tools .AddSectionTitle(I18n.Config_CustomTools) .AddTextbox( name: I18n.Config_CustomToolNames_Name, tooltip: I18n.Config_CustomToolNames_Tooltip, get: config => string.Join(", ", config.CustomAttachments), set: (config, value) => config.CustomAttachments = value.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries).Select(p => p.Trim()).ToArray() ); }
/// <summary>Apply the tractor buff to the current player.</summary> private void UpdateBuff() { Buff buff = Game1.buffsDisplay.otherBuffs.FirstOrDefault(p => p.which == this.BuffUniqueID); if (buff == null) { buff = new Buff(0, 0, 0, 0, 0, 0, 0, 0, this.Config.MagneticRadius, this.Config.TractorSpeed, 0, 0, 1, "Tractor Power", I18n.Buff_Name()) { which = this.BuffUniqueID }; Game1.buffsDisplay.addOtherBuff(buff); } buff.millisecondsDuration = 100; }