ZipLoader

基本信息

属性 值
类名 mantle.books.external.ZipLoader
类型 class,3 个 public 方法
入口 loadZip(File) → BookData
触发点 CoreConfig.loadBookLocations() 扫 config/SlimeKnights/*.zip
启用版本 1.7.10

功能

外部书籍机制:运行时扫描配置目录下的 zip,把打包好的书页解析成 BookData 并注册进 BookDataStore。这样 mod 作者不用重新打包 jar 就能更新书本内容。

实现要点

  • loadZip 是唯一的实质方法(229 行),解析 zip 内的 xml / json 页面描述。
  • isImage(String ext) 判断文件扩展名是否为图片——图片页从 zip 里抽出交给 MantleClientRegistry.imageCache。
  • getISArray(JsonArray a) 把 json 数组转成 ItemStack[]。
  • ⚠️ 缺陷:CoreConfig.loadBookLocations 直接 configFolder.listFiles() 未判空,若配置目录不可读会 NPE。
  • 本 mod 自带的示例书籍在 src/main/resources/assets/mantle/manuals/test.xml,但 loadBookLocations 只扫 config/SlimeKnights/ 下的 zip,不会加载 resources 里的这个 xml——它由 BookDataStore.addBook 那条测试书路径间接体现。

相关条目