Open Project579 opened 6 years ago
Don't worry this is already being worked on, there are technical difficulties due to the fact BSAs now are loaded in the correct order, not the way Mo1 did which was just a new system only Mo used and that was in contrast with how the game actually loads things. We need to reimplement the order and make sure that parsing the BSA does not kill performance. But it is being worked on right now.
OK, fantastic news! I'm really looking forward to the next updates!
This has been on hold due to other important bugs, but there is a partially complete Dev build available. The latest builds include full archive extraction support for all games, including Morrowind.
Also there is a possibility for MO2 to load BSAs without dummy plugins, example: https://staticdelivery.nexusmods.com/images/1704/8933251-1500486475.jpg
MO could look at the BSA/BA2 and automatically add it to the [Archive] section for it to be loaded by the game automatically, but there are problems because the BSA loaded from the game always loose conflicts from BSA loaded by plugins, this may add to the complexity of checking for conflict, but at the same time allows smaller load orders.
@Project579 problem with that is the 256 character limit on that string that basically makes it unusable. MO1 used the vfs to inject the full list of BSAs while the game was reading from that line but it required game specific code inside the VFS itself and doing that caused issues with the FNV script extender. All the new games might work differently regarding it as well, which is why Tannin decided it was simply not worth it as it only added more complexity
Ok that makes sense I didn't know there was a limit.
There is now a test build on discord for 2.2.0
[x] Fix issues with incorrect files shown in the conflicts tab and icons after removing or disabling mods.
[ ] Archives are considered as loaded even if the plugin loading it is disabled which is incorrect.
[ ] Fix crashing on FO3 and FNV when archives.txt exists or is created for some reason.
[ ] rework the system to use a generic priority that can be defined differently depending on game, not only plugin order. This way we can account for INI loaded archives as well as possibly other systems like archives.txt with a game patch.
[ ] Add Archive cache system to improve performance.
[ ] Fix Archives tab to follow plugin order or remove the tab completely.
[x] Add blue lightning icon for loose files over BSA files.
[x] Make sure user can't start something while conflicts are parsed.
[x] Make entire conflict feature optional with a setting so that people that don't care for those conflicts can keep the good performance instead.
[x] Add colour selection settings for archive conflicts highlights.
[x] improve conflict tab #628
[ ] Add list of flags and descriptions when hovering over the flags columns header.
[ ] Add new tab to modinfo that contains fileteee will files from archives as well, color coded with conflict information, similar to the data tab.
[ ] Add filters for the different types of conflicts.
[ ] add a new column for the containing archive name if applicable in the conflicts tab.
[ ] add conflicts icons to the BSA tab.
[ ] add conflict highlights for the plugin tab as well.
[ ] Visually distinguish files coming from archives in the conflicts tab (use italic for them for example).
[ ] Add archive conflicts icon to the plugins tab since there is where people can actually change the winners.
[ ] Make the contents flags check inside the archives as well.
[ ] Add preview support for textures inside archives.
[ ] -Add a new tab in the filetree view of the modinfodialog for archives contents
Add Archive cache system to improve performance, I like this very much but it would be interesting if you could implement a similar thing for the mods in general.
Consider Archives loaded by the INI file as well: Forgot about those, also would the Plugin (PrivateProfileRedirector SE - Faster game start (INI file cacher)) be able to inject a skyrim BSA list by changing the values cached in memory at runtime?
Make sure user can't start something while conflicts are parsed: also block parts of the interface while MO2 is still loading (right after launch, when a mod just installed or when a program hooked was just closed) this would resolve some crashes.
The content column in the mod list could reflect the contents of the archives as well as the archives themselves.
In the mod info conflict tab, right-clicking a file in an archive does nothing. Right-clicking a conflicting loose texture allows you to bring up the preview but this preview only includes the loose files.
@LostDragonist nice suggestions, added to the list. @Project579 for the mods cache better discus on discord but basically there is already.
The PPR plugin could do something there but I would see it pretty hard as it would need to have a list of BSAs given to him and all that. So I don't think this is happening.
Well you can easily give the plugin the BSA list via MO2.
Well not really that easily, how do you get the list in the first place? where do you store the list? How do you pass it. How do you make sure the list is correct? How do you handle the fact that the plugin is external from Mo2 and does not support either older games or FO4? That and Kerber actually needs to implement it, which isn't really likely to happen. It's not as easy as checking if the call is the correct one and returning the list, there are matters such as the list being way to long for the 256 char max the game is limited to.
So basically we can forget about this until all the easier things are implemented and MO2 is bug free.
make it Skyrim SE/LE instance specific and make it work like a mod use a simple INI and make Kerbers plugin read it when it first loads.
You do it ;) , I ain't got time for none of that. lol Ok, back to seriousness, I'm just being realistic, given the low amount of progress that we procede with, this is simply not going to happen, especially considering we have more important and easier problems to tackle that have been there for moths. Unless more people show up and help with their free time I don't see this happening.
I was already looking at Kerbers code don't worry, but yes we can place it in the Far Future improvements list, it may be interesting to see if Kerber can do it in Kortex.
Added new improvements to the list and changed main objectives
This commit tries to fix the incorrect conflicts after opening and disabling mods: https://github.com/ModOrganizer2/modorganizer/commit/8a8cb55fce32e4024e4b091b89ed1a0cc77c6f76 There are in fact improvements and people even report FO4 to no longer show any issues but SSE still shows incorrect conflicts after messing with it. FO3 and FNV have been reported to crash on start for apparently no reason.
Apparently archives are being considered loaded even if the loading plugin is disabled, which is incorrect. This needs to be fixed before a possible release
It seems that the code is using the archives.txt to know which archives are enabled, but apparently that file isn't getting updated for some reason so it can just have missing entries making the entire archives conflict thing fall on it's head.
The completely wrong assumption here though is that archives.txt will actually have the correct active archive before the actual refresh. So we are doing a complete refresh from disk for everything except that we assume that the list of active archives is unchanged from previous refresh.
The way archives.txt is currently handled is completely different than plugins.txt or modlist.txt. Those are handled by the profile, while the archives.txt is handled by mainwindow of all things. Currently the only way to actually make Mo2 update the file to either change something in the tab (which is impossible since we disabled the tab) or change the order of the mods.
My idea for BSA conflicts would be to use archives.txt to store the correct order and state in which archives are loaded, let the game plugin define how this order is decided (support different ways in which archives order is defined).
So basically: 1) Do directory Refresh from disk of only concrete files (no archive contents yet), potentially find new mods, new plugins, new archives. 2) Refresh ESPlist. 3) Refresh archive list (plugin decides how). 4) Go back to directoryStructure and now go add the contents of the enabled archives to the Structure, following the order imposed by Archives.txt and potentially a policy dictated by the gamePlugin on how to interact with concrete files (MO1 allowed archive files to overwrite loose files from lower priority mods, this could only be implemented in Mo2 if we add usvfs file hiding). 5) Refresh is now complete. Archives.txt structure should be as standard as possible between games so that third party programs may use it to easily determine the order of archives as well.
Rest in peace, one of the best features of MO1 over MO2 left by the wayside.
Why rest in peace? It's been in MO2 behind an experimental flag for a long time now?
I may try to look at this after 2.5.0. It was originally my code, after all.
I may try to look at this after 2.5.0. It was originally my code, after all.
Would. E super helpful since im starting to learn about conflicts
The problem
As of right now ModOrganizer 2 does not show conflicting files packed as BSAs like ModOrganizer 1 did.
Edit for people that came here via search engine
This feature is currently available under experimental flags.
Environment
Details
The old ModOrganizer was able to access files inside of BSAs thanks to the archive manager, but due to its removal (done by design to solve problems with Third Party application) an important feature that allowed users to see if the contents of archives where overwritten was lost. What i'm asking is NOT to re implement the old Archive Manager but simply allow MO 2 to see inside of BSAs (or BA2s) without the need for users to unpack the archive and check conflicting files against the other installed mods; obviously BSAs always lose conflicts with non-packed files but MO 2 should also be able to show which files will get overwritten.