🤖 행동 프로필, 목표 플래그 및 상태 접근자
📌 저장소 소스 코드 면책 조항: 본 위키 문서는 저장소의 현재 소스 코드 상태를 반영하며, CurseForge 및 Modrinth의 공개 릴리스 빌드보다 앞선 미출시 커밋이나 개발 중인 기능을 포함할 수 있습니다.
📊 AI Goal 우선순위 매트릭스
All custom goals set move flags (this.setFlags(EnumSet.of(Goal.Flag.MOVE))) to prevent conflicting movement vector calculations:
| Priority Level | Goal Class | Activation Condition | Behavior Summary |
|---|---|---|---|
| Priority 1 | BatPanicGoal | Acoustic vibration detected (distSq < 256.0) | Instant flock dispersion, rapid fleeing away from disturbance |
| Priority 2 | BatSleepGoal | Daytime (world.isDay()) or darkness retreat | Seeks dark ceilings, stalactites, lanterns; hangs inverted |
| Priority 3 | BatHuntLightGoal | Nighttime & artificial light within 10 blocks | Approaches lantern/torch, transitions into circular banking orbit |
| Priority 4 | BatDiveBombGoal | Silverfish / Endermite within 8 blocks | Ascends, locks target, delivers high-speed dive-bomb impact |
| Priority 5 | BatFlightHelper / Flocking | Airborne, no high-priority interrupts | Continuous 3D BOIDs cohesion, alignment, separation flight |
☕ 1인 개발자 노트: 사실적인 3D BOIDs 군집 비행과 농작물을 비옥하게 만드는 구아노 시비 시스템이 마음에 드셨다면, Ko-fi에서 개발자를 후원해 주세요!
🔌 BatStateAccessor 인터페이스 규약
BatStateAccessor allows external mods or internal mixins to inspect live bat state without reflection:
java
public interface BatStateAccessor {
boolean betterbats$isPanicking();
boolean betterbats$isHuntingLight();
BlockPos betterbats$getTargetLightPos();
}See also: 아키텍처 및 패키지 구조 | 타 모드 연동 가이드
