Как сделать предмет выдавающий эффект брони. MC(1.7.10)

Версия Minecraft
1.7.10
API
Forge
47
4
8
Всем привет. Возник такой вопрос. Как это сделать ?
Вроде изучил класс ItemArmor и так и не понял как написать данный код...
Нужно чтоб предмет находящийся в инвентаре давал пассивный эффект защиты на 1 щиток.

Java:
public class LoreRing extends Item {
    public LoreRing(String name, String texture) {
        this.setMaxStackSize(1);
        this.setTextureName(main.MODID + ":" + texture);
        this.setCreativeTab(CreativeTabs.tabCombat);
        this.setUnlocalizedName(name);
        GameRegistry.registerItem(this, name);


    }
        // Наложить на предмет эффект зачарования
        @SideOnly(Side.CLIENT)
        public boolean hasEffect (ItemStack par1ItemStack){
            return true;
        }
        // Название предмета
        @SideOnly(Side.CLIENT)
        public EnumRarity getRarity (ItemStack par1ItemStack){
            return EnumRarity.rare;
        }

        public void addInformation (ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List,boolean par4){
            par3List.add(StatCollector.translateToLocal("Очень странное кольцо, да..."));
        }

        public void onUpdate (ItemStack par1ItemStack, World par2World, Entity par3Entity,int par4, boolean par5){
            super.onUpdate(par1ItemStack, par2World, par3Entity, par4, par5);
            EntityPlayer player = (EntityPlayer) par3Entity;

            for (int i = 0; i < 9; ++i) {
                if (player.inventory.getStackInSlot(i) == par1ItemStack) {
                    this.doEffect(player, par1ItemStack);
                    break;
                }
            }
        }

        public void doEffect (EntityPlayer player, ItemStack item){
            player.addPotionEffect(new PotionEffect(Potion.digSpeed.id, 0, 0));
            player.addPotionEffect(new PotionEffect(Potion.heal.id, 0, 0));
        }
    }
 
Решение
Java:
      public void onArmorTick(World world, EntityPlayer player, ItemStack itemStack) {
          if(player.getActivePotionEffect(Potion.nightVision) == null) {
             player.addPotionEffect(new PotionEffect(Potion.nightVision.id, -127));
          }
      }
Это в самой броне, думаю что делать сам додумаешь

Eifel

Модератор
1,623
78
608
Нет смысла проходить циклом по инвентарю, т.к. #onUpdate вызывается самим предметом, который находится в слоте. Для слотов брони - ItemArmor#onArmorTick. Еще, ты выдаешь эффект длительностью 0 тиков, соответственно, ты их и не увидишь.
 
202
14
36
Java:
      public void onArmorTick(World world, EntityPlayer player, ItemStack itemStack) {
          if(player.getActivePotionEffect(Potion.nightVision) == null) {
             player.addPotionEffect(new PotionEffect(Potion.nightVision.id, -127));
          }
      }
Это в самой броне, думаю что делать сам додумаешь
 
Последнее редактирование:
Сверху