Technical Minecraft Wikia
Advertisement

This page contains all EntityAI classes, and an interpretation of their code.

These classes contain information about the behaviour of certain entities. The reason these behaviours get their own page separately from the entities using them is, that many behaviours are used by many different entities. For example the class EntityAIWander is used by Blazes, Creepers, Endermen, Endermites, Guardians, Iron Golems, Silverfish, Skeletons, Snowmans, Spiders (including Cave Spiders), Witches, Zombies (including Pigman Zombies and Giants), Chickens, Cows (including Mooshroms), Horses, Ocelots, Pigs, Rabbits, Sheep, Villagers, Wolves and Withers. Therefore it would be redundant to explain each behaviour in detail on each of the page about the affected entities and instead you can find here, how exactly mobs wander around randomly, and other stuff.

Classes used by multiple entities[]

ArrowAttack[]

This class is used by Skeletons that hold a bow, Snowmans, Witches and Withers.

This class is only active, if the entity using it has a target. If the entity can see its target for a full 20 game ticks, the entity checks whether the target is within its maximum attack distance in a straight line. Then, if the target is within its attack range, the entity stops pathfinding. If the target is not within its attack range, the entity continues pathfinding. When it has finished pathfinding, the entity starts looking at its target. If the entity is able to shoot its target, and the cooldown between each shot is finished, the entity fires a ranged attack towards its target and resets the cooldown timer.

The different types of entities using this class, use it with the following values:

maxAttackDistance maxRangedAttackTime field_96561_g moveSpeed
Skeleton 15 60 20 1
Snowman 10 20 20 1,25
Witch 10 60 60 1
Wither 20 40 40 1

For snowmans, witches and withers, the cooldown time equals the maxRangedAttackTime value, because maxRangedAttackTime - field_96561_g is 0 and the first part of the formula disappears.

For skeletons, the cooldown time also depends on the distance to the target. Generally the cooldown time can be calculated using the following formula (click for full zoom):

Formula2

AttackOnCollide[]

This class is used by Creepers, Endermen, Endermite, Iron Golems, Silverfish, Skeletons, Zombies (including Giants and PigZombies) and Wolves.

This class remains inactive for Skeletons that have a bow.

If the entity E, that uses this class, has a target, that is not dead, and if there is a path from E to the target, then E will tell its Pathfinding AI, that it wants to walk towards the target with the a speed of speedTowardsTarget (see table below). If E has a classTarget (see table below) it will additionally check, whether the target belongs to that classTarget. If the target should not belong to the classTarget, E will not activate AttackOnCollide. If E has no classTarget, E will use AttackOnCollide on any entity it happens to target.

While AttackOnCollide is active, E will do the following things every tick:

First E will check, whether it wants to stop using AttackOnCollide. This happens if the target is dead or not existent. If E has no longMemory (see table below) and there is no path to the target, E will also stop using AttackOnCollide. If E has a longMemory, then it will check whether it has a home. Because if E has a home, and the distance between the target and the homePosition is greater than the maximumHomeDistance, then E will discontinue using AttackOnCollide. If E however has a longMemory and no home, then it will hunt down its target until the target is dead.

After checking all that stuff, E will actually do something every tick. First it will look at its target. Then it will do some fairly obscure checks, to give some unnamed completely unused variables some meaningless values. After that it will check whether the square of the distance between E and the target is less than (E.width^2 *4 + target.width). If that should be the case and the attack cooldown is over, then E will get an attack cooldown of 20 ticks. Now if E holds an item in its hand, it will swing that item. E will also attack the target.

The different types of entities using this class, use it with the following values:

speedTowardsTarget longMemory classTarget
Creeper 1 false -
Endermen 1 false -
Endermite 1 false Player
Iron Golem 1 true -
Silverfish 1 false Player
Skeleton 1.2 false Player
Zombie 1 false Player
Wolf 1 true -

AvoidEntity[]

