Jesse Plamondon-Willard
a13003de8b
remove Mono.Cecil.Rocks ( #231 )
...
It's not needed since we're not injecting new instructions, and causes the field rewriters to fail unexpectedly.
2017-02-09 22:38:10 -05:00
Jesse Plamondon-Willard
3668b0902d
fix field rewriter not added to config ( #231 )
2017-02-09 20:34:34 -05:00
Jesse Plamondon-Willard
5f9c03a8a9
add field rewriter for the `Game1.activeClickableMenu` change in SDV 1.2 ( #231 )
2017-02-09 14:28:44 -05:00
Jesse Plamondon-Willard
74a56a7b3b
further generalise CIL rewriters for reuse ( #231 )
2017-02-09 14:02:43 -05:00
Jesse Plamondon-Willard
40a9014742
generalise CIL rewriters for reuse ( #231 )
2017-02-09 13:45:34 -05:00
Jesse Plamondon-Willard
036595cc71
remove old log file to avoid confusion ( #231 )
2017-02-08 00:53:53 -05:00
Jesse Plamondon-Willard
e440d9042e
bump minimum game version to 1.2 ( #231 )
2017-02-08 00:26:32 -05:00
Jesse Plamondon-Willard
6092f9ea00
always use \r\n line endings in log file for crossplatform compatibility ( #230 )
2017-02-08 00:22:27 -05:00
Jesse Plamondon-Willard
d52b3572f3
simplify log filename
2017-02-08 00:17:00 -05:00
Jesse Plamondon-Willard
366769e8a2
add SaveEvents.AfterReturnToTitle event ( #231 )
2017-02-08 00:11:46 -05:00
Jesse Plamondon-Willard
2b7abc3af5
clean up more obsolete code ( #231 )
2017-02-07 23:34:52 -05:00
Jesse Plamondon-Willard
84bc32c3f1
reimplement graphics events ( #231 )
2017-02-07 23:04:16 -05:00
Jesse Plamondon-Willard
8b0e54a777
ignore code analysis warnings in game code ( #231 )
2017-02-07 22:10:00 -05:00
Jesse Plamondon-Willard
98cf6a2766
update SGame.Draw with base code ( #231 )
2017-02-07 21:54:29 -05:00
Jesse Plamondon-Willard
8efa5f32c1
add reflectionHelper.GetPrivateProperty<T> ( #231 )
2017-02-07 21:07:57 -05:00
Jesse Plamondon-Willard
cec7469786
disambiguate references to Farmer ( #231 )
2017-02-07 20:51:22 -05:00
Jesse Plamondon-Willard
95a93a05b3
remove oldest deprecated code ( #231 )
...
Since Stardew Valley 1.2 breaks most mods anyway, this commits removes the oldest deprecations and fixes the issues that are easiest for mods to update. See documentation for details.
2017-02-07 20:50:41 -05:00
Jesse Plamondon-Willard
99d0450b2c
fix install error when the mods folder doesn't exist ( #229 )
2017-02-04 16:50:09 -05:00
Jesse Plamondon-Willard
3919ab7a4a
update for 1.8 release
2017-02-04 15:30:26 -05:00
Jesse Plamondon-Willard
57a99803f0
update deprecation level for Extensions class
2017-02-04 15:27:13 -05:00
Jesse Plamondon-Willard
0b8396cc53
rm cruft
2017-02-03 22:26:48 -05:00
Jesse Plamondon-Willard
8d3e6048b8
simplify installer text
2017-02-03 22:05:06 -05:00
Jesse Plamondon-Willard
4504ddcd98
remove mod .cache folders during (un)install process ( #229 )
2017-02-03 22:04:43 -05:00
Jesse Plamondon-Willard
85ff940e68
move install package's Mono/Windows folders out of root
...
This will hopefully reduce confusion among players who go into "Windows" instead of running install.exe.
2017-02-03 22:02:54 -05:00
Jesse Plamondon-Willard
9689bb9484
expand & prettify installer readme
2017-02-03 21:21:35 -05:00
Jesse Plamondon-Willard
3eb8110c45
move build task which prepares install package into a .targets file
2017-02-03 20:18:00 -05:00
Jesse Plamondon-Willard
5e68400c43
only read assembly from memory if it was rewritten ( #229 )
...
This fixes an issue where you can't debug into mod code because SMAPI isn't loading the actual DLL.
2017-02-03 20:12:42 -05:00
Jesse Plamondon-Willard
4fff06cce1
fix documentation issues
2017-02-03 01:40:47 -05:00
Jesse Plamondon-Willard
6ee14ecfbf
rewrite mod assembly loading ( #229 )
...
This greatly simplifies mod loading, eliminates the .cache folders by loading assemblies in memory, ensures DLLs are loaded in leaf-to-root order, and reduces log verbosity. These changes should address a range of issues, notably #221 and #226 .
2017-02-02 23:22:54 -05:00
Jesse Plamondon-Willard
ae7d9d6bc4
fix error when SMAPI tries to load Mac metadata files for DLLs
2017-02-02 20:48:29 -05:00
Bpendragon (David Camp)
8c6dca95da
Corrected CurrentLocationChanged's "NewLocation" and "PriorLocation" descriptors, they displayed in Intellisense as the opposite of what they were.
2017-02-02 16:08:06 -05:00
Jesse Plamondon-Willard
8db280d874
expose SemanticVersion constructor that parses a string
2017-01-25 22:30:07 -05:00
Jesse Plamondon-Willard
08e9cd1263
Add GOG Mac path
...
Thanks to LeonBlade for the path.
2017-01-22 22:31:00 -05:00
Jesse Plamondon-Willard
b90387668d
update for 1.7 release
2017-01-19 12:22:32 -05:00
Jesse Plamondon-Willard
5ccd5b5df7
log deprecation warnings after list of loaded mods ( #220 )
2017-01-19 11:43:32 -05:00
Jesse Plamondon-Willard
1cf8a628dc
only call mod.Entry() once all mods have been loaded ( #220 )
2017-01-19 11:34:24 -05:00
Jesse Plamondon-Willard
ba590b20a6
add public mod registry ( #220 )
2017-01-19 11:07:48 -05:00
Jesse Plamondon-Willard
4fe123350c
bump several deprecations
2017-01-19 01:41:55 -05:00
Jesse Plamondon-Willard
6c07b5f395
tweak error text when starting game throws an exception
2017-01-19 01:18:53 -05:00
Jesse Plamondon-Willard
698e012cd2
simplify overridden game version
2017-01-19 01:18:37 -05:00
Jesse Plamondon-Willard
f681f618c1
add mod folder path to console
2017-01-19 01:10:13 -05:00
Jesse Plamondon-Willard
f4846173a9
fix before/after save events not triggering on days when the player shipped an item ( #218 )
2017-01-19 00:54:59 -05:00
Jesse Plamondon-Willard
602227eae8
fix some world events being fired during game startup ( #217 )
2017-01-18 22:14:50 -05:00
Jesse Plamondon-Willard
b3ff004572
fix PlayerEvents.LoadedGame and SaveEvents.AfterLoad being fired before the world finishes loading ( #216 )
2017-01-18 21:32:38 -05:00
Jesse Plamondon-Willard
1f3d3c8c93
bump version, update release steps in readme
2017-01-16 16:04:56 -05:00
Jesse Plamondon-Willard
64a72c45e3
deprecate events replaced by save events ( #215 )
2017-01-15 19:21:26 -05:00
Jesse Plamondon-Willard
0c73b02d58
add save events ( #215 )
2017-01-15 18:23:09 -05:00
Jesse Plamondon-Willard
5c8e7f5d93
mark NPC Locations Map 1.42 incompatible due to update-check bug
2017-01-15 18:20:50 -05:00
Jesse Plamondon-Willard
525172e831
remove redundant TrainerMod build config ( #214 )
2017-01-14 22:49:50 -05:00
Patrick Müssig
6e04cbca3a
TrainerMod uses crossplatform.targets
2017-01-14 22:49:50 -05:00
Jesse Plamondon-Willard
f957af71d1
fix console color support check ( #206 )
2017-01-14 15:53:28 -05:00
Jesse Plamondon-Willard
82dd5b3068
fix TrainerMod project not being built by default
2017-01-14 15:14:23 -05:00
Jesse Plamondon-Willard
90e92ef61f
fix error when the console doesn't support colour ( #206 )
2017-01-14 15:05:38 -05:00
Jesse Plamondon-Willard
2d824b34e4
add console commands to open game & date folders ( #172 )
2017-01-14 13:46:00 -05:00
Jesse Plamondon-Willard
9d1b6a1af2
fix issue where default ICollection<T> values in config.json were duplicated on each load ( #209 )
2017-01-14 13:03:57 -05:00
Jesse Plamondon-Willard
83bdcd2838
fix error loading mods if they have a .cache folder created on a different platform ( #211 )
2017-01-14 12:43:50 -05:00
Jesse Plamondon-Willard
34bf9c5eca
tweak JSON read error-handling, update release notes
2017-01-14 12:26:59 -05:00
mytigio
482dd42d3d
Add a catch for DirectoryNotFoundException in ModHelper.ReadJsonFile method.
2017-01-14 12:13:27 -05:00
Jesse Plamondon-Willard
8e8cda87fb
mark NPC Map Locations 1.43 incompatible due to update error
2017-01-14 01:11:57 -05:00
Jesse Plamondon-Willard
0ac9e47ea2
add support for custom incompatible-mod-version error text
2017-01-14 01:11:42 -05:00
Jesse Plamondon-Willard
40bc8f57c7
add support for incompatible mod version ranges
2017-01-14 00:59:19 -05:00
Jesse Plamondon-Willard
481a43d807
update game install path detection to match mod build config package
2017-01-11 13:56:12 -05:00
Jesse Plamondon-Willard
43a4194a5c
remove unofficial patch links for officially-updated CJB mods
2017-01-06 14:59:55 -05:00
Jesse Plamondon-Willard
a432477ea3
fallback to launching SMAPI without a terminal on Linux if the terminal is unavailable ( #198 )
2016-12-30 12:04:27 -05:00
Jesse Plamondon-Willard
a7d3930d88
encapsulate repeated monitor construction
2016-12-30 11:47:23 -05:00
Jesse Plamondon-Willard
b75d86e7cc
update for SMAPI 1.5 release
2016-12-23 12:43:42 -05:00
Jesse Plamondon-Willard
8416c9009e
increase deprecation levels for less-used deprecated code
2016-12-23 12:36:03 -05:00
Jesse Plamondon-Willard
1fdc0c0b35
catch errors when reading metadata file just in case ( #192 )
2016-12-23 11:20:06 -05:00
Jesse Plamondon-Willard
c7a08d08db
add support for unofficial updates which suffix the official version number with a pre-release label ( #192 )
2016-12-22 22:34:49 -05:00
Jesse Plamondon-Willard
f6f52b653e
add known incompatible mods, update release notes ( #192 )
2016-12-22 13:08:45 -05:00
Jesse Plamondon-Willard
fdae87d340
skip mods known to be incompatible and display error with update links ( #192 )
2016-12-22 12:47:12 -05:00
Jesse Plamondon-Willard
3fd16a65f1
move models into namespace ( #192 )
2016-12-22 12:45:42 -05:00
Jesse Plamondon-Willard
90f5233cc7
add config setting to disable update checks ( #202 )
2016-12-22 11:27:48 -05:00
Jesse Plamondon-Willard
ca3cf89000
autogenerate SMAPI config ( #202 )
2016-12-22 11:20:01 -05:00
Jesse Plamondon-Willard
f7eda265d9
track loaded mod instances & manifests via mod registry ( #201 )
2016-12-22 10:48:05 -05:00
Jesse Plamondon-Willard
fa71bdd6c7
make SemanticVersion constructor from version string public
2016-12-21 13:43:04 -05:00
Jesse Plamondon-Willard
444364f418
fix version pre-release tags not consistently normalised ( #195 )
2016-12-21 13:33:59 -05:00
Jesse Plamondon-Willard
c257d70575
rename SMAPI config file for consistency ( #192 , #202 )
2016-12-21 13:27:56 -05:00
Jesse Plamondon-Willard
ea65b2b7df
correct semantic version pre-release label precedence ( #195 )
2016-12-21 11:45:52 -05:00
Jesse Plamondon-Willard
45ee74219e
fix issue where changing the active menu inside a menu change handler didn't trigger a new event ( #194 )
2016-12-18 17:42:51 -05:00
Jesse Plamondon-Willard
a8cc363699
fix legacy version wrapper not implementing ToString method ( #197 )
2016-12-18 16:58:47 -05:00
Jesse Plamondon-Willard
23988a3c33
migrate manifest & version to interfaces with backwards compatibility ( #197 )
2016-12-18 15:37:23 -05:00
Jesse Plamondon-Willard
487ae1dce9
add version.IsOlderThan(other) method for convenience
2016-12-18 13:52:09 -05:00
Jesse Plamondon-Willard
d9e87399bf
format code ( #193 )
2016-12-18 12:27:44 -05:00
Tyler Staples
cd93d59eaf
Added a struct to wrap cache entries for the sake of tracking invalid lookups. This fixes the issue where a null reference exception would be thrown when trying to look up non-existant or non-private members.
...
Added a null check to GetPrivateValue and it's overloads to fix the issue where it would throw a null reference exception when required was false and the field was null.
2016-12-18 11:42:04 -05:00
Jesse Plamondon-Willard
c24294c3dd
fix System.Runtime.Caching not available on Mac
2016-12-12 21:43:35 -05:00
Jesse Plamondon-Willard
a3376e2a62
update for 1.4 release
2016-12-12 11:20:31 -05:00
Jesse Plamondon-Willard
df7d41fc37
move interfaces into root ( #185 )
2016-12-11 21:03:57 -05:00
Jesse Plamondon-Willard
dccd73e4fb
detect which Linux command detects whether a command exists ( #183 )
2016-12-10 13:01:58 -05:00
Jesse Plamondon-Willard
7511db4c83
open terminal on most Linux distros ( #183 )
2016-12-10 00:11:50 -05:00
Jesse Plamondon-Willard
1fbe6be43d
remove redundant output paths
2016-12-09 18:43:15 -05:00
Jesse Plamondon-Willard
80b6e20841
cache reflection lookups with sliding expiry ( #185 )
2016-12-09 14:15:14 -05:00
Jesse Plamondon-Willard
cd0e5961d4
add reflection API for mods ( #185 )
2016-12-09 12:25:53 -05:00
Jesse Plamondon-Willard
25d2eb4777
intercept mod errors in menu draw code so they don't crash the game
2016-12-08 12:18:56 -05:00
Jesse Plamondon-Willard
22a2e2e853
add registry paths to build configuration ( #189 )
2016-12-07 23:55:32 -05:00
Jesse Plamondon-Willard
7e76d90c55
refactor registry checks for crossplatform compatibility ( #189 )
2016-12-07 23:52:56 -05:00
Jesse Plamondon-Willard
7af722ec1f
rename .targets file to better reflect contents, add to installer project
2016-12-07 23:38:22 -05:00
Patrick Müssig
47d5aef404
SMAPI installer is able to read SDV install path from registry key
2016-12-07 23:27:53 -05:00
Jesse Plamondon-Willard
acbd33fb02
open a terminal for SMAPI output on Mac ( #183 )
2016-12-07 23:15:37 -05:00
Jesse Plamondon-Willard
ae44f17205
fix installer not moving mods out of appdata if the game isn't installed on the same Windows partition ( #184 )
2016-12-07 22:43:05 -05:00
Jesse Plamondon-Willard
860ccb90f7
fix the installer not removing TrainerMod from appdata if it's already in the game mods folder
2016-12-07 22:17:38 -05:00
Jesse Plamondon-Willard
2c11ce1bff
add TypeLoadException details when intercepted by SMAPI
2016-12-07 22:05:14 -05:00
Jesse Plamondon-Willard
b019dd4f69
replace out_items, out_melee, and out_rings commands with a searchable list_items command
2016-12-07 20:36:28 -05:00
Jesse Plamondon-Willard
f0433e5a41
tweak installer wording to avoid confusion
2016-12-06 22:19:38 -05:00
Jesse Plamondon-Willard
b751e7dd2e
skip mod folder with a warning if it has no manifest ( #186 )
2016-12-06 17:29:38 -05:00
Jesse Plamondon-Willard
748e45aefb
add dependencies.targets to project
2016-12-06 17:13:57 -05:00
Jesse Plamondon-Willard
8304227cea
remove obsolete mods/.cache directory on install ( #187 , #188 )
2016-12-06 00:41:12 -05:00
Jesse Plamondon-Willard
f625fd51a0
always clean up files during install ( #188 )
2016-12-06 00:37:12 -05:00
Jesse Plamondon-Willard
3159436145
reimplement assembly caching ( #187 )
...
This commit ensures DLLs are copied to the cache directory only if they changed, to avoid breaking debugging support unless necessary. To support this change, the assembly hash file has been replaced with a more detailed JSON structure, which is used to determine whether the cache is up-to-date and whether to use the cached or original assembly. Some mods contain multiple DLLs, which must be kept together to prevent assembly resolution issues; to simplify that (and avoid orphaned cache entries), each mod now has its own separate cache.
2016-12-05 23:51:09 -05:00
Jesse Plamondon-Willard
31301988e9
deploy trainer mod when building SMAPI in debug mode
2016-12-05 02:14:25 -05:00
Jesse Plamondon-Willard
48adbe2492
update for 1.3 release
2016-12-04 09:40:34 -05:00
Jesse Plamondon-Willard
feb2d89ff6
fix comment headers
2016-12-04 00:57:32 -05:00
Jesse Plamondon-Willard
ba32511fc2
update repository
2016-12-04 00:56:08 -05:00
Jesse Plamondon-Willard
788a90674f
reduce logging levels ( #166 )
2016-12-02 17:46:07 -05:00
Jesse Plamondon-Willard
ad773a947a
fix assembly resolution when mods try to load types from other mods ( #166 )
2016-12-02 17:15:52 -05:00
Jesse Plamondon-Willard
67feb7e9a9
remove Costura assembly weaving ( #166 )
...
This didn't work on Linux or Mac, caused assembly resolution problems when rewritten mods referenced Json.NET, complicated debugging, and wasn't really needed since players use the installer to cleanly add or remove SMAPI.
2016-12-01 01:48:39 -05:00
Jesse Plamondon-Willard
33f46d26f4
invalidate assembly rewrite cache on new SMAPI version ( #166 )
2016-11-30 22:51:50 -05:00
Jesse Plamondon-Willard
44dfb6fac5
fix assembly resolution failing for rewritten mods that reference a different version of Json.NET ( #166 )
2016-11-30 22:44:40 -05:00
Jesse Plamondon-Willard
0fcf29d428
fix local deployment on Linux/Mac
2016-11-30 14:04:06 -05:00
Jesse Plamondon-Willard
5c11483b8e
rework uninstaller so it doesn't depend on install package
...
For example, this avoids an issue where the normal SMAPI uninstaller didn't remove files added by the 'SMAPI for developers' installer.
2016-11-29 19:42:27 -05:00
Jesse Plamondon-Willard
7e17005c52
update readme & installer for 1.3 ( #166 )
2016-11-29 19:41:58 -05:00
Jesse Plamondon-Willard
df8f44c704
Merge branch 'feature/rewrite-mod-assemblies' into develop
2016-11-29 19:27:10 -05:00
Jesse Plamondon-Willard
d5932a0d77
enable local SMAPI deployment on Linux/Mac
2016-11-29 19:25:51 -05:00
Jesse Plamondon-Willard
528a934786
exclude rewriters project from IL weaving ( #166 )
2016-11-29 19:22:59 -05:00
Jesse Plamondon-Willard
9ff9d02db5
rewrite SpriteBatch.Begin calls for compatibility ( #166 )
2016-11-29 19:21:11 -05:00
Jesse Plamondon-Willard
cc4d3c1cf8
add framework for rewriting incompatible methods ( #166 )
2016-11-29 14:03:14 -05:00
Jesse Plamondon-Willard
5470e95bf5
add separate project to support upcoming IL rewriting ( #166 )
2016-11-29 14:02:59 -05:00
Jesse Plamondon-Willard
b425e32055
move dependencies into targets file for reuse ( #166 )
2016-11-29 12:56:03 -05:00
Jesse Plamondon-Willard
f3675aa466
move assembly map into constants ( #166 )
2016-11-28 20:51:57 -05:00
Jesse Plamondon-Willard
f7b8879011
supplement assembly resolution for Mono ( #166 )
2016-11-27 15:56:47 -05:00
Jesse Plamondon-Willard
0d94c628bb
add trace logs when rewriting an assembly ( #166 )
2016-11-27 12:27:44 -05:00
Jesse Plamondon-Willard
8917fb6697
only rewrite assemblies if needed ( #166 )
2016-11-27 12:08:00 -05:00
Jesse Plamondon-Willard
2e40ad7ad3
copy pdb/mdb files to assembly cache ( #166 )
2016-11-26 16:26:36 -05:00
Jesse Plamondon-Willard
2154b6de95
use simpler, non-broken approach for rewriting mod type references ( #166 )
2016-11-26 16:14:10 -05:00
Jesse Plamondon-Willard
b06aed66c4
rewrite type references in mod assemblies to match target platform ( #166 )
2016-11-26 16:12:21 -05:00
Jesse Plamondon-Willard
4df1999855
move cache struct into its own file ( #166 )
2016-11-26 16:10:41 -05:00
Jesse Plamondon-Willard
1de8dc1b0f
pass target platform to assembly rewriter for later use ( #166 )
2016-11-26 16:07:21 -05:00
Jesse Plamondon-Willard
7bea3c2ba0
add log entry when preprocessing an assembly ( #166 )
2016-11-26 16:00:02 -05:00
Jesse Plamondon-Willard
e9fee3f6fe
preprocess all mod assemblies for compatibility with multi-assembly mods ( #166 )
2016-11-26 13:14:26 -05:00
Jesse Plamondon-Willard
08d5ee293f
simplify manifest.json path check
2016-11-26 13:14:26 -05:00
Jesse Plamondon-Willard
517a9d82fc
preprocess mods through Mono.Cecil to allow rewriting later ( #166 )
2016-11-25 23:41:19 -05:00
Jesse Plamondon-Willard
00a3c14446
fix audio error on startup for some players by deferring update check
2016-11-24 12:43:28 -05:00
Jesse Plamondon-Willard
614de95a8e
update for 1.2 release
2016-11-24 12:19:57 -05:00
Jesse Plamondon-Willard
0ed5f3e98e
fix compatibility with mods which use the previous signature of Command.CallCommand
2016-11-23 20:44:49 -05:00
Jesse Plamondon-Willard
26266a946d
revert Config.GenerateDefaultConfig<T> back to virtual method
...
SMAPI 1.0 changed this virtual method to abstract, since it's required for the configuration to work correctly. However this breaks some incorrectly-written older mods which didn't implement the method. Since this class is deprecated anyway, revert to the original behaviour for compatibility.
2016-11-23 20:31:46 -05:00
Jesse Plamondon-Willard
1dc3f1013f
log relevant details when a ReflectionTypeLoadException is caught by SMAPI
2016-11-23 20:23:42 -05:00
Jesse Plamondon-Willard
9bf1ad71b4
intercept event handler exceptions ( #179 )
2016-11-21 22:09:02 -05:00
Jesse Plamondon-Willard
1a5eb12cc6
restore obsolete SPlayer for backwards compatibility, mark deprecated
2016-11-19 18:56:35 -05:00
Jesse Plamondon-Willard
7cb77dd2be
update for 1.1.1 release
2016-11-19 17:04:21 -05:00
Jesse Plamondon-Willard
cb6f6fe19d
fix race condition where GameLoaded event was sometime fired before the game was ready
2016-11-19 16:03:45 -05:00