Village Book

基本信息

属性 值
注册名 VillageNames:villagebook
类 astrotibs.villagenames.item.ItemVillageBook(item/ItemVillageBook.java:19)
父类 net.minecraft.item.ItemEditableBook
创造标签 继承默认(ItemEditableBook)

功能

Village Book(村庄书)是用空白书右键村民后生成的记录本,记录该村庄的名称、村民职业,以及在满足条件时给出的附近结构方位提示。

本 mod 所有书类共用 ItemVillageBook,仅在构造时传入不同的 unlocalized name(item/ModItems.java:18-36),因此 Village Book 本身并非可手工合成的独立物品,而是行为产物:其 NBT 内容由事件处理器写入。

onItemRightClick 仅在客户端打开书写界面(item/ItemVillageBook.java:67-73):

if (par3EntityPlayer.worldObj.isRemote) {
    Minecraft.getMinecraft().displayGuiScreen(new GuiScreenBook(par3EntityPlayer, par1ItemStack, false));
}

第三个参数为 false,即打开的书本不可编辑(item/ItemVillageBook.java:70)。

数值

数值名 值 来源
初始页数 1 页(内容为字符串 "Page 1",非 ItemEditableBook 默认的 2 页签名+正文) item/ItemVillageBook.java:55-57
书本发光 否(hasEffect 被覆写为返回 false,注释说明"Returning “false” stops the book from glowing") item/ItemVillageBook.java:75-79

交互

触发 行为
右键 客户端打开 GuiScreenBook 书写界面(不可编辑)
村民处右键空白书 生成 Village Book(受配置 villagerMakesBook 控制)

与村民的交互

村民侧的书籍生成由 EntityInteractHandler 处理,生成的书本页面由 WriteBookHandler 构造。WriteBookHandler 负责:

  • 判定玩家所在村庄(Village.dat),失败时回退到 OTG 村庄数据(handler/WriteBookHandler.java:332、:339)
  • 计算附近结构方位提示(handler/WriteBookHandler.java:706 writeStructureHintPage)
  • 触发 Ghost Town 成就:为空村庄生成 Village Book 时解锁(handler/WriteBookHandler.java:234-235)

相关条目