生产者框架模组

生产者框架模组

框架用于添加自定义规则以生成对象。支持代码和内容包接口。

模组工具

目标

创建一个简单的方法来向游戏中添加新的生产规则。

安装

安装最新版本的 SMAPI。将 Producer Framework Mod 解压到 /Stardew Valley/Mods 目录中。

更新日志

1.9.8

修复因内容包移除导致 PFM 生成物品在悬停时因缺少翻译键而出现的错误。

1.9.7

修复了当输入不是对象或机器不可见时,它不会让任何其他模组补丁工作的问题。

1.9.6

禁用光源功能,该功能在 SV 1.6.9 版本中损坏。修复加载无名称生产者时出现的异常。

1.9.5

修复先前版本中的空引用错误。

1.9.4

  • 法语 i18n - (感谢 Caranud)
  • 修复原版机器:当加载 PFM 规则时,具有 ShowNextIndexWhileWorking 属性的原版机器即使没有覆盖 ProducerConfig 也不会显示正确的帧
  • 修复原版机器:具有 ClearContentOvernightCondition 属性的原版机器如果配置了 NoInputStartMode 则不会在夜间清空内容

1.9.3

  • 修复漏斗与原版及 PFM 机器的交互行为。
  • 移除部分原版机器的 PFM 默认配置,这些配置会导致意外行为。
  • 修复蘑菇箱和原木在添加某些类型配置时未按预期提供经验值的问题。
  • 所有具有特定行为的可制作物品均被标记为不受支持。(例如:锻造台、室内植物等)
  • 修复游戏中加载名称为空的对象时出现的空引用错误。

1.9.2

  • 修复在使用机器时不消耗仙尘物品的问题。
  • 修复生产彩色物品和火把时的警告问题。
  • 可能修复自动化时声音异常的问题。

1.9.1

修复动画在纹理宽度与原始大型可制作文件不同时显示不正常的问题。

1.9.0

  • 自动支持原版和内容补丁机器,无需 PFMAutomate
  • 新增属性以启用或禁用机器上的仙尘功能。
  • 支持料斗
  • 修复了在 SV 1.6 之后仙尘未应用于 PFM 机器的问题
  • 修复了规则在物品之前加载的问题。
  • 更改了一些警告信息,以便用户不会将其报告为错误。
  • 修复了堆叠数为 0 的物品会留在库存中的错误。
  • 对燃料消耗进行了多项修复。

1.8.0

  • 正在更新模组以兼容星露谷物语 1.6 版本
  • 支持在所有标识符中使用限定物品 ID
  • 新增生产者限定物品 ID 和附加生产者限定物品 ID 属性
  • 添加对蜂蜜作为腌制类型的支持
  • 添加对新保存类型的支持
  • 修复价格递增与倍乘属性结合时的问题
  • 剧透: 显示 1.7.4
  • 修复不应发生的弹跳问题。
  • 修复了当机器有动画但应持有的物品消失时出现错误的问题。
  • 升级至 Harmony 2 和 Stardew Valley 1.5.5。
  • 西班牙语 i18n。(感谢 bpsys)

1.7.3

  • 匈牙利语国际化。(感谢 martin66789)
  • 修复了当输出具有保留类型且输入也具有保留父索引时,对象无法正确堆叠的问题。

1.7.2

修复了与之前翻译工作方式不兼容的问题。

1.7.1

修复了当名称没有 i18n 键时某些输出名称无法正常工作的问题。

1.7.0

  • 动画现在可以根据机器内部的输出而有所不同,通过名称、索引或类别进行识别。
  • 输出名称的国际化不再限制每个索引只能有一个。仅适用于新生产的物品。
  • 新增规则属性,使输出索引被保留的父索引替换,因此您可以反向生产物品。(例如,从鱼子中生产鱼)
  • 新增属性,用于在输入和输出时增加状态标签。状态标签可以是任何字符串,并可与邮件框架模组一起使用。
  • 新增属性 AdditionalProducerNames,允许规则和配置适用于多个生产者名称。
  • 韩语国际化。(感谢 wally232)
  • 土耳其语国际化。(感谢 KeDili)

