How to create a custom AzDefaultArmorBoneProvider
In some cases, you may want to use custom-named bones or restructure the mappings used by your armor models. The default implementation of AzDefaultArmorBoneProvider
assumes specific bone names (e.g., armorHead
, armorBody
). However, if your model uses different bone names, such as renamedLeftBoot
, you must create a custom provider to override the default behavior.
Below is an example of a custom armor bone provider:
public class ExampeArmorBoneProvider extends AzDefaultArmorBoneProvider {@Overridepublic AzBone getLeftBootBone(AzBakedModel model) {return model.getBone("renamedLeftBoot").orElse(null);}@Overridepublic AzBone getLeftLegBone(AzBakedModel model) {return model.getBone("renamedLeftLeg").orElse(null);}@Overridepublic AzBone getRightBootBone(AzBakedModel model) {return model.getBone("renamedRightBoot").orElse(null);}@Overridepublic AzBone getRightLegBone(AzBakedModel model) {return model.getBone("renamedRightLeg").orElse(null);}}
How to register your custom AzDefaultArmorBoneProvider
In your Armors renderer class, simply call setBoneProvider
in your AzArmorRendererConfig
builder.
Heads up!
For 1.20.1 and below use, new ResourceLocation() instead of ResourceLocation.fromNamespaceAndPath()
Example:
public class ExampleArmorRenderer extends AzArmorRenderer {private static final ResourceLocation MODEL = ResourceLocation.fromNamespaceAndPath(YOUR_MOD_ID, "geo/armor/examplearmor.geo.json");private static final ResourceLocation TEXTURE = ResourceLocation.fromNamespaceAndPath(YOUR_MOD_ID, "textures/armor/examplearmor.png");public ExampleArmorRenderer() {super(AzArmorRendererConfig.builder(MODEL, TEXTURE).setBoneProvider(new CustomArmorBoneProvider()) // Bone provider for skeleton animations.build());}}