Skip to content

API reference / @jsprismarine/entity-brains / Brain

Class: Brain ​

Defined in: brain.ts:120

One mob's memories, sensors and activity table. Java's Brain.

A tick runs every sensor, ages every memory slot, starts the stopped behaviors of the active activities in ascending priority order, then ticks the running ones. The brain never picks an activity itself; the mob's updateActivity does that, and the brain only reports whether an activity's conditions hold.

Constructors ​

Constructor ​

new Brain(definition): Brain

Defined in: brain.ts:135

Parameters ​

definition ​

BrainDefinition

Returns ​

Brain

Accessors ​

registeredMemories ​

Get Signature ​

get registeredMemories(): readonly MemoryModuleType<unknown>[]

Defined in: brain.ts:283

Every registered memory module type.

Returns ​

readonly MemoryModuleType<unknown>[]

Methods ​

checkMemory() ​

checkMemory(memory, status): boolean

Defined in: brain.ts:212

Java's Brain.checkMemory. An unregistered memory fails every status, including registered, which is what makes a brain ignore a behavior whose memories it never declared.

Parameters ​

memory ​

MemoryModuleType<unknown>

status ​

MemoryStatus

Returns ​

boolean


clearMemories() ​

clearMemories(): void

Defined in: brain.ts:276

Empties every registered memory without unregistering any.

Returns ​

void


delaySensorStarts() ​

delaySensorStarts(randomInt): void

Defined in: brain.ts:156

Randomizes each sensor's first scan tick, as Java's Sensor::randomlyDelayStart does.

Parameters ​

randomInt ​

(bound) => number

Returns ​

void


eraseMemory() ​

eraseMemory(memory): void

Defined in: brain.ts:271

Empties one memory slot, leaving it registered.

Parameters ​

memory ​

MemoryModuleType<unknown>

Returns ​

void


getActiveActivities() ​

getActiveActivities(): readonly Activity[]

Defined in: brain.ts:308

Every activity in force this tick, core ones included.

Returns ​

readonly Activity[]


getActiveNonCoreActivity() ​

getActiveNonCoreActivity(): Activity | undefined

Defined in: brain.ts:313

The one non-core activity in force, which is what a mob's sound and pose logic reads.

Returns ​

Activity | undefined


getMemory() ​

getMemory<Value>(memory): Value | undefined

Defined in: brain.ts:228

The memory's value, or undefined when empty or unregistered.

Type Parameters ​

Value ​

Value

Parameters ​

memory ​

MemoryModuleType<Value>

Returns ​

Value | undefined


getRunningBehaviors() ​

getRunningBehaviors(): readonly BehaviorControl[]

Defined in: brain.ts:323

Every running behavior, in ascending priority order. A debug read-out and the tests read this.

Returns ​

readonly BehaviorControl[]


getTimeUntilExpiry() ​

getTimeUntilExpiry(memory): number

Defined in: brain.ts:238

Ticks remaining before the memory expires, or MemorySlot.NEVER_EXPIRE.

Parameters ​

memory ​

MemoryModuleType<unknown>

Returns ​

number


hasMemoryValue() ​

hasMemoryValue(memory): boolean

Defined in: brain.ts:204

Whether the memory is registered and currently holds a value.

Parameters ​

memory ​

MemoryModuleType<unknown>

Returns ​

boolean


isActive() ​

isActive(activity): boolean

Defined in: brain.ts:303

Whether the activity is in force this tick, counting the core activities.

Parameters ​

activity ​

Activity

Returns ​

boolean


isMemoryValue() ​

isMemoryValue<Value>(memory, value): boolean

Defined in: brain.ts:233

Whether the memory holds exactly this value, Java's Brain.isMemoryValue.

Type Parameters ​

Value ​

Value

Parameters ​

memory ​

MemoryModuleType<Value>

value ​

Value

Returns ​

boolean


setActiveActivityIfPossible() ​

setActiveActivityIfPossible(activity): void

Defined in: brain.ts:343

Switches to the activity when its memory conditions hold, and to the default when not.

Parameters ​

activity ​

Activity

Returns ​

void


setActiveActivityToFirstValid() ​

setActiveActivityToFirstValid(activities): void

Defined in: brain.ts:356

Switches to the first activity in the list whose conditions hold, and leaves the current one alone when none do. This is what every mob's updateActivity calls, and the list order is the mob's priority order between activities.

Parameters ​

activities ​

readonly Activity[]

Returns ​

void


setCoreActivities() ​

setCoreActivities(activities): void

Defined in: brain.ts:293

Replaces the activities that stay active alongside whichever one is in force.

Parameters ​

activities ​

readonly Activity[]

Returns ​

void


setDefaultActivity() ​

setDefaultActivity(activity): void

Defined in: brain.ts:298

Replaces the activity the brain falls back to when no other one's conditions hold.

Parameters ​

activity ​

Activity

Returns ​

void


setMemory() ​

setMemory<Value>(memory, value): void

Defined in: brain.ts:249

Writes a memory. undefined erases it, and so does an empty array: Java's isEmptyCollection check means a sensor that finds nothing clears the memory rather than storing an empty list, which is what lets value_present mean "found something".

Writing an unregistered memory is silently dropped, as Java's null-slot check is.

Type Parameters ​

Value ​

Value

Parameters ​

memory ​

MemoryModuleType<Value>

value ​

Value | undefined

Returns ​

void


setMemoryWithExpiry() ​

setMemoryWithExpiry<Value>(memory, value, timeToLive): void

Defined in: brain.ts:254

Writes a memory that erases itself after timeToLive brain ticks.

Type Parameters ​

Value ​

Value

Parameters ​

memory ​

MemoryModuleType<Value>

value ​

Value | undefined

timeToLive ​

number

Returns ​

void


setSchedule() ​

setSchedule(schedule): void

Defined in: brain.ts:288

Replaces the schedule Brain.updateActivityFromSchedule reads. Only the villager has one.

Parameters ​

schedule ​

Schedule | undefined

Returns ​

void


stopAll() ​

stopAll(context): void

Defined in: brain.ts:427

Stops every running behavior, as Java does when a villager's brain is rebuilt.

Parameters ​

context ​

BrainContext

Returns ​

void


tick() ​

tick(context): void

Defined in: brain.ts:419

One brain tick, in Java's order: age the memories, run the sensors, start every stopped behavior whose activity is active, then tick every running one.

Starting before ticking is observable: a behavior started this tick also ticks this tick.

Parameters ​

context ​

BrainContext

Returns ​

void


updateActivityFromSchedule() ​

updateActivityFromSchedule(gameTime, dayTime): void

Defined in: brain.ts:402

Reads the schedule and switches activity, at most once every twenty ticks.

The throttle is Java's and it is observable: a villager crossing a keyframe can take up to a second to notice.

Parameters ​

gameTime ​

number

dayTime ​

number

Returns ​

void


useDefaultActivity() ​

useDefaultActivity(): void

Defined in: brain.ts:338

Switches to the default activity without checking any conditions.

Returns ​

void