diff --git a/src/SMAPI/Framework/ModLoading/Rewriters/MethodParentRewriter.cs b/src/SMAPI/Framework/ModLoading/Rewriters/MethodParentRewriter.cs
index c6388295..d0fe8b13 100644
--- a/src/SMAPI/Framework/ModLoading/Rewriters/MethodParentRewriter.cs
+++ b/src/SMAPI/Framework/ModLoading/Rewriters/MethodParentRewriter.cs
@@ -42,8 +42,9 @@ namespace StardewModdingAPI.Framework.ModLoading.Rewriters
/// The type whose methods to remap.
/// The type with methods to map to.
/// Whether to only rewrite references if loading the assembly on a different platform than it was compiled on.
- public MethodParentRewriter(Type fromType, Type toType, bool onlyIfPlatformChanged = false)
- : this(fromType.FullName, toType, onlyIfPlatformChanged) { }
+ /// A brief noun phrase indicating what the instruction finder matches (or null to generate one).
+ public MethodParentRewriter(Type fromType, Type toType, bool onlyIfPlatformChanged = false, string nounPhrase = null)
+ : this(fromType.FullName, toType, onlyIfPlatformChanged, nounPhrase) { }
/// Perform the predefined logic for an instruction if applicable.
diff --git a/src/SMAPI/Framework/RewriteFacades/AccessToolsMethods.cs b/src/SMAPI/Framework/RewriteFacades/AccessToolsMethods.cs
new file mode 100644
index 00000000..cb40bbcc
--- /dev/null
+++ b/src/SMAPI/Framework/RewriteFacades/AccessToolsMethods.cs
@@ -0,0 +1,32 @@
+using System;
+using System.Collections.Generic;
+using System.Diagnostics.CodeAnalysis;
+using System.Reflection;
+using HarmonyLib;
+
+namespace StardewModdingAPI.Framework.RewriteFacades
+{
+ /// Maps Harmony 1.x methods to Harmony 2.x to avoid breaking older mods.
+ /// This is public to support SMAPI rewriting and should not be referenced directly by mods.
+ [SuppressMessage("ReSharper", "CS1591", Justification = "Documentation not needed for facade classes.")]
+ public class AccessToolsMethods
+ {
+ /*********
+ ** Public methods
+ *********/
+ public static ConstructorInfo DeclaredConstructor(Type type, Type[] parameters = null)
+ {
+ return AccessTools.DeclaredConstructor(type, parameters, searchForStatic: true);
+ }
+
+ public static ConstructorInfo Constructor(Type type, Type[] parameters = null)
+ {
+ return AccessTools.Constructor(type, parameters, searchForStatic: true);
+ }
+
+ public static List GetDeclaredConstructors(Type type)
+ {
+ return AccessTools.GetDeclaredConstructors(type, searchForStatic: true);
+ }
+ }
+}
diff --git a/src/SMAPI/Framework/RewriteFacades/HarmonyInstanceMethods.cs b/src/SMAPI/Framework/RewriteFacades/HarmonyInstanceMethods.cs
index bca76981..aad62c9b 100644
--- a/src/SMAPI/Framework/RewriteFacades/HarmonyInstanceMethods.cs
+++ b/src/SMAPI/Framework/RewriteFacades/HarmonyInstanceMethods.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
+using System.Diagnostics.CodeAnalysis;
using System.Linq;
using System.Reflection;
using System.Reflection.Emit;
@@ -7,8 +8,9 @@ using HarmonyLib;
namespace StardewModdingAPI.Framework.RewriteFacades
{
- /// Maps Harmony 1.x methods to Harmony 2.x to avoid breaking older mods.
+ /// Maps Harmony 1.x HarmonyInstance
methods to Harmony 2.x's to avoid breaking older mods.
/// This is public to support SMAPI rewriting and should not be referenced directly by mods.
+ [SuppressMessage("ReSharper", "CS1591", Justification = "Documentation not needed for facade classes.")]
public class HarmonyInstanceMethods : Harmony
{
/*********
@@ -19,18 +21,11 @@ namespace StardewModdingAPI.Framework.RewriteFacades
public HarmonyInstanceMethods(string id)
: base(id) { }
- /// Creates a new Harmony instance.
- /// A unique identifier for the instance.
public static Harmony Create(string id)
{
return new Harmony(id);
}
- /// Apply one or more patches to a method.
- /// The original method.
- /// The prefix to apply.
- /// The postfix to apply.
- /// The transpiler to apply.
public DynamicMethod Patch(MethodBase original, HarmonyMethod prefix = null, HarmonyMethod postfix = null, HarmonyMethod transpiler = null)
{
try
diff --git a/src/SMAPI/Metadata/InstructionMetadata.cs b/src/SMAPI/Metadata/InstructionMetadata.cs
index 64216138..40a7588e 100644
--- a/src/SMAPI/Metadata/InstructionMetadata.cs
+++ b/src/SMAPI/Metadata/InstructionMetadata.cs
@@ -38,7 +38,8 @@ namespace StardewModdingAPI.Metadata
// rewrite for SMAPI 3.6 (Harmony 1.x => 2.0 update)
yield return new Harmony1AssemblyRewriter();
- yield return new MethodParentRewriter("HarmonyLib.Harmony", typeof(HarmonyInstanceMethods), onlyIfPlatformChanged: false, nounPhrase: Harmony1AssemblyRewriter.DefaultNounPhrase);
+ yield return new MethodParentRewriter(typeof(HarmonyLib.Harmony), typeof(HarmonyInstanceMethods), onlyIfPlatformChanged: false, nounPhrase: Harmony1AssemblyRewriter.DefaultNounPhrase);
+ yield return new MethodParentRewriter(typeof(HarmonyLib.AccessTools), typeof(AccessToolsMethods), onlyIfPlatformChanged: false, nounPhrase: Harmony1AssemblyRewriter.DefaultNounPhrase);
/****
** detect mod issues