1.6.0

  • Outputs can now have restrictions for Input Stack. The required stack will be the value consumed.
  • 输出现在可以对输入堆栈设置限制。所需堆栈将是消耗的值。
  • New property compatible with Lookup Anything.
  • 新增与 Lookup Anything 兼容的属性。
  • Fix bug when a "preserved item" parent index could not be found.
  • 修复了当无法找到“保留物品”父索引时的错误。
  • Fix to input stack not displaying correctly on Lookup Anything.
  • 修复了输入堆栈在 Lookup Anything 上显示不正确的问题。
  • Japanese i18n. (Thanks to TwelveYO)
  • 日语国际化。(感谢 TwelveYO)
  • Chinese i18n. (Thanks to irischerish)
  • 中文国际化。(感谢 irischerish)

1.5.0

  • Outputs can now have restrictions for Mail and Events.
  • Outputs 现在可以对邮件和事件设置限制。
  • New API method to let SMAPI mods to load content packs directly. (Thanks to Amy Nagle)
  • 新的 API 方法允许 SMAPI 模组直接加载内容包。(感谢 Amy Nagle)
  • Russian i18n. (Thanks to Dmitrey Kupcov)
  • 俄语 i18n。(感谢 Dmitrey Kupcov)
  • New property on producer rules to let the creator define the log level that should be used to warn the player about rule conflicts.
  • 生产者规则新增属性,允许创建者定义用于警告玩家规则冲突的日志级别。
  • New config.json file that let you change the default log level of conflict warns for all producer rules.
  • 新增 config.json 文件,允许您更改所有生产者规则冲突警告的默认日志级别。
  • Season condition and requirement now uses the season of the location the machine is placed.
  • 季节条件和要求现在使用机器所在位置的季节。
  • Performance improvement when hovering over machines, on certain occasions.
  • 在特定情况下,悬停在机器上时的性能改进。

1.4.2

修复了《星露谷物语》1.5 版本中动画无法正常运作的问题。
修复了 SubtractTimeOfDay 属性未按预期生效的问题。
修复了加载首个存档时光源无法启动的问题。
修复了因季节、天气或时间条件导致生产暂停时动画无法停止的问题。

1.4.1

  • 修复蜂箱以在室内工作,即使配置过。
  • 德语国际化。(感谢 zirolive69)

1.4.0

  • 生产者现在可以生产有颜色的产出物。例如陈酿鱼籽。 颜色可以根据输入颜色、输入染料颜色或输出配置中定义的颜色来选择。
  • 生产者现在可以为产出物保留输入的“父级”信息。例如鲑鱼籽变成陈酿鲑鱼籽。
  • 产出物现在可以根据输入父级设置限制。例如鲟鱼籽变成鱼子酱而不是陈酿鲟鱼籽。
  • 生产者现在可以寻找附近物体来影响名称、价格和父级信息。例如蜂房中的蜂蜜会受到花朵影响。
  • 寻找的物体可以是田间或花园盆栽中作物的收获产物、果树果实或机器内的物体。
  • 生产者光源现在可以基于产出颜色或染料颜色设置。
  • 光源颜色定义现已反转以反映实际光线颜色。
  • 石头名称现已修正为正确索引。
  • 加载规则和配置时提供更好的日志信息。
  • 生产者现在可以在生产时或准备就绪时播放动画。(需要 1.6.2 版本的 Json Asset 或 Content Patcher 来加载精灵表中的纹理)
  • 修复了生产者配置覆盖属性的问题。
  • 修复了原版机器上的条件验证问题。
  • 修复了光源配置中的 AlwaysOn 属性问题。

1.3.2

  • 修复价格乘数未应用于输出的问题。
  • 改进随机多样性。

1.3.1

修复生产者灯光常亮的问题。新增属性使生产者灯光保持常亮。

1.3.0

  • 生产者现在可以设置为无输入启动。(在放置时或每日开始时)
  • 生产者现在可以设置多种生产条件。(时间、位置、天气和季节)
  • 生产者现在可以配置生产时的光源。
  • 生产者现在可以禁用生产时的弹跳动画。
  • 生产者现在可以在每个产出移除时增加游戏统计。
  • 产出现在可以设置生产限制。(燃料、位置、天气和季节)
  • 每个产出现在可以有不同的生产时间,覆盖规则的默认值。
  • 生产时间可以从一天中的时间中减去。
  • 规则现在需要声明它们可以覆盖特定的模组。
  • 模组文件现在应无视大小写和操作系统加载。

1.2.0

修改以支持新的 PFMAutomate 。使用 PFMAutomate ,通过框架添加的生产者规则将与 Automate 模组集成。

