生物记忆(Memory Module)是生物用于AI计算的数据,存储于生物的 Brain.memories标签中。
NBT结构[]
生物记忆分为两种:短期记忆与长期记忆。短期记忆不会记录在 Brain.memories标签中,而是存储在内存中,在生物所在的区块卸载后这些记忆将丢失;长期记忆会保存在 Brain.memories标签中,当区块卸载时这些记忆可以保存,并在下一次区块加载时恢复。无论是短期记忆还是长期记忆,如果记忆超过了有效期,生物就会忘记这些数据。
- 生物记忆根标签。
- <记忆类型的命名空间ID>:一项生物的长期记忆。
- ttl:过期时间,即从此游戏刻起到此项记忆过期中间间隔了多少游戏刻,如果此项为0则在下一游戏刻清除此记忆。如果此项记忆不会过期,则不存在此标签。
- value:记忆的值,具体类型与记忆数据类型有关。
- <记忆类型的命名空间ID>:一项生物的长期记忆。
短期记忆不能序列化为NBT标签,即使它们使用了可以序列化的数据类型,而长期记忆一定可以序列化为NBT标签。除基础数据类型Boolean()、Integer()、Long()、UUID()外,记忆数据类型还包括下面的复合数据:
GlobalPos[]
此数据类型代表了指定维度中的一个位置。
- value:记忆的值。
- dimension:维度的命名空间ID。
- pos:方块位置,含有3个整数,分别代表X、Y、Z坐标。
List<BlockPos>[]
此数据类型代表了方块位置的列表。
- value:记忆的值。
- :方块位置,含有3个整数,分别代表X、Y、Z坐标。
Unit[]
此数据类型代表此记忆只需要其过期时间或其存在性作为AI计算的数据。 value内不包含任何标签,即使有标签其内部的值对AI计算也没有任何效果。
长期记忆[]
minecraft:home[]
此记忆的数据类型为GlobalPos,不会过期。使用此记忆的有村民和猪灵蛮兵。
村民使用此记忆保存其绑定的床的位置,用于睡觉和躲藏。如果此记忆不存在,村民会在周围48格内搜索找到一个带有home
类型的兴趣点,并尝试走到对应位置领取床并获得此记忆。当床被破坏时,与这张床绑定的村民不会立刻丢失此记忆,而是等到村民尝试寻路返回床时才会丢失。
猪灵蛮兵使用此记忆保存其生成的位置,用于在此位置周围游荡。猪灵蛮兵的此项记忆不会自然丢失。
minecraft:job_site[]
此记忆的数据类型为GlobalPos,不会过期。使用此记忆的只有村民。
村民使用此记忆保存其绑定的工作方块的位置,用于工作。当村民接触到工作方块获得工作时获得此记忆,当工作方块被破坏时村民立刻丢失此记忆。
minecraft:potential_job_site[]
此记忆的数据类型为GlobalPos,不会过期。使用此记忆的只有村民。
村民使用此记忆保存其将要绑定的工作方块的位置,用于领取工作。如果村民没有工作,村民会在周围48格内搜索找到一个带有acquirable_job_site
标签的兴趣点,并将兴趣点的位置作为记忆存储。当村民到达兴趣点领取工作后,此记忆被抹除。如果村民在领取工作的路途中兴趣点被破坏,则会再次搜索兴趣点并将新的兴趣点位置存到此记忆中。
minecraft:meeting_point[]
此记忆的数据类型为GlobalPos,不会过期。使用此记忆的只有村民。
村民使用此记忆保存村庄会合点位置,用于鸣钟和社交。如果村民没有此记忆,它会在周围48格内搜索找到一个带有meeting
类型的兴趣点,并将兴趣点的位置存储。当钟被破坏时,与钟绑定的村民不会立刻丢失此记忆,而是等到村民尝试鸣钟或准备社交时才会丢失。
minecraft:golem_detected_recently[]
此记忆的数据类型为Boolean,值固定为true,过期时长为599游戏刻(29.95秒)。使用此记忆的只有村民。
村民使用此记忆保存是否在近期探测到铁傀儡。如果此值存在,村民就不会继续产生铁傀儡。探测每200游戏刻(10秒)进行一次,只要探测到铁傀儡此记忆过期时长就被设置为599游戏刻(29.95秒)。
minecraft:last_slept[]
此记忆的数据类型为Long,不会过期。使用此记忆的只有村民。
村民使用此记忆保存上次睡觉的游戏时间。如果此记忆存在,并且上次睡眠时间距离目前时间小于24000游戏刻(20分),村民才会尝试产生铁傀儡。
minecraft:last_woken[]
此记忆的数据类型为Long,不会过期。使用此记忆的只有村民。
村民使用此记忆保存上次醒来的游戏时间。如果此记忆存在,并且上次醒来时间距离目前时间大于100游戏刻(5秒),村民才可能睡觉。
minecraft:last_worked_at_poi[]
此记忆的数据类型为Long,不会过期。使用此记忆的只有村民。
村民使用此记忆保存上次工作的游戏时间,没有实际作用。
minecraft:play_dead_ticks[]
此记忆的数据类型为Integer,不会过期。使用此记忆的只有美西螈。
美西螈使用此记忆保存装死的时间。当美西螈遭受伤害,并满足装死条件准备装死时,将获得此记忆,记忆值为200游戏刻(10秒)。此记忆值每刻减1,直到减为0时此记忆被抹除,美西螈脱离装死状态。如果美西螈正在求爱模式,则此记忆被立刻抹除并脱离装死状态。
minecraft:temptation_cooldown_ticks[]
此记忆的数据类型为Integer,不会过期。使用此记忆的有山羊、美西螈、青蛙、蝌蚪和骆驼。
生物使用此记忆保存上次被玩家吸引后下一次又可以被吸引的倒计时。当生物不再被吸引时获得此记忆,记忆值为100游戏刻(5秒)。此记忆值每刻减1,直到减为0时此记忆被抹除,生物再次可以被吸引。
minecraft:gaze_cooldown_ticks[]
此记忆的数据类型为Integer,不会过期。使用此记忆只有骆驼。
骆驼使用此记忆保存随机凝视一个位置的冷却时间。当骆驼随机选择一个方向凝视后,它会获得这个记忆,记忆值范围为150游戏刻(7.5秒)到250游戏刻(12.5秒)之间。此记忆值每刻减1,直到减为0时此记忆被抹除,此时骆驼又可以随机选择一个方向凝视。
minecraft:is_tempted[]
此记忆的数据类型为Boolean,不会过期。使用此记忆的有山羊、美西螈、青蛙、蝌蚪和骆驼。
生物使用此记忆保存现在是否被吸引。当生物第一次被吸引后获得此记忆,之后此记忆不会自然丢失。
minecraft:long_jump_cooling_down[]
此记忆的数据类型为Integer,不会过期。使用此记忆的有山羊和青蛙。
生物使用此记忆保存长跳的倒计时。当生物进行长跳之后获得此记忆,对于山羊记忆值为600游戏刻(30秒)到1200游戏刻(60秒)之间,对于青蛙为100游戏刻(5秒)到140游戏刻(7秒)之间。如果生物尝试长跳失败也会获得此记忆,但记忆值会减半。此记忆值每刻减1,直到减为0时此记忆被抹除,此时生物又可以进行一次长跳。
minecraft:has_hunting_cooldown[]
此记忆的数据类型为Boolean,值固定为true,过期时长为2400游戏刻(120秒)。使用此记忆的有美西螈和青蛙,但由于青蛙不会主动获得此记忆,所以在普通情况下青蛙不存在此记忆。
生物使用此记忆保存是否处于捕食冷却的状态。当捕食结束时生物获得此记忆,此记忆值每刻减1,直到减为0时此记忆被抹除,此时生物才可以再次进行捕食。
minecraft:ram_cooldown_ticks[]
此记忆的数据类型为Integer,不会过期。使用此记忆的只有山羊。
山羊使用此记忆保存冲撞的冷却时间。当一次冲撞结束后,山羊会获得此记忆,普通山羊记忆值为600游戏刻(30秒)到6000游戏刻(300秒)之间,尖叫山羊为100游戏刻(5秒)到300游戏刻(15秒)之间。如果冲撞过程中目标消失,或者记忆值减为0时山羊未选择目标,山羊也会获得此记忆,普通山羊记忆值为600游戏刻(30秒),尖叫山羊为100游戏刻(5秒)。此记忆值每刻减1,直到减为0时此记忆被抹除,如果山羊已选择目标,未冲撞结束或目标消失时记忆会保持0不会被抹除,此时山羊才可以再次进行冲撞。
minecraft:is_in_water[]
此记忆的数据类型为Unit,不会过期。使用此记忆的只有青蛙。
青蛙使用此记忆保存现在是否在水中,用于游泳和跳跃行为。当青蛙入水时获得此记忆,出水时立刻丢失此记忆。
minecraft:is_pregnant[]
此记忆的数据类型为Unit,不会过期。使用此记忆的只有青蛙。
青蛙使用此记忆保存现在是否怀孕,用于产卵行为。当青蛙繁殖成功怀孕时获得此记忆,产卵后立刻丢失此记忆。
minecraft:is_panicking[]
此记忆的数据类型为Boolean,值固定为true,不会过期。使用此记忆的有山羊、美西螈、悦灵、青蛙、蝌蚪和骆驼。
生物使用此记忆保存现在是否处于慌乱状态,在此状态下生物不会被吸引、青蛙不会捕食,并且生物会朝着随机的方向快速逃离。当生物受伤进入慌乱状态时获得此记忆,回到正常状态时丢失此记忆。
minecraft:angry_at[]
此记忆的数据类型为UUID,过期时长为600游戏刻(30秒)。使用此记忆的有猪灵和猪灵蛮兵。
猪灵和猪灵蛮兵使用此记忆保存愤怒的目标,可以为玩家也可以为某一生物,从而对目标进行攻击。当猪灵或猪灵蛮兵找到愤怒目标时获得此记忆,当目标被杀死或消失时丢失此记忆。
minecraft:universal_anger[]
此记忆的数据类型为Boolean,值固定为true,过期时长为600游戏刻(30秒)。使用此记忆的只有猪灵。
猪灵使用此记忆保存是否对玩家有着全局的愤怒。当游戏规则universalAnger
为true且猪灵对玩家愤怒时获得此记忆。
minecraft:admiring_item[]
此记忆的数据类型为Boolean,值固定为true,过期时长为120游戏刻(6秒)。使用此记忆的只有猪灵。
猪灵使用此记忆保存是否正在端详物品。当猪灵开始端详物品时获得此记忆,记忆过期时端详完毕,在端详过程中被除猪灵的生物伤害时立刻丢失此记忆。
minecraft:admiring_disabled[]
此记忆的数据类型为Boolean,值固定为true,过期时长为400游戏刻(20秒)。使用此记忆的只有猪灵。
猪灵使用此记忆保存是否不进行端详物品。当猪灵被玩家伤害时获得此记忆,记忆过期后猪灵才会再次端详物品。
minecraft:hunted_recently[]
此记忆的数据类型为Boolean,值固定为true,过期时长为600游戏刻(30秒)到2400游戏刻(120秒)之间。使用此记忆的只有猪灵。
猪灵使用此记忆保存近期是否捕猎疣猪兽。当猪灵刚生成时或成功猎杀疣猪兽后获得此记忆,在此记忆存在期间猪灵不会尝试再次捕猎疣猪兽。
minecraft:recent_projectile[]
此记忆的数据类型为Unit,过期时长为100游戏刻(5秒)。使用此记忆的只有监守者。
监守者使用此记忆保存最近是否察觉到弹射物,当此记忆已存在时监守者能定位弹射物的位置。当监守者监听到弹射物振动时获得此记忆。
minecraft:is_sniffing[]
此记忆的数据类型为Unit,不会过期。使用此记忆的只有监守者。
监守者使用此记忆保存是否正在嗅探周围的生物。当监守者开始嗅探时获得此记忆,停止嗅探时抹除此记忆。
minecraft:is_emerging[]
此记忆的数据类型为Unit,过期时长为134游戏刻(6.7秒)。使用此记忆的只有监守者。
监守者使用此记忆保存是否正在钻出。当监守者生成时获得此记忆,此记忆过期时完成钻出动作。
minecraft:roar_sound_delay[]
此记忆的数据类型为Unit,过期时长为25游戏刻(1.25秒)。使用此记忆的只有监守者。
监守者使用此记忆保存发出怒吼声音的倒计时。当监守者开始怒吼时获得此记忆,此记忆过期时发出怒吼的声音。
minecraft:dig_cooldown[]
此记忆的数据类型为Unit,过期时长为1200游戏刻(60秒)。使用此记忆的只有监守者。
监守者使用此记忆保存钻入地下的倒计时。当监守者增加愤怒值或检测到目标时重置此记忆的过期时长,此记忆过期时监守者开始钻回地下。
minecraft:roar_sound_cooldown[]
此记忆的数据类型为Unit,过期时长为59游戏刻(2.95秒)。使用此记忆的只有监守者。
监守者使用此记忆保存怒吼的冷却时间。当监守者发出怒吼后获得此记忆,此记忆过期时可以再次发出怒吼。
minecraft:sniff_cooldown[]
此记忆的数据类型为Unit。使用此记忆的有监守者和嗅探兽。
监守者使用此记忆保存进行嗅探的冷却时间,过期时长为100游戏刻(5秒)。当监守者通过嗅探得到骚乱位置时获得此记忆,此记忆过期时可以再次进行嗅探。
嗅探兽使用此记忆保存嗅探远古植物种子的冷却时间,过期时长为9600游戏刻(480秒)。当嗅探兽挖掘完毕后获得此记忆,此记忆过期后可以再次进行嗅探。
minecraft:touch_cooldown[]
此记忆的数据类型为Unit,过期时长为20游戏刻(1秒)。使用此记忆的只有监守者。
监守者使用此记忆保存感受推动的冷却时间。当监守者被推动后获得此记忆,此记忆过期时可以再次感受推动。
minecraft:vibration_cooldown[]
此记忆的数据类型为Unit,过期时长为40游戏刻(2秒)。使用此记忆的只有监守者。
监守者使用此记忆保存监听振动的冷却时间。当监守者接收振动后获得此记忆,此记忆过期时可以再次监听振动。
minecraft:sonic_boom_cooldown[]
此记忆的数据类型为Unit,具有过期时长。使用此记忆的只有监守者。
监守者使用此记忆保存开始远程攻击的冷却时间。当监守者停止远程攻击时和使用非远程攻击伤害生物后获得此记忆,过期时长为40游戏刻(2秒);当监守者察觉到目标时也可以获得此记忆,过期时长为200游戏刻(10秒)。此记忆过期时监守者可以开始发动远程攻击。
minecraft:sonic_boom_sound_cooldown[]
此记忆的数据类型为Unit,过期时长为26游戏刻(1.3秒)。使用此记忆的只有监守者。
监守者使用此记忆保存远程攻击充能前的冷却时间。当监守者结束上一次远程攻击后获得此记忆,此记忆过期时可以再次开始充能远程攻击。
minecraft:sonic_boom_sound_delay[]
此记忆的数据类型为Unit,过期时长为34游戏刻(1.7秒)。使用此记忆的只有监守者。
监守者使用此记忆保存发动远程攻击的倒计时。当监守者开始远程攻击发出充能声音后获得此记忆,此记忆过期时可以发出远程攻击的声音与粒子效果并伤害目标生物。
minecraft:liked_player[]
此记忆的数据类型为UUID,不会过期。使用此记忆的只有悦灵。
悦灵使用此记忆保存给它物品的玩家,用于追随玩家和扔给玩家物品。当玩家给予悦灵物品时获得此记忆,当玩家取回悦灵手中物品时丢失此记忆。
minecraft:liked_noteblock[]
此记忆的数据类型为GlobalPos,不会过期。使用此记忆的只有悦灵。
悦灵使用此记忆保存喜爱的音符盒,用于将物品扔到音符盒的位置。当音符盒振动事件被悦灵探测到时获得此记忆,当音符盒被破坏时不会立刻丢失此记忆,而是等到下次准备丢出物品时丢失。
minecraft:liked_noteblock_cooldown_ticks[]
此记忆的数据类型为Integer,不会过期。使用此记忆的只有悦灵。
悦灵使用此记忆保存听到音符盒声音后的记忆时间,控制是否接收其他音符盒事件和忘记音符盒位置。当音符盒振动事件被悦灵探测到时获得此记忆,记忆值为600游戏刻(30秒)。此记忆值每刻减1,直到减为0时记忆被抹除,同时抹除minecraft:liked_noteblock
记忆。
minecraft:item_pickup_cooldown_ticks[]
此记忆的数据类型为Integer,不会过期。使用此记忆的有悦灵、村民和猪灵,但村民与猪灵不会主动获取此记忆。
悦灵使用此记忆保存捡起物品的冷却时间。当悦灵捡起物品后获得此记忆,记忆值为60游戏刻(3秒)。此记忆值每刻减1,直到减为0时记忆被抹除,此时又可以再次捡起物品。
minecraft:sniffer_explored_positions[]
此记忆的数据类型为List<BlockPos>,不会过期。使用此记忆的只有嗅探兽。
嗅探兽使用此记忆保存已经探索过的位置,如果一个方块位置在此记忆列表中,则嗅探兽不会再去这个位置进行挖掘。列表内最多存储20个方块位置数据。
历史[]
关于“生物记忆”的历史,请见各版本页面。
关于“生物记忆”的历史,请见各版本页面。
关于“生物记忆”的历史,请见各版本页面。
关于“生物记忆”的历史,请见各版本页面。
版本 | |||||||
---|---|---|---|---|---|---|---|
开发周期 |
| ||||||
技术 |
| ||||||
多人游戏 | |||||||
游戏订制 |