Combit/src/main/java/io/gitlab/jfronny/combit/mixin/MiningToolItemMixin.java

51 lines
1.9 KiB
Java

package io.gitlab.jfronny.combit.mixin;
import com.google.common.collect.ImmutableMultimap;
import com.google.common.collect.Multimap;
import io.gitlab.jfronny.combit.MiningToolItemExt;
import net.minecraft.entity.attribute.EntityAttribute;
import net.minecraft.entity.attribute.EntityAttributeModifier;
import net.minecraft.entity.attribute.EntityAttributes;
import net.minecraft.item.MiningToolItem;
import net.minecraft.item.ToolItem;
import net.minecraft.item.ToolMaterial;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Mutable;
import org.spongepowered.asm.mixin.Shadow;
@Mixin(MiningToolItem.class)
public abstract class MiningToolItemMixin extends ToolItem implements MiningToolItemExt {
@Mutable
@Shadow @Final private Multimap<EntityAttribute, EntityAttributeModifier> attributeModifiers;
@Mutable
@Shadow @Final private float attackDamage;
public MiningToolItemMixin(ToolMaterial material, Settings settings) {
super(material, settings);
}
@Override
public void setDamage(float damage) {
this.attackDamage = damage;
ImmutableMultimap.Builder<EntityAttribute, EntityAttributeModifier> builder = ImmutableMultimap.builder();
builder.put(EntityAttributes.GENERIC_ATTACK_DAMAGE,
new EntityAttributeModifier(ATTACK_DAMAGE_MODIFIER_ID,
"Tool modifier",
this.attackDamage,
EntityAttributeModifier.Operation.ADDITION));
this.attributeModifiers.forEach((k, v) -> {
if (!k.getTranslationKey().equals(EntityAttributes.GENERIC_ATTACK_DAMAGE.getTranslationKey())) {
builder.put(k, v);
}
});
this.attributeModifiers = builder.build();
}
@Override
public float getDamage() {
return attackDamage;
}
}