天境机器方块

基本信息

天境有 3 台功能机器与 1 座祭坛,全部使用 Material.rock,在 BlocksAether.initialization() 的 :197-200 注册。

注册名 中文名 类 硬度 TileEntity GUI ID 采集等级
aether_legacy:enchanter 祭坛 BlockEnchanter 2.0 TileEntityEnchanter 2 镐 0
aether_legacy:freezer 冰冻器 BlockFreezer 2.5 TileEntityFreezer 3 镐 0
aether_legacy:incubator 孵化器 BlockIncubator 2.0 TileEntityIncubator 4 镐 0
aether_legacy:sun_altar 日轮祭坛 BlockSunAltar 2.5 无 无(自定义界面) 镐 0

GUI ID 常量定义在 AetherGuiHandler.java:31:

public static final int accessories = 1, enchanter = 2, freezer = 3, incubator = 4, treasure_chest = 5, lore = 6;

硬度来源:BlockEnchanter.java:37、BlockFreezer.java:37、BlockIncubator.java:37、BlockSunAltar.java:32。TileEntity 注册见 AetherTileEntities.java:8-10。

功能

祭坛(Enchanter)—— 附魔机

TileEntityEnchanter 把物品按附魔表转化为产物。槽位分工:

槽位 内容 校验
0 待附魔的物品 AetherAPI.instance().getEnchantment(stack) != null
1 附魔燃料 AetherAPI.instance().isEnchantmentFuel(stack)
2 产物输出 enchantment.getOutput() 与槽内物品一致才可放入(TileEntityEnchanter.java:126-130)

动力流程(TileEntityEnchanter.java:108-121):powerRemaining <= 0 时消耗一个槽 1 燃料,把 getTimeGiven() 加到 powerRemaining;没有有效燃料时把 currentEnchantment 与 progress 全部清零(:117-119)。

timeRequired 来自 AetherEnchantment.getTimeRequired()(TileEntityEnchanter.java:140),并可被 AetherHooks.onSetEnchantmentTime 改写(:142-143);每升一级附魔 +1250 tick(:159)。

附魔燃料只有一种:神能碎片 ambrosium_shard,提供 500 动力(AetherRegistries.java:298)。

冰冻器(Freezer)—— 转化机

结构与祭坛完全对称,但走冷凝表:

槽位 内容 校验
0 待冷凝物品 AetherAPI.instance().getFreezable(stack)
1 冷凝燃料 AetherAPI.instance().isFreezableFuel(stack)
2 产物输出 TileEntityFreezer.java:127-130

冷凝燃料只有一种:冰石 icestone,提供 500 动力(AetherRegistries.java:330)。

冷凝表共 12 条,见 附魔与冷凝系统。

孵化器(Incubator)—— 恐鸟蛋孵化

TileEntityIncubator 逻辑与前两台不同:不使用附魔/冷凝 API,而是硬编码。

  • 3 个槽位(TileEntityIncubator.java:30:new FilledList<ItemStack>(3, null))
  • 槽 0 只能是神能火把 ambrosium_torch(isValidSlotItem,TileEntityIncubator.java:141-143)
  • 槽 1 只能是恐鸟蛋 moa_egg(同上)
  • 每次消耗一支神能火把获得 1000 动力(TileEntityIncubator.java:129)
  • 孵化时间固定 5700 tick(TileEntityIncubator.java:28:public int ticksRequired = 5700;),不受附魔等级影响
  • 孵化完成时在孵化器正上方寻找第一个非空气方块,把恐鸟放在其上(TileEntityIncubator.java:105-108)
  • 产出恐鸟被标记为 setPlayerGrown(true) 且成长值为 -24000(即已成年)(TileEntityIncubator.java:100-101)
  • 产出后触发 AchievementsAether.incubator 成就(TileEntityIncubator.java:95)

顶面/侧面朝向限制:只有侧面可取放物品,getAccessibleSlotsFromSide 在 side == 0(顶面)时返回空数组(TileEntityIncubator.java:152-154)。

日轮祭坛(Sun Altar)

BlockSunAltar 没有 TileEntity,也没有常规 GUI。它是结束天境永昼的交互方块,触发条件严格(BlockSunAltar.java:63-104):

  1. 玩家必须在天境维度(player.dimension == AetherConfig.getAetherDimensionID(),:65)
  2. 世界提供者必须是 AetherWorldProvider(:66-67)
  3. 必须处于永昼状态 provider.getIsEternalDay()(:73)
  4. 必须已完成时间追赶 provider.getShouldCycleCatchup()(:73)

满足后按环境分两种放行:

环境 条件 行为
专用服务器 玩家是 OP(func_152596_g)或 配置 sunAltarMultiplayer 为真 打开日轮界面
非专用服务器 / 客户端 玩家有权限等级 2(canCommandSenderUseCommand(2, ""))或 配置为真 打开日轮界面

失败时分别提示 gui.sun_altar.eternal_day、gui.sun_altar.cycle_catchup、gui.sun_altar.permission、gui.sun_altar.message(对应不在永昼、追赶未完成、无权限、不在天境)。

顶面贴图复用狱炎石(BlockSunAltar.java:47),底面亦然,侧面为自身图标。

数值

数值名 值 来源
祭坛硬度 2.0 BlockEnchanter.java:37
冰冻器硬度 2.5 BlockFreezer.java:37
孵化器硬度 2.0 BlockIncubator.java:37
日轮祭坛硬度 2.5 BlockSunAltar.java:32
孵化时间 5700 tick TileEntityIncubator.java:28
孵化器燃料动力 1000 / 支神能火把 TileEntityIncubator.java:129
祭坛燃料动力 500 / 个神能碎片 AetherRegistries.java:298
冰冻器燃料动力 500 / 个冰石 AetherRegistries.java:330
每级附魔额外耗时 +1250 tick TileEntityEnchanter.java:159
孵化器槽位数 3 TileEntityIncubator.java:30
孵化产出恐鸟成长值 -24000(成年) TileEntityIncubator.java:102
日轮权限等级 2 BlockSunAltar.java:80

交互

触发 祭坛 冰冻器 孵化器 日轮祭坛
右键 打开 GUI ID 2 打开 GUI ID 3 打开 GUI ID 4 满足条件时打开日轮界面
顶面 — — 不可取放(side == 0 返回空) —
破坏 掉落全部内容物 掉落全部内容物 掉落全部内容物 掉落自身

相关条目