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

40 lines
1.3 KiB
Java

package net.minecraft.world.entity.monster.breeze;
import java.util.Map;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.util.Unit;
import net.minecraft.world.effect.MobEffects;
import net.minecraft.world.entity.ai.behavior.Behavior;
import net.minecraft.world.entity.ai.memory.MemoryModuleType;
import net.minecraft.world.entity.ai.memory.MemoryStatus;
public class ShootWhenStuck extends Behavior<Breeze> {
public ShootWhenStuck() {
super(
Map.of(
MemoryModuleType.ATTACK_TARGET,
MemoryStatus.VALUE_PRESENT,
MemoryModuleType.BREEZE_JUMP_INHALING,
MemoryStatus.VALUE_ABSENT,
MemoryModuleType.BREEZE_JUMP_TARGET,
MemoryStatus.VALUE_ABSENT,
MemoryModuleType.WALK_TARGET,
MemoryStatus.VALUE_ABSENT,
MemoryModuleType.BREEZE_SHOOT,
MemoryStatus.VALUE_ABSENT
)
);
}
protected boolean checkExtraStartConditions(ServerLevel serverLevel, Breeze breeze) {
return breeze.isPassenger() || breeze.isInWater() || breeze.getEffect(MobEffects.LEVITATION) != null;
}
protected boolean canStillUse(ServerLevel serverLevel, Breeze breeze, long l) {
return false;
}
protected void start(ServerLevel serverLevel, Breeze breeze, long l) {
breeze.getBrain().setMemoryWithExpiry(MemoryModuleType.BREEZE_SHOOT, Unit.INSTANCE, 60L);
}
}