All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cn.nukkit.entity.ai.memory.IMemoryStorage Maven / Gradle / Ivy

There is a newer version: 1.20.40-r1
Show newest version
package cn.nukkit.entity.ai.memory;

import cn.nukkit.api.PowerNukkitXOnly;
import cn.nukkit.api.Since;
import cn.nukkit.entity.Entity;

import java.util.Map;

/**
 * 记忆存储器
 * 

* memory storage */ @PowerNukkitXOnly @Since("1.19.50-r1") public interface IMemoryStorage { /** * 写入数据到记忆类型 *

* Write data to MemoryType * * @param type 记忆类型 * @param data 数据 * @param 数据类型 */ void put(MemoryType type, D data); /** * 从指定记忆类型获取数据 *

* Get data from the specified MemoryType * * @param type 记忆类型 * @param 数据类型 * @return 数据 */ D get(MemoryType type); /** * 获取所有记忆 *

* get all memories * * @return 所有记忆 */ Map, ?> getAll(); /** * 清空指定记忆类型数据为null *

* Clear the specified MemoryType data to null * * @param type 记忆类型 */ void clear(MemoryType type); /** * 获取记忆存储所属的实体 *

* Get the entity that the memory store belongs to * * @return 实体 */ @Since("1.19.63-r1") Entity getEntity(); /** * 检查指定记忆类型数据是否为空(null) *

* Check if the specified memory type data is empty (null) * * @param type 记忆类型 * @return 是否为空 */ default boolean isEmpty(MemoryType type) { return get(type) == null; } /** * 检查指定记忆类型数据是否不为空(null) *

* Check if the specified memory type data is not empty (null) * * @param type 记忆类型 * @return 是否不为空 */ default boolean notEmpty(MemoryType type) { return get(type) != null; } /** * 使用指定的数据对比记忆类型存储的数据 *

* Use the specified data compare the data of memory type * * @param type 记忆类型 * @param to 指定的数据 * @return 是否相同 */ default boolean compareDataTo(MemoryType type, Object to) { D value; return (value = get(type)) != null ? value.equals(to) : to == null; } /** * 将此记忆存储器的数据编码进所属实体NBT(若MemoryType附加有编解码器) *

* Encode the data of this memory storage into the entity NBT (if there is a codec attached to the Memory Type) */ default void encode() { var entity = getEntity(); for (var memoryType : getAll().entrySet()) { memoryType.getKey().forceEncode(entity, memoryType.getValue()); } } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy