Antique Atlas

地图册本体。手持即自动扫描周围区块并把群系画进地图,右键打开可缩放、可滚动的地图界面。

基本信息

属性 值
注册名 antiqueatlas:antiqueAtlas(GameRegistry.registerItem(itemAtlas, "antiqueAtlas"))
内部类 hunternif.mc.atlas.item.ItemAtlas
本地化名 item.antiqueAtlas.name = Antique Atlas
物品组 无(构造时未调用 setCreativeTab,只有 ItemEmptyAtlas 进 tabTools)
子类型 开启(setHasSubtypes(true))
最大堆叠 64(ItemAtlas 未覆写 setMaxStackSize,取 Item 默认值)
附魔适用 否(未覆写 getItemEnchantability)
耐久度 无
图标 antiqueatlas:item/antiqueAtlas(registerIcons 用 item. 前缀截断后的 unlocalizedName)

功能

  • 子类型即数据 ID:物品的 metadata(ItemStack.getItemDamage())就是 atlasID。显示名覆写为 原名 + " #" + itemDamage,所以世界里能同时存在多本不同 ID 的地图册,ID 由 world.getUniqueDataId("aAtlas") 递增分配。
  • 数据落盘键:生物群系数据存于 WorldSavedData 键 aAtlas_<atlasID>,标记数据存于 aaMarkers_<atlasID>(见 地图数据模型)。
  • 自动扫描:onUpdate 每 tick 调用,按 settings.area_scan_interval 间隔以玩家为中心扫描半径 area_scan_radius 的圆形区域,详见 地图扫描效果。
  • 右键开图:onItemRightClick 客户端调 proxy.openAtlasGUI(stack),服务端直接返回原 stack(不消耗)。ClientProxy.openAtlasGUI 仅当 currentScreen == null(即无其他 GUI 打开)时才 displayGuiScreen(guiAtlas.setAtlasItemStack(stack))。
  • 标记系统入口:地图界面内可增删标记,标记本体模型见 标记系统。
  • 伪群系支持:扫描时优先查 ExtBiomeData(全局自定义 tile),命中则覆盖已扫描的自然群系,即使该区块早已被记录。

使用方式

使用方式 触发条件 使用效果 条件/限制
快捷栏右键 无方块目标 打开地图 GUI 已有其它 GUI 打开时不响应;不消耗物品
容器内更新(onUpdate) 物品在玩家主物品栏内 向服务器请求同步地图/标记数据;按间隔扫描周边区块 entity 必须是 EntityPlayer
装备/穿戴 — 未覆写任何护甲/穿戴接口,无效果 —

合成配方

本物品无法直接合成,只能通过以下两条路径获得:

配方 输入 输出 说明
空白地图册 右键 任意本空白地图册 1 本 Antique Atlas,ID = world.getUniqueDataId("aAtlas") 见 空白 Antique Atlas
克隆(RecipeAtlasCloning) 1 本 Antique Atlas + ≥1 本空白地图册 (N+1) 本 Antique Atlas,沿用原图册 ID 保留自定义名(hasDisplayName 时 setStackDisplayName)
合并(RecipeAtlasCombining) ≥2 本 Antique Atlas 1 本 Antique Atlas(返回第一本占位),数据全部并入 见 地图数据模型 的合并说明

RecipeAtlasCloning 与 RecipeAtlasCombining 均以 SHAPELESS 类别注册,优先级 after:minecraft:shapeless,getRecipeSize() 返回 9。

数值

数值 值
扫描半径 settings.area_scan_radius 默认 11(区块)
新区块扫描间隔 area_scan_interval 默认 1 秒(换算为 round(1f*20)=20 tick)
完全重扫间隔 20 tick × area_rescan_rate(默认 4)= 80 tick = 4 秒
上方两个尺寸变量 见 地图扫描效果

耐久与消耗

项目 值
最大耐久 无
每次使用消耗 无
使用后是否消失 否

相关条目