This class is used by Creepers, Skeletons and Villagers. Rabbits use a modified version of this class.

(More information needs to be added.)

The different types of entities using this class, use it with the following values:

avoided Entity field_179508_f farSpeed nearSpeed
Creeper Ocelot 6 1 1.2
Skeleton Wolf 6 1 1.2
Villager Zombie 8 0.6 0.6
Rabbit Wolf 16 1.33 1.33

The field value is probably used for how close the avoided Entity needs to be, once the avoided entity is in this field, the other entity (Creeper in this example) will move at a speed of 1.2, once the avoided entity is out of the field, the creeper will move at a speed of 1 away from the entity!

FindEntityNearestPlayer[]

This class is used by Ghasts and Slimes (including Magma Cubes)..

(More information needs to be added.)

FollowOwner[]

This class is used by Ocelots and Wolves.

(More information needs to be added.)

field_75336_f minDist maxDist
Ocelot 1 10 5
Wolf 1 10 2

Note: The meaning of minDist and maxDist is apparently not intuitive.

FollowParent[]

This class is used by Chickens, Cows (including Mooshrooms), Horses, Pigs and Sheep.

If the growing age of the user is smaller than 0, it will constantly search for entities with the same type as the user in a 8x4x8 box centered around the user. Out of the found entities, it will determine the closest entity, whose growing age is 0 or greater. If there is such an entity, and that entity is more than 3 blocks away, it will be stored in a variable called parentAnimal, and this AI-class will activate. It will continue executing until the growing age of the user gets 0 or greater, or the parentAnimal stops being alive, or the parentAnimal is more than 16 or less than 3 blocks away.

Whenever this task is updated, a variable called field_75345_d will be decreased by 1. If it gets below 0, it will be reset to 10 and the user will use its path navigator to go towards the parentAnimal, with a speed of field_75347_c (see table below).

field_75347_c
Chicken 1.1
Cow 1.25
Horse 1.0
Pig 1.1
Sheep 1.1

HurtByTarget[]

This class is used by Blazes, Creepers, Endermen, Endermite, Iron Golems, Silverfish, Skeletons, Spiders (including Cave Spiders), Witches, Zombies (including Giants), Withers, Killer Bunnies (which are a special kind of Rabbit) and Wolves. PigZombies also use a modified version of this class.

entityCallsForHelp field_179447_c
Blaze true -
Creeper false -
Enderman false -
Endermite true -
Iron Golem false -
Silverfish true -
Skeleton false -
Spider false -
Witch false -
Wither false -
Killer Bunny false -
Wolf true -
PigZombie true -

(More information needs to be added)

LeapAtTarget[]

This class is used by Spiders, Ocelots and Wolves.

This class will only activate, if the entity using it has a target. If the distance between the entity and the target is more than 2, but less than 4 and the entity is on the ground, then the entity has every tick a 25% chance of doing the following things:

The x-motion and z-motion will be increased by 20%. The entity will also get some x and z motion added, so that it gains in total a 0.4 blocks/tick motion directed at the target.

The y-motion will be set to a variable called leapMotionY.

The different types of entities using this class, use it with the following values:

leapMotionY
Spider 0.4
Ocelot 0.3
Wolf 0.4

LookIdle[]

This class is used by Blazes, Creepers, Endermen, Endermites, Guardians, Iron Golems, Silverfish, Skeletons, Snowmans, Spiders (including Cave Spiders), Witches, Zombies (including Pigman Zombies and Giants), Chickens, Cows (including Mooshroms), Horses, Pigs, Sheep, Wolves and Withers.

Every 3 ticks a Mob M, that uses the LookIdle class, has a 2% chance of starting to look idle.

In that case, it will start looking in a random x and z direction for 20-40 ticks. After that, it will stop looking idle.

Mate[]

This class is used by Chickens, Cows (including Mooshrooms), Horses, Ocelots, Pigs, Rabbits, Sheep and Wolves.

