minecraft-src/net/minecraft/world/entity/ai/goal/target/OwnerHurtByTargetGoal.java
2025-07-04 01:41:11 +03:00

48 lines
1.4 KiB
Java

package net.minecraft.world.entity.ai.goal.target;
import java.util.EnumSet;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.TamableAnimal;
import net.minecraft.world.entity.ai.goal.Goal;
import net.minecraft.world.entity.ai.targeting.TargetingConditions;
public class OwnerHurtByTargetGoal extends TargetGoal {
private final TamableAnimal tameAnimal;
private LivingEntity ownerLastHurtBy;
private int timestamp;
public OwnerHurtByTargetGoal(TamableAnimal tameAnimal) {
super(tameAnimal, false);
this.tameAnimal = tameAnimal;
this.setFlags(EnumSet.of(Goal.Flag.TARGET));
}
@Override
public boolean canUse() {
if (this.tameAnimal.isTame() && !this.tameAnimal.isOrderedToSit()) {
LivingEntity livingEntity = this.tameAnimal.getOwner();
if (livingEntity == null) {
return false;
} else {
this.ownerLastHurtBy = livingEntity.getLastHurtByMob();
int i = livingEntity.getLastHurtByMobTimestamp();
return i != this.timestamp
&& this.canAttack(this.ownerLastHurtBy, TargetingConditions.DEFAULT)
&& this.tameAnimal.wantsToAttack(this.ownerLastHurtBy, livingEntity);
}
} else {
return false;
}
}
@Override
public void start() {
this.mob.setTarget(this.ownerLastHurtBy);
LivingEntity livingEntity = this.tameAnimal.getOwner();
if (livingEntity != null) {
this.timestamp = livingEntity.getLastHurtByMobTimestamp();
}
super.start();
}
}