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 决定是否显示来源标记。

相关条目