If the inLove variable of the user is true, it will constantly search for entities with the same type as the user in a 8x8x8 box centered around the user. For each found entity it will check, whether it can mate with the entity, and whether the entity is less than (2-2-52)·21023 blocks away. The user can mate with another entity, if the other entity is not the user, has the same class as the user, and if both the user and the other entity are inLove. The last entity suitable for mating is saved in the targetMate variable, and if there is now a targetMate, this AIclass will actually activate. It will continue executing as long as the targetMate is alive, in love, and the variable spawnBabyDelay is smaller than 60.

The user will constantly look at the targetMate and try to move towards it with a speed of moveSpeed (see table below). Additionally the spawnBabyDelay will be increased by 1. If the spawnBabyDelay is greater or equal to 60 and the user is less than 3 blocks away from the targetMate, a baby will be spawned. The createChild() method is different for different types of entities, and will be discussed below in more detail. After creating the child, the user will check whether it had a playerInLove, and if not, whether the targetMate had a playerInLove, and it found a player during those checks, it will store something in the statistics of the player, and if the user was a cow, it will trigger something achievement related (I didn´t bother looking to deep into this part). Additionally the age of the user and the targetMate will be set to 6000, the inLove variable of the user and the targetMate will be reset to false, the growingAge of the created Child will be set to -24000, and the position will be set to the position of the user. Also some 7 heart particles will be created. If the gamerule doMobLoot ist ture, then 1-7 xp will be spawned.

The createChild() method for the different classes:

Chickens, Cows, Mooshrooms and Pigs will just return a new member of their own class.

Horses: (More information needs to be added)

Ocelot: (More information needs to be added)

Rabbit: (More information needs to be added)

Sheep: (More information needs to be added)

Wolf: (More information needs to be added)

moveSpeed
Chicken 1
Cow 1
Horse 1
Ocelot 0.8
Pig 1
Rabbit 0.8
Sheep 1
Wolf 1

MoveThroughVillage[]

This class is used by Iron Golems and Zombies (including Giants) . This class is not used by PigZombies.

(More information needs to be added.)

movementSpeed isNocturnal
Iron Golems 0.6 true
Zombie 1 false

MoveTowardsRestriction[]

This class is used by Iron Golems, Zombies (including Giants and PigZombies (this needs to be verified)) and Villagers.

(More information needs to be added.)

NearestAttackableTarget[]

This class is used by Withers, Blazes, Creepers, Endermite, Guardians, Silverfish, Skeletons, Snowmen, Witches, Zombies (including Giants), Killer Bunnies (which are a special kind of Rabbit) and Wolves. This class is not used by PigZombies. Spiders (including Cave Spiders) and Iron Golems use a modified version of this class. Endermen use both the normal and a modified version of this class.

(More information needs to be added.)

Iron Golem: NearestAttackableTargetNonCreeper[]

This AI class is implemented as a static class in the EntityIronGolem class file. This AI class inherits from EntityAINearestAttackableTarget, and has only the difference, that the method boolean apply(EntityLivingBase e), returns always false, if e is a Creeper.

Panic[]

This class is used by Chickens, Cows (including Mooshrooms), Horses, Pigs and Sheep. Rabbits use a modified version of this class.

(More information needs to be added.)

Sit[]

This class is used by Ocelots and Wolves.

(More information needs to be added.)

Swimming[]

This class is used by Creepers, Endermen, Endermites, Silverfish, Skeletons, Spiders (including Cave Spiders), Witches, Zombies (including Pigman Zombies and Giants), Chickens, Cows (including Mooshroms), Horses, Ocelots, Pigs, Rabbits, Sheep, Villagers, Wolves and Withers.

(More information needs to be added.)

TargetNonTamed[]

This class is used by Ocelots and Wolves.

(More information needs to be added.)

Tempt[]

This class is used by Chickens, Cows (including Mooshrooms), Horses, Ocelots, Pigs, Rabbits and Sheep

(More information needs to be added.)

Wander[]

