Изменение модификатора дамага своему виду оружия

Версия Minecraft
1.7.10

Led

291
3
0
У меня есть своё оружие, молот.
Он наследуется у ItemSword (что бы в наковальне на него накладывались эффекты для мечей).

(когда я наследовал его у itemHammer, класса скопированного с ItemSword с измененным модификатором дамага, было все в порядке)

Теперь вопрос, как сделать, что бы урон, наносимый им рассчитывался по формуле (Урон материала + 8), а не (Урон материала + 4), как у кирок?

Или как сделать так, что у него был класс зачарования как у мечей?

Заранее спасибо!

Пытаюсь вот так, вроде в момент инициализации - урон 12 (по дебагу), а потом вижу что всего 8 (как у меча).

Код:
public class itemCrystalHammer extends ItemSword {
    private IIcon theIcon; 
    private float field_150934_a;
 public itemCrystalHammer(String unlocalizedName) 
 {
        super(ModMaterials.CRYSTAL);
        this.setUnlocalizedName(unlocalizedName);
        this.setCreativeTab(ModCreativeTabs.tabLWMTool);
        this.setTextureName(LWMTool.MOD_ID + ":woodHandleHummer");
        this.field_150934_a = 8.0F + ModMaterials.CRYSTAL.getDamageVsEntity();
 }
 
    @SideOnly(Side.CLIENT)
    public boolean requiresMultipleRenderPasses()
    {
        return true;
    }
    
 @SideOnly(Side.CLIENT)
    public void registerIcons(IIconRegister icon)
       {
           super.registerIcons(icon);
           this.theIcon = icon.registerIcon(LWMTool.MOD_ID + ":crystalHummerHead");
       }
 
 @SideOnly(Side.CLIENT)
 public IIcon getIconFromDamageForRenderPass(int i1, int i2)
 {
       return i2 > 0 ? this.theIcon : super.getIconFromDamageForRenderPass(i1, i2);
 }
 
 @Override
 public Multimap getItemAttributeModifiers(){
        Multimap multimap = super.getItemAttributeModifiers();
        multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), new AttributeModifier(field_111210_e, "Weapon modifier", (double)this.field_150934_a, 0));
        return multimap;
        }
 /*

    public int getDamageVsEntity(Entity entity)
    {
        return this.getMaxDamage() + 8;
    }*/
}
 
2,505
81
397
Смотри метод getItemAttributeModifiers. Тут multimap, т.е. могут быть несколько одинаковых ключей. В super.getItemAttributeModifiers() уже занесся ключ attackDamage, а затем ты всовываешь второй. Но походу обрабатывается только один ключ.
Как вариант, ты можешь удалить первый ключ перед занесением второго. Или просто распаковать метод getItemAttributeModifiers и написать то, что написано в методе Item#getItemAttributeModifiers
 

Led

291
3
0
Сделал вот так, создав новую multimap
Код:
private float mat;

this.mat = 8.0F + ModMaterials.CRYSTAL.getDamageVsEntity();

@Override
 public Multimap getItemAttributeModifiers(){
        Multimap multimap = HashMultimap.create();
        multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), new AttributeModifier(field_111210_e, "Weapon modifier", (double)mat, 0));
        return multimap;
        }
 
Сверху