minecraft-src/net/minecraft/world/entity/monster/CrossbowAttackMob.java
2025-07-04 01:41:11 +03:00

31 lines
1.1 KiB
Java

package net.minecraft.world.entity.monster;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.projectile.ProjectileUtil;
import net.minecraft.world.item.CrossbowItem;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Items;
import org.jetbrains.annotations.Nullable;
public interface CrossbowAttackMob extends RangedAttackMob {
void setChargingCrossbow(boolean chargingCrossbow);
/**
* Gets the active target the Task system uses for tracking
*/
@Nullable
LivingEntity getTarget();
void onCrossbowAttackPerformed();
default void performCrossbowAttack(LivingEntity user, float velocity) {
InteractionHand interactionHand = ProjectileUtil.getWeaponHoldingHand(user, Items.CROSSBOW);
ItemStack itemStack = user.getItemInHand(interactionHand);
if (itemStack.getItem() instanceof CrossbowItem crossbowItem) {
crossbowItem.performShooting(user.level(), user, interactionHand, itemStack, velocity, 14 - user.level().getDifficulty().getId() * 4, this.getTarget());
}
this.onCrossbowAttackPerformed();
}
}