Morrowind modding for smarties, part 14, Horror Show: When Masters and Identifiers change
PREREQUISITES:
 
1. you know/care about what problems may happen trying to update mods having TR_Mainland.esm as master to the new version, with TR changing identifiers, and you are looking for a way to fix problems without redoing a big part of the dependant mod(s) changes to references (e.g. moved/added/deleted windows, rocks, plants...) in Construction Set
2. you know how to use Mash updaters (see also here) from a Mash 84 source version/with installed Python 2.7x setup.
 
In this case, you may be interested on how to make mash updaters compatible with TR changed identifiers, as changed identifiers are something standard Mash updaters code can't handle.

Also, I think having synchronized Tamriel_Data updates so released new Tamriel_Data version is compatible with all currently released Project Tamriel mods (AFAIK so far Tamriel Rebuilt, Skyrim: Home Of The Nords and Province: Cyrodiil) will probably remain a dream so if you want to keep playing all the projects and still use the updates you must find a way to fix things yourself.
 
It is a complex procedure, but if you are going to have a lot of mods with a lot of references broken, IMO still better try this than fixing things in Construction Set.
  
Make a backup copy of Mopy\mosh.py somewhere (or, better, make a backup of your entire Morrowind folder somewhere).
 
Change mosh.py this way (or get it from the provided Mopy folder):
 
     def getObjectMaps(self,toMod):
        """Return a dictionary of ObjectMaps with fromMod key for toMod."""
        if self.objectMaps == None: self.loadObjectMaps()
        subset = {}
#begin abot +++ for TR identifiers change
        fromOldIdToNewIdFile = 'Translation.txt' # TR id changes file
        fileName = "..\\Data Files\\" + fromOldIdToNewIdFile  # look for it in Data Files first
        remap = os.path.exists(fileName)
        if not remap:
            fileName = "..\\" + fromOldIdToNewIdFile # then in Morrowind main folder
            remap = os.path.exists(fileName)
        if remap:
            try:
                fromIdToId = {}
                with open(fileName, 'r') as f:
                    for line in f:
                        if not line.startswith('#'): # skip comment lines
                            vk = line.strip().split(':')
                            if len(vk) == 2: # verify we got a couple
                                k, v = vk[0],vk[1]
                                fromIdToId[k] = v
                if f: f.close()
            except EOFError:
                remap = false
                if f: f.close()
#end abot +++
        for key in self.objectMaps.keys():
            if key[1] == toMod:
                subset[key[0]] = self.objectMaps[key] # standard Mash identifier remapping
#begin abot +++ for TR identifiers change
                if remap:
                    if key[0] in fromIdToId:
                        subset[fromIdToId[key[0]]] = self.objectMaps[key] # try mapping also the new changed identifier
#end abot +++
        return subset
 
I have recently made a tes3cmd script package to generate a Tamriel_DatN.esm you can use as starting point for your Mash updaters procedure.
 
To use the tool you need:
old versions of TR masters (the Tamriel_Data.esm, TR_Mainland.esm versions you are currently using in your loading list before updating)
new/just downloaded versions of TR masters RENAMED AS Tamriel_DataNew.esm, TR_MainlanN.esm
 
once you have the package files in your Data Files folder, double clicking Tamriel_DatNgen.bat should generate your Tamriel_DatN.esm file for mash updaters/compatible with previous release
(you can review contents of Tamriel_DatN.esm in the out.txt file)
 
When Tamriel_DatN.esm has been generated Tamriel_DataNew.esm should be no more needed.
 
From Mash, right click the new Tamriel_DatN.esm, updaters, clear the updaters window if not empty, add the old Tamriel_Data.esm. This is the base updater you can use to change mods/saves to the new Tamriel_DatN.esm
 
Second step is the updater for TR_Mainland.
Get the new/just released version named as e.g. TR_MainlanN.esm, right click it in Mash and change its master in the right colum masters list from Tamriel_Data.esm to Tamriel_DatN.esm.

Right click the new TR_MainlanN.esm, updaters, clear the updaters window if not empty, add the old TR_Mainland.esm.

You should do this for ALL other mods in your loading list having Tamriel_Data.esm as master, so you need a way to easily find/list them e.g. to look for *.es? files containing the Tamriel_Data.esm string.
It is simple to do it e.g. from a file manager like Total Commander (shareware works)/Double Commander or from a search tool like GrepWin).

if the mod you are changing has also TR_Mainland.esm as master, also change it from TR_Mainland.esm to TR_MainlanN.esm, and so on...

so, if you have e.g. a abotSiltStridersTR1709.esp mod, you should:
  1. right click it from Mash, duplicate as e.g. abotSiltStridersTR1807.esp
  2. click the new abotSiltStridersTR1807.esp, change its masters from old Tamriel_Data.esm, TR_Mainland.esm to new Tamriel_DatN.esm, TR_MainlanN.esm, press Save button
  3.  

You should do this for ALL mods in your loading list having Tamriel_Data.esm as master

AFTER the masters have been changed using Mash updaters, you can use the TR_FilePatcher_v2.jar tool if needed (e.g. if you get many object not found error due to changed identifiers), just remember to remove the dependency from Tamriel_Data.esm/TR_Mainland.esm that the tool is re-injecting.


After having this done with all mods depending on TR masters, you should do the same with the save(s) you want to keep on playing.

so, if you have a saved game  to update, you should change from Mash ALL the save masters from e.g.
Tamriel_Data.esm to Tamriel_DatN.esm,
TR_Mainland.esm to TR_MainlanN.esm,
abotSiltStridersTR1709.esp to abotSiltStridersTR1807.esp
... and so on for every updated master
Remember to press the save button after you have changed all the masters to apply the update

These are more or less the needed steps to be able to keep playing correctly from previous saves without references deleted/misassigned.

I suggest you try the process from a backup Morrowind installation folder until you are confident with all this (or make a backup of your Morrowind folder you can easily restore).

There may be other conflicts/changes unrelated to references that still need fixing/patching obviously (e.g. a mod adding practice dummies/archery targets to a TR cell which has changed name in new TR version, the new cell name used from GetPCCell script command, old mod is forcing the old name on load, result=crash) , but that can't really be done automatically as possible mod lists combinations are great, you will have to fix them the usual way e.g. changing the cell name in the conflicting mod.

Note:  I know I'm writing this mostly for myself, hard to remember steps between TR releases

Note2: wow, you read everything? you deserve this