VOOZH about

URL: https://minecraft.wiki/w/Behavior

โ‡ฑ Mob AI โ€“ Minecraft Wiki


Mob AI

From Minecraft Wiki
(Redirected from Behavior)
Jump to navigation Jump to search
๐Ÿ‘ Image
For other uses, see AI.
This article is a work in progress.
 
Please help expand and improve it. The talk page may contain suggestions.

This article describes the various components of a mob's AI that control its behavior.

Brain

[edit | edit source]

Some mobs use a complex AI system called a brain. A mob's brain stores memories (data), a list of tasks that can be performed, and a list of sensors used to determine which tasks it can perform.

Sensor

[edit | edit source]

Sensors are used to detect if a mob with a brain can perform certain tasks. Examples of sensors include, a sensor to detect if an armadillo should be scared, a sensor to detect the nearest player, and a sensor to detect if a mob is in water.

List of Sensor in Java Edition
Sensor Class Uses
dummy DummySensor defaulted sensor type
nearest_items NearestItemSensor
nearest_living_entities NearestLivingEntitySensor
nearest_players PlayerSensor
nearest_bed NearestBedSensor ๐Ÿ‘ Image
Villager
hurt_by HurtBySensor
villager_hostiles VillagerHostilesSensor ๐Ÿ‘ Image
Villager
villager_babies VillagerBabiesSensor ๐Ÿ‘ Image
Villager
secondary_pois SecondaryPoiSensor ๐Ÿ‘ Image
Villager
golem_detected GolemSensor ๐Ÿ‘ Image
Villager
armadillo_scare_detected MobSensor ๐Ÿ‘ Image
Armadillo
piglin_specific_sensor PiglinSpecificSensor ๐Ÿ‘ Image
Piglin
piglin_brute_specific_sensor PiglinBruteSpecificSensorregister ๐Ÿ‘ Image
Piglin
hoglin_specific_sensor HoglinSpecificSensor ๐Ÿ‘ Image
Hoglin
nearest_adult AdultSensor
nearest_adult_any_type AdultSensor ๐Ÿ‘ Image
Happy Ghast
axolotl_attackables AxolotlAttackablesSensor ๐Ÿ‘ Image
Axolotl
food_temptations TemptingSensor
frog_temptations TemptingSensor
nautilus_temptations TemptingSensor
frog_attackables FrogAttackablesSensor ๐Ÿ‘ Image
Frog
is_in_water IsInWaterSensor ๐Ÿ‘ Image
Frog
warden_entity_sensor WardenEntitySensor ๐Ÿ‘ Image
Warden
breeze_attack_entity_sensor BreezeAttackEntitySensor ๐Ÿ‘ Image
Breeze


Sensor classes

[edit | edit source]
This section needs expansion.
 
You can help by expanding it.
Class Memory requires Do tick
DummySensor None Nothing
NearestItemSensor nearest_visible_wanted_item Find the nearest item that:
  • It is to a euclidean distance of up to 32 blocks from the mob.
  • On the y-axis, it is 16 blocks away from the mob's hitbox.
  • It is in mob line of sight[a].
  • The mob wants to pick up it.[b]

And save this item in the memory nearest_visible_wanted_item.

NearestLivingEntitySensor mobs and visible_mobs Lists all other living entities that are alive and within a cobuoid generated by the mob's hitbox incremented by mob's follow_range in all directions. Sort list by euclidean distance and add to memory mobs.

In visible_mobs save the entities of mobs that[c]:

  • They are not a Spectator player, or an invisible or marker armor stand,
  • They are in mob line of sight[a],
  • And they are within a range of r blocks of the mob, where r is the follow_range of the mob[d].
PlayerSensor nearest_players, nearest_visible_player, nearest_visible_targetable_player and nearest_visible_targetable_players List all non-spectator players to a euclidean distance up to mob's follow_range fro the mobs, sort by euclidean distance and save in nearest_players memory.

From this list, it filters the players who are in the mob's line of sight[a] and within follow range[d]. If it exists, save the first player from the list in memory nearest_visible_player.

In memory nearest_visible_targetable_players saves this last list with the following filters:

  • If the difficulty is peaceful, remove all players.
  • Remove all players from creative mode.
  • Remove all players from the same team from the mob.
  • If the mob is the allay, remove the linked player.
  • If the mob is a illager, minecraft:player is in the tag #illager_friends, and neither the mob nor the player is on a team, remove the player.
  • If the mob is a tamed animal, remove their owner and the players on the owner's team.

If the end list is not empty, save in memory nearest_visible_targetable_player the first player on a list.

