#Trying to apply attributes to custom weapons.

6 messages · Page 1 of 1 (latest)

desert magnet
#

Item.Settings#attributeModifiers
See Items.class

tribal ridge
tribal ridge
#

If I try to make another class file CustomSwordItem.java `package name.sengoku;

import com.google.common.collect.ImmutableMultimap;
import com.google.common.collect.Multimap;
import net.minecraft.entity.EquipmentSlot;
import net.minecraft.entity.attribute.EntityAttribute;
import net.minecraft.entity.attribute.EntityAttributeModifier;
import net.minecraft.entity.attribute.EntityAttributes;
import net.minecraft.item.Item;
import net.minecraft.item.SwordItem;
import net.minecraft.item.ToolMaterial;

import java.util.UUID;

public class CustomSwordItem extends SwordItem {
private final Multimap<EntityAttribute, EntityAttributeModifier> attributeModifiers;

private static final UUID ATTACK_DAMAGE_MODIFIER = UUID.fromString("FA233E1C-4180-4865-B01B-BCCE9785ACA3");
private static final UUID ATTACK_SPEED_MODIFIER = UUID.fromString("FA233E1C-4180-4865-B01B-BCCE9785ACA4");

public CustomSwordItem(ToolMaterial material, Item.Settings settings) {
    super(material, settings);
    ImmutableMultimap.Builder<EntityAttribute, EntityAttributeModifier> builder = ImmutableMultimap.builder();

    builder.put(EntityAttributes.GENERIC_ATTACK_DAMAGE,
            new EntityAttributeModifier(ATTACK_DAMAGE_MODIFIER, "Weapon modifier", material.getAttackDamage(), EntityAttributeModifier.Operation.ADD));

    builder.put(EntityAttributes.GENERIC_ATTACK_SPEED,
            new EntityAttributeModifier(ATTACK_SPEED_MODIFIER, "Weapon modifier", -2.4, EntityAttributeModifier.Operation.ADD));

    attributeModifiers = builder.build();
}

@Override
public Multimap<EntityAttribute, EntityAttributeModifier> getAttributeModifiers(EquipmentSlot slot) {
    if (slot == EquipmentSlot.MAINHAND) {
        return attributeModifiers;
    }
    return super.getAttributeModifiers(slot);
}

}
`

#

and moditems being this `package name.sengoku;

import net.minecraft.item.Item;
import net.minecraft.item.ToolMaterials;
import net.minecraft.registry.Registry;
import net.minecraft.registry.Registries;
import net.minecraft.util.Identifier;

public class ModItems {
public static final Item IRON_YARI = registerItem("iron_yari",
new CustomSwordItem(ToolMaterials.IRON, new Item.Settings()));

public static final Item IRON_NAGINATA = registerItem("iron_naginata",
        new CustomSwordItem(ToolMaterials.IRON, new Item.Settings()));

public static void registerItems() {
    // Registering static items forces initialization, call this from your mod's main class init method
}

private static Item registerItem(String name, Item item) {
    return Registry.register(Registries.ITEM, new Identifier(Sengoku.MOD_ID, name), item);
}

}
`

#

I just get build failed error

#

-D:\Minecraft\mods\mod workspace\sengoku template\src\main\java\name\sengoku\CustomSwordItem.java - [error] cannot find symbol symbol: variable ADD location: class net.minecraft.entity.attribute.EntityAttributeModifier.Operation:26:149-4 - [error] cannot find symbol symbol: variable ADD location: class net.minecraft.entity.attribute.EntityAttributeModifier.Operation:29:126-4 - [error] method does not override or implement a method from a supertype:34:5-9 - [error] method getAttributeModifiers in class net.minecraft.item.Item cannot be applied to given types; required: no arguments found: net.minecraft.entity.EquipmentSlot reason: actual and formal argument lists differ in length:39:21-22 -D:\Minecraft\mods\mod workspace\sengoku template\src\main\java\name\sengoku\ModItems.java - [error] Identifier(java.lang.String,java.lang.String) has private access in net.minecraft.util.Identifier:21:51-36 -D:\Minecraft\mods\mod workspace\sengoku template\src\main\java\name\sengoku\ModBlocks.java - [advice] Some input files use or override a deprecated API. - [advice] Recompile with -Xlint:deprecation for details.