Update smapi-internal files and apk files

This commit is contained in:
Chris 2020-02-04 11:45:29 -05:00
parent 28b4173b0c
commit 95c918caaa
25 changed files with 617 additions and 485 deletions

View File

@ -6,8 +6,8 @@ android {
applicationId "com.MartyrPher.smapiandroidinstaller" applicationId "com.MartyrPher.smapiandroidinstaller"
minSdkVersion 19 minSdkVersion 19
targetSdkVersion 28 targetSdkVersion 28
versionCode 1 versionCode 2
versionName "1.0" versionName '3.2.0'
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
} }
buildTypes { buildTypes {
@ -16,6 +16,8 @@ android {
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
} }
} }
productFlavors {
}
} }
dependencies { dependencies {
@ -26,7 +28,7 @@ dependencies {
implementation 'com.madgag.spongycastle:prov:1.54.0.0' implementation 'com.madgag.spongycastle:prov:1.54.0.0'
implementation 'com.madgag.spongycastle:pkix:1.54.0.0' implementation 'com.madgag.spongycastle:pkix:1.54.0.0'
implementation 'com.madgag.spongycastle:pg:1.54.0.0' implementation 'com.madgag.spongycastle:pg:1.54.0.0'
implementation group: 'commons-io', name: 'commons-io', version: '2.5' implementation 'commons-io:commons-io:2.5'
testImplementation 'junit:junit:4.12' testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2' androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'

Binary file not shown.

Binary file not shown.

View File

@ -1,77 +0,0 @@
/*
This file contains advanced configuration for SMAPI. You generally shouldn't change this file.
*/
{
/**
* The console color theme to use. The possible values are:
* - AutoDetect: SMAPI will assume a light background on Mac, and detect the background color automatically on Linux or Windows.
* - LightBackground: use darker text colors that look better on a white or light background.
* - DarkBackground: use lighter text colors that look better on a black or dark background.
*/
"ColorScheme": "AutoDetect",
/**
* Whether SMAPI should check for newer versions of SMAPI and mods when you load the game. If new
* versions are available, an alert will be shown in the console. This doesn't affect the load
* time even if your connection is offline or slow, because it happens in the background.
*/
"CheckForUpdates": true,
/**
* Whether to enable features intended for mod developers. Currently this only makes TRACE-level
* messages appear in the console.
*/
"DeveloperMode": false,
/**
* Whether to add a section to the 'mod issues' list for mods which directly use potentially
* sensitive .NET APIs like file or shell access. Note that many mods do this legitimately as
* part of their normal functionality, so these warnings are meaningless without further
* investigation. When this is commented out, it'll be true for local debug builds and false
* otherwise.
*/
//"ParanoidWarnings": true,
/**
* Whether SMAPI should show newer beta versions as an available update. When this is commented
* out, it'll be true if the current SMAPI version is beta, and false otherwise.
*/
//"UseBetaChannel": true,
/**
* Android SMAPI's GitHub project name, used to perform update checks.
*/
"GitHubProjectName": "MartyrPher/SMAPI-Android-Installer",
/**
* The base URL for SMAPI's web API, used to perform update checks.
* Note: the protocol will be changed to http:// on Linux/Mac due to OpenSSL issues with the
* game's bundled Mono.
*/
"WebApiBaseUrl": "https://api.smapi.io",
/**
* Whether SMAPI should log more information about the game context.
*/
"VerboseLogging": false,
/**
* Whether to generate a 'SMAPI-latest.metadata-dump.json' file in the logs folder with the full mod
* metadata for detected mods. This is only needed when troubleshooting some cases.
*/
"DumpMetadata": false,
/**
* The mod IDs SMAPI should ignore when performing update checks or validating update keys.
*/
"SuppressUpdateChecks": [
"SMAPI.ConsoleCommands",
"SMAPI.SaveBackup"
]
}

Binary file not shown.

View File

@ -1,405 +0,0 @@
{
/**
* Metadata about some SMAPI mods used in compatibility, update, and dependency checks. This
* field shouldn't be edited by players in most cases.
*
* Standard fields
* ===============
* The predefined fields are documented below (only 'ID' is required). Each entry's key is the
* default display name for the mod if one isn't available (e.g. in dependency checks).
*
* - ID: the mod's latest unique ID (if any).
*
* - FormerIDs: uniquely identifies the mod across multiple versions, and supports matching
* other fields if no ID was specified. This doesn't include the latest ID, if any. Multiple
* variants can be separated with '|'.
*
* - MapLocalVersions and MapRemoteVersions correct local manifest versions and remote versions
* during update checks. For example, if the API returns version '1.1-1078' where '1078' is
* intended to be a build number, MapRemoteVersions can map it to '1.1' when comparing to the
* mod's current version. This is only meant to support legacy mods with injected update keys.
*
* Versioned metadata
* ==================
* Each record can also specify extra metadata using the field keys below.
*
* Each key consists of a field name prefixed with any combination of version range and 'Default',
* separated by pipes (whitespace trimmed). For example, 'UpdateKey' will always override,
* 'Default | UpdateKey' will only override if the mod has no update keys, and
* '~1.1 | Default | Name' will do the same up to version 1.1.
*
* The version format is 'min~max' (where either side can be blank for unbounded), or a single
* version number.
*
* These are the valid field names:
*
* - UpdateKey: the update key to set in the mod's manifest. This is used to enable update
* checks for older mods that haven't been updated to use it yet.
*
* - Status: overrides compatibility checks. The possible values are Obsolete (SMAPI won't load
* it because the mod should no longer be used), AssumeBroken (SMAPI won't load it because
* the specified version isn't compatible), or AssumeCompatible (SMAPI will try to load it
* even if it detects incompatible code).
*
* Note that this shouldn't be set to 'AssumeBroken' if SMAPI can detect the incompatibility
* automatically, since that hides the details from trace logs.
*
* - StatusReasonPhrase: a message to show to the player explaining why the mod can't be loaded
* (if applicable). If blank, will default to a generic not-compatible message.
*
* - AlternativeUrl: a URL where the player can find an unofficial update or alternative if the
* mod is no longer compatible.
*/
"ModData": {
/*********
** Content packs
*********/
"Canon-Friendly Dialogue Expansion": {
"ID": "gizzymo.canonfriendlyexpansion",
"~1.1.1 | Status": "AssumeBroken" // causes a save crash on certain dates
},
"Everytime Submarine": {
"ID": "MustafaDemirel.EverytimeSubmarine",
"~1.0.0 | Status": "AssumeBroken" // breaks player saves if their beach bridge is fixed
},
/*********
** Mods
*********/
"Adjust Artisan Prices": {
"ID": "ThatNorthernMonkey.AdjustArtisanPrices",
"FormerIDs": "1e36d4ca-c7ef-4dfb-9927-d27a6c3c8bdc", // changed in 0.0.2-pathoschild-update
"MapRemoteVersions": { "0.01": "0.0.1" }
},
"Almighty Farming Tool": {
"ID": "439",
"MapRemoteVersions": {
"1.21": "1.2.1",
"1.22-unofficial.3.mizzion": "1.2.2-unofficial.3.mizzion"
}
},
"Animal Mood Fix": {
"ID": "GPeters-AnimalMoodFix",
"~ | Status": "Obsolete",
"~ | StatusReasonPhrase": "the animal mood bugs were fixed in Stardew Valley 1.2."
},
"Arcade Pong": {
"ID": "Platonymous.ArcadePong",
"~1.0.2 | Status": "AssumeBroken" // broke in SMAPI 2.6-beta.16 due to reflection into SMAPI internals
},
"Automated Doors": {
"ID": "azah.automated-doors",
"FormerIDs": "1abcfa07-2cf4-4dc3-a6e9-6068b642112b", // changed in 1.4.1
"Default | UpdateKey": "GitHub:azah/AutomatedDoors" // added in 1.4.2
},
"Basic Sprinklers Improved": {
"ID": "lrsk_sdvm_bsi.0117171308",
"MapRemoteVersions": { "1.0.2": "1.0.1-release" } // manifest not updated
},
"Better Shipping Box": {
"ID": "Kithio:BetterShippingBox",
"MapLocalVersions": { "1.0.1": "1.0.2" }
},
"Birthday Mail": {
"ID": "KathrynHazuka.BirthdayMail",
"FormerIDs": "005e02dc-d900-425c-9c68-1ff55c5a295d", // changed in 1.2.3-pathoschild-update
"MapRemoteVersions": { "1.3.1": "1.3" } // manifest not updated
},
"BJS Night Sounds": {
"ID": "BunnyJumps.BJSNightSounds",
"~1.0.0 | Status": "AssumeBroken" // runtime errors with Harmony 1.2.0.1 in SMAPI 2.8+
},
"Casks Anywhere": {
"ID": "CasksAnywhere",
"MapLocalVersions": { "1.1-alpha": "1.1" }
},
"Chefs Closet": {
"ID": "Duder.ChefsCloset",
"MapLocalVersions": { "1.3-1": "1.3" }
},
"Chest Pooling": {
"ID": "mralbobo.ChestPooling",
"Default | UpdateKey": "GitHub:mralbobo/stardew-chest-pooling"
},
"Cobalt": {
"ID": "spacechase0.Cobalt",
"MapRemoteVersions": { "1.1.3": "1.1.2" } // not updated in manifest
},
"Colored Chests": {
"ID": "4befde5c-731c-4853-8e4b-c5cdf946805f",
"~ | Status": "Obsolete",
"~ | StatusReasonPhrase": "colored chests were added in Stardew Valley 1.1."
},
"Configurable Machines": {
"ID": "21da6619-dc03-4660-9794-8e5b498f5b97",
"MapLocalVersions": { "1.2-beta": "1.2" }
},
"Crafting Counter": {
"ID": "lolpcgaming.CraftingCounter",
"MapRemoteVersions": { "1.1": "1.0" } // not updated in manifest
},
"Custom Farming Automate Bridge": {
"ID": "Platonymous.CFAutomate",
"~1.0.1 | Status": "AssumeBroken", // no longer compatible with Automate
"~1.0.1 | AlternativeUrl": "https://www.nexusmods.com/stardewvalley/mods/991"
},
"Customizable Cart Redux": {
"ID": "KoihimeNakamura.CCR",
"MapLocalVersions": { "1.1-20170917": "1.1" }
},
"Custom Linens": {
"ID": "Mevima.CustomLinens",
"MapRemoteVersions": { "1.1": "1.0" } // manifest not updated
},
"Custom Shirts": {
"ID": "Platonymous.CustomShirts",
"Default | UpdateKey": "Nexus:2416" // keep for dependencies
},
"Dynamic Horses": {
"ID": "Bpendragon-DynamicHorses",
"MapRemoteVersions": { "1.2": "1.1-release" } // manifest not updated
},
"Dynamic Machines": {
"ID": "DynamicMachines",
"MapLocalVersions": { "1.1": "1.1.1" }
},
"Enemy Health Bars": {
"ID": "Speeder.HealthBars",
"FormerIDs": "SPDHealthBar" // changed in 1.7.1-pathoschild-update
},
"Fall 28 Snow Day": {
"ID": "Omegasis.Fall28SnowDay",
"~1.4.1 | Status": "AssumeBroken" // broke in SMAPI 2.0, and update for SMAPI 2.0 doesn't do anything
},
"Fishing Adjust": {
"ID": "shuaiz.FishingAdjustMod",
"~2.0.1 | Status": "AssumeBroken" // Method not found: 'Void Harmony.HarmonyInstance.Patch(System.Reflection.MethodBase, Harmony.HarmonyMethod, Harmony.HarmonyMethod, Harmony.HarmonyMethod)'
},
"Fishing Automaton": {
"ID": "Drynwynn.FishingAutomaton",
"~1.1 | Status": "AssumeBroken" // runtime errors with Harmony 1.2.0.1 in SMAPI 2.8+
},
"Fix Scythe Exp": {
"ID": "bcmpinc.FixScytheExp",
"~0.3 | Status": "AssumeBroken" // broke in 1.3: Exception from HarmonyInstance "bcmpinc.FixScytheExp" [...] Bad label content in ILGenerator.
},
"Gate Opener": {
"ID": "mralbobo.GateOpener",
"Default | UpdateKey": "GitHub:mralbobo/stardew-gate-opener"
},
"Grass Growth": {
"ID": "bcmpinc.GrassGrowth",
"~0.3 | Status": "AssumeBroken" // broke in 1.3.29 (runtime errors: System.IndexOutOfRangeException: Could not find instruction sequence)
},
"Hunger Mod (skn)": {
"ID": "skn.HungerMod",
"MapRemoteVersions": { "1.2.1": "1.0" } // manifest not updated
},
"Idle Pause": {
"ID": "Veleek.IdlePause",
"MapRemoteVersions": { "1.2": "1.1" } // manifest not updated
},
"Item Auto Stacker": {
"ID": "cat.autostacker",
"MapRemoteVersions": { "1.0.1": "1.0" } // manifest not updated
},
"Modder Serialization Utility": {
"ID": "SerializerUtils-0-1",
"~ | Status": "Obsolete",
"~ | StatusReasonPhrase": "it's no longer maintained or used."
},
"More Rain": {
"ID": "Omegasis.MoreRain",
"~1.4 | Status": "AssumeBroken" // broke in SMAPI 2.0
},
"More Silo Storage": {
"ID": "OrneryWalrus.MoreSiloStorage",
"~1.0.1 | Status": "AssumeBroken" // broke in SDV 1.3
},
"Move Faster": {
"ID": "shuaiz.MoveFasterMod",
"~1.0.1 | Status": "AssumeBroken" // doesn't do anything as of SDV 1.2.33 (bad Harmony patch?)
},
"MTN": {
"ID": "SgtPickles.MTN",
"~1.2.5 | Status": "AssumeBroken" // replaces Game1.multiplayer, which breaks SMAPI's multiplayer API.
},
"Multiple Sprites and Portraits On Rotation (File Loading)": {
"ID": "FileLoading",
"MapLocalVersions": { "1.1": "1.12" }
},
"Night Owl": {
"ID": "Omegasis.NightOwl",
"MapLocalVersions": { "2.1": "1.3" } // 1.3 had wrong version in manifest
},
"No Added Flying Mine Monsters": {
"ID": "Drynwynn.NoAddedFlyingMineMonsters",
"~1.1 | Status": "AssumeBroken" // runtime errors with Harmony 1.2.0.1 in SMAPI 2.8+
},
"No Debug Mode": {
"ID": "NoDebugMode",
"~ | Status": "Obsolete",
"~ | StatusReasonPhrase": "debug mode was removed in SMAPI 1.0."
},
"OmniFarm": {
"ID": "PhthaloBlue.OmniFarm",
"FormerIDs": "BlueMod_OmniFarm", // changed in 2.0.2-pathoschild-update
"Default | UpdateKey": "GitHub:lambui/StardewValleyMod_OmniFarm"
},
"PyTK - Platonymous Toolkit": {
"ID": "Platonymous.Toolkit",
"Default | UpdateKey": "Nexus:1726"
},
"Point-and-Plant": {
"ID": "jwdred.PointAndPlant",
"MapRemoteVersions": { "1.0.3": "1.0.2" } // manifest not updated
},
"Prairie King Made Easy": {
"ID": "Mucchan.PrairieKingMadeEasy",
"~1.0 | Status": "AssumeBroken" // broke in SDV 1.2
},
"Relationship Status": {
"ID": "relationshipstatus",
"MapRemoteVersions": { "1.0.5": "1.0.4" } // not updated in manifest
},
"ReRegeneration": {
"ID": "lrsk_sdvm_rerg.0925160827",
"MapLocalVersions": { "1.1.2-release": "1.1.2" }
},
"Save Backup": {
"ID": "Omegasis.SaveBackup",
"~1.2 | Status": "AssumeBroken" // broke in SMAPI 2.0
},
"Server Bookmarker": {
"ID": "Ilyaki.ServerBookmarker",
"~1.0.0 | Status": "AssumeBroken" // broke in Stardew Valley 1.3.29 (runtime errors)
},
"Shop Expander": {
"ID": "Entoarox.ShopExpander",
"FormerIDs": "EntoaroxShopExpander", // changed in 1.5.2
"MapRemoteVersions": { "1.6.0b": "1.6.0" }
},
"Showcase Mod": {
"ID": "Igorious.Showcase",
"MapLocalVersions": { "0.9-500": "0.9" }
},
"Siv's Marriage Mod": {
"ID": "6266959802", // official version
"FormerIDs": "Siv.MarriageMod | medoli900.Siv's Marriage Mod", // 1.2.3-unofficial versions
"MapLocalVersions": { "0.0": "1.4" }
},
"Skill Prestige: Cooking Adapter": {
"ID": "Alphablackwolf.CookingSkillPrestigeAdapter",
"FormerIDs": "20d6b8a3-b6e7-460b-a6e4-07c2b0cb6c63", // changed circa 1.1
"MapRemoteVersions": { "1.2.3": "1.1" } // manifest not updated
},
"Skull Cave Saver": {
"ID": "cantorsdust.SkullCaveSaver",
"FormerIDs": "8ac06349-26f7-4394-806c-95d48fd35774 | community.SkullCaveSaver", // changed in 1.1 and 1.2.2
"1.3-beta | Status": "AssumeBroken" // doesn't work in multiplayer, no longer maintained
},
"Solar Eclipse Event": {
"ID": "KoihimeNakamura.SolarEclipseEvent",
"MapLocalVersions": { "1.3.1-20180131": "1.3.1" }
},
"Split Screen": {
"ID": "Ilyaki.SplitScreen",
"~3.0.1 | Status": "AssumeBroken" // broke in SMAPI 2.6-beta.16 due to reflection into SMAPI internals
},
"Stardew Notification": {
"ID": "stardewnotification",
"Default | UpdateKey": "GitHub:monopandora/StardewNotification"
},
"Stephan's Lots of Crops": {
"ID": "stephansstardewcrops",
"MapRemoteVersions": { "1.41": "1.1" }, // manifest not updated
"~1.1 | Status": "AssumeBroken" // broke in SDV 1.3 (overwrites vanilla items)
},
"Summit Reborn": {
"ID": "KoihimeNakamura.summitreborn",
"FormerIDs": "emissaryofinfinity.summitreborn", // changed in 1.0.2
"~1.0.2 | Status": "AssumeBroken" // broke in SDV 1.3 (runtime errors)
},
"Time Reminder": {
"ID": "KoihimeNakamura.TimeReminder",
"MapLocalVersions": { "1.0-20170314": "1.0.2" }
},
"Tool Charging": {
"ID": "mralbobo.ToolCharging",
"Default | UpdateKey": "GitHub:mralbobo/stardew-tool-charging"
},
"Variable Grass": {
"ID": "dantheman999.VariableGrass",
"Default | UpdateKey": "GitHub:dantheman999301/StardewMods"
},
"Zoom Out Extreme": {
"ID": "RockinMods.ZoomMod",
"FormerIDs": "ZoomMod", // changed circa 1.2.1
"~0.1 | Status": "AssumeBroken" // broke in SDV 1.2
}
}
}

View File

@ -0,0 +1,114 @@
/*
This file contains advanced configuration for SMAPI. You generally shouldn't change this file.
The default values are mirrored in StardewModdingAPI.Framework.Models.SConfig to log custom changes.
*/
{
/**
* Whether SMAPI should log more information about the game context.
*/
"VerboseLogging": false,
/**
* Whether SMAPI should check for newer versions of SMAPI and mods when you load the game. If new
* versions are available, an alert will be shown in the console. This doesn't affect the load
* time even if your connection is offline or slow, because it happens in the background.
*/
"CheckForUpdates": true,
/**
* Whether to enable features intended for mod developers. Currently this only makes TRACE-level
* messages appear in the console.
*/
"DeveloperMode": false,
/**
* Whether to add a section to the 'mod issues' list for mods which directly use potentially
* sensitive .NET APIs like file or shell access. Note that many mods do this legitimately as
* part of their normal functionality, so these warnings are meaningless without further
* investigation. When this is commented out, it'll be true for local debug builds and false
* otherwise.
*/
//"ParanoidWarnings": true,
/**
* Whether SMAPI should show newer beta versions as an available update. When this is commented
* out, it'll be true if the current SMAPI version is beta, and false otherwise.
*/
//"UseBetaChannel": true,
/**
* SMAPI's GitHub project name, used to perform update checks.
*/
"GitHubProjectName": "MartyrPher/SMAPI-Android-Installer",
/**
* The base URL for SMAPI's web API, used to perform update checks.
* Note: the protocol will be changed to http:// on Linux/Mac due to OpenSSL issues with the
* game's bundled Mono.
*/
"WebApiBaseUrl": "https://smapi.io/api/",
/**
* Whether SMAPI should log network traffic (may be very verbose). Best combined with VerboseLogging, which includes network metadata.
*/
"LogNetworkTraffic": false,
/**
* Whether to generate a 'SMAPI-latest.metadata-dump.json' file in the logs folder with the full mod
* metadata for detected mods. This is only needed when troubleshooting some cases.
*/
"DumpMetadata": false,
/**
* The colors to use for text written to the SMAPI console.
*
* The possible values for 'UseScheme' are:
* - AutoDetect: SMAPI will assume a light background on Mac, and detect the background color
* automatically on Linux or Windows.
* - LightBackground: use darker text colors that look better on a white or light background.
* - DarkBackground: use lighter text colors that look better on a black or dark background.
*
* For available color codes, see https://docs.microsoft.com/en-us/dotnet/api/system.consolecolor.
*
* (These values are synched with ColorfulConsoleWriter.GetDefaultColorSchemeConfig in the
* SMAPI code.)
*/
"ConsoleColors": {
"UseScheme": "AutoDetect",
"Schemes": {
"DarkBackground": {
"Trace": "DarkGray",
"Debug": "DarkGray",
"Info": "White",
"Warn": "Yellow",
"Error": "Red",
"Alert": "Magenta",
"Success": "DarkGreen"
},
"LightBackground": {
"Trace": "DarkGray",
"Debug": "DarkGray",
"Info": "Black",
"Warn": "DarkYellow",
"Error": "Red",
"Alert": "DarkMagenta",
"Success": "DarkGreen"
}
}
},
/**
* The mod IDs SMAPI should ignore when performing update checks or validating update keys.
*/
"SuppressUpdateChecks": [
"SMAPI.ConsoleCommands",
"SMAPI.SaveBackup"
]
}

View File

@ -0,0 +1,3 @@
{
"warn.invalid-content-removed": "Ungültiger Inhalt wurde entfernt, um einen Absturz zu verhindern (siehe SMAPI Konsole für weitere Informationen)."
}

View File

@ -0,0 +1,3 @@
{
"warn.invalid-content-removed": "Invalid content was removed to prevent a crash (see the SMAPI console for info)."
}

View File

@ -0,0 +1,3 @@
{
"warn.invalid-content-removed": "Se ha quitado contenido inválido para evitar un cierre forzoso (revisa la consola de SMAPI para más información)."
}

View File

@ -0,0 +1,3 @@
{
"warn.invalid-content-removed": "Le contenu non valide a été supprimé afin d'éviter un plantage (voir la console de SMAPI pour plus d'informations)."
}

View File

@ -0,0 +1,3 @@
{
"warn.invalid-content-removed": "クラッシュを防ぐために無効なコンテンツを取り除きました 詳細はSMAPIコンソールを参照"
}

View File

@ -0,0 +1,3 @@
{
"warn.invalid-content-removed": "Conteúdo inválido foi removido para prevenir uma falha (veja o console do SMAPI para mais informações)."
}

View File

@ -0,0 +1,3 @@
{
"warn.invalid-content-removed": "Недопустимое содержимое было удалено, чтобы предотвратить сбой (см. информацию в консоли SMAPI)"
}

View File

@ -0,0 +1,3 @@
{
"warn.invalid-content-removed": "Yanlış paketlenmiş bir içerik, oyunun çökmemesi için yüklenmedi (SMAPI konsol penceresinde detaylı bilgi mevcut)."
}

View File

@ -0,0 +1,3 @@
{
"warn.invalid-content-removed": "非法内容已移除以防游戏闪退查看SMAPI控制台获得更多信息"
}

View File

@ -0,0 +1,471 @@
{
/**
* Metadata about some SMAPI mods used in compatibility, update, and dependency checks. This
* field shouldn't be edited by players in most cases.
*
* Standard fields
* ===============
* The predefined fields are documented below (only 'ID' is required). Each entry's key is the
* default display name for the mod if one isn't available (e.g. in dependency checks).
*
* - ID: the mod's latest unique ID (if any).
*
* - FormerIDs: uniquely identifies the mod across multiple versions, and supports matching
* other fields if no ID was specified. This doesn't include the latest ID, if any. Multiple
* variants can be separated with '|'.
*
* Versioned metadata
* ==================
* Each record can also specify extra metadata using the field keys below.
*
* Each key consists of a field name prefixed with any combination of version range and 'Default',
* separated by pipes (whitespace trimmed). For example, 'UpdateKey' will always override,
* 'Default | UpdateKey' will only override if the mod has no update keys, and
* '~1.1 | Default | Name' will do the same up to version 1.1.
*
* The version format is 'min~max' (where either side can be blank for unbounded), or a single
* version number.
*
* These are the valid field names:
*
* - UpdateKey: the update key to set in the mod's manifest. This is used to enable update
* checks for older mods that haven't been updated to use it yet.
*
* - Status: overrides compatibility checks. The possible values are Obsolete (SMAPI won't load
* it because the mod should no longer be used), AssumeBroken (SMAPI won't load it because
* the specified version isn't compatible), or AssumeCompatible (SMAPI will try to load it
* even if it detects incompatible code).
*
* Note that this shouldn't be set to 'AssumeBroken' if SMAPI can detect the incompatibility
* automatically, since that hides the details from trace logs.
*
* - StatusReasonPhrase: a message to show to the player explaining why the mod can't be loaded
* (if applicable). If blank, will default to a generic not-compatible message.
*
* - AlternativeUrl: a URL where the player can find an unofficial update or alternative if the
* mod is no longer compatible.
*/
"ModData": {
/*********
** Common dependencies for friendly errors
*********/
"Advanced Location Loader": {
"ID": "Entoarox.AdvancedLocationLoader",
"Default | UpdateKey": "Nexus:2270"
},
//"Content Patcher": {
// "ID": "Pathoschild.ContentPatcher",
// "Default | UpdateKey": "Nexus:1915"
//},
//"Custom Farming Redux": {
// "ID": "Platonymous.CustomFarming",
// "Default | UpdateKey": "Nexus:991"
//},
"Custom Shirts": {
"ID": "Platonymous.CustomShirts",
"Default | UpdateKey": "Nexus:2416"
},
"Entoarox Framework": {
"ID": "Entoarox.EntoaroxFramework",
"Default | UpdateKey": "Nexus:2269"
},
"JSON Assets": {
"ID": "spacechase0.JsonAssets",
"Default | UpdateKey": "Nexus:1720",
"1.3.1 | Status": "AssumeBroken" // causes runtime crashes
},
"Mail Framework": {
"ID": "DIGUS.MailFrameworkMod",
"Default | UpdateKey": "Nexus:1536"
},
"MTN": {
"ID": "SgtPickles.MTN",
"Default | UpdateKey": "Nexus:2256",
"~1.2.6 | Status": "AssumeBroken" // replaces Game1.multiplayer, which breaks SMAPI's multiplayer API.
},
"PyTK": {
"ID": "Platonymous.Toolkit",
"Default | UpdateKey": "Nexus:1726"
},
"Rubydew": {
"ID": "bwdy.rubydew",
"SuppressWarnings": "UsesDynamic", // mod explicitly loads DLLs for Linux/Mac compatibility
"Default | UpdateKey": "Nexus:3656"
},
"SpaceCore": {
"ID": "spacechase0.SpaceCore",
"Default | UpdateKey": "Nexus:1348"
},
"Stardust Core": {
"ID": "Omegasis.StardustCore",
"Default | UpdateKey": "Nexus:2341"
},
"TMX Loader": {
"ID": "Platonymous.TMXLoader",
"Default | UpdateKey": "Nexus:1820"
},
/*********
** Obsolete
*********/
"Animal Mood Fix": {
"ID": "GPeters-AnimalMoodFix",
"~ | Status": "Obsolete",
"~ | StatusReasonPhrase": "the animal mood bugs were fixed in Stardew Valley 1.2."
},
"Bee House Flower Range Fix": {
"ID": "kirbylink.beehousefix",
"~ | Status": "Obsolete",
"~ | StatusReasonPhrase": "the bee house flower range was fixed in Stardew Valley 1.4."
},
"Colored Chests": {
"ID": "4befde5c-731c-4853-8e4b-c5cdf946805f",
"~ | Status": "Obsolete",
"~ | StatusReasonPhrase": "colored chests were added in Stardew Valley 1.1."
},
"Modder Serialization Utility": {
"ID": "SerializerUtils-0-1",
"~ | Status": "Obsolete",
"~ | StatusReasonPhrase": "it's no longer maintained or used."
},
"No Debug Mode": {
"ID": "NoDebugMode",
"~ | Status": "Obsolete",
"~ | StatusReasonPhrase": "debug mode was removed in SMAPI 1.0."
},
/*********
** Broke in SDV 1.4
*********/
"Fix Dice": {
"ID": "ashley.fixdice",
"~1.1.2 | Status": "AssumeBroken" // crashes game on startup
},
"Fix Dice": {
"ID": "ashley.fixdice",
"~1.1.2 | Status": "AssumeBroken" // crashes game on startup
},
"Grass Growth": {
"ID": "bcmpinc.GrassGrowth",
"~1.0 | Status": "AssumeBroken"
},
"Invite Code Mod": {
"ID": "KOREJJamJar.InviteCodeMod",
"~1.0.1 | Status": "AssumeBroken"
},
"Loved Labels": {
"ID": "Advize.LovedLabels",
"~2.2.1-unofficial.2-pathoschild | Status": "AssumeBroken"
},
"Neat Additions": {
"ID": "ilyaki.neatadditions",
"~1.0.3 | Status": "AssumeBroken"
},
"Remote Fridge Storage": {
"ID": "EternalSoap.RemoteFridgeStorage",
"~1.5 | Status": "AssumeBroken"
},
"Stack Everything": {
"ID": "cat.stackeverything",
"~2.15 | Status": "AssumeBroken"
},
"Yet Another Harvest With Scythe Mod": {
"ID": "bcmpinc.HarvestWithScythe",
"~1.1 | Status": "AssumeBroken"
},
/*********
** Broke in SMAPI 3.0 (runtime errors due to lifecycle changes)
*********/
"Advancing Sprinklers": {
"ID": "warix3.advancingsprinklers",
"~1.0.0 | Status": "AssumeBroken"
},
"Arcade 2048": {
"ID": "Platonymous.2048",
"~1.0.6 | Status": "AssumeBroken" // possibly due to PyTK
},
"Arcade Snake": {
"ID": "Platonymous.Snake",
"~1.1.0 | Status": "AssumeBroken" // possibly due to PyTK
},
"Better Sprinklers": {
"ID": "Speeder.BetterSprinklers",
"~2.3.1-unofficial.7-pathoschild | Status": "AssumeBroken"
},
"Content Patcher": {
"ID": "Pathoschild.ContentPatcher",
"Default | UpdateKey": "Nexus:1915",
"~1.6.4 | Status": "AssumeBroken"
},
"Current Location (Vrakyas)": {
"ID": "Vrakyas.CurrentLocation",
"~1.5.4 | Status": "AssumeBroken"
},
"Custom Adventure Guild Challenges": {
"ID": "DefenTheNation.CustomGuildChallenges",
"~1.8 | Status": "AssumeBroken"
},
"Custom Farming Redux": {
"ID": "Platonymous.CustomFarming",
"Default | UpdateKey": "Nexus:991",
"~2.10.10 | Status": "AssumeBroken" // possibly due to PyTK
},
"Decrafting Mod": {
"ID": "MSCFC.DecraftingMod",
"~1.0 | Status": "AssumeBroken" // NRE in ModEntry
},
"JoJaBan - Arcade Sokoban": {
"ID": "Platonymous.JoJaBan",
"~0.4.3 | Status": "AssumeBroken" // possibly due to PyTK
},
"Level Extender": {
"ID": "DevinLematty.LevelExtender",
"~3.1 | Status": "AssumeBroken"
},
"Mod Update Menu": {
"ID": "cat.modupdatemenu",
"~1.4 | Status": "AssumeBroken"
},
"Quick Start": {
"ID": "WuestMan.QuickStart",
"~1.5 | Status": "AssumeBroken"
},
"Seed Bag": {
"ID": "Platonymous.SeedBag",
"~1.2.7 | Status": "AssumeBroken" // possibly due to PyTK
},
"Stardew Valley ESP": {
"ID": "reimu.sdv-helper",
"~1.1 | Status": "AssumeBroken"
},
"Underdark Krobus": {
"ID": "melnoelle.underdarkkrobus",
"~1.0.0 | Status": "AssumeBroken" // NRE in ModEntry
},
"Underdark Sewer": {
"ID": "melnoelle.underdarksewer",
"~1.1.0 | Status": "AssumeBroken" // NRE in ModEntry
},
/*********
** Broke in SDV 1.3.36
*********/
"2cute FarmCave": {
"ID": "taintedwheat.2CuteFarmCave",
"Default | UpdateKey": "Nexus:843",
"~2.0 | Status": "AssumeBroken" // references deleted Content/Mine.xnb
},
"Ace's Expanded Caves - Default Cave": {
"ID": "Acerbicon.AECdefault",
"Default | UpdateKey": "Nexus:2131",
"~1.2.2 | Status": "AssumeBroken" // references deleted Content/Mine.xnb
},
"Ace's Expanded Caves - Desert Cave": {
"ID": "Acerbicon.AECdesert",
"Default | UpdateKey": "Nexus:2131",
"~1.2.2 | Status": "AssumeBroken" // references deleted Content/Mine.xnb
},
"Ace's Expanded Caves - Ice Cave": {
"ID": "Acerbicon.AECice",
"Default | UpdateKey": "Nexus:2131",
"~1.2.2 | Status": "AssumeBroken" // references deleted Content/Mine.xnb
},
"Ace's Expanded Caves - Lava Cave": {
"ID": "Acerbicon.AEClava",
"Default | UpdateKey": "Nexus:2131",
"~1.2.2 | Status": "AssumeBroken" // references deleted Content/Mine.xnb
},
"Ace's Expanded Caves - Slime Cave": {
"ID": "Acerbicon.AECslime",
"Default | UpdateKey": "Nexus:2131",
"~1.2.2 | Status": "AssumeBroken" // references deleted Content/Mine.xnb
},
"Green Pastures Farm": {
"ID": "bugbuddy.GreenPasturesFarm",
"Default | UpdateKey": "Nexus:2326",
"~1.0 | Status": "AssumeBroken" // references deleted Content/weapons.xnb
},
"Immersive Farm 2": {
"ID": "zander.immersivefarm2",
"~2.0.1 | Status": "AssumeBroken" // references deleted Content/Mine.xnb
},
"Karmylla's Immersive Map Edits": {
"ID": "Karmylla.ImmersiveMapEdits",
"Default | UpdateKey": "Nexus:1149",
"~2.4 | Status": "AssumeBroken" // references deleted Content/weapons.xnb
},
"Secret Gardens Greenhouse": {
"ID": "jessebot.secretgardens",
"Default | UpdateKey": "Nexus:3067",
"~2.0.1 | Status": "AssumeBroken" // references deleted Content/Mine.xnb
},
/*********
** Broke circa SDV 1.3
*********/
"Canon-Friendly Dialogue Expansion": {
"ID": "gizzymo.canonfriendlyexpansion",
"~1.1.1 | Status": "AssumeBroken" // causes a save crash on certain dates
},
"Everytime Submarine": {
"ID": "MustafaDemirel.EverytimeSubmarine",
"~1.0.0 | Status": "AssumeBroken" // breaks player saves if their beach bridge is fixed
},
"Always Scroll Map": {
"ID": "bcmpinc.AlwaysScrollMap",
"~0.6 | Status": "AssumeBroken" // breaks newer versions of bcmpinc mods (per bcmpinc's request)
},
"Arcade Pong": {
"ID": "Platonymous.ArcadePong",
"~1.0.2 | Status": "AssumeBroken" // broke in SMAPI 2.6-beta.16 due to reflection into SMAPI internals
},
"BJS Night Sounds": {
"ID": "BunnyJumps.BJSNightSounds",
"~1.0.0 | Status": "AssumeBroken" // runtime errors with Harmony 1.2.0.1 in SMAPI 2.8+
},
"Craft Counter": {
"ID": "bcmpinc.CraftCounter",
"~0.6 | Status": "AssumeBroken" // breaks newer versions of bcmpinc mods (per bcmpinc's request)
},
"Fishing Adjust": {
"ID": "shuaiz.FishingAdjustMod",
"~2.0.1 | Status": "AssumeBroken" // Method not found: 'Void Harmony.HarmonyInstance.Patch(System.Reflection.MethodBase, Harmony.HarmonyMethod, Harmony.HarmonyMethod, Harmony.HarmonyMethod)'
},
"Fishing Automaton": {
"ID": "Drynwynn.FishingAutomaton",
"~1.1 | Status": "AssumeBroken" // runtime errors with Harmony 1.2.0.1 in SMAPI 2.8+
},
"Fix Animal Tools": {
"ID": "bcmpinc.FixAnimalTools",
"~0.6 | Status": "AssumeBroken" // breaks newer versions of bcmpinc mods (per bcmpinc's request)
},
"Fix Scythe Exp": {
"ID": "bcmpinc.FixScytheExp",
"~0.3 | Status": "AssumeBroken" // broke in 1.3: Exception from HarmonyInstance "bcmpinc.FixScytheExp" [...] Bad label content in ILGenerator.
},
"More Silo Storage": {
"ID": "OrneryWalrus.MoreSiloStorage",
"~1.0.1 | Status": "AssumeBroken" // broke in SDV 1.3
},
"Movement Speed": {
"ID": "bcmpinc.MovementSpeed",
"~0.6 | Status": "AssumeBroken" // breaks newer versions of bcmpinc mods (per bcmpinc's request)
},
"No Added Flying Mine Monsters": {
"ID": "Drynwynn.NoAddedFlyingMineMonsters",
"~1.1 | Status": "AssumeBroken" // runtime errors with Harmony 1.2.0.1 in SMAPI 2.8+
},
"Server Bookmarker": {
"ID": "Ilyaki.ServerBookmarker",
"~1.0.0 | Status": "AssumeBroken" // broke in Stardew Valley 1.3.29 (runtime errors)
},
"Skull Cave Saver": {
"ID": "cantorsdust.SkullCaveSaver",
"FormerIDs": "8ac06349-26f7-4394-806c-95d48fd35774 | community.SkullCaveSaver", // changed in 1.1 and 1.2.2
"1.3-beta | Status": "AssumeBroken" // doesn't work in multiplayer, no longer maintained
},
"Split Screen": {
"ID": "Ilyaki.SplitScreen",
"~3.0.1 | Status": "AssumeBroken" // broke in SMAPI 2.6-beta.16 due to reflection into SMAPI internals
},
"Stardew Hack": {
"ID": "bcmpinc.StardewHack",
"~0.6 | Status": "AssumeBroken" // breaks newer versions of bcmpinc mods (per bcmpinc's request)
},
"Stephan's Lots of Crops": {
"ID": "stephansstardewcrops",
"~1.1 | Status": "AssumeBroken" // broke in SDV 1.3 (overwrites vanilla items)
},
"Summit Reborn": {
"ID": "KoihimeNakamura.summitreborn",
"FormerIDs": "emissaryofinfinity.summitreborn", // changed in 1.0.2
"~1.0.2 | Status": "AssumeBroken" // broke in SDV 1.3 (runtime errors)
},
"Tilled Soil Decay": {
"ID": "bcmpinc.TilledSoilDecay",
"~0.6 | Status": "AssumeBroken" // breaks newer versions of bcmpinc mods (per bcmpinc's request)
},
"Tree Spread": {
"ID": "bcmpinc.TreeSpread",
"~0.6 | Status": "AssumeBroken" // breaks newer versions of bcmpinc mods (per bcmpinc's request)
},
/*********
** Broke circa SDV 1.2
*********/
"Move Faster": {
"ID": "shuaiz.MoveFasterMod",
"~1.0.1 | Status": "AssumeBroken" // doesn't do anything as of SDV 1.2.33 (bad Harmony patch?)
}
}
}