NearestBedSensor nearest_bed If the mob is baby:
  • Set the auxiliary variables triedCount = 0 and lastUpdate = GameTime + RandomInt(20)[e], where GameTime is the total number of game ticks that have elapsed in the world.
  • In the batchCache cache, it attempts to save POIs of type home that are up to 48 blocks from the mob at an euclid distance. For each POI found whose position Pos is not in the cache, it increases triedCount by 1, if triedCount < 5, it saves (Pos, lastUpdate + 40) in the cache. In this way, it saves up to 5 new beds in the batchCache. The POIs added to the cache create a new set pois, with the position and type of each POI.
  • Try creating a path to one of the POI in pois. If it find a path, that path can reach and the target is a POI, save the target's position in mob's memory nearest_bed.
  • If the path cannot be found, or the path cannot be reach, and triedCount < 5, remove from the batchcache the values where the second coordinate is less than lastUpdate.
HurtBySensor huty_by and hurt_by_entity
VillagerHostilesSensor
VillagerBabiesSensor
SecondaryPoiSensor
GolemSensor
MobSensor
PiglinSpecificSensor
PiglinBruteSpecificSensorregister
HoglinSpecificSensor
AdultSensor
AxolotlAttackablesSensor
TemptingSensor
FrogAttackablesSensor
IsInWaterSensor is_in_water If the mob is touching the water, add the memory is_in_water, otherwise remove the memory.
WardenEntitySensor
BreezeAttackEntitySensor
  1. โ†‘ a b c It is possible to draw a straight line from the mob's eye to the target without intersecting a block collision box.
  2. โ†‘ It depends on the mob, defined independently of the sensor.
  3. โ†‘ Technically, in memory mob_visibel a list equal to that of mob is saved, along with a binary list of the same size that indicates whether the entity passes the test or not.
  4. โ†‘ a b For entities that are not in mob's memory attack_target, this range is multiplied by a modifier that indicates the visibility percentage of the entity. The modifier starting with 1 and cumulatively:
    • Multiplying by 0.8 if it is a sneaking player,
    • Multiplying by 0.07 if it is invisible and without equipament in humanoid armor slot,
    • Multiplying by 0.175p if it is invisible and has pโ‰ฅ1 equipaments in humanoid armor slot,
    • Multiplying by 0.5 if it is using the corresponding mob head in the head slot (for skeleton, zombie, piglin, piglin brute, and creeper)
    The final range must be at least 2.
  5. โ†‘ RandomInt(x) is a random integer n such that 0 โ‰ค n < x.

Tasks are activities that mobs with brain AI systems can perform. Sensors are used to determine if a task can be performed, and tasks may use information stored in memories. Examples of tasks include a villager walking to its jobsite, a piglin admiring an item, or a warden emerging. Tasks have priorities, so tasks with a higher priority will over run tasks with lower priority, for example, if a zombie is wandering and it sees a player, it will switch tasks to attacking.

Memory

[edit | edit source]

Memories are used to store data, and are used when mobs perform tasks. Examples of memories include a list of all visible mobs in range, the location of a villager's jobsite block, and any cooldowns the mob may have.

Control

[edit | edit source]

Walking

[edit | edit source]

Mobs movement on land varies wheter it's hostile or passive. Hostile mobs will try to approach and attack the player when within their detection range, while most passive mobs will attempt to run away when attacked. Some mobs will also try to attack or run away from certain blocks or mobs.

Swimming

[edit | edit source]

Mobs swimming works the same way as walking, but in water. While most mobs will just float on water or sink, some can properly swim like fish, drowned, dolphins, turtles, guardians and elder guardians.

Flying

[edit | edit source]

Mobs flying works the same way as walking, but in air. Most mobs will just fall when suspended in air, with a few exceptions. Mobs with Slow Falling, levitation and the chicken don't fly normally but are able to float in mid-air. Category:Flying mobs contains a list of all mobs that can pathfind in air.

Goals

[edit | edit source]

Goals are a simple AI system used primarily by mobs already existed before the brain AI. However, there are recent mobs that use both AIs simultaneously, for example, the happy ghast.

Goals can range from wandering around, opening doors, attacking another mob, and more. Each type of mob that uses goals has its own defined list of goals, and each goal has a priority. Mobs attempt to perform the lowest priority goal they can, and may switch goals if there is an opportunity to pursue a lower priority goal. For example, if a zombie is targeting and chasing a villager (priority of 3) and a player comes within the detection range of the zombie, the zombie may target and chase the player (priority of 2) instead.

List of goals

[edit | edit source]

List of goals that are used by many different mobs.

