Jump to content

Fo4edit Clean masters.


Oynlen

Recommended Posts

So, many cleaning features of Fo4Edit seemed to have be removed now. It seems to make it impossible to make mods like I have in the past using copy as new records.

I guess this might have been done to stop people stealing others works, but in a game where modding lets us create our ultimate play style, It doesn't seem to make a lot of sense. I want to take just some elements of a mod and copy them as new records into a new esp then remove the master of the original mod. They are all worldspace placements and I made sure to only copy ones that used vanilla statics or vanilla Scols. Not all mods are edited or created to be uploaded, many people find elements of a mod enjoyable but dont like the overall thing, much like the vanilla game.

Other times, mod authors might even give permission for an edited version to be uploaded. So what is up with this (kinda recent) version of Xedit and its QAC feature? It doesn't seem to do half the things it used to be able to do. I know cleaning can mess things up, but as authors we mostly know what we are doing. feels like its been dumbed down for the common user, or Like I say, as a reason to prevent copying records.

I made my mod A Forest (with permissions) by copying all worldspace records of two mods, then changing referencing records of all statics, deleting the old statics then cleaning masters. It completely removed the dependency of both mods I copied records from. Seems this method no longer works?

All I read on the mod page from authors is how the new system is better and people need to watch the video etc. I'm not a complete noob in this stuff, its possible I'm missing something, but clearly it seems features have been removed. People warn about cleaning mods, But I used this method to create my mod and feedback has been its a very stable environment mod, more so than the main one it was copied records from. I did not just copy, but used it as a base framework.

*Edit, to be clear, copying records is still possible, but it seems removing masters is not, even tho all records are vanilla. The mods actual records are nothing more than XYZ grid placements. And those used to be fine to copy as new without dependency.

Edited by Oynlen
Link to comment
Share on other sites

It's just been rearranged due to complaint/casualties.

It's all in there somewhere, but they moved some things.

It's just been bulletproofed a bit.

 

You say "this method no longer works", I've just done that, so there has to be more to it, what aspect "doesn't work".

 

See: my comments on

https://forums.nexusmods.com/index.php?/topic/9084553-merge-all-small-mods-into-one-espesm-or-make-them-into-esls-or-what/

Quotes from Vlits are not my own, and really woke me up to just how to easy it is.

 

BTW: zEdit is the wave of the future anyway from the looks of things. :unsure:

Link to comment
Share on other sites

It's still feels weird to see people quoting me like that :D . Though I would argue that xEdit and zEdit have different intended uses. While it was named in a way that implies it is a successor, it uses the xEdit code as a base to allow automated changes and seems to me to primarily be designed for mod users to more easily compatibility-patch their load orders.

@Onlyen,

I am confused. You talk about QAC (quick auto-clean), but most of your post has nothing to do with that. Cleaning masters is different from QAC. QAC just removes ITMs and changes REFRs from being flagged as deleted to being flagged as disabled in a way that ensures they won't be re-enabled.


What your actual complaint refers to is the locking of the file header. This was done because manually editing the master list will break your plugin, 9 times out of 10*. To remove masters from a plugin, you are supposed to use the "Clean Masters" function that shows when you right-click on the plugin name. If a master you think should be removed doesn't get removed, then there is still a reference to it. To find those references, you can use the "report Masters" script that comes with xEdit to find them. If there are none listed by that script, check for errors as that script doesn't report unresolved references that are pointing to non-existent records, and those will keep "Clean Masters" from removing a master if those non-existent records are in the master you want removed**.

If you need to re-arrange masters in the list, right click (on plugin name) -> Sort Masters, will organize the masters in the plugin masterlist to match the way those masters are currently loaded.


Now, for the reason why the ability to directly edit the masterlist usually breaks plugins and was locked: records in a plugin are not stored the way you see them in xEdit/the CK/in-game. They are stored with a prefix identifying the master based on position in the masterlist. Here is an example.


mod D has the following list:

Fallout4.esm
DLCRobot.esm
Mod A.esm
Mod B.esp

A record that is an override for a new record from DLCRobot.esm, would have an internal ID of 01xxxxxx. Overrides for mod B would have an internal ID of 03xxxxxx. New records would have an ID of 04xxxxxx. Now lets say you edit the masterlist to remove DLCRobot.esm as a master, so the masterlist looks like this:

Fallout4.esm
Mod A.esm
Mod B.esp

