空白 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,不消耗):
atlasID = world.getUniqueDataId(ItemAtlas.WORLD_ATLAS_DATA_ID),其中常量WORLD_ATLAS_DATA_ID = "aAtlas"。- 构造
new ItemStack(AntiqueAtlasMod.itemAtlas, 1, atlasID)。 - 取得
AtlasDataHandler.getAtlasData(atlasID, world),把玩家所在维度的浏览位置设为x = round(-player.posX * settings.defaultScale)、y = round(-player.posZ * settings.defaultScale)、zoom = settings.defaultScale,然后atlasData.markDirty()。 注意 X/Z 取负——地图界面里世界坐标向屏幕上方/左为正方向。 - 取得
MarkersDataHandler.getMarkersData(atlasID, world)并markDirty(),建一张空的标记数据表。 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 本地图册 |
相关条目
- Antique Atlas - 本物品右键后的产物
- 地图数据模型 - 新建图册时创建的
aAtlas_<id>/aaMarkers_<id>数据表 - SettingsConfig -
default_scale的取值来源