How to make an existing mod compatible with Smart Moving - makamys/SmartMoving GitHub Wiki

Here are the 3 ways I found to make mods that make changes to the player model compatible with Smart Moving:

Method 1

Avoid creating ModelBipeds, and modify the existing ModelRenderers in-place instead (modifying their child models and box list is fine). SmartMoving replaces ModelBiped and ModelRenderer instances with ones of its own subclasses, so these references must be preserved.

This method has the advantage that it will automatically work both with the vanilla renderer and with Smart Moving.

For this method to work, RenderPlayerAPI may need to be installed, as it makes the assignment of the subclass instances happen as early as possible (in RenderPlayer's constructor). With only SmartMoving, this happens later (in SmartMoving's init event handler), which results in changes that have been made to the player model earlier being discarded, unless this fork is used.

Method 2

Use RenderPlayerAPI. This is the "official" method, but it's more involved since now you have to figure out how to use this API and lug it around as a dependency. You'd have to provide two implementations for every model to make your mod work with and without RenderPlayerAPI installed. I only recommend this method if the 1st one isn't sufficient.

Method 3

Use RenderPlayerAPIEnhancer and pray for the best. RenderPlayerAPIEnhancer is a coremod that hacks Smart Moving compat into other mods. It's very hacky, and doesn't always work, but I can confirm it fixes Thaumcraft's armor models at least.