PageBase
基本信息
| 属性 | 值 |
|---|---|
| 类名 | amerifrance.guideapi.api.base.PageBase |
| 类型 | class implements IPage |
| 字段 | protected boolean unicode |
| 启用版本 | Minecraft 1.7.10 |
功能
IPage 的全空默认实现。除 canSee 外的 6 个接口方法
全部是空方法体,因此子类只需覆写自己关心的部分。
唯一有实际逻辑的方法:canSee
return ((bookStack.hasTagCompound()
&& bookStack.stackTagCompound.getBoolean("CreativeBook"))
|| ItemLostPage.bookHasPage(bookStack,
GuideRegistry.getIndexOf(book),
book.categoryList.indexOf(category),
category.entryList.indexOf(entry),
guiEntry.pageNumber)
|| !book.isLostBook);
实现要点
canSee的三个条件是或关系:- 物品带
CreativeBookNBT 标记(创造模式给予的完整书); - 玩家已持有对应页面坐标的残页(由
ItemLostPage 的
bookHasPage判定); - 该书根本不是残页书(
!book.isLostBook)。 即:普通书全部可见;残页书需逐页解锁,或用创造模式的书绕过。
- 物品带
- 三个条件都不判
hasTagCompound为 null 的安全性: 条件 2 内部的bookHasPage会自行检查hasTagCompound。 - 另有
setUnicodeFlag(boolean)(@SideOnly(CLIENT))设置unicode字段, 该字段供 PageText 等子类决定字体。 equals实现极简:只判this == o、非 null、同类, 不比较任何字段——所有PageBase子类实例只要同类型就判相等。 这直接影响pageList.indexOf(...)的查找结果。- 本类没有实现
IRecipeRenderer,与 IRecipeRenderer 无关。
相关条目
- IPage - 实现的接口
- ItemLostPage -
bookHasPage的定义处 - GuideRegistry -
getIndexOf的来源 - PageText - 常用子类
- PageHelper - 页面查找辅助
- PageWrapper - 页面的网络包装