🏛️ システムアーキテクチャとパッケージ構成
📌 リポジトリソースコードに関する免責事項: 本Wikiドキュメントはリポジトリの最新ソースコード状態を反映しており、CurseForgeやModrinthで公開されているリリース版に含まれない開発中機能を含む場合があります。
| Design Principle | Architectural Policy |
|---|---|
| Core Philosophy | Vanilla Outsider (VO) — Diegetic, non-destructive, input-consistent |
| Design Rule | 1 File, 1 Function Law (Single-responsibility Cohesion) |
| Main Package Namespace | net.vanillaoutsider.betterbats |
| Thread Safety Model | Server-Thread Main Looper Sync (No async world mutation) |
☕ 個人開発者ノート: 3D BOIDsによるコウモリのリアルな群飛やグアノによる作物施肥を気に入っていただけたら、ぜひ Ko-fi でのご支援をお願いします!
🌳 パッケージ階層ツリー
net.vanillaoutsider.betterbats
├── BetterBatsFabric.java # Mod initialization, GameRules registration
├── BetterBatsFabricClient.java # Client render layer, debug toggles
├── ai/ # AI Goal domain logic
│ ├── BatDiveBombGoal.java # Predatory hunting of silverfish/endermites
│ ├── BatFlightHelper.java # 3D BOIDs flocking and vector math
│ ├── BatHuntLightGoal.java # Nighttime phototaxis light orbiting
│ ├── BatPanicGoal.java # Vibration acoustic panic dispersion
│ ├── BatRoostHelper.java # Daytime roost surface validator
│ └── BatSleepGoal.java # Roosting and guano accumulation
├── config/ # YACL v3 and Cloth Config menus
│ ├── BetterBatsConfig.java # Plain Java config data model
│ └── ModMenuIntegration.java # ModMenu screen factory provider
└── mixin/ # Bytecode injection layer
├── BatMixin.java # Injects AI goals, flight forces, save data
├── GameEventDispatcherMixin.java # Acoustic vibration listener hook
└── NaturalSpawnerMixin.java # Dynamic ambient spawner weight replacement🧩 主要クラスの責務
BatFlightHelper: Stateless mathematical engine computing flocking, cohesion, separation, alignment, and altitude bounds.BatRoostHelper: Checks valid roosting blocks (dripstone, chains, lanterns, leaves, solid ceilings).BatMixin: Surgical bytecode hooks ensuring complete vanilla world-save safety.
Next: Mixin リファレンスと注入点 | AI行動プロファイルと状態
