Изменение дамага оружия

Версия Minecraft
1.12.2
Здравствуйте!

Есть ItemDagger extends ItemSword, который при регистрации принимает значение ToolMaterial material.

Как в зависимости от урона материала менять урон ItemDagger? Может есть другие способы? Что такое Multimap?
 
2,505
81
397
Multimap это ассоциативный контейнер, как и Map, но может хранить повторяющиеся ключи.
Ты копаешь в правильную сторону. Скопируй метод, где заполняется этот Multimap и замени число в атрибуте урона на свое.
 
Дело в том, что я толком и не знаю про Map и Multimap. Можно кусочек кода?)
Откуда ни ворую код, выдает ошибки, так как я под 1.12 делаю.
 
Код надо оформлять правильно!
Вот пример оружия. Multimap взял из класса ItemSword. При замене this.attackDamage ничего не меняется. Если в ATTACK_DAMAGE_MODIFIER просто написать число (1000F), тоже ничего не происходит
Java:
package ru.afvbkz.tescraft.Weapon;



import com.google.common.collect.Multimap;



import net.minecraft.entity.SharedMonsterAttributes;

import net.minecraft.entity.ai.attributes.AttributeModifier;

import net.minecraft.inventory.EntityEquipmentSlot;

import net.minecraft.item.ItemSword;



public class WeaponClaymore extends ItemSword

{

    private double attackDamage;

    public WeaponClaymore(String name, ToolMaterial material)

    {

        super(material);

        this.setRegistryName(name);

        this.setUnlocalizedName(name);

        this.attackDamage = 4.5*material.getAttackDamage();

        this.setMaxDamage(650);

      

    }

    public Multimap<String, AttributeModifier> getItemAttributeModifiers(EntityEquipmentSlot equipmentSlot)

    {

        Multimap<String, AttributeModifier> multimap = super.getItemAttributeModifiers(equipmentSlot);



        if (equipmentSlot == EntityEquipmentSlot.MAINHAND)

        {

            multimap.put(SharedMonsterAttributes.ATTACK_DAMAGE.getName(), new AttributeModifier(ATTACK_DAMAGE_MODIFIER, "Weapon modifier", (double)this.attackDamage, 0));

            multimap.put(SharedMonsterAttributes.ATTACK_SPEED.getName(), new AttributeModifier(ATTACK_SPEED_MODIFIER, "Weapon modifier", -2.4000000953674316D, 0));

        }



        return multimap;

    }

}
 
Последнее редактирование модератором:
Сверху