XML Extensions is a framework and modding tool that is focused on extending the general functionality of XML mods. This framework adds many more patch operations, allows for the easy creation of mod settings in XML, and much more. Read the wiki at the GitHub page to learn more.
XML Extensions Mod features
More Patch Operations
XML Extensions includes many new patch operations for modders to use. These operations are much more powerful and dynamic, and allow you to basically do programming in XML; you have access to if-statements, for-loops, mathematical operations, etc.
Create Mod Settings in XML
With XML Extensions, you can easily create mod settings for your mod, all in XML! You may use these settings to toggle patch operations, change values within your patch operations, or use them in C# to do anything else.
Settings for mods using XML Extensions are located next to the regular Mod Settings button.
Enhanced Error Reporting for XML Errors
With XML Extensions active, all XML patch errors will now generate a stack trace as well! This means that you can figure out exactly which patch failed, and in some cases, it will even tell you what part of the patch failed. All you need to do is have XML Extensions activated in your modlist while testing your mod.
Here is an example of a trace for a broken patch (you can easily figure out the error is that the letter “N” should be capital in defName):
The vanilla error message for the exact same patch (only reports the parent patch, not the one that actually failed; no clue as to what went wrong):
In addition, an “Advanced debugging mode” is available which will improve the messages of all XML errors, and will keep track of every Def that gets patched in every patch operation in order to provide you with a list of possibly relevant mods:
Improved Mod Settings UI
A new mod settings menu is added with improved UI. It includes a sidebar with a list of all mods, has a search bar to allow you to search for mods quickly, and has the ability to “pin” mods for quick access.
How to Use
To use this mod as a user, just load this mod after core but before all other mods that depend on it. As a modder, you need to mark this mod as a dependency in Steam Workshop, and include the dependency in your About.xml.
Please contact me if you would like to add a translation. I am willing to take suggestions for improvements and additions to this framework, and will try to fix any bugs reported.