I have been experimenting with NBT tags and applying prefixes to tools in a random way. So far I have implemented the name/prefix and lore of each item because that can be done with NBT tags however I am struggling to find a way to implement instanced damage variables.
My aim here is to have different stats on a single weapon that is generated on creation while only using a single ID to do so. With the way the new attribute system works, it sets the attackDamage attribute for all instances of my class which is not what I'm really looking for.
Anyone have any ideas as to how I could achieve this?
EDIT: After a long time searching and fiddling I found the solution and figured I would post here so people knew. Because the multimap method of applying attributes ( as ItemSword usually does ) applied it to all instances I am now manually applying the NBT Tags related to attributes manually. Here is the code. I have put it in another class for my own uses but you should be able to see how it works.
public static void addModifier(ItemStack itemStack, String attribute, double amount, int mode){
NBTTagList list = new NBTTagList();
NBTTagCompound attributes = new NBTTagCompound();
attributes.setString("Name", "Attribute");
attributes.setString("AttributeName", attribute); // usually use SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName()
attributes.setDouble("Amount", amount);
attributes.setLong("UUIDMost", UUID.randomUUID().getMostSignificantBits());
attributes.setLong("UUIDLeast", UUID.randomUUID().getLeastSignificantBits());
attributes.setInteger("Operation", mode);
list.appendTag(attributes);
NBTTagCompound attributeModifierTag = new NBTTagCompound();
attributeModifierTag.setTag("AttributeModifiers", list);
itemStack.setTagCompound(attributeModifierTag);
}