Skip to content
iPlugin

实体匹配提供商

解析内容匹配实体

抽象类

/**
 * 实体匹配提供商
 */
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
    }

}