1.1.0

  • 木炭窑烟雾的新动画
  • 新的偏移属性,用于更好地定位动画。
  • 用于延迟添加声音的属性。
  • 用于在输入时增加游戏统计数据的属性。
  • 支持将火把作为输出创建。
  • 修复了最大堆叠数量比应有数量少一个的问题。

1.0.0

  • 初始发布。
  • 支持内容包配置。
  • 支持方法调用配置。
  • 所有基础原版规则已实现用于从输入进行生产。

供模组制作者使用内容包

模组文件夹内有一个带注释说明的模板,解释每个属性的作用。
内容包使用的对象与框架中的方法使用的对象相同。使用方法与创建内容包之间应该没有区别。
有两个配置文件:一个用于规则,另一个用于新增的生产者。规则文件涵盖大部分内容,但像机器生产时或准备就绪时应显示的精灵帧等内容,应按每台机器配置,而不是按每个生产规则配置。默认情况下,原版机器已配置,但可以更改。

以下是模组文件(ProducerRules.json)中添加的自定义规则模板:

剧透: 显示

[
    { // 所有具有默认值的行都可以被移除,该值将被使用。
        "ProducerName": "ProducerName", //要查找的生产者名称。它将匹配找到的第一个大型可制作物品。如果定义了ProducerQualifiedItemId,则此属性将被忽略。这是一个旧属性,你应该改用ProducerQualifiedItemId。
        "ProducerQualifiedItemId": "(BC)12", //生产者的合格物品ID。若未定义ProducerName则必须填写此项。
        "AdditionalProducerNames": [ "ProducerName2", "ProducerName3" ], //制作人的附加名称。该规则将被完全复制到列表中的制作人名称中。
        "AdditionalProducerQualifiedItemId": [ "(BC)15", "(BC)16" ], //生产者的附加合格物品ID。该规则将被完全复制到列表中的生产者合格物品ID中。
        "InputIdentifier": "fruit_tree_item", //输入的标识符。可以是限定物品ID、对象的索引、若为负值则为对象的类别。可以是对象的名称,或对象的情境标签。仅当生产者存在无输入启动模式时可为空。默认为空。
        "InputStack": 2, //所需输入堆叠数。默认值为1。
        "ExcludeIdentifiers": [ "Peach" ], //要从规则中排除的标识符列表。遵循与InputIdentifier相同的规则。默认值为null。
        "FuelIdentifier": "Coal", //燃料的标识符。燃料是生产过程中使用的额外物品。可以是合格物品ID、索引、名称或对象类别。默认为空。
        "FuelStack": 4, //所需的燃料堆叠数量。仅在燃料不为空时使用。默认为1。
        "AdditionalFuel": {
            "-6": 2,
            "Coal": 1,
            "246": 5
        }, //需要时的额外燃料。使用额外燃料时无需设置燃料项。格式为标识符与堆叠数量的组合,遵循与其他燃料属性相同的规则。默认为空值。
        "MinutesUntilReady": 120, //生产所需分钟数。星露谷物语的一天有1600分钟。从早上6点到凌晨2点为1200分钟,从凌晨2点到早上6点为400分钟。该数值应能被10整除。必需项。
        "SubtractTimeOfDay": true, //如果MinutesUntilReady应减去当前时间。由于游戏日从早上6点开始,公式中始终会加360。因此若将MinutesUntilReady设为1600,产出时间将固定为次日早上6点。当MinutesUntilReady小于1600时切勿设为true。
        "OutputIdentifier": "Beer", //输出的标识符。可以是对象的限定物品ID、索引或名称。必需。
        "OutputName": "{farmerName}的{inputName}{outputName}来自{farmName}", //物品名称。这将替换基础产出名称。接受4个动态替换标签。默认为空。
        "OutputTranslationKey": "MyMod.MyOutput", //翻译键。这是模组在其他语言中查找OutputName格式时使用的i18n文件中的键。该键的值遵循上述OutputName属性的相同规则。默认为null。
        "OutputGenericParentName": "Wild", //通用父级名称用于当需要父级的对象没有父级名称时,例如蜂蜜对应野生。默认为空。
        "OutputGenericParentNameTranslationKey": "MyMod.MyOutput", //翻译键。这是i18n文件中的键,模组将在其中查找其他语言的OutputGenericParentName。默认为null。
        "PreserveType": "Wine", //[Wine|Jelly|Pickles|Juice|Roe|Aged Roe|Honey|Bait|Dried Fruit|Dried Mushrooms|Smoked Fish] - 若产出物为原版游戏中的加工品类型。默认为空。使用此项将覆盖产出名称属性。
        "KeepInputParentIndex": true, // 当为true时,将使用保留的父索引输入作为输出的父索引。
        "ReplaceWithInputParentIndex": true, // 当为true时,将使用保留的父索引输入作为输出索引。
        "InputPriceBased": true, //是否将输出的基础价格替换为输入的基础价格。默认为false。
        "OutputPriceIncrement": 200, //按此数值增加基础价格。默认值为0。
        "OutputPriceMultiplier": 2.5, //将基础价格乘以该数值。默认值为1。
        "KeepInputQuality": false, //输出是否应与输入保持相同质量。默认为false。
        "OutputQuality": 2, //设置输出质量。默认值为0。
        "OutputStack": 2, //设置输出堆叠数量。默认为1。
        "OutputMaxStack": 2, //设置最大输出堆叠数量,若需要随机输出堆叠。若小于输出堆叠数量则忽略此项。默认为1。
        "SilverQualityInput": { //定义当输入为白银品质时的替代堆叠。移除此项将忽略该情况,因为概率将变为0。
            "Probability": 0.2, //使用替代堆叠的概率。默认值为0。
            "OutputStack": 2, //与其他相同。
            "OutputMaxStack": 4 //与其他相同
        },
        "GoldQualityInput": { //定义一个替代堆叠,如果输入是黄金品质。移除将忽略此项,因为概率将为0。
            "Probability": 0.4, //与其他相同。
            "OutputStack": 3, //与其他相同。
            "OutputMaxStack": 4 //与其他相同
        },
        "IridiumQualityInput": { //定义当输入为铱星品质时的替代堆叠。移除此项将忽略该条件,因为概率将变为0。
            "Probability": 1, //与其他相同。
            "OutputStack": 4, //与其他相同。
            "OutputMaxStack": 4 //与其他相同。
        },
        "OutputColorConfig": { // 如果设置,输出将是一个彩色对象。请记住,彩色对象需要图集中的下一个精灵作为颜色的调色板。默认为空。
            "Type": "DefinedColor", // [ObjectColor|ObjectDyeColor|DefinedColor] 若为ObjectColor且输入为有色对象,将使用输入对象的颜色。若为ObjectDyeColor且输入具有染色颜色,将使用该颜色。若为DefinedColor或在其他选项中未找到颜色,将根据红、绿、蓝值创建颜色。默认为DefinedColor。
            "Red": 255, // 颜色的红色数值。默认值为255。
            "Green": 255, // 颜色的绿色值。默认值为255。
            "Blue": 255 // 颜色的蓝色值。默认值为255。
        },
        "AdditionalOutputs": [ // 定义额外输出列表。无需设置默认输出即可使用额外输出,这种情况下第一个额外输出将成为默认值。仅会随机选择一个选项输出。默认为空列表。
            {
                "OutputProbability": 0.2, //获取该输出的绝对概率,范围从0到1。默认值为0。若为0,则未定义的剩余百分比将在所有概率为0的输出间平均分配。概率从第一个输出到最后一个输出依次检查,因此当总和大于1时,剩余输出将被忽略。
                "OutputIdentifier": "Apple", //这是必需的。其作用与规则中描述的OutputIdentifier相同。
                "MinutesUntilReady": 100, //生产此产出所需的分钟数。这将覆盖规则中设置的默认准备就绪分钟数。应能被10整除。
                "RequiredInputQuality": [ 0, 1 ], // 产出所需的输入品质。默认为无品质要求。
                "RequiredInputStack": 8, // 需要输入堆叠数等于或大于此值才能产生输出。将消耗此数值而非InputStack值。该值可小于InputStack值,但玩家仍需至少拥有InputStack设定的数值才能触发规则。默认无必需堆叠数要求。
                "RequiredFuel": { "Coal": 1 }, //实现产出所需的燃料。这些燃料将在规则定义燃料的基础上额外消耗。格式为标识符与堆叠数量的配对,遵循与其他燃料属性相同的规则。默认为无需额外燃料。
                "RequiredSeason": [ "spring", "summer" ], // 产出所需的季节。默认为无季节要求。
                "RequiredWeather": [ "Sunny", "Windy" ], // [Sunny|Rainy|Stormy|Snowy|Windy] 产出所需的天气条件。默认为无天气要求。
                "RequiredLocation": [ "Cellar", "FarmCave" ], // 产出所需的必要位置。默认为无位置要求。
                "RequiredMail": [ "BackpackTip" ], // 需要玩家已收到其中一封邮件才能触发该输出。默认为无邮件要求。
                "RequiredEvents": [ 611439 ], // 玩家必须已触发其中至少一个事件才能出现该输出。默认为无必需事件。
                "RequiredOutdoors": true, // [true|false|null] 若为true,产出物只能在户外生产。若为false,产出物只能在室内生产。若删除该行或值为null,则无限制。
                "RequiredInputParentIdentifiers": [ "22", "-80" ] // 输出所需的输入父级。父级是指产生输入的物品(例如鲑鱼卵的父级是鲑鱼)。标识符按以下顺序与输入父级进行比较:索引、名称、类别、上下文标签。
                // 所有引用输出的其他属性都可以在AdditionalOutputs中使用。请记得使用逗号分隔属性。
            }
        ],
        "Sounds": [ "Furnace" ], //输入被放置时播放的声音列表。默认为空列表。
        "DelayedSounds": [ { "bubbles": 50 } ], //延迟后播放的音效列表。默认为空列表。
        "PlacingAnimation": "Fire", //[Bubbles|Fire|CharcoalKilnSmoke] //放置输入时播放的动画。默认为空。
        "PlacingAnimationColorName": "White", //动画的颜色。[http://www.foszor.com/blog/xna-color-chart/] 默认白色。
        "PlacingAnimationOffsetX": 0, //X轴偏移量。该偏移量是相对于动画默认位置,而非机器位置。默认为0。
        "PlacingAnimationOffsetY": -32, //Y轴偏移量。该偏移量是相对于动画默认位置,而非机器位置。默认值为0。
        "IncrementStatsOnInput": [ "trashCansChecked" ], // 当输入物品时需递增的游戏统计数据。将按照堆叠数量递增统计值。原版机器在物品从机器中取出时已递增统计值。仅回收机在输入时递增统计值。默认为空列表。
        "IncrementStatsLabelOnInput": [ "ModId.MyCustomProduct" ], // 当输入被放置时增加的游戏统计标签。将按堆叠数量增加统计值。可以是任意标签文本。MFM 也支持条件统计标签。请查看文件末尾的原始统计标签。默认为空列表。
        "OverrideMod": [ "ModID to Override" ], //若定义此项,此规则可覆盖列表中模组具有相同生产者/输入组合的规则。否则将使用首个加载的规则。
        "FindInputWhenReady": { // 若希望在就绪时寻找特定对象,请设置此配置。若规则存在输入,放置时将消耗该输入,检查限制条件以选择输出,但不会基于该输入应用名称、价格、品质等修改。就绪时找到的对象将用于这些修改。
            "Range": 5, //输入将被寻找的最大范围。负数将被视为无限制(为避免崩溃将在150处停止)。默认值为-1。
            "InputIdentifier": [ "Orange", "-80" ], //输入的标识符。可以是限定物品ID、索引、名称或类别。
            "Crops": true, //是否应查找作物。标识符将与收获对象进行比较。默认为false。
            "ExcludeForageCrops": true, //是否应忽略饲料作物。默认为 false。
            "GardenPot": true, //是否在花园盆内寻找作物。默认为false。
            "FruitTrees": true, //是否应查找果树。标识符将与果实进行比较。默认为false。
            "BigCraftable": false //是否应查找大型可制作物品。标识符将与持有的物品进行比较。默认为false。
        },
        "WarningLogLevel": "Warn" //[Warn|Info|Debug|Trace] 加载规则时警告玩家缺少某些内容的日志级别。默认为内容包配置中的设置。
    }
]
/* 附加说明
 * 可能统计项:[seedsSown|itemsShipped|itemsCooked|itemsCrafted|eggsShipped|duckEggsShipped|milksShipped|goatMilksShipped|rabbitWoolsShipped|sheepWoolsShipped|cheesesMade|goatCheesesMade|trufflesFound|stonesCollected|rocksCrushed|dirtHoed|giftsGiven|timesUnconscious|averageBedtime|timesFished|fishCaught|bouldersCracked|stumpsChopped|stepsTaken|monstersKilled|diamondsFound|prismaticShardsFound|otherPreciousGemsFound|caveCarrotsFound|copperOreFound|ironOreFound|coalFound|coinsFound|goldOreFound|iridiumOreFound|barsSmelted|beveragesMade|preservesMade|trashCansChecked|mysticStonesCrushed|daysPlayed|weedsEliminated|sticksChopped|notesFound|questsCompleted|starfruitShipped|cropsShipped|itemsForaged|slimesKilled|geodesCracked|friendshipPoints|totalMoneyEarned]
 * 原版统计标签:[memoryCleared|childrenTurnedToDoves|trashCansChecked|daysPamperedOnBoat|daysasBeachFarmCrops|hardModeMonsterKilled|timesEnchanted]
 * 请注意,游戏并非正确统计所有数据。
 */