This class is used by Blazes, Creepers, Endermen, Endermites, Guardians, Iron Golems, Skeletons, Snowmans, Spiders (including Cave Spiders), Witches, Zombies (including Pigman Zombies and Giants), Chickens, Cows (including Mooshroms), Horses, Ocelots, Pigs, Rabbits, Sheep, Villagers, Wolves and Withers. Silverfish use a modified version of this class.

(More information needs to be added.)

WatchClosest[]

This class is used by Blazes, Creepers, Endermen, Endermites, Guardians, Iron Golems, Skeletons, Snowmans, Spiders (including Cave Spiders), Witches, Zombies (including Pigman Zombies and Giants), Chickens, Cows (including Mooshroms), Horses, Ocelots, Pigs, Rabbits, Sheep, Villagers, Wolves and Withers.

(More information needs to be added.)

Classes used by only 1 entity[]

Each of these classes is only used by one single entity. These classes can also be found on the pages of the entities using them.

Beg[]

This class is used exclusively by Wolves.

This class will only activate, if the player closest to the wolf is less than 8 blocks away and holds a bone in his hand. In that occasion, the wolf will look at the player for 40-80 ticks. This will be interrupted, if the player selects a different item, or moves more than 8 blocks away.

BreakDoor[]

This class is used exclusively by Zombies (including Giants). This class is not used by PigZombies. (this needs to be verified)

(More information needs to be added.)

ControlledByPlayer[]

This class is used exclusively by Pigs.

(More information needs to be added.)

CreeperSwell[]

This class is used exclusively by Creepers.

(More information needs to be added.)

DefendVillage[]

This class is used exclusively by Iron Golems.

If the iron golem I has a home village V, and village V has at least one agressor A, that is a suitable target for I, I will target A. If there is no suitable village aggressor, I will target the first player in the playerlist of V, that has -15 or less village popularity in V and is a suitable target for I. (What counts as an agressor, and what is a suitable target is implemented in the classes Village and EntityAITarget. They might get their own page at some point.)

DoorInteract[]

This class is used exclusively by Villagers.

(More information needs to be added.)

EatGrass[]

This class is used exclusively by Sheep.

(More information needs to be added.)

FindEntityNearest[]

This class is used exclusively by Slimes (including Magma Cubes).

(More information needs to be added.)

FleeSun[]

This class is used exclusively by Skeletons.

(More information needs to be added.)

FollowGolem[]

This class is used exclusively by Villagers.

(More information needs to be added.)

HarvestFarmland[]

This class is used exclusively by Farmer Villagers (which are a special kind of Villager).

(More information needs to be added.)

LookAtTradePlayer[]

This class is used exclusively by Villagers.

(More information needs to be added.)

LookAtVillager[]

This class is used exclusively by Iron Golems.

If it´s day, an iron golem has every 3 ticks a 1 in 8000 chance to look for villagers in 6x2x6 box around the iron golem. If there is a villager, he will hold a rose for 1200 ticks, while looking at the villager he found.

MoveIndoors[]

This class is used exclusively by Villagers.

(More information needs to be added.)

MoveTowardsTarget[]

This class is used exclusively by Iron Golems. However other EntityAI classes inherit from this class, so that modified version of this class also used by other mobs (This needs to be more exact.)

(More information needs to be added.)

OcelotAttack[]

This class is used exclusively by Ocelots.

(More information needs to be added.)

OcelotSit[]

This class is used exclusively by Ocelots.

(More information needs to be added.)

OpenDoor[]

This class is used exclusively by Villagers.

(More information needs to be added.)

OwnerHurtByTarget[]

This class is used exclusively by Wolves.

(More information needs to be added.)

Play[]

This class is used exclusively by Villager Childs (which are a special kind of Villager)

(More information needs to be added.)

RestrictOpenDoor[]

This class is used exclusively by Villagers.

(More information needs to be added.)

RestrictSun[]

This class is used exclusively by Skeletons.