The internal IDs for those records haven't been touched. So all the records that used to point at Mod B.esp, are now new records. All records that pointed at Mod A.esm, are now considered overrides from Mod B.esp. The same happens if you manually re-order masters.

Using the "Sort Masters" and "Clean Masters" functions handles the internal renumbering for you.



Since internal IDs that are too high get "clamped" by xEdit upon saving (reducing the internal IDs higher than what would point at new records to have the right ID for new records), the method you were using worked fine, since you were removing any records that referenced new base objects from the masters you were ripping out, but if you had missed any (which may be what happened here if "Clean Masters" does nothing), you would be left "error not resolved" errors. Depending on what record and subrecord those errors are in, the game might treat it like a null record and be perfectly fine other than the fact that something is missing that was intended to be there, but other "not resolved" errors cause guaranteed CtDs, or can even lead to corrupt saves.


And if you want an explanation on QAC and the locking of the manual "Undelete and disable references" and "Remote "Identical to Master" records" functions:


While UDR worked fine when run on the whole load order and work properly, it cannot fix deleted navmeshes, instead just reporting them in the message tab. A mod user running it on their whole load order is almost always going to ignore that message.

It is worse for Remove ITMs, as running it on you whole load order at once would only remove the ITMs that have no effect for that person. If Mod B has an ITM and it's only master is Fallout4.esm, running QAC on it (or manual cleaning with only Mod B and its masters loaded) would remove the ITM. If mod A also touches that same record, and makes a change to it, with both mods loaded it is no longer an ITM, but an ITPO (identical to previous override), and running remove ITMs with both loaded won't remove it. The only ITMs that would still get removed would be the ones for which no mod makes a change, in which case it doesn't actually have any impact whether you clean it or not.

The other threeadvantages to QAC are:
1) Some ITMs require that you clean twice to remove. As an exmaple, a mod has an ITM CELL with only ITM REFRs below it. The first pass removes the ITM REFRs, but didn't remove the CELL. This is because it checks the cell first, sees that, while it is an ITM, it has dependent children, and leaves it. The second pass would remove it, as the children (which were all ITMs as well) are already gone, and xEdit sees it has no dependents. QAC does three passes.

2) The DLC for pretty much all Elder Scrolls and Bethesda Fallout games are rickety card towers that will fall apart if you look at them wrong. If you looked at the raw data of the files, you would see large chunks that are ordered incorrectly in numerous DLC. For some DLC, this means that, cleaning the DLC without fixing that order causes issues (like the invisible everything in Solstheim after cleaning). For other DLC, fixing the internal order during cleaning causes problems (don't remember which, but one of the Skyrim DLC had an issue where cleaning was causing some boars to be non-agressive because QAC was updated to always mark the plugin as modified to fix the Solstheim bug). So QAC was changed to not mark as modified (which forces xEdit to fix the internal record order) as the default, with exceptions for the DLC that need it (Anchorage.esm and PointLookout.esm for FO3 also need the internal order fixed). Manual cleaning would not be able to make the exceptions where needed.

3) When "Simple Records" in disabled in xEdit, it is able to compare navmeshes and find many cases where the order of the data in the record is different, but the navmesh (and all edge links to other navmeshes) are actually identical, and can be safely removed. QAC disables it by default to allow ITM navmeshes to be cleaned.



In summary, the record header masterlist was locked because people were using that capability in a way that was never intended°, and in ways that resulted in broken plugins unless you were lucky or far more knowledgeable than the average mod author. Locking the manual cleaning functions was because many (possibly most) mod users were not using it properly, in a way that invalidated one of the main purposes of cleaning.

*And that is for modders, for mod users I would say 99 times out of 100
**Since that is worded a bit awkwardly, here is an example: Mod A has load order prefix of 1A. Mod B has mod A as a master, but has no real references. When you run "Check for Errors" on mod B, it shows that there is a "could not be resolved" error for formID 1A090234. When you look at mod A, that record doesn't exist, hence the error. Fixing that reference (which, as an example, could be intended to be 09090234, a record in another master of mod B), then allows Clean Masters to remove mod A from the master list.
°This is not speculation, this is something Elminster has said himself

Link to comment
Share on other sites

Thank you for the detailed reply and taking time to explain things. I will take the time to read through this a few times thoroughly and put things together. I Thought I had gotten the pop up message that Clean Masters was now an obsolete function but I will check again. From the sound of it here, I'd say my success the first time was due to mostly luck.

Though I did feel I had learnt a decent understanding of how the older version functioned. For my specific purposes, that is.

Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...