欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 金融 > 星露谷模组开发教程#7 自定义机器

星露谷模组开发教程#7 自定义机器

2025/3/12 17:29:19 来源:https://blog.csdn.net/Enaium/article/details/141218042  浏览:    关键词:星露谷模组开发教程#7 自定义机器

首发于Enaium的个人博客


添加大型工艺品

机器也算是大型工艺品,所以我们需要先添加它的大型工艺品。

这里做一张16x32格式为png的图。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

if (e.Name.IsEquivalentTo("Data/BigCraftables"))
{e.Edit(assets =>{var dict = assets.AsDictionary<string, BigCraftableData>();dict.Data["Awesome_Orearium"] = new BigCraftableData{Name = "Awesome_Orearium",DisplayName = "Orearium",Description = "Insert a ore of your choice and it will grow copies.",Texture = "Awesome_Orearium"};});
}if (e.Name.IsEquivalentTo("Awesome_Orearium"))
{e.LoadFromModFile<Texture2D>("assets/Orearium.png", AssetLoadPriority.Medium);
}

添加机器

Data/Machines.json中我们可以看到所有机器的信息,我们就仿照着宝石复制机做一个矿石复制机。

if (e.Name.IsEquivalentTo("Data/Machines"))
{e.Edit(assets =>{var dict = assets.AsDictionary<string, MachineData>();dict.Data["(BC)Awesome_Orearium"] = new MachineData{OutputRules = new List<MachineOutputRule> {new() {Id = "Default",Triggers =new List<MachineOutputTriggerRule>() {new() {Id = "OutputCollected",Trigger = MachineOutputTrigger.OutputCollected,RequiredCount = 1},new() {Id = "CopperOre",Trigger = MachineOutputTrigger.ItemPlacedInMachine,RequiredItemId = "(O)378"},new() {Id = "IronOre",Trigger = MachineOutputTrigger.ItemPlacedInMachine,RequiredItemId = "(O)380"},new() {Id = "GoldOre",Trigger = MachineOutputTrigger.ItemPlacedInMachine,RequiredItemId = "(O)384"},new() {Id = "IridiumOre",Trigger = MachineOutputTrigger.ItemPlacedInMachine,RequiredItemId = "(O)386"}},OutputItem = new List<MachineItemOutput>() {new() {Id = "Default",ItemId = "DROP_IN"}},MinutesUntilReady = 10,}},ReadyTimeModifiers = new List<StardewValley.GameData.QuantityModifier>() {new() {Id = "CopperOre",Condition = "ITEM_ID Target (O)378",Modification = StardewValley.GameData.QuantityModifier.ModificationType.Multiply,Amount = 1},new() {Id = "CopperOre",Condition = "ITEM_ID Target (O)380",Modification = StardewValley.GameData.QuantityModifier.ModificationType.Multiply,Amount = 2},new() {Id = "CopperOre",Condition = "ITEM_ID Target (O)384",Modification = StardewValley.GameData.QuantityModifier.ModificationType.Multiply,Amount = 3},new() {Id = "CopperOre",Condition = "ITEM_ID Target (O)386",Modification = StardewValley.GameData.QuantityModifier.ModificationType.Multiply,Amount = 4}}};});
}

首先我们需要添加一个输出规则,它有一些触发器,首先是OutputCollected,它会将输出物品继续放入机器,接着是ItemPlacedInMachine它可以指定只能让机器使用某些物品,比如放入矿石,它有一个RequiredItemId属性,这表示只能放入指定的物品,这里多加了几个矿石,铜矿石、铁矿石、金矿石和铱矿石。之后是它的输出物品,它的物品ID是DROP_IN,这表示它会复制放入的物品。最后是它的准备时间,这里是10分钟。之后我们可以使用ReadyTimeModifiers属性来修改准备时间,它有一个Condition属性,比如这里使用了ITEM_ID Target (O)378,这表示如果放入的物品是铜矿石,Modification也就是修改的类型,这里是MultiplyAmount也就是修改的倍数,这里是1,所以铜矿石的准备时间是10分钟,以此类推,铁矿石是20分钟,金矿石是30分钟,铱矿石是40分钟。

添加配方

if (e.Name.IsEquivalentTo("Data/CraftingRecipes"))
{e.Edit(assets =>{var dict = assets.AsDictionary<string, string>();dict.Data["Awesome_Orearium"] = "390 99 335 5 336 2 787 1/Home/Awesome_Orearium/true/default/";});
}

这里使用99个石头、5个铁锭、2个金锭和1个电池制造一个矿石复制机。

20240810234307

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词