(More information needs to be added.)

RunAroundLikeCrazy[]

This class is used exclusively by Horses.

(More information needs to be added.)

TradePlayer[]

This class is used exclusively by Villagers.

(More information needs to be added.)

VillagerInteract[]

This class is used exclusively by Villagers.

(More information needs to be added.)

VillagerMate[]

This class is used exclusively by Villagers.

(More information needs to be added.)

WatchClosest2[]

This class is used exclusively by Villagers.

(More information needs to be added.)

Nested Classes[]

Nestes classes are only used by their parent class.

Blaze - FireballAttack[]

(More information needs to be added.)

Enderman - PlaceBlock[]

(More information needs to be added.)

Enderman - TakeBlock[]

(More information needs to be added.)

Enderman - FindPlayer[]

This class inherits from NearestAttackableTarget.

(More information needs to be added.)

EntityGhast - RandomFly[]

(More information needs to be added.)

Ghast - LookAround[]

(More information needs to be added.)

Ghast - FireballAttack[]

(More information needs to be added.)

IronGolem - NearestAttackableTargetNonCreeper[]

This class inherits from NearestAttackableTarget.

(More information needs to be added.)

Silverfish - SummonSilverfish[]

(More information needs to be added.)

Silverfish - HideInStone[]

This class inherits from Wander.

(More information needs to be added.)

Slime - SlimeFloat[]

(More information needs to be added.)

Slime - SlimeAttack[]

(More information needs to be added.)

Slime - SlimeFaceRandom[]

(More information needs to be added.)

Slime - SlimeHop[]

(More information needs to be added.)

Spider - SpiderAttack[]

This class inherits from AttackOnCollide.

(More information needs to be added.)

Spider - SpiderTarget[]

This class inherits from NearestAttackableTarget.

(More information needs to be added.)

PigZombie - HurtByAggressor[]

This class inherits from HurtByTarget.

(More information needs to be added.)

PigZombie - TargetAggressor[]

This class inherits from NearestAttackableTarget.

(More information needs to be added.)

Rabbit - Panic[]

This class inherits from Panic

(More information needs to be added.)

Rabbit - RaidFarm[]

This class inherits from MoveToBlock.

(More information needs to be added.)

Rabbit - AvoidEntity[]

This class inherits from AvoidEntity.

This class behaves exactly like AvoidEntity.

Rabbit - EvilAttack[]

This class inherits from AttackOnCollide.

(More information needs to be added.)

Squid - MoveRandom[]

(More information needs to be added.)

Abstract EntityAI classes[]

EntityAIBase[]

All EntityAI classes inherit from this class.

(More information needs to be added.)

EntityAIMoveToBlock[]

(More information needs to be added.)

EntityAITarget[]

(More information needs to be added.)

Which mobs use what?[]

Wither:[]

Swimming

ArrowAttack

Wander

WatchClosest

LookIdle

HurtByTarget

NearestAttackableTarget

Blaze:[]

Blaze - FireballAttack

MoveTowardsRestriction

Wander

WatchClosest

LookIdle

HurtByTarget

NearestAttackableTarget

Creeper:[]

Swimming

CreeperSwell

AvoidEntity (Ocelot)

AttackOnCollide

Wander

WatchClosest

LookIdle

NearestAttackableTarget

HurtByTarget

Enderman:[]

Swimming

AttackOnCollide

Wander

WatchClosest

LookIdle

Enderman - PlaceBlock

Enderman - TakeBlock

HurtByTarget

Enderman - FindPlayer

NearestAttackableTarget

Endermite:[]

Swimming

AttackOnCollide

Wander

WatchClosest

LookIdle

HurtByTarget

NearestAttackableTarget

Ghast:[]

Ghast - RandomFly

Ghast - LookAround

Ghast - FireballAttack

FindEntityNearestPlayer

Guardian:[]

GuardianAttack

MoveTowardsRestriction

Wander

WatchClosest

