I am trying to edit the Attributes of a Custom Class extending SwordItem.
To do that I am Overriding the getAttributeModifiers Method like this:
@Override
public Multimap<Attribute, AttributeModifier> getAttributeModifiers(EquipmentSlotType slot, ItemStack stack)
{
final Multimap<Attribute, AttributeModifier> attributes = super.getAttributeModifiers(slot, stack);
if(slot == EquipmentSlotType.MAINHAND)
{
replaceModifier(attributes, Attributes.ATTACK_SPEED, EnmaItem.ATTACK_SPEED_MODIFIER, 2);
}
return attributes;
}
with Extracted Method replaceModifier:
private void replaceModifier(Multimap<Attribute, AttributeModifier> attributes, Attribute attribute, UUID id, double multiplier)
{
final Collection<AttributeModifier> modifiers = attributes.get(attribute);
AttributeModifier selectedModifier = null;
for (AttributeModifier modifier: modifiers)
{
if(modifier.getID().equals(id))
{
selectedModifier = modifier;
break;
}
}
if(selectedModifier != null)
{
modifiers.remove(selectedModifier);
modifiers.add(new AttributeModifier(
selectedModifier.getID(),
selectedModifier.getName(),
selectedModifier.getAmount() * multiplier,
selectedModifier.getOperation()));
}
}
But I get an UnsupportedOpterationException which means that the modifiers.remove() is not supported by my collection.
I just don't know how I can try to edit the Attributes differntly.