I'd like to suggest that you add a way to add EntityAIBase instances to the AI lists for EntityCreatures
As it is right now, Entities create new instances of these classes at their initialization for them to use later on when needed. Their existence doesn't save over sessions and makes it quite easy to just add them yourself to individual entities.
However, if you want to assign a EntityAIBase controller to entities in bulk, like say for example, every single wolf on the entire planet should look up to the sky if there is full moon or something.
Without a way to add AI controllers to all entities of a type, my only options right now if I were to do such a project would be to either overwrite the Wolf class, or (as I am doing right now for something similar and hating) put a routine in the onTick function in the mod_ class that checks every single loaded entity in the world to see if they match the criteria (is a wolf), checks if they do not already have an instance of this AI controller in their list, then adds the AI controller if it doesn't.
As you might expect, that is quite cumbersome and intensive, though I have yet to come up with a better solution.... (please do tell me if you can)
The only other idea I have would be to have a hook that is called every time an entity is spawned anywhere on the map so that and AI controller can be given to it. I don't exactly have an in-depth knowledge of forge, but I have yet to see any evidence saying that this already exists, however that would still be pretty bad.
So, my suggestion summarized:
Please add a way to register EntityAIBase instances to entity types. Perhaps even just the EntityCreature class and let the AI controller sort it out and determine if it should be called based on it's entity's class type (is wolf).
Also, since some entities don't take advantage of the new system yet, it would be very helpful if you could also have some sorta mod-flag that says "if this type of entity does not have AI tasks to handle standard movement and actions, however still has modded AI tasks, still update the tasks"
A couple of uses I have thought of (not all the most efficient, but still ideas):
-Splitting up the work of certain blocks that need to control mobs and giving the work to the mobs themselves. For example, a bait block, instead of AABB checking for all mobs within a distance and then attracting them to it, have the mobs check every few hundred ticks to see if that block is nearby and having him walk to it.
(also gets rid of the hassle of fighting with the mob's existing AI which may want to go to another direction. Since EntityAIBase controllers have a concurrency manager (MutexBit) and a priority order, the AI trying to get a zombie under the tree will give up if an AI ranked above it tries to get it to the block.)
-Giving some sort of visual effect to all entities: Entities start throwing off particles of a certain color depending on their health or something
-Making wolves howl to the moon
-All endermen automatically get pissed when the enderdragon is dead
Helpful things to note:
-Mobs handle themselves: You don't have to constantly tell all the mobs what to do like "Hey wolf, look up into the sky" every single tick
-Your commands can overrule orders given by other, vanilla AI controllers
-Isn't restricted to nearby entities: You could just check every tick for all Endermen within 64blocks of the player to get pissed, but again, checking every tick would be rather costly when compared to an AI controller which will run with the entity and only need to check if the Enderdragon is dead or not.
-If an instance is added at initialization, like if it were registered, then there would be no need to check to see if there already was one in the entity's list, which is costly when you are constantly checking for nearby entities to add the AI to and may see an entity more than once.
Bad things to note:
-Not all entities use the new AI template :[
Just an idea, personally it would help me a lot and I think it would help others once they consider the possibility too.
Thank you for your time