空白 Antique Atlas

合成材料。右键后消耗 1 个,向世界申请一个新的 atlasID 并把玩家当前位置设为该图册的浏览中心,返回一本刚建好但还没有任何已扫描数据的地图册。

基本信息

属性 值
注册名 antiqueatlas:emptyAntiqueAtlas(GameRegistry.registerItem(itemEmptyAtlas, "emptyAntiqueAtlas"))
内部类 hunternif.mc.atlas.item.ItemEmptyAtlas
本地化名 item.emptyAntiqueAtlas.name = Empty Antique Atlas
物品组 CreativeTabs.tabTools
子类型 否
最大堆叠 64(Item 默认值,未覆写)
附魔适用 否(未覆写 getItemEnchantability)
耐久度 无
图标 antiqueatlas:item/emptyAntiqueAtlas

功能

onItemRightClick 的完整流程(客户端直接 return stack,不消耗):

  1. atlasID = world.getUniqueDataId(ItemAtlas.WORLD_ATLAS_DATA_ID),其中常量 WORLD_ATLAS_DATA_ID = "aAtlas"。
  2. 构造 new ItemStack(AntiqueAtlasMod.itemAtlas, 1, atlasID)。
  3. 取得 AtlasDataHandler.getAtlasData(atlasID, world),把玩家所在维度的浏览位置设为 x = round(-player.posX * settings.defaultScale)、y = round(-player.posZ * settings.defaultScale)、 zoom = settings.defaultScale,然后 atlasData.markDirty()。 注意 X/Z 取负——地图界面里世界坐标向屏幕上方/左为正方向。
  4. 取得 MarkersDataHandler.getMarkersData(atlasID, world) 并 markDirty(),建一张空的标记数据表。
  5. stack.stackSize--:堆叠数减 1。若减到 0,直接返回新图册;否则把新图册的副本塞进背包,塞不进则用 ForgeHooks.onPlayerTossEvent 丢在脚下。

使用方式

使用方式 触发条件 使用效果 条件/限制
快捷栏右键 服务端(world.isRemote 时直接返回,不消耗) 消耗 1 个,换取 1 本新 ID 的 Antique Atlas 多人游戏在服务端判定;新图册只有一个空的数据表

合成配方

无序(shapeless)配方,来自 GameRegistry.addShapelessRecipe:

原料 数量
minecraft:book 1
minecraft:compass 1

也可与已填充图册配合克隆:RecipeAtlasCloning 接受 1 本 Antique Atlas + ≥1 本空白地图册,产出 N+1 本同 ID 的地图册。

数值

属性 值
消耗 每次右键 1 个
新图册初始浏览缩放 settings.default_scale(默认 0.5)
新图册 atlasID 来源 world.getUniqueDataId("aAtlas") 递增

耐久与消耗

项目 值
最大耐久 无
每次使用消耗 1 个物品
使用后是否消失 堆叠数为 1 时消失;>1 时剩余数量留存并额外产出 1 本地图册

相关条目