ItemLostPage

基本信息

属性 值
类名 amerifrance.guideapi.items.ItemLostPage
类型 class extends Item
注册名 ItemLostPage
本地化名 LostPage
堆叠上限 64(原版默认,未覆写)
启用版本 Minecraft 1.7.10

功能

「残页」物品。用 NBT 记录它指向哪本书的哪个分类的哪个条目的第几页, 用于 Book 中 isLostBook = true 的书—— 这类书的每一页都需要对应残页才能查看。

静态工具方法

方法 说明
bookHasPage(ItemStack bookStack, int book, int category, int entry, int pageNumber) 书的 NBT 里是否已记录该页(键 = book:category:entry:page)
setPage(ItemStack pageStack, int book, int category, int entry, int pageNumber) 在残页 NBT 里写入 NBTBookTags.KEY_TAG = 坐标串
getPageCharacteristics(ItemStack pageStack) 反解出 Object[]:[Book, CategoryAbstract, EntryAbstract, pageNumber+1]

实现要点

  • bookHasPage 用布尔键 book + ":" + category + ":" + entry + ":" + pageNumber 存放在书的 stackTagCompound 上——即「已解锁页面」记在书上,不是残页上。
  • setPage 把坐标串存放在残页的 NBT 的 NBTBookTags.KEY_TAG 键上。 即两种 NBT、两个不同用途:书记「已解锁」,残页记「指向哪」。
  • getPageCharacteristics 用 String.split(":") 解析, 并 catch (IndexOutOfBoundsException)(源码中该 catch 块对异常的处理 是把前 3 个元素置空、保留页码)。
  • 页码在返回时 + 1(对外从 1 开始计数,内部从 0 开始)。
  • 解析用 org.apache.commons.lang3.math.NumberUtils.toInt(Commons Lang3)。
  • 构造器设 setHasSubtypes(true)、setTextureName(TEXLOC + "page_lost")、 setCreativeTab(GuideAPI.tabGuide)。
  • 本物品堆叠上限为 64(未覆写 setMaxStackSize), 与 ItemGuideBook 的 1 形成对比。

相关条目