List of Goals
Goal Description Notes
Active Target Select an entity to target for chasing and attacking
Ambient Stand Untamed horse bucks when player tries to ride it
Attack Attack target
Attack with Owner Tamed animal attacks a target mob attacked by owner
Avoid Sunlight During day, move out of direct line-of-sight with sky
Bow Attack Attack target with bow
Breathe Air Mob that can drown tries to move out of water
Cat Sit on Block Cat sits on bed, chest, or furnace
Chase Boat Chase after boat ridden by player Unused
Creeper Ignite Creeper ignites
Crossbow Attack Attack target with crossbow
Destroy Egg Destroy turtle eggs
Disableable Follow Target Raid entity stops following target Unused
Dive Jump Mob jumps up and dives down
Dolphin Jump Dolphin jumps out of water
Door Interact Mob tries to open a door
Eat Grass Mob grazes on grass
Escape Danger Mob panics and runs away when damaged
Flee Entity Mob runs away from another mob that it is scared of (e.g. skeletons running from wolves)
Fly Mob tries to fly
Follow Group Leader Fish tries to follow the leader of a school of fish
Follow Mob Mob follows another mob
Follow Owner Tamed mob follows owner
Follow Parent Baby mob follows its parent
Form Caravan up to 8 llamas in caravan
Go to Bed and Sleep Tamed cat sleeps in bed
Go to Walk Target Mob walks to a target
Hold in Hands Mob holds an item in its main hand
Horse Bond with Player Horse attempts to bond with player attempting to tame it
Iron Golem Look Iron golem looks at a villager
Iron Golem Wander Around Iron golem wanders around village uses points of interest
Long Door Interact Open a door, then close it after a delay
Look Around Mob spins around and looks in random directions
Look At Customer Villager or wandering trader looks at player while trading
Look At Entity Mob looks at another mob
Melee Attack Mob paths to target and attacks
Move Into Water Mob paths to water
Move Through Village Mob moves between points of interest in a village
Move To Raid Center Raiders move toward village after spawning
Move To Target Position Mob paths to a specific block
Pounce At Target Mob jumps towards target cats, foxes, ocelots
Powder Snow Jump Mob dives into powder snow foxes
Prioritized Goal Used to override the default priority of a goal
Projectile Attack Mob attacks target with a projectile arrow, spit, trident, potion, snow ball, wither skull, not fireballs
Raid Goal Raiders target villagers
Revenge Target entity that attacked the mob
Wander Around Move to a nearby random position
Wander Around Far Move to a random position, sometimes farther away than Wander Around goal
Zombie Attack Attack goal for zombies and zombie variants

Lists of mob goals

[edit | edit source]

Lists of goals and associated priorities for individual mobs.

Zombie
Goal Priority Notes
Revenge 1 Attack entity that damaged the zombie
Active Target - Player 2 Target the player
Zombie Attack 2 Attack current target
Active Target - Iron Golem 3 Target Iron Golem
Active Target - Merchant 3 Target Villager or Wandering Trader
Destroy Egg 4 Break turtle eggs
Active Target - Turtle 5 Target baby turtle
Wander Around Far 7
Look Around 8 Looks away from Entities
Look at Entity 8 Looks at nearest Entities

Pathfinding

[edit | edit source]

Pathfinding penalties

[edit | edit source]
๐Ÿ‘ Image
Zombified piglin starts pathfinding to a turtle egg
๐Ÿ‘ Image
Due to pathfinding penalties, the zombified piglin takes an indirect path to the turtle egg, pathing through wither roses and taking damage, instead of pathing through the lava or magma blocks, which do not damage the zombified piglin

When pathfinding to a target, mobs will sometimes avoid certain blocks (usually blocks that cause damage or slow the mob down). These blocks have a penalty associated with them. Generally, mobs try to path through blocks with the smallest penalty. There are some blocks that most mobs cannot path through; these all have a penalty of -1.

The following table is a list of all pathfinding penalties and their default values. Each type of pathfinding (land, water, air) uses its own subset of these penalties. Some mobs override these default values.

Penalty type Penalty Description
blocked -1 can't pathfind through block (most full solid blocks)
powder snow -1 ๐Ÿ‘ Image
powder snow
fence -1 ๐Ÿ‘ Image
fences

๐Ÿ‘ Image
walls

๐Ÿ‘ Image
fence gates
(closed)
lava -1 ๐Ÿ‘ Image
lava
unpassable rail -1 ๐Ÿ‘ Image
rail
damage - other -1 ๐Ÿ‘ Image
cactus

๐Ÿ‘ Image
sweet berry bush
closed wood door -1 ๐Ÿ‘ Image
wood door
closed iron door -1 ๐Ÿ‘ Image
iron door
open 0 ๐Ÿ‘ Image
air

๐Ÿ‘ Image
cave air

๐Ÿ‘ Image
void air
walkable 0 ๐Ÿ‘ Image
TNT
with pressure plate on top (under the mob)
walkable door 0 a door the mob can open
trapdoor 0 ๐Ÿ‘ Image
trapdoors

