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.
Achtung!
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());}}