"Одеть броню"

Версия Minecraft
1.7.10
477
7
51
Привет, как можно одеть броню на игрока ? (через код).
И при смерти одевать броню и чтоб она не выпадала?
Т.е можно зделать выпадаймым только определенный предмет,
запретить менять броню и снимать(слотов вообще не будет).
Кто знает как можно реализовать это?
 
Решение
Привет.
Кто знает как можно реализовать это?
Ну, я.
как можно одеть броню на игрока ? (через код).
Посмотреть в код ItemArmor:
Java:
    /**
     * Called whenever this item is equipped and the right mouse button is pressed. Args: itemStack, world, entityPlayer
     */
    public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_)
    {
        int i = EntityLiving.getArmorPosition(p_77659_1_) - 1;
        ItemStack itemstack1 = p_77659_3_.getCurrentArmor(i);

        if (itemstack1 == null)
        {
            p_77659_3_.setCurrentItemOrArmor(i + 1, p_77659_1_.copy());  //Forge: Vanilla bug fix associated with fixed setCurrentItemOrArmor indexs for players...

timaxa007

Модератор
5,831
409
672
Привет.
Кто знает как можно реализовать это?
Ну, я.
как можно одеть броню на игрока ? (через код).
Посмотреть в код ItemArmor:
Java:
    /**
     * Called whenever this item is equipped and the right mouse button is pressed. Args: itemStack, world, entityPlayer
     */
    public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_)
    {
        int i = EntityLiving.getArmorPosition(p_77659_1_) - 1;
        ItemStack itemstack1 = p_77659_3_.getCurrentArmor(i);

        if (itemstack1 == null)
        {
            p_77659_3_.setCurrentItemOrArmor(i + 1, p_77659_1_.copy());  //Forge: Vanilla bug fix associated with fixed setCurrentItemOrArmor indexs for players.
            p_77659_1_.stackSize = 0;
        }

        return p_77659_1_;
    }
И при смерти одевать броню и чтоб она не выпадала?
Можно как пример воспользоваться - [1.7.10] Give NoDrops (слив кода)
И при выпадении из слота брони, добавить в NBT номер слота из которого он выпал. А когда респавнишся, проверяешь на то, что у этого предмета в NBT есть параметр из какого слота он пытался выпасть и сетануть его в старый слот.
 
477
7
51
p_77659_3_.setCurrentItemOrArmor(i + 1, p_77659_1_.copy());
Обьясни пожалуйста про их аргументы первое это ид слота? а 2 это что мне нужно одеть или как? как мне сделать чтоб в 3 слот(шлем) вставить свой шлем?
 

timaxa007

Модератор
5,831
409
672
Обьясни пожалуйста про их аргументы
EntityLiving, но в данном случаи используеться EntityPlayer.
ID слота. 0 - предмет, а 1, 2, 3 и 4 слоты для брони.
ItemStack -это тот предмет, который обычно в руке.
 
477
7
51
ItemStack -это тот предмет, который обычно в руке.
да про эенити то я понял и так и про ид а вот мне надо не который в руке а который будет вообще всегда ставиться т.е броня вообще изменяться не должна и быть всегда одета чтоб не выпадала и не изменялась
 

timaxa007

Модератор
5,831
409
672
Java:
player.setCurrentItemOrArmor(1, new ItemStack(MyMod.my_armor_helmet));
player.setCurrentItemOrArmor(2, new ItemStack(MyMod.my_armor_chestplate));
player.setCurrentItemOrArmor(3, new ItemStack(MyMod.my_armor_pants));
player.setCurrentItemOrArmor(4, new ItemStack(MyMod.my_armor_boots));
Ну или на оборот:
Java:
player.setCurrentItemOrArmor(4, new ItemStack(MyMod.my_armor_helmet));
player.setCurrentItemOrArmor(3, new ItemStack(MyMod.my_armor_chestplate));
player.setCurrentItemOrArmor(2, new ItemStack(MyMod.my_armor_pants));
player.setCurrentItemOrArmor(1, new ItemStack(MyMod.my_armor_boots));
---
Где MyMod.my_armor_helmet - это переменная на предмет твоей брони для слота шлем.
Где MyMod.my_armor_chestplate - это переменная на предмет твоей брони для слота нагрудник.
Где MyMod.my_armor_pants - это переменная на предмет твоей брони для слота штаны.
Где MyMod.my_armor_boots - это переменная на предмет твоей брони для слота ботинки.
 
Сверху