Modding Tutorials/Transpiler Hints
Debugging Transpilers can seem impossible. It's very difficult to count exactly correctly, and any mistakes will likely throw a system exception.
Helpful examples
One way to get an idea of how to use the Transpiler is to search github for Harmony Transpilers.
Useful debugging tools.
See what your IL code is
One thing that can potentially help is to print out your entire modified IL code, to make sure you've got it correct:
public static IEnumerable<CodeInstruction> Transpiler(IEnumerable<CodeInstruction> instructions, ILGenerator generator) {
var l=XTranspiler(instructions, generator).ToList(); // name your actual transpiler XTranspiler
string s="Code:";
int i=0;
foreach (var c in l) {
if (c.opcode==OpCodes.Call ||
c.opcode==OpCodes.Callvirt) { // you can make certain operations more visible
Log.Warning(""+i+": "+c);
} else {
Log.Message(""+i+": "+c);
}
s+="\n"+i+": "+c;
i++;
yield return c;
}
Log.Error(s); // or just print the entire thing out to copy to a text editor.
}