Накинуть атрибут на игрока

Версия Minecraft
1.12.2
API
Forge
122
4
6
Привет. Не могу накинуть на игрока атрибут брони. Предмет находится в кастомном слоте. Хз как это сделать не используя EntityEquipmentSlot
Java:
@Override
    public void onWornTick(ItemStack stack, EntityLivingBase entityBase) {
        if (entityBase instanceof EntityPlayer) {
            EntityPlayer player = (EntityPlayer) entityBase;
            Multimap<String, AttributeModifier> multimap = getAttributeModifiers(null, stack);
            for (int i = 0; i < stack.getMaxStackSize() + 1; i++) {
                if (stack.getCount() == i) {
                    player.getAttributeMap().applyAttributeModifiers(multimap);
                }
            }
        }
    }
 
Решение
Вот так добавляешь:
Java:
    private UUID ARMOR_UUID = UUID.fromString("3548342c-1bcb-4d61-aae5-3cf4330f02a4"); // любой UUID

    public void setArmor(EntityPlayer player, Double value) {
        IAttributeInstance attribute = player.getEntityAttribute(SharedMonsterAttributes.ARMOR);
        AttributeModifier modifier = attribute.getModifier(ARMOR_UUID);
        if (modifier != null) {
            attribute.removeModifier(modifier);
        }
        if (value != 0) {
            attribute.applyModifier(new AttributeModifier(ARMOR_UUID, "armor", value, 0).setSaved(true));
        }
    }

Вот так удаляешь :
Java:
        IAttributeInstance attribute = player.getEntityAttribute(SharedMonsterAttributes.ARMOR);
        AttributeModifier...
86
4
19
Вот так добавляешь:
Java:
    private UUID ARMOR_UUID = UUID.fromString("3548342c-1bcb-4d61-aae5-3cf4330f02a4"); // любой UUID

    public void setArmor(EntityPlayer player, Double value) {
        IAttributeInstance attribute = player.getEntityAttribute(SharedMonsterAttributes.ARMOR);
        AttributeModifier modifier = attribute.getModifier(ARMOR_UUID);
        if (modifier != null) {
            attribute.removeModifier(modifier);
        }
        if (value != 0) {
            attribute.applyModifier(new AttributeModifier(ARMOR_UUID, "armor", value, 0).setSaved(true));
        }
    }

Вот так удаляешь :
Java:
        IAttributeInstance attribute = player.getEntityAttribute(SharedMonsterAttributes.ARMOR);
        AttributeModifier modifier = attribute.getModifier(ARMOR_UUID);
        attribute.removeModifier(modifier);
 
Последнее редактирование:
Сверху