BookDataStore
基本信息
| 属性 | 值 |
|---|---|
| 类名 | mantle.books.BookDataStore |
| 类型 | class,7 个 public 方法 |
| 内部结构 | 2 个 HashBiMap + 1 个 List<String> |
| 启用版本 | 1.7.10 |
功能
全局书籍注册表:按名字、按整数 ID 双向查找,并记录哪些书来自 zip。
实现要点
data是HashBiMap<String, BookData>,intMap是HashBiMap<Integer, String>,实现名字 ↔ ID 的双向映射。- ⚠️ 缺陷:
addBook(第 14-21 行)用data.size()当 ID,而HashBiMap.put对重复 key 会覆盖且 size 不增。同名书籍注册两次会拿到同一个 ID,intMap也会被覆盖成同一个值。 - ⚠️ 缺陷:
getIDFromName(第 36-38 行)对intMap.inverse().get(...)的返回值直接做拆箱。名字不存在时返回 null → NPE。getIDFromBook与getBookfromID同样有这条路径。 Manual.addInformation正是通过getBookfromID(stack.getItemDamage())进入这条路径的(见 Manual 条目)。zipBooks单独记录来自外部 zip 的书名,供 GUI 决定是否显示来源标记。