实体匹配提供商
解析内容匹配实体
抽象类
/**
* 实体匹配提供商
*/
abstract class EntityMatchProvider {
/**
* 实体匹配提供商的唯一标识符
*/
abstract val namespace: String
/**
* @param entity 实体
* @param demand 物品格式
* @return 如果实体满足条件,则返回 true,否则返回 false
*/
abstract fun match(entity: Entity, demand: Demand): Boolean
}注册提供商
// 创建一个实体匹配提供商实例
val provider = MyProvider()
// 注册实体匹配提供商
EntityMatchRegistry.registerProvider(provider)示例
/**
* Minecraft -type zombie -name 录了
*/
class BukkitEntityMatch: EntityMatchProvider() {
companion object {
@Awake(LifeCycle.ENABLE)
fun init() {
EntityMatchRegistry.registerProvider(BukkitEntityMatch())
}
}
override val namespace: String
get() = "minecraft"
override fun match(entity: Entity, demand: Demand): Boolean {
demand.get("type")?.let {
if (entity.type != EntityType.valueOf(it.uppercase())) return false
}
demand.get("name")?.let {
if (entity.customName != it) return false
}
return true
}
}