以下是模组文件中添加的制作人模板(ProducersConfig.json):

剧透: 显示

[ { "ProducerName": "ProducerName", //制作人姓名 "AdditionalProducerNames": [ "ProducerName2", "ProducerName3" ], //附加制作人名称。配置将完全复制到列表中的制作人名称。 "AlternateFrameProducing": true, //如果生产者在生产时应使用备用帧。 "AlternateFrameWhenReady": true, //如果生产者应使用备用帧并准备收获。 "DisableBouncingAnimationWhileWorking": false, // 是否应禁用生产者在工作时的弹跳动画。 "NoInputStartMode": "Placement", // [Placement|DayUpdate] //若机器具有此属性值,则只能存在一条不含输入标识符的生产规则。若设为"Placement",机器将在放置时启动,并在产出物品被取出时重新启动。若设为"DayUpdate",机器将在每日开始时启动。默认为空值。 "IncrementStatsOnOutput": { //成对的"统计:对象"标识应增加的内容。 "goatCheeseMade": "Goat Cheese", //第一个值为要增加的统计项,第二个值为产生该统计项增量时应生成的产出物标识符。标识符可以是产出的索引、名称、类别或上下文标签。将根据堆叠数量增加统计值。 "cheeseMade": null //如果标识符为空,任何输出都将匹配。 }, "IncrementStatsLabelOnOutput": { //标识应递增内容的"统计标签:对象"对。您可以添加自定义统计标签。MFM 也支持条件统计标签。默认为空。 "timesEnchanted": "Magic Bait", //第一个值是待递增的统计标签,第二个值是产生该统计时应生成的输出。标识符可以是输出的索引、名称、类别或上下文标签。将根据堆叠数量递增统计标签。 "modId.myItemProduced": null //若标识符为空,则任何输出都将匹配。 }, "MultipleStatsIncrement": true, //是否应增加所有匹配的属性。若为false,则仅增加首个匹配项。默认为false。 "Lightsource": { // 定义生产者工作时应使用的光源。默认为空。 "TextureIndex": 4, // 光源形状。所有原版机器均使用"sconceLight"。1=灯笼光,2=窗光,4=壁灯,5=坩埚光,6=室内窗光,7=投影仪光。默认为4。 "Radius": 1.5, // 光源的实际大小取决于所使用的纹理。默认值为1.5(使用壁灯纹理时的熔炉光源大小) "OffsetX": 0, // 从生产者图块中心的水平偏移量。默认值为0。 "OffsetY": 0, // 相对于生产图块顶部的垂直偏移量。默认值为0。 "ColorType": "DefinedColor", // [ObjectColor|ObjectDyeColor|DefinedColor] 若选择ObjectColor且输出为有色物体,将使用输出物体的颜色。若选择ObjectDyeColor且输出具有染色属性,将使用该颜色。若选择DefinedColor或未在其他选项中找到颜色,将根据红、绿、蓝数值创建颜色。 "ColorRed": 255, // 光源颜色的红色值。默认值为255。 "ColorGreen": 255, // 光源颜色的绿色值。默认为255。 "ColorBlue": 255, // 光源颜色的蓝色值。默认为255。 "ColorAlpha": 255, // 光源颜色的透明度值。0为完全透明,255为完全不透明。默认值为255。 "ColorFactor": 0.75, // 将乘以所有其他颜色参数的系数。默认值为1。 "AlwaysOn": true // 若为true,即使不生产时光源也会保持点亮。默认为false。 }, "WorkingTime": { // 若定义该值,机器将仅在此时间段内生产。此时间段外生产将暂停。默认设置为全天工作。 "Beginning": 600, //格式[HHmm]。机器可以开始生产的时间。默认值为0 "Ending": 1800 //格式 [HHmm]。机器停止生产的时间。默认值为0 }, "WorkingWeather": [ "Rainy", "Stormy" ], // [Sunny|Rainy|Stormy|Snowy|Windy] 机器工作的天气条件。默认为任何天气均可工作。 "WorkingLocation": [ "Barn", "Big Barn", "Deluxe Barn" ], // 机器将工作的地点。可以是任何建筑地图。默认在任何地点工作。 "WorkingOutdoors": true, // [true|false|null] 若为true,机器将仅在户外工作。若为false,机器将仅在室内工作。若删除该行或值为null,则可在两种地点工作。 "WorkingSeason": [ "Spring", "Summer", "Fall" ], // 机器将工作的季节。与其他条件不同,在非工作季节时,机器会在每天开始时进行清理。默认情况下,机器在任何季节都会工作。 "OverrideMod": [ "ModID to Override" ], //若定义此项,此配置可覆盖列表中同生产者的模组配置。否则将采用首个加载的配置。 "ProducingAnimation": { // 为机器的生产状态动画设置配置。默认为null。 "RelativeFrameIndex": [ 2, 3, 4, 5, 6, 7 ], //用于动画的帧索引及顺序。索引从零开始,基础帧和非生产状态的索引。额外帧是该帧的内容。可通过Json Assets或Content Patcher添加额外帧。 "FrameInterval": 10, // 帧之间的游戏刻数。默认为10 "AdditionalAnimations": { //根据机器内部物体应播放的动画。输出标识符与帧列表的配对。标识符可以是名称、索引或类别。默认为空。 "Salmon": [ 8, 9, 10 ], "131": [ 8, 11, 12 ], "-4": [ 8, 13, 14 ] } }, "ReadyAnimation": null //为机器的就绪状态设置动画配置。配置格式与工作动画相同。默认为null。 } ] /* 补充说明

  • 可能的统计项:[seedsSown|itemsShipped|itemsCooked|itemsCrafted|eggsShipped|duckEggsShipped|milksShipped|goatMilksShipped|rabbitWoolsShipped|sheepWoolsShipped|cheesesMade|goatCheesesMade|trufflesFound|stonesCollected|rocksCrushed|dirtHoed|giftsGiven|timesUnconscious|averageBedtime|timesFished|fishCaught|bouldersCracked|stumpsChopped|stepsTaken|monstersKilled|diamondsFound|prismaticShardsFound|otherPreciousGemsFound|caveCarrotsFound|copperOreFound|ironOreFound|coalFound|coinsFound|goldOreFound|iridiumOreFound|barsSmelted|beveragesMade|preservesMade|trashCansChecked|mysticStonesCrushed|daysPlayed|weedsEliminated|sticksChopped|notesFound|questsCompleted|starfruitShipped|cropsShipped|itemsForaged|slimesKilled|geodesCracked|friendshipPoints|totalMoneyEarned]
  • 原版统计标签:[memoryCleared|childrenTurnedToDoves|trashCansChecked|daysPamperedOnBoat|daysasBeachFarmCrops|hardModeMonsterKilled|timesEnchanted]
  • 请注意,并非所有统计数据都能被游戏正确计数。 */

以下是模组文件中添加的配置属性模板(Config.json):

剧透: 显示

{
    "DefaultWarningsLogLevel": "Warn" //[Warn|Info|Debug|Trace] 加载规则时警告玩家某些内容缺失的默认日志级别。默认为警告。
}

供模组制作者编写代码

在你的 SMAPI 项目中引用 ProducerFrameworkMod.dll。
使用 ProducerController 类来添加规则和配置。
这些参数具有与内容包模板相同的属性。
你也可以调用 API 方法 "AddContentPack",传入你的内容包文件所在目录,它们将被该模组加载。

特别感谢

  • minervamaga, SpringsSong, ParadigmNomad, Trent, spacechase0 - 他们直接参与了此框架的制作。
  • 星露谷物语 Discord #modding 频道的所有人 - 他们都给予了极大支持,并为本项目提供了灵感来源。

我的其他模组

  • 动物饲养模组
  • 永恒鱼饵与不破钓具模组
  • 保水田地模组
  • 自定义水晶复制机模组
  • 作物移植模组
  • 自定义陈酿桶模组
  • 自定义亲吻模组
  • 无边界木地板模组
  • 自定义生产器模组
  • 邮件服务模组
  • 奥术桌模组
  • 宝石路灯柱模组
  • 高级木桶模组