51 lines
1.9 KiB
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;
|
|
}
|
|
}
|