BookCreator
基本信息
| 属性 | 值 |
|---|---|
| 类名 | amerifrance.guideapi.util.serialization.BookCreator |
| 类型 | class,2 个静态方法 + 6 个静态内部类 |
| 内部类 | CustomItemStackJson、CustomColorJson、CustomPageJson、CustomEntryJson、CustomCategoryJson、CustomBookJson |
| 启用版本 | Minecraft 1.7.10 |
功能
Gson 反序列化基础设施:注册自定义类型适配器,并从 JSON 加载整本书。
两个静态方法
| 方法 | 调用时机 | 作用 |
|---|---|---|
registerCustomSerializers(GsonBuilder) |
preInit |
往 builder 注册 6 个自定义适配器 |
registerJsonBooks(GsonBuilder) |
postInit |
扫描并加载 JSON 书文件 |
6 个内部 JSON 适配器
| 内部类 | 负责的类型 |
|---|---|
CustomItemStackJson |
ItemStack |
CustomColorJson |
java.awt.Color |
CustomPageJson |
IPage |
CustomEntryJson |
EntryAbstract |
CustomCategoryJson |
CategoryAbstract |
CustomBookJson |
Book |
实现要点
GuideRegistry.bookBuilder在preInit中被赋为new GsonBuilder(), 适配器随即注册;实际.create()与文件读取发生在postInit。- 适配器全部实现 ITypeReader(
JsonSerializer+JsonDeserializer双向)。 - 分层的 JSON 反序列化是 Guide-API 的卖点之一(README:
Also allows book creation via JSON files.), 即书的内容可以不写 Java 代码而从 JSON 定义。 registerJsonBooks放在postInit而非preInit, 是为了让所有依赖方 mod 都有机会先registerBook, 避免 JSON 书被加载到空的注册表前面。
相关条目
- ITypeReader - 适配器实现的接口
- TypeReaders - 实际读写实现
- GuideRegistry -
bookBuilder字段与Book列表 - GuideAPI - 两个注册方法的调用方
- BookHelper - 书反序列化辅助
- PageHelper - 页面反序列化辅助