You are not supposed to access the World in readFromNBT. The world is can be uninitialized at that time.
Like the name suggests, you should only read data from NBT during that time.
If you want to get another tile entity during initialization, you can make it a lazy value and initialize (when first used/first tick in world depending on how you want to use it) based on the BlockPos (which is read from NBT).
Decompiling and changing a mod without the author's permission is against our "code of conduct", and is not encouraged.
There is a public git repo of MorePlayerModels here, but it is for 1.10.2 and you're on your own to update it.