How exactly do I get this to work?
Unfortunately there is not much documentation on
ModAnalyzer yet, since I mainly wrote it to "scratch an itch", of getting all the mods I wanted to use working together, and this itch has been scratched so I haven't gotten around to polishing up the tool and making it more user-friendly out-of-the-box. There is no GUI, for example, so you have to be familiar with the command-line, installing Python, and so on. But fortunately it is not all that complex to use, once installed. I've put together some usage instructions in the README file here:
https://github.com/agaricusb/ModAnalyzer/blob/master/README.md
Isn't it really slow to do it that way though?
Not too slow, takes about 15 - 30 seconds to analyze each mod. The majority of that time is waiting for the server to finish starting up. I used to analyze earlier in the process, which was slightly faster, but captured incomplete data since the mods weren't fully loaded. Now it runs the analysis on the first tick using FML ITickHandler. Also note, the data is all cached locally so it only has to be analyzed once.
This is really awesome, thank you! By the way, just because someone has set up a forge development environment doesn't mean they have python working. Forge has a batch file for windows that also runs it so anyone who uses windows for coding likely doesn't have python.
Thanks! Although, Forge does actually include a Python installation for Windows users -- the batch files just wrap the Python scripts; pretty much all of the Forge setup scripts are written in Python. You should be able to use the same Python install for ModAnalyzer, though. Maybe it could be ported to pure Java..hm.
I was looking at your project and its very interesting. Have you considered creating a repository of the analysis files for each mod by version? Once the analysis file has been created for a specific build of a mod with default config, there is no reason to create a new version is there?
But very impressive.
Indeed, and I've published some of the analyzer dumps for various mods here:
https://github.com/agaricusb/ModAnalyzerData
Haven't wrote a script to download the remote analyses, though, but that would be a cool feature. I've thought about many possible interesting possible uses of this data. An automatic service to hook into
Not Enough Mods and dynamically analyze each new version of each mod as it is posted? An online service to select the mods you want, then generate a conflict-free config pack for you? A super-universal config pack, containing all the mods out there, free of conflicts? (as much as possible - would need a means to specify 'alternatives' for inherently-conflicting mods, of course). An encyclopedic browsable database of all known mods, with nicely formatted webpages listing the contents of each mod, everything it adds, so you can quickly see what exactly the mods adds before downloading, or to lookup unknown items/blocks/biomes/enchantments/recipes/entities etc. to see which mod added them? A hyperlinked recipe database with resource requirement calculations and processing chain or loop detection, so you can see everything you can make with what you have, or everything you need to make what you want? A de-facto registry of identifiers to help modders proactively avoid conflicts in their mods (especially crafting recipe conflicts, the most insidious imho), by default, so users/integrators don't have to? Seamless client/server configuration and mod activation synchronization?
There's tons of potential in what one could do with this analysis data and tool -- if only I could do it all, but, realistically probably won't get to it, since I'm distracted by having a heavily-modded Minecraft instance setup and waiting for me to play it
. But I'm putting this all out there as open source, should anyone else wish to continue where I left off.