跳到主要内容

注册表系统

Baikiruto 使用通用的 Registry<T> 接口管理各类资源的注册与查询。

Registry<T> 接口

方法返回值说明
register(key: String, value: T)Unit注册条目
unregister(key: String)Unit注销条目
get(key: String)T?根据 key 获取条目
contains(key: String)Boolean检查 key 是否存在
keys()Set<String>获取所有已注册的 key
values()Collection<T>获取所有已注册的值
entries()Set<Map.Entry<String, T>>获取所有键值对
clear()Unit清空注册表
val api = Baikiruto.api()

// 获取物品注册表
val itemRegistry = api.getItemRegistry()

// 查询所有已注册的物品 ID
val allIds = itemRegistry.keys()
allIds.forEach { println("物品: $it") }

// 检查物品是否存在
if (itemRegistry.contains("my_sword")) {
val item = itemRegistry.get("my_sword")
println("找到物品: ${item?.id}")
}

内置注册表

通过 BaikirutoAPI 获取各类注册表:

方法注册表类型说明
getItemRegistry()Registry<Item>物品注册表
getModelRegistry()Registry<Model>模型注册表
getDisplayRegistry()Registry<Display>显示注册表
getGroupRegistry()Registry<Group>分组注册表
getMetaFactoryRegistry()Registry<MetaFactory>元数据工厂注册表
val api = Baikiruto.api()

// 物品注册表
val items = api.getItemRegistry()
println("已注册物品数: ${items.keys().size}")

// 模型注册表
val models = api.getModelRegistry()
println("已注册模型数: ${models.keys().size}")

// 显示注册表
val displays = api.getDisplayRegistry()

// 分组注册表
val groups = api.getGroupRegistry()

MetaFactory 管理

MetaFactory 用于定义物品的元数据处理逻辑。Baikiruto 提供便捷方法管理 MetaFactory:

方法返回值说明
registerMetaFactory(factory: MetaFactory)Unit注册元数据工厂
unregisterMetaFactory(key: String)Unit注销元数据工厂
getMetaFactory(key: String)MetaFactory?获取元数据工厂
val api = Baikiruto.api()

// 注册自定义 MetaFactory
api.registerMetaFactory(MyMetaFactory())

// 获取已注册的 MetaFactory
val factory = api.getMetaFactory("my_meta")
if (factory != null) {
println("MetaFactory: ${factory.key}")
}

// 注销
api.unregisterMetaFactory("my_meta")
提示

注册表操作应在插件启用阶段完成。运行时动态注册/注销可能导致已加载的物品出现异常。