๐Ÿ‘ Image
lily pad

๐Ÿ‘ Image
big dripleaf
danger - powder snow 0 neighboring block is ๐Ÿ‘ Image
powder snow
open door 0 open wood or iron door
cocoa 0 ๐Ÿ‘ Image
cocoa
damage - cautious 0 ๐Ÿ‘ Image
wither rose

๐Ÿ‘ Image
pointed dripstone
danger - trapdoor 0 neighboring block is ๐Ÿ‘ Image
trapdoor
breach water 4 there is an air block above a water block
water 8 ๐Ÿ‘ Image
water
water border 8 neighboring block is ๐Ÿ‘ Image
water
danger - fire 8 neighboring block is:
๐Ÿ‘ Image
fire

๐Ÿ‘ Image
lava

๐Ÿ‘ Image
magma block

๐Ÿ‘ Image
lit campfire

๐Ÿ‘ Image
lava cauldron
danger - other 8 neighboring block is:
๐Ÿ‘ Image
cactus

๐Ÿ‘ Image
sweet berry bush
honey 8 ๐Ÿ‘ Image
honey block
damage - fire 16 ๐Ÿ‘ Image
fire

๐Ÿ‘ Image
lava

๐Ÿ‘ Image
magma block

๐Ÿ‘ Image
lit campfire

๐Ÿ‘ Image
lava cauldron
Mob pathfinding penalty overrides

The following mobs override the default pathfinding penalty for some blocks:

Mob Penalty Type Penalty
๐Ÿ‘ Image
axolotl
water 0
๐Ÿ‘ Image
bee
damage - fire -1
water -1
cocoa -1
fence -1
water border 16
๐Ÿ‘ Image
chicken
water 0
๐Ÿ‘ Image
fox
danger - other 0
damage - other 0
๐Ÿ‘ Image
frog
trapdoor -1
water 4
๐Ÿ‘ Image
goat
powder snow -1
danger - powder snow -1
๐Ÿ‘ Image
villager

๐Ÿ‘ Image
wandering trader
damage-fire -1
danger - fire 16
๐Ÿ‘ Image
parrot
danger-fire -1
damage - fire -1
cocoa -1
๐Ÿ‘ Image
sniffer
water -1
danger - powder snow -1
damage - cautious -1
๐Ÿ‘ Image
strider
water -1
lava 0
danger - fire 0
damage - fire 0
๐Ÿ‘ Image
turtle
close iron door -1
closed wood door -1
open door -1
water 0
๐Ÿ‘ Image
wolf
powder snow -1
danger - powder snow -1
๐Ÿ‘ Image
piglin

๐Ÿ‘ Image
piglin brute
damage - fire -1
danger - fire 16
๐Ÿ‘ Image
blaze
water -1
danger - fire 8
damage - fire 8
lava 8
๐Ÿ‘ Image
breeze
danger - trapdoor -1
damage - fire -1
๐Ÿ‘ Image
drowned
water 0
๐Ÿ‘ Image
enderman
water -1
๐Ÿ‘ Image
guardian
water 0
๐Ÿ‘ Image
ravager
leaves 0
๐Ÿ‘ Image
warden
unpassable rail 0
damage - fire 0
danger - fire 0
damage - other 8
powder snow 8
lava 8
water creatures water 0
๐Ÿ‘ Image
wither skeleton
lava 8
๐Ÿ‘ Image
zombified piglin
lava 8
animal damage - fire -1
danger - fire

Pathfinding on land

[edit | edit source]
  • All entities Move based off of random targets that are generated every tick with a priority toward their entity specific goals.
  • These targets can be located anywhere in 3D space within the entity range and are only every generated when wandering or when they have no goals.
  • For every target a path is generated; with the entity preferring the path with the lowest score regarding the Pathfinding penalties.
  • If an entity cannot take any paths with a low enough score, or any paths without a score of -1 the entity will not move until one is found.
  • If an entity's target is located inside a block (including water), the target is moved to the nearest air block above it.

This means, every entity when wandering will always prefer to pathfind to a block with the most blocks below it within range.

Due to the higher chance that a target will be generated within the blocks below it and moved up to the nearest air block above before generating a path.

Pathfinding in water

[edit | edit source]
  • Pathfinding in water is roughly the same as land, however, most entities, excluding fish and drowned, will bounce on the surface preferring land due to the Pathfinding penalties of water.

Pathfinding in air

[edit | edit source]
  • Pathfinding in air is roughly the same as land, however, there are few entities that can pathfind to air.

See also

[edit | edit source]

Navigation

[edit | edit source]
Retrieved from "https://minecraft.wiki/w/Mob_AI?oldid=3620000"

Navigation menu