58 lines
2.5 KiB
Java
58 lines
2.5 KiB
Java
package net.minecraft.world.item;
|
|
|
|
import net.minecraft.world.entity.monster.SharedMonsterAttributes;
|
|
import net.minecraft.world.entity.ai.attributes.AttributeModifier;
|
|
import com.google.common.collect.Multimap;
|
|
import net.minecraft.world.level.BlockGetter;
|
|
import net.minecraft.core.BlockPos;
|
|
import net.minecraft.world.level.Level;
|
|
import net.minecraft.world.entity.EquipmentSlot;
|
|
import net.minecraft.world.entity.LivingEntity;
|
|
import net.minecraft.world.level.block.state.BlockState;
|
|
import net.minecraft.world.level.block.Block;
|
|
import java.util.Set;
|
|
|
|
public class DiggerItem extends TieredItem {
|
|
private final Set<Block> blocks;
|
|
protected final float speed;
|
|
protected final float attackDamage;
|
|
protected final float attackSpeed;
|
|
|
|
protected DiggerItem(final float float1, final float float2, final Tier bfp, final Set<Block> set, final Properties a) {
|
|
super(bfp, a);
|
|
this.blocks = set;
|
|
this.speed = bfp.getSpeed();
|
|
this.attackDamage = float1 + bfp.getAttackDamageBonus();
|
|
this.attackSpeed = float2;
|
|
}
|
|
|
|
@Override
|
|
public float getDestroySpeed(final ItemStack bek, final BlockState byg) {
|
|
return this.blocks.contains(byg.getBlock()) ? this.speed : 1.0f;
|
|
}
|
|
|
|
@Override
|
|
public boolean hurtEnemy(final ItemStack bek, final LivingEntity akw2, final LivingEntity akw3) {
|
|
bek.<LivingEntity>hurtAndBreak(2, akw3, akw -> akw.broadcastBreakEvent(EquipmentSlot.MAINHAND));
|
|
return true;
|
|
}
|
|
|
|
@Override
|
|
public boolean mineBlock(final ItemStack bek, final Level bjt, final BlockState byg, final BlockPos fk, final LivingEntity akw) {
|
|
if (!bjt.isClientSide && byg.getDestroySpeed(bjt, fk) != 0.0f) {
|
|
bek.<LivingEntity>hurtAndBreak(1, akw, akw -> akw.broadcastBreakEvent(EquipmentSlot.MAINHAND));
|
|
}
|
|
return true;
|
|
}
|
|
|
|
@Override
|
|
public Multimap<String, AttributeModifier> getDefaultAttributeModifiers(final EquipmentSlot aks) {
|
|
final Multimap<String, AttributeModifier> multimap3 = super.getDefaultAttributeModifiers(aks);
|
|
if (aks == EquipmentSlot.MAINHAND) {
|
|
multimap3.put(SharedMonsterAttributes.ATTACK_DAMAGE.getName(), new AttributeModifier(DiggerItem.BASE_ATTACK_DAMAGE_UUID, "Tool modifier", this.attackDamage, AttributeModifier.Operation.ADDITION));
|
|
multimap3.put(SharedMonsterAttributes.ATTACK_SPEED.getName(), new AttributeModifier(DiggerItem.BASE_ATTACK_SPEED_UUID, "Tool modifier", this.attackSpeed, AttributeModifier.Operation.ADDITION));
|
|
}
|
|
return multimap3;
|
|
}
|
|
}
|