Как рендерить броню с моделькой

Версия Minecraft
1.12.2
85
3
3
Здравствуйте ,столкнулся с такой проблемой...
У меня есть кастомный инвентарь с своими слотами ,мне нужно рендерить модель брони на игроке если в моих слотах лежит эта броня.
Нужно рендерить именно java модель ModelBiped что бы части модели прикреплялись к персонажу.

Подскажите пожалуйста как это сделать.
 
5,018
47
783
Посмотреть как сделано в ванилле, не?
Про то как делать броню с моделью посты были.
 
85
3
3
Посмотреть как сделано в ванилле, не?
Про то как делать броню с моделью посты были.
так и сделал ,но дело в том что я не знаю как заменить слоты "EntityEquipmentSlot.CHEST" на свои слоты ,из своего gui..
 
1,007
36
206
Проверяй что лежит в твоих словах, если твоя броня, то доставай нужную модель. Дальше с помощью слоев рисуй свою броню(в учебнике есть) и правда перед этим надо указать в java модели через addChild какая часть к какой приклеивается.
 
85
3
3
Дальше с помощью слоев рисуй свою броню
Через слои пробовал делать ,но есть проблемка ,предмет привязывается к body.
как можно вращать предмет вместе с головой ?

Java:
GL11.glRotatef(360, model.bipedHead.rotationPointX, model.bipedHead.rotationPointY, model.bipedHead.rotationPointZ);

Но моделька не вращается за головой.
 
85
3
3
если можно все шейпы закрепить за нужными частями модели игрока
я закрепил их в модели..
но я не знаю как рендерить саму модель ,у меня есть ArrmorWar.java (класс с моделью)

Java:
public class ArmorWar extends ModelBiped {

    private final ModelRenderer body;

    public ArmorWar(int type) {

        textureWidth = 64;
        textureHeight = 64;

        body = new ModelRenderer(this);
        body.setRotationPoint(0.0F, 0.0F, 0.0F);
        body.cubeList.add(new ModelBox(body, 0, 0, -4.5F, 0.75F, -2.5F, 9, 11, 5, 0.0F, false));
        body.cubeList.add(new ModelBox(body, 20, 16, -4.5F, 4.75F, -2.75F, 9, 2, 1, 0.0F, false));
        body.cubeList.add(new ModelBox(body, 7, 22, 1.5F, 2.25F, -2.75F, 2, 1, 1, 0.0F, false));
        body.cubeList.add(new ModelBox(body, 0, 16, -4.5F, 4.75F, 1.75F, 9, 2, 1, 0.0F, false));
        body.cubeList.add(new ModelBox(body, 20, 20, -4.5F, 8.75F, -2.75F, 9, 2, 1, 0.0F, false));
        body.cubeList.add(new ModelBox(body, 0, 19, -4.5F, 8.75F, 1.75F, 9, 2, 1, 0.0F, false));
        body.cubeList.add(new ModelBox(body, 12, 22, -4.0F, -0.25F, -2.5F, 1, 1, 5, 0.0F, false));
        body.cubeList.add(new ModelBox(body, 0, 22, 3.0F, -0.25F, -2.5F, 1, 1, 5, 0.0F, false));
        setRotation(body, 0F, 0F, 0F);

        this.bipedBody.cubeList.clear();

        //Тип брони 0 - голова, 1 - нагрудник, 2 - штаны, 3 - ботинки
        switch (type)
        {
            case 0:
                break;
            case 1:
                this.bipedBody.addChild(body);
                break;
            case 2:
                break;
            case 3:
                break;
        }
    }

    public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5)
    {
        super.render(entity, f, f1, f2, f3, f4, f5);
        setRotationAngles(f, f1, f2, f3, f4, f5, entity);
    }

    private void setRotation(ModelRenderer model, float x, float y, float z)
    {
        model.rotateAngleX = x;
        model.rotateAngleY = y;
        model.rotateAngleZ = z;
    }

    public void setRotationAngles(Entity entity, float f, float f1, float f2, float f3, float f4, float f5)
    {
        super.setRotationAngles(f, f1, f2, f3, f4, f5, entity);
    }
}

Всё делал по учебнику ,но мне нужно что бы броня была видимой когда мой Item Arrmor находится не в слоте для брони
а в слоте с моим gui из тутора - Создание кастомного инвентаря игрока.

Проверку на слот я сделал ,а вот как рендерить модель не знаю...
 
85
3
3
Ты блин, почему ты только нагрудник к игроку привязываешь
ну у меня 1 item нагрудника
в обычных слотах для брони он отображается нормально ,но мне нужно что бы он именно в моих слотах рендерился.
 
85
3
3
ну так твой слот что экстендит? Slot? если нет, то подумай логически, почему бы не заэкстендить SlotArmor и получить все его возможности + еще с возможностью управлять им как захочется?
Java:
public class StandartSlot extends Slot {

    //Это по сути копитя обычного ванильного слота

    private final EntityPlayer thePlayer;
    private int removeCount;

    public StandartSlot(EntityPlayer player, IInventory inventoryIn, int slotIndex, int xPosition, int yPosition){
        super(inventoryIn, slotIndex, xPosition, yPosition);
        this.thePlayer = player;
    }

    /* Может ли даный стак быть положен в этот слот. Здесь могут быть проверки, например если вы хотите
        чтоб в слот нельзя было положить яблоко, проверяете равен ли предмет в стаке яблоку, если да, то
        возвращаем false */
    public boolean isItemValid(@Nullable ItemStack stack){
        return false;
    }

    public ItemStack decrStackSize(int amount){
        if (this.getHasStack()){
            this.removeCount += Math.min(amount, this.getStack().getCount());
        }
        return super.decrStackSize(amount);
    }

    //Что происходит, если забрать предмет из слота
    public ItemStack onTake(EntityPlayer player, ItemStack stack){
        this.onCrafting(stack);
        super.onTake(player, stack);
        return stack;
    }

    protected void onCrafting(ItemStack stack, int amount){
        this.removeCount += amount;
        this.onCrafting(stack);
    }

    protected void onCrafting(ItemStack stack){
        stack.onCrafting(this.thePlayer.world, this.thePlayer, this.removeCount);
        this.removeCount = 0;
    }
}

Вот код моего слота ,но броню можно ложить в слот EntityEquipmentSlot
я не знаю как добавить свои слоты в EntityEquipmentSlot...
 
Сверху