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 形成对比。
相关条目
- ItemsRegistry - 注册入口
- GuideAPIItems - 静态引用
- NBTBookTags -
KEY_TAG常量定义处 - PageBase -
bookHasPage的调用方(可见性判定) - LootGenerator - 生成残页战利品
- Book -
isLostBook/chestHooks/lootChance的定义处 - ItemGuideBook - 共享
CreativeBookNBT 键