Нужна помощь по созданию брони с нестандартной моделью!

Версия Minecraft
1.16.5
API
Forge

Geo

13
0
Привет форум!
Недавно решился взяться за очень, для меня, больную тему - создание брони с нестандартной моделью. Я сделал модель будущей экипировки в "Blockbench".Потом Нарисовал текстуру и начал все это дело кодить. В итоге вышло как-то так.
Код головного убора:
public class KapiloniumHelmet extends ArmorItem
{
public KapiloniumHelmet(EquipmentSlotType head)
{
super(ArmorMaterial.KAPILONIUM_ARMOR, head, new Properties().stacksTo(1).tab(ItemGroup.TAB_COMBAT));
}

@Nullable
@Override
public <A extends BipedModel<?>> A getArmorModel(LivingEntity entityLiving, ItemStack itemStack, EquipmentSlotType armorSlot, A _default) {
return super.getArmorModel(entityLiving, itemStack, armorSlot, _default);
}

@Nullable
@Override
public String getArmorTexture(ItemStack stack, Entity entity, EquipmentSlotType slot, String type) {
return super.getArmorTexture(stack, entity, slot, type);
}
}
Регистрация предметов:
public static final RegistryObject<Item> KAPILONIUM_HELMET = ITEMS.register("kapilonium_helmet", () -> new KapiloniumHelmet(EquipmentSlotType.HEAD));
public static final RegistryObject<Item> KAPILONIUM_CHESTPLATE = ITEMS.register("kapilonium_chestplate", () -> new KapiloniumChestplate(EquipmentSlotType.CHEST));
public static final RegistryObject<Item> KAPILONIUM_LEGGINS = ITEMS.register("kapilonium_leggins", () -> new KapiloniumLeggins(EquipmentSlotType.LEGS));
public static final RegistryObject<Item> KAPILONIUM_BOOTS = ITEMS.register("kapilonium_boots", () -> new KapiloniumBoots(EquipmentSlotType.FEET));
И сама модель:
public Kapilonium_armor(int type) {
super(0, 0, 128, 128);

Head = new ModelRenderer(this);
Head.setPos(0.0F, 0.0F, 0.0F);
Head.setTexSize(0, 0).addBox(-4.0F, -8.0F, -4.0F, 8.0F, 8.0F, 8.0F, 1.0F, false);
Head.mirror = true;

MainWing = new ModelRenderer(this);
MainWing.setPos(-1.0F, -4.0F, 1.0F);
Head.addChild(MainWing);
setRotationAngle(MainWing, 0.0F, -0.2182F, 1.5708F);
MainWing.setTexSize(33, 0).addBox(-6.0F, -3.0F, -4.0F, 1.0F, 4.0F, 7.0F, 0.0F, false);
MainWing.setTexSize(27, 0).addBox(-6.0F, -2.0F, 3.0F, 1.0F, 2.0F, 2.0F, 0.0F, false);
MainWing.mirror = true;

LeftWing = new ModelRenderer(this);
LeftWing.setPos(0.0F, -4.0F, 1.0F);
Head.addChild(LeftWing);
setRotationAngle(LeftWing, 0.3927F, -0.2182F, 0.0F);
LeftWing.setTexSize(33, 0).addBox(-6.0F, -2.0F, -4.0F, 1.0F, 3.0F, 7.0F, 0.0F, false);
LeftWing.setTexSize(56, 0).addBox(-6.0F, -2.0F, 3.0F, 1.0F, 1.0F, 3.0F, 0.0F, false);
LeftWing.setTexSize(0, 0).addBox(-6.0F, -1.0F, 3.0F, 1.0F, 1.0F, 2.0F, 0.0F, false);
LeftWing.mirror = true;

RightWing = new ModelRenderer(this);
RightWing.setPos(0.0F, -4.0F, 1.0F);
Head.addChild(RightWing);
setRotationAngle(RightWing, 0.3927F, 0.2182F, 0.0F);
RightWing.setTexSize(33, 0).addBox(5.0F, -2.0F, -4.0F, 1.0F, 3.0F, 7.0F, 0.0F, false);
RightWing.setTexSize(56, 0).addBox(5.0F, -2.0F, 3.0F, 1.0F, 1.0F, 3.0F, 0.0F, false);
RightWing.setTexSize(0, 0).addBox(5.0F, -1.0F, 3.0F, 1.0F, 1.0F, 2.0F, 0.0F, false);
RightWing.mirror = true;

Body = new ModelRenderer(this);
Body.setPos(0.0F, 0.0F, 0.0F);
Body.setTexSize(16, 16).addBox(-4.0F, 0.0F, -2.0F, 8.0F, 12.0F, 4.0F, 1.01F, false);
Body.mirror = true;

RightArm = new ModelRenderer(this);
RightArm.setPos(-5.0F, 2.0F, 0.0F);
RightArm.setTexSize(40, 16).addBox(-3.0F, -2.0F, -2.0F, 4.0F, 12.0F, 4.0F, 1.0F, false);
RightArm.mirror = true;

LeftArm = new ModelRenderer(this);
LeftArm.setPos(5.0F, 2.0F, 0.0F);
LeftArm.setTexSize(40, 16).addBox(-1.0F, -2.0F, -2.0F, 4.0F, 12.0F, 4.0F, 1.0F, true);
LeftArm.mirror = true;

RightLeg = new ModelRenderer(this);
RightLeg.setPos(-1.9F, 12.0F, 0.0F);
RightLeg.setTexSize(0, 16).addBox(-2.0F, 0.0F, -2.0F, 4.0F, 12.0F, 4.0F, 1.0F, false);
RightLeg.mirror = true;

LeftLeg = new ModelRenderer(this);
LeftLeg.setPos(1.9F, 12.0F, 0.0F);
LeftLeg.setTexSize(0, 16).addBox(-2.0F, 0.0F, -2.0F, 4.0F, 12.0F, 4.0F, 1.0F, true);
LeftLeg.mirror = true;

}

@Override
public void setupAnim(Entity entity, float p_225597_2_, float p_225597_3_, float p_225597_4_, float p_225597_5_, float p_225597_6_) {
}

@Override
public void renderToBuffer(MatrixStack matrixStack, IVertexBuilder buffer, int packedLight, int packedOverlay, float red, float grreen, float blue, float alfa) {
Head.render(matrixStack, buffer, packedLight, packedOverlay);
Body.render(matrixStack, buffer, packedLight, packedOverlay);
RightArm.render(matrixStack, buffer, packedLight, packedOverlay);
LeftArm.render(matrixStack, buffer, packedLight, packedOverlay);
RightLeg.render(matrixStack, buffer, packedLight, packedOverlay);
LeftLeg.render(matrixStack, buffer, packedLight, packedOverlay);
}
public void setRotationAngle(ModelRenderer modelRenderer, float x, float y, float z) {
modelRenderer.xRot = x;
modelRenderer.yRot = y;
modelRenderer.zRot = z;
}
}
В итоге не знаю как это все дело связать. Можете чем нибудь помочь или подсказать, может что-то добавить надо, ибо туториалы не дали никакого результата. Заранее благодарю! :3
 
Последнее редактирование:
7,099
324
1,510
Сверху