🔌 Referência de Mixins e pontos de injeção bytecode
📌 Aviso sobre o Código-Fonte do Repositório: A documentação desta Wiki reflete o estado atual do código-fonte no repositório, podendo incluir commits recentes ou recursos em desenvolvimento não lançados no CurseForge ou Modrinth.
Better Bats uses Bytecode Mixins to modify vanilla entity and world spawning behavior while keeping world saves 100% vanilla-safe.
☕ Nota do desenvolvedor: Se você gosta dos morcegos em revoadas 3D realistas e fertilizando plantações com guano, apoie meu trabalho solo no Ko-fi!
📋 Tabela completa de injeções Mixin
| Mixin Class | Target Vanilla Class | Target Method | @At Injection Point | Cancellation / Behavior |
|---|---|---|---|---|
BatMixin | net.minecraft.world.entity.ambient.Bat | <init> | @At("TAIL") | Registers custom AI goals (Panic, Sleep, HuntLight, DiveBomb) into goalSelector. |
BatMixin | net.minecraft.world.entity.ambient.Bat | customServerAiStep | @At("HEAD") | cancellable = true. Completely replaces vanilla flight calculation with BatFlightHelper forces and resting logic. |
BatMixin | net.minecraft.world.entity.ambient.Bat | checkBatSpawnRules | @At("HEAD") | cancellable = true. Validates surface nighttime spawning rules. |
BatMixin | net.minecraft.world.entity.ambient.Bat | addAdditionalSaveData | @At("TAIL") | Writes betterbats:guano_ticks integer tag to ValueOutput. |
BatMixin | net.minecraft.world.entity.ambient.Bat | readAdditionalSaveData | @At("TAIL") | Reads betterbats:guano_ticks integer tag from ValueInput. |
GameEventDispatcherMixin | net.minecraft.world.level.gameevent.vibrations.VibrationSystem$Listener | handleGameEvent | @At("HEAD") | Notifies nearby bats of sprint/explosion vibrations. |
NaturalSpawnerMixin | net.minecraft.world.level.NaturalSpawner | m_6419_ | @At("HEAD") | Replaces vanilla bat spawn weights with bat_spawn_weight GameRule. |
See also: Arquitetura e pacotes | Perfis de comportamento AI
