What if we had something like a AnimalSpawnerEntry with the fields contained in Animal (so age, is adult, etc)?
And a ProjectileSpawnerEntry that remembers the Shooter?

What if we had World.spawnEntity(SpawnerEntry) which just executes one of these?