注册表系统
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")
提示
注册表操作应在插件启用阶段完成。运行时动态注册/注销可能导致已加载的物品出现异常。