查看“模组:迁移至游戏本体1.5.5”的源代码
←
模组:迁移至游戏本体1.5.5
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看和复制此页面的源代码。
←[[模组:目录|目录]] {{翻译}} 此页面介绍了如何更新你的模组以与 {{version|1.5.5|Stardew Valley 1.5.5}} 兼容,并记录了一些更改和新功能 ==对于 SMAPI MOD== ===星露谷兼容性分支=== 星露谷 1.5.5 可在每个操作系统的两个分支中使用(游戏内容完全相同):''主分支'' 是默认安装的选项,和一个可选的“兼容分支”适用于 [https://www.stardewvalley.net/compatibility 早期的系统版本],它提供相同的内容,但使用不同的技术: {|class="wikitable" |- ! 分支 ! 系统 ! 游戏框架 ! 运行时 |- style="color: #090;" |rowspan="2"| 主分支 | Linux/macOS | MonoGame 3.8 | 64 位 .NET 5 |- style="color: #090;" | Windows | MonoGame 3.8 | 64 位 .NET 5 |- style="color: #900;" |rowspan="2"| 兼容分支 | Linux/macOS | MonoGame 3.5.1 | 64 位 Mono 4.5 |- style="color: #900;" | Windows | XNA Framework 4.0 | 32 位 .NET Framework 4.5 |} 但是 '''此版本的 SMAPI 仅支持游戏的主分支''' There are formidable difficulties across all mods in supporting all three variations [https://store.steampowered.com/hwsurvey Steam 用户硬件数据] 显示大约 99.69% 的玩家拥有 64 位操作系统,而 32 位系统很多事情都不能做. ===64 位 MonoGame 和 .NET 5=== Stardew Valley 1.5.5 在所有平台上迁移到 64 位 MonoGame 和 .NET 5。SMAPI 可以自动重写模组,所以它们应该仍然可以工作,但强烈建议为每个 C# mod 发布更新以避免特殊情况。 更新你的 C# 模组的代码: <ol> <li>[[:en:Modding:Migrate to 64-bit on Windows#How do I update mod code for 64-bit?|启用 64 位 兼容性]] 如果你没有准备好的话。(除非明确更改项目设置,否则默认情况下模组是 64 位的)</li> <li>如果您还没有将 <samp>.csproj</samp> 文件迁移到新格式:<ol> <li>更改模组工程的 <samp>.csproj</samp> 文件: <syntaxhighlight lang="xml"> <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <AssemblyName>程序集名称</AssemblyName> <RootNamespace>根命名空间</RootNamespace> <Version>版本</Version> <TargetFramework>net452</TargetFramework> </PropertyGroup> <ItemGroup> <PackageReference Include="Pathoschild.Stardew.ModBuildConfig" Version="3.3.0" /> </ItemGroup> </Project> </syntaxhighlight> </li> <li>如果模组使用 [[:en:Modding:Modder Guide/APIs/Harmony|Harmony]],添加 <code><nowiki><EnableHarmony>true</EnableHarmony></nowiki></code> 到属性组。</li> <li>更新 <samp>程序集名称</samp>、<samp>根命名空间</samp>、<samp>版本</samp> 标签。(You can delete the <samp>AssemblyName</samp> and <samp>RootNamespace</samp> tags if they just match the project name.)</li> <li>添加你要使用的任何 NuGet 包</li> <li>删除<samp>Properties/AssemblyInfo.cs</samp>文件, <samp>packages</samp>文件夹, 以及 <samp>packages.config</samp> 文件 (if present).</li> </ol> </li> <li>Edit your mod's <samp>.csproj</samp> file, and replace <code><nowiki><TargetFramework>net452</TargetFramework></nowiki></code> with <code><nowiki><TargetFramework>net5.0</TargetFramework></nowiki></code>.</li> <li>Update the mod build package to the prerelease 3.4.0 version.</li> <li>Exit Visual Studio.</li> <li>Delete your solution's hidden <samp>.vs</samp> folder, and every project's <samp>bin</samp> and <samp>obj</samp> folders.</li> <li>Reopen the solution in Visual Studio, click ''Build > Rebuild Solution'', fix any errors, and test the mod in-game.</li> </ol> Specific things to check for: * [[Modding:Modder Guide/APIs/Utilities#Constants|<code>Constants.GameFramework</code>]] now always returns <samp>MonoGame</samp>. Any code which checks for <samp>Xna</samp> can be removed or rewritten. If you need help, feel free to ask in [[:en:Modding:Community#Discord|#making-mods on the Stardew Valley Discord]]! ===Asset name format change=== Some background first: * An ''asset name'' identifies an asset you can load through a content API like <code><nowiki>Game1.content.Load<T>("asset name")</nowiki></code>. For example: <code>Characters/Abigail</code>. * A ''file path'' identifies a physical file on the computer. For example: <code>C:\Program Files (x86)\Steam\steamapps\common\Stardew Valley\Content\Characters\Abigail.xnb</code>. Stardew Valley 1.5.5 makes that distinction more important, since MonoGame uses Linux-style separators in asset names on all platforms. That means '''asset names no longer match path conventions on Windows'''. You should review all code in your mods that creates/compares paths, check whether it's actually creating/comparing asset names, and if so migrate it to the equivalent methods: {|class="wikitable" |- ! code for file paths ! code for asset names |- | <code>PathUtilities.NormalizePath("a/b")</code> | <code>PathUtilities.NormalizeAssetName("a/b")</code> |- | <code>Path.Combine("a", "b")</code> | <code>PathUtilities.NormalizeAssetName("a/b")</code> |- | <code>Path.DirectorySeparatorChar</code> | <code>PathUtilities.AssetDirectorySeparator</code> |} ===Consistent game assembly name=== Previously the game assembly was <code>Stardew Valley</code> on Windows, and <code>StardewValley</code> on Linux and macOS. The assembly is now named <code>Stardew Valley</code> on all platforms. Most mods shouldn't be affected once you update the mod build package. ===Scarecrow changes=== You can now patch <code>Object.IsScarecrow()</code> and/or <code>Object.GetRadiusForScarecrow()</code> (or add [[#Custom scarecrows|context tags]]) to support custom scarecrows or custom ranges. ===Horse footstep changes=== You can now override the footstep logic for a horse by setting its <samp>onFootstepAction</samp> field. For example: <syntaxhighlight lang="c#"> Horse horse = ...; // get the horse instance you want to change horse.onFootstepAction = (string tileType) => { // play custom audio, etc }; </syntaxhighlight> ===Content changes=== See ''[[#For Content Patcher packs|For Content Patcher packs]]'' below, which applies for C# mods too. ==For Content Patcher packs== Stardew Valley 1.5.5 has no known breaking changes for content packs. All content packs should work fine once the framework mod that loads them is updated. ===Custom farm types=== You can now add custom farm types by editing the <samp>Data/AdditionalFarms</samp> asset. Each entry consists of an object with these fields: {|class="wikitable" |- ! field ! description |- | <samp>ID</samp> | A unique ID value. This must be '''globally''' unique across all mods, so you should prefix your mod ID (''e.g.,'' <samp>Example.PineapplesAnywhere/PineappleFarm</samp>). You should avoid commas for compatibility with Content Patcher packs checking the <samp><nowiki>{{FarmType}}</nowiki></samp> token. This is not shown in-game. |- | <samp>TooltipStringPath</samp> | Where to get the translatable farm name and description. This must be a key in the form <samp>{{t|asset name}}:{{t|key}}</samp>; for example, <samp>Strings/UI:Farm_Description</samp> will get it from the <samp>Farm_Description</samp> entry in the <samp>Strings/UI</samp> file. The translated text must be in the form "<samp>{{t|name}}_{{t|description}}</samp>", like "Pineapple Farm_A farm shaped like a pineapple". |- | <samp>MapName</samp> | The map asset name relative to the <samp>Maps</samp> folder. For example, <samp>Farm_Pineapple</samp> would load <samp>Maps/Farm_Pineapple</samp>. |- | <samp>IconTexture</samp> | ''(optional)'' The asset name for a 22x20 pixel icon texture, shown on the 'New Game' and co-op join screens. |- | <samp>WorldMapTexture</samp> | ''(optional)'' The asset name for a 131x61 pixel texture that's drawn over the farm area in the in-game world map. |- | <samp>ModData</samp> | ''(optional)'' A string→string dictionary of mod-specific metadata for the farm, which can be accessed in C# code via <samp>Game1.GetFarmTypeModData(key)</samp>. |} For example, this Content Patcher pack would create a 'pineapple' farm: {{#tag:syntaxhighlight| { "Format": "{{Content Patcher version}}", "Changes": [ // add farm type { "Action": "EditData", "Target": "Data/AdditionalFarms", "Entries": { "Pathoschild.PineappleFarm/PineappleFarm": { // for technical reasons, you need to specify the ID here *and* in the "ID" field "ID": "Pathoschild.PineappleFarm/PineappleFarm", "TooltipStringPath": "Strings/UI:Pathoschild_PineappleFarm", "MapName": "Pathoschild_PineappleFarm", "IconTexture": "Mods/Pathoschild.PineappleFarm/Icon", "WorldMapTexture": "Mods/Pathoschild.PineappleFarm/WorldMap" } } }, // add farm name + description { "Action": "EditData", "Target": "Strings/UI", "Entries": { "Pathoschild_PineappleFarm": "Pineapple Farm_A farm shaped like a pineapple!" // tip: use <nowiki>{{i18n}}</nowiki> to translate it } }, // load map { "Action": "Load", "Target": "Maps/Pathoschild_PineappleFarm", "FromFile": "assets/map.tmx" }, // load icon { "Action": "Load", "Target": "Mods/Pathoschild.PineappleFarm/Icon, Mods/Pathoschild.PineappleFarm/WorldMap", "FromFile": "assets/<nowiki>{{TargetWithoutPath}}</nowiki>.png" } ] }|lang=javascript}} ===Custom languages=== You can now add custom languages by editing the <samp>Data/AdditionalLanguages</samp> asset. Each entry consists of an object with these fields: {|class="wikitable" |- ! field ! description |- | <samp>ID</samp> | A unique ID value. This is not shown in-game. |- | <samp>LanguageCode</samp> | The language code for this localization. This should ideally be a [[wikipedia:List of ISO 639-1 codes|ISO 639-1 code]]. You should avoid commas for compatibility with Content Patcher packs checking the <samp><nowiki>{{Language}}</nowiki></samp> token. |- | <samp>ButtonTexture</samp> | The asset name for a 174x78 pixel texture containing the button of the language for language selection menu. The top half of the sprite is the default state, while the bottom half is the hover state. |- | <samp>UseLatinFont</samp> | Whether the language uses the same Latin character font as English. If set to <samp>false</samp>, you must set the next field. |- | <samp>FontFile</samp> | ''(optional)'' The asset name for the font file to use (if <samp>UseLatinFont</samp> is <samp>false</samp>). |- | <samp>FontPixelZoom</samp> | ''(optional)'' A factor by while to multiply the font size. |- | <samp>FontApplyYOffset</samp> | ''(optional)'' Whether to shift the font up by four pixels (multiplied by the <samp>FontPixelZoom</samp>), to better align languages with larger characters like Chinese and Japanese. |- | <samp>SmallFontLineSpacing</samp> | ''(optional)'' The line spacing value used by <samp>smallFont</samp>. Defaults to 26. |- | <samp>TimeFormat</samp> | A string which describes the in-game time format, with tokens replaced by in-game values. For example, <code>[HOURS_12]:[MINUTES] [AM_PM]</code> would show <code>12:00 PM</code> at noon. The valid tokens are: * <code>[HOURS_12]</code>: hours in 12-hour format, where midnight and noon are both "12". * <code>[HOURS_12_0]</code>: hours in 12-hour format, where midnight and noon are both "0". * <code>[HOURS_24]</code>: hours in 24-hour format, where midnight is "0" and noon is "12". * <code>[HOURS_24_00]</code>: hours in 24-hour format with zero-padding, where midnight is "00" and noon is "12". * <code>[MINUTES]</code>: minutes with zero-padding. * <code>[AM_PM]</code>: the localized text for "am" or "pm" (taken from <code>Strings\\StringsFromCSFiles:DayTimeMoneyBox.cs.10370</code> and <code>DayTimeMoneyBox.cs.10371</code> respectively). The game shows "pm" between noon and 11:59pm inclusively; it shows "am" otherwise. |- | <samp>ClockTimeFormat</samp> | A string which describes the in-game time format. Equivalent to <samp>TimeFormat</samp>, but used for the in-game clock. |- | <samp>ClockDateFormat</samp> | A string which describes the in-game date format as shown in the in-game clock, with tokens replaced by in-game values. For example, <code>[DAY_OF_WEEK]. [DAY_OF_MONTH]</code> would show <code>Mon. 1</code>. The valid tokens are: * <code>[DAY_OF_WEEK]</code>: the abbreviated day of week as returned by <code>Game1.shortDayDisplayNameFromDayOfSeason</code> (like <samp>Mon</samp> for Monday). * <code>[DAY_OF_MONTH]</code>: the numerical day of the month. |} For example, this Content Patcher pack would add Esperanto to the game: {{#tag:syntaxhighlight| { "Format": "{{Content Patcher version}}", "Changes": [ // define language { "Action": "EditData", "Target": "Data/AdditionalLanguages", "Entries": { "Pathoschild.Esperanto": { // for technical reasons, you need to specify the ID here *and* in the "ID" field "ID": "Pathoschild.Esperanto", "LanguageCode": "eo", "ButtonTexture": "Mods/Pathoschild.Esperanto/Button", "UseLatinFont": true, "TimeFormat": "[HOURS_24_00]:[MINUTES]", "ClockTimeFormat": "[HOURS_24_00]:[MINUTES]", "ClockDateFormat": "[DAY_OF_WEEK] [DAY_OF_MONTH]" } } }, // load button texture { "Action": "Load", "Target": "Mods/Pathoschild.Esperanto/Button", "FromFile": "assets/button.png" } ] }|lang=javascript}} Once the language is defined, you can add translations to the game by patching game assets like usual, and use the language code you specified above. For example: <syntaxhighlight lang="javascript"> { "Action": "EditData", "Target": "Strings/StringsFromCSFiles", "Entries": { "Game1.cs.3043": "Lundo", "Game1.cs.3044": "Mardo", ... }, "When": { "Language": "eo" } } </syntaxhighlight> ===Custom festival location names=== The location name in the festival-started message (''e.g.,'' "''The Luau has begun on the beach''") was previously hardcoded, so it would always show the internal name for non-vanilla festival locations. You can now add a <samp>locationDisplayName</samp> field in the <samp>Data/Festivals/*</samp> file to set the display name. ===Custom spouse rooms=== Adding spouse rooms for custom NPCs is now much easier. You can edit the <samp>Data/SpouseRooms</samp> asset to add the spouse room info in this format: <code>"{{t|NPC name}}": "{{t|map name}}/{{t|map index}}"</code>. {|class="wikitable" |- ! field ! effect |- | <code>{{t|NPC name}}</code> | The internal name of the NPC (''i.e.,'' their key in <samp>Data/NPCDispositions</samp>). |- | <code>{{t|map name}}</code> | The asset name of the map in the game's <samp>Content/Maps</samp> folder. This can be a custom map loaded through Content Patcher's <samp>Load</samp> action or SMAPI's <samp>IAssetLoader</samp> API. |- | <code>{{t|map index}}</code> | The index of the spouse room within the map file, to allow multiple spouse rooms in the same file. Each spouse room is 6 tiles across by 9 tiles down, starting with index 0 in the top-left corner. You can have any number of rows and columns (the index will wrap at the end of the row), as long as they fit an integer number of spouse rooms. |} ===Map property changes=== Stardew Valley 1.5.5 adds several map properties: {|class="wikitable" |- ! valid in ! map property ! usage |- | farm | <samp>FarmFishLocationOverride {{t|location name}} {{t|chance}}</samp> | Adds an alternative location name when catching fish, where the {{t|chance}} is a decimal value between 0 (never happens) and 1 (always happens). For example, <samp>FarmFishLocationOverride Mountain 0.5</samp> adds a 50% chance of catching mountain fish instead of the normal fish for that location. The location name is case-sensitive, and matches those shown by the {{nexus mod|679|Debug Mode mod}}. |- | farm | <samp>FarmHouseFurniture [{{t|furniture ID}} {{t|tile X}} {{t|tile Y}} {{t|rotations}}]+</samp> | Spawns initial furniture in the farmhouse when creating a new save. If you add multiple furniture to the same tile, the first one will be placed on the ground and the last one will be placed on the first one.<br />This is also required to enable the <samp>FarmHouseWallpaper</samp>, <samp>FarmHouseFlooring</samp>, and <samp>FarmHouseStarterSeedsPosition</samp> properties. You can enable it without spawning any furniture with <samp>FarmHouseFurniture -1 0 0 0</samp>. |- | farm | <samp>FarmHouseFlooring {{t|flooring id}}</samp> | Sets the initial farmhouse floor to the given ID when creating a new save. These are mapped to the 4x4 tile areas in the <samp>Maps/walls_and_floors</samp> tilesheet starting at tile index 336 (where index 0 is mapped to the top-left square).<br />This is only enabled if <samp>FarmHouseFurniture</samp> is set. |- | farm | <samp>FarmHouseWallpaper {{t|wallpaper id}}</samp> | Sets the initial farmhouse wallpaper to the given ID when creating a new save. These are mapped to the 1x4 tile areas in the <samp>Maps/walls_and_floors</samp> tilesheet starting from the top-left.<br />This is only enabled if <samp>FarmHouseFurniture</samp> is set. |- | farm | <samp>FarmHouseStarterSeedsPosition {{t|tile X}} {{t|tile Y}}</samp> | Sets the tile position in the farmhouse where the seed package is placed when creating a new save.<br />This is only enabled if <samp>FarmHouseFurniture</samp> is set. |- | farm | <samp>FarmOceanCrabPotOverride T</samp> | Whether crab pots on the farm should catch ocean fish. |- | ''any'' | <samp>ForceAllowTreePlanting T</samp> | Whether to allow planting trees (both wild and fruit) in this location, even if it normally wouldn't be allowed. |- | ''any'' | <samp>IsFarm T</samp> | Whether to mark the location as a farm. This only affects generic location/interaction logic which checks the in-code <code>location.IsFarm</code> property; logic hardcoded into the game's <code>Farm</code> class (''e.g.,'' farm animals, pets, crows/scarecrows, greenhouse, farm buildings, etc) is still limited to the actual farm. |- | ''any'' | <samp>IsGreenhouse T</samp> | Whether to mark the location as a greenhouse. |- | farm | <samp>SpawnBeachFarmForage T</samp> | Whether to randomly spawn beach forage and [[补给箱]] on the farm (like the [[农场地图|vanilla beach farm]]). Forage and crates will only appear on tiles which have the <samp>BeachSpawn T</samp> property on the <samp>Back</samp> layer, are clear for placement, and don't have a tile on the <samp>AlwaysFront</samp> layer. |- | farm | <samp>SpawnForestFarmForage T</samp> | Whether to randomly spawn forest forage on the farm (like the [[农场地图|vanilla forest farm]]). Forage will only spawn on tiles which have the <samp>Type Grass</samp> tile property, are clear for placement, and don't have a tile on the <samp>AlwaysFront</samp> layer. |- | farm | <samp>SpawnMountainFarmOreRect {{t|tile X}} {{t|tile Y}} {{t|tile width}} {{t|tile height}}</samp> | The tile area on the farm map where ores should randomly spawn (like the [[农场地图|vanilla hilltop farm]]). Ores will only spawn on tiles which have the <samp>Type Dirt</samp> tile property and are clear for object placement. |} And one new tile property: {|class="wikitable" |- ! layer ! property ! effect |- | <samp>Back</samp> | <samp>TouchAction Warp {{t|area}} {{t|x}} {{t|y}} {{o|string prerequisite}}</samp> | Adds a player-only warp on the tile to the specified location name and position. This is exactly equivalent to <samp>TouchAction MagicWarp</samp>, but without the magic sound/visual effect. |} It also changes one tile property: {|class="wikitable" |- ! layer ! property ! effect |- | <samp>Back</samp> | <samp>Water</samp> | Setting the value to <samp>I</samp> (uppercase i) will make the tile behave like normal water, but won't render the water animation overlay for it. |} ===Non-Krobus roommates=== The game's [[婚姻]] logic previously had hardcoded exceptions to treat [[科罗布斯]] as a roommate instead. That logic has been reworked so it can be applied to any NPC (including custom NPCs). Specifically: <ul> <li>Items with the "<samp>propose_roommate_{{t|NPC name}}</samp>" [[:en:Modding:Context tags|context tag]] will trigger a roommate proposal when given to the named NPC. The NPC name must be lowercase with underscores instead of spaces (''e.g.,'' <samp>propose_roommate_dwarf</samp>).</li> <li>These [[:en:Modding:Dialogue|dialogue keys]] apply before they move in: {|class="wikitable" |- ! content file ! key ! effect |- | <samp>Strings/StringsFromCSFiles</samp> | <samp>{{t|NPC name}}_EngagedRoommate</samp> | The NPC's roommate proposal accept dialogue.<br />⚠ Ignored if you don't specify <samp>Data/EngagementDialogue:{{t|NPC name}}Roommate0</samp>.<br />For example: ''A Void Ghost pendant! How did you...?$3#$b#Oh, wow.$7#$b#@... yes, I'll come live with you, if you like. But we have to keep it secret from everyone.#$b#I'll be at your house in a few days... okay?$h'' |- | <samp>Strings/Characters</samp> | <samp>MovieInvite_NoTheater</samp> | The NPC's roommate proposal rejection text when you don't meet the requirements (''i.e.,'' min friendship + house upgrade level, and not already having a roommate/spouse). This is the same dialogue used when you can't invite someone to the movies. |- | <samp>Data/EngagementDialogue</samp> | <samp>{{t|NPC name}}Roommate0</samp><br /><samp>{{t|NPC name}}Roommate1</samp> | The NPC's normal dialogue after accepting the proposal, but before moving in. The <samp>Roommate0</samp> variant is always used on the day the NPC accepted; on subsequent days the NPC randomly chooses <samp>Roommate0</samp> or <samp>Roommate1</samp>. If the <samp>Roommate0</samp> variant isn't defined, the NPC will use the normal <samp>{{t|NPC Name}}0</samp> and <samp>{{t|NPC Name}}1</samp> keys. If the <samp>Roommate0</samp> variant is defined, <samp>Roommate1</samp> must be set too to avoid errors.<br />For example: ''@... I'm afraid we'll have to keep this a secret... Neither my people nor yours would accept us living together.'' |} And after they move in: {|class="wikitable" |- ! content file ! key ! effect |- | <samp>Characters/Dialogue/MarriageDialogue{{t|NPC name}}Roommate</samp> | ''all keys'' | Equivalent to <samp>Characters/Dialogue/MarriageDialogue{{t|NPC name}}</samp>, but only applies if the NPC is a roommate. If the file exists, it completely replaces the spouse version; otherwise the game defaults to the spouse version. |- | <samp>Characters/Dialogue/MarriageDialogue</samp> | <samp>*Roommate</samp> | Keys with the <samp>Roommate</samp> suffix take priority if they exist (only in this file, not the <samp>MarriageDialogue{{t|NPC name}}</samp> files). |- | <samp>Data/Festivals/*</samp> | <samp>{{t|NPC name}}_roommate</samp> | The NPC's normal dialogue at the festival if they're a roommate. If the key isn't defined, they'll use <samp>{{t|NPC name}}_spouse</samp> instead. |} And for other NPCs: {|class="wikitable" |- ! content file ! key ! effect |- | <samp>Characters/Dialogue/*</samp> | <samp>*_roommate_*</samp> | Equivalent to the <samp>*_inlaw_*</samp> infix in [[:en:Modding:Dialogue#Generic dialogue|generic dialogue]], used if you're a roommate with the NPC. If not defined, the game will fallback to the non-infixed dialogue (it won't use the <samp>*_inlaw_*</samp> variant). |}</li> <li>Roommates will sleep in a [[单人床]] if one is available and unused in the house; otherwise they'll use a double bed like a normal spouse. (Krobus is an exception, since he doesn't sleep in a bed.)</li> <li>Added [[:en:Modding:Event data#Event preconditions|event preconditions]] to check whether the local player has a roommate (<samp>R</samp>) or doesn't have a roommate (<samp>Rf</samp>). This can be combined with <samp>O {{t|NPC name}}</samp> to check for a specific roommate, like <samp>R/O Abigail</samp>.</li> </ul> ===Custom scarecrows=== You can now mark any placeable item as a [[稻草人]] with two new [[:en:Modding:Context tags|context tags]]: {|class="wikitable" |- ! context tag ! effect |- | <samp>crow_scare</samp> | Sets the item as a placeable scarecrow. If not set, the item is considered a scarecrow if its default name contains the substring <code>arecrow</code> (like before). |- | <samp>crow_scare_radius_{{t|radius}}</samp> | If the item is a scarecrow, sets the radius that it covers. If not set, the scarecrow defaults to 17 if the default name contains the substring <code>Deluxe</code> and 9 otherwise. |} ===Update impact=== Stardew Valley 1.5.5 only has technical changes; there are no known changes to the player-visible content. Known changes: {|class="wikitable" |- ! content file ! changes |- | <samp>Effects/BloomCombine</samp><br /><samp>Effects/BloomExtract</samp><br /><samp>Effects/GaussianBlur</samp> | These files were deleted. |- | <samp>Fonts/*</samp> | The actual font files are unchanged, but the JSON output for some fonts when unpacked by StardewXnbHack is a bit different due to the XNA Framework → MonoGame change. |} ==See also== * [[:en:User:Pathoschild/Modding wishlist/Completed#Done in Stardew Valley 1.5.5|Modding wishlist items done in Stardew Valley 1.5.5]] [[Category:模组]] [[en:Modding:Migrate_to_Stardew_Valley_1.5.5]]
该页面使用的模板:
Template:Content Patcher version
(
查看源代码
)
Template:Nexus mod
(
查看源代码
)
Template:O
(
查看源代码
)
Template:Quote
(
查看源代码
)
Template:Quote/styles.css
(
查看源代码
)
Template:T
(
查看源代码
)
Template:Version
(
查看源代码
)
Template:翻译
(
查看源代码
)
返回至
模组:迁移至游戏本体1.5.5
。
导航菜单
个人工具
创建账户
登录
名字空间
模组
讨论
不转换
不转换
简体
繁體
大陆简体
香港繁體
澳門繁體
大马简体
新加坡简体
台灣正體
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
未翻译的页面
帮助:编辑入门
随机页面
官方链接
官方网站
官方论坛
官方商品
Discord
Reddit
工具
链入页面
相关更改
上传文件
特殊页面
页面信息