LookIdle

NearestAttackableTarget

IronGolem:[]

AttackOnCollide

MoveTowardsTarget

MoveThroughVillage

MoveTowardsRestriction

LookAtVillager

Wander

WatchClosest

LookIdle

DefendVillage

HurtByTarget

IronGolem - NearestAttackableTargetNonCreeper

Silverfish:[]

Swimming

Silverfish - SummonSilverfish

AttackOnCollide

Silverfish - HideInStone

HurtByTarget

NearestAttackableTarget

Skeleton:[]

Swimming

RestrictSun

FleeSun

AvoidEntity

Wander

WatchClosest

LookIdle

HurtByTarget

NearestAttackableTarget

The combat AI classes are added to the EntityAITasks depending on whether the Skeleton holds a bow:

EntityAIArrowAttack (with bow)

EntityAIAttackOnCollide (without bow)

Slime and Magma Cubes:[]

Slime - SlimeFloat

Slime - SlimeAttack

Slime - SlimeFaceRandom

Slime - SlimeHop

FindEntityNearestPlayer

FindEntityNearest

Snowman:[]

ArrowAttack

Wander

WatchClosest

LookIdle

NearestAttackableTarget

Spider and Cave Spider:[]

Swimming

LeapAtTarget

Spider - SpiderAttack

Wander

WatchClosest

LookIdle

HurtByTarget

Spider - SpiderTarget

Witch:[]

Swimming

ArrowAttack

Wander

WatchClosest

LookIdle

HurtByTarget

NearestAttackableTarget

Zombie and Giant:[]

Swimming

AttackOnCollide

MoveTowardsRestriction

Wander

WatchClosest

LookIdle

MoveThroughVillage

HurtByTarget

NearestAttackableTarget

BreakDoor

PigZombie:[]

Swimming

AttackOnCollide

MoveTowardsRestriction

Wander

WatchClosest

LookIdle

PigZombie - HurtByAggressor

PigZombie - TargetAggressor

Chicken:[]

Swimming

Panic

Mate

Tempt

FollowParent

Wander

WatchClosest

LookIdle

Cow and Mooshroom:[]

Swimming

Panic

Mate

Tempt

FollowParent

Wander

WatchClosest

LookIdle

Horse:[]

Swimming

Panic

RunAroundLikeCrazy

Mate

Tempt

FollowParent

Wander

WatchClosest

LookIdle

Ocelot:[]

Swimming

Sit

Tempt

FollowOwner

OcelotSit

LeapAtTarget

OcelotAttack

Mate

Wander

WatchClosest

TargetNonTamed

Pig:[]

Swimming

Panic

ControlledByPlayer

Mate

Tempt

FollowParent

Wander

WatchClosest

LookIdle

Rabbit:[]

Swimming

Rabbit  - Panic

Tempt

Mate

Rabbit - RaidFarm

Wander

WatchClosest

Rabbit - AvoidEntity

Killer Bunnies additionally have:[]

Rabbit - EvilAttack

HurtByTarget

NearestAttackableTarget

Sheep:[]

Swimming

Panic

Mate

Tempt

FollowParent

EatGrass

Wander

WatchClosest

LookIdle

Squid:[]

Squid - MoveRandom

Villager:[]

Swimming

AvoidEntity

TradePlayer

LookAtTradePlayer

MoveIndoors

RestrictOpenDoor

OpenDoor

MoveTowardsRestriction

VillagerMate

FollowGolem

WatchClosest2

VillagerInteract

Wander

WatchClosest

.

Farmer Villagers additionally have:[]

HarvestFarmland

.

Villager Childs additionally have:[]

Play

Wolf:[]

Swimming

Sit

LeapAtTarget

AttackOnCollide

FollowOwner

Mate

Wander

Beg

WatchClosest

LookIdle

OwnerHurtByTarget

OwnerHurtTarget

HurtByTarget

TargetNonTamed

NearestAttackableTarget

Advertisement