天境传送门

基本信息

属性 值
传送门方块 aether_legacy:aether_portal
门框物品 aether_legacy:aether_portal_frame
点燃物 aether_legacy:skyroot_bucket(5 种 meta 变体)
门框材质 Blocks.glowstone(原版萤石)
内部空间 2 × 3(宽 × 高)
完整外框 4 × 4

功能

天境传送门是进入天境维度的唯一常规途径,由三部分组成:

  1. 门框物品 aether_legacy:aether_portal_frame(ItemAetherPortalFrame)
  2. 门框方块 —— 使用门框物品时自动用原版萤石 Blocks.glowstone 铺设(ItemAetherPortalFrame.java:62,final Block frameBlock = Blocks.glowstone;)
  3. 传送门方块 BlocksAether.aether_portal(ItemAetherPortalFrame.java:64、86-88)

建造逻辑

ItemAetherPortalFrame.createPortalFrame()(ItemAetherPortalFrame.java:42)按玩家面朝方向放置:

  • 起点高度:若被点击方块可被替换则为 y + 1,否则 y + 2(ItemAetherPortalFrame.java:44-45)
  • 预检:4 × 5 范围内若存在既非空气又不可替换的方块则整体失败,不消耗物品(ItemAetherPortalFrame.java:49-59)
  • 第 1 步:清空 2 × 3 内部区域(ItemAetherPortalFrame.java:66-73)
  • 第 2 步:铺设 4 × 4 萤石外框,zi 取 0–3、yi 取 -1–3(ItemAetherPortalFrame.java:75-82)
  • 第 3 步:内部填入传送门方块,zi 取 1–2、yi 取 0–2(ItemAetherPortalFrame.java:84-91)

门内行为

BlockAetherPortal.onEntityCollidedWithBlock(BlockAetherPortal.java:40-50):

  • 玩家进入 → PlayerAether.get((EntityPlayer) entity).setInPortal(),标记为正在传送
  • 生物进入(且未骑乘任何实体)→ 通过扩展属性键 aether_legacy:entity_hook 取得 EntityHook 并调用 setInPortal()

BlockAetherPortal 继承 BlockPortal,不可破坏(setHardness(-1),BlockAetherPortal.java:28),爆炸抗性 900000F(:29),脚步声为 soundTypeGlass(:30)。

trySpawnPortal(BlockAetherPortal.java:52-68)会依次尝试高度 1 与高度 2 两种门框尺寸,先成功的先生成。

数值

数值名 值 来源
门框宽度 4 ItemAetherPortalFrame.java:75(zi < 4)
门框高度 5 ItemAetherPortalFrame.java:76(yi 从 -1 到 3)
传送门内部宽 2 ItemAetherPortalFrame.java:84(zi 取 1–2)
传送门内部高 3 ItemAetherPortalFrame.java:85(yi 取 0–2)
爆炸抗性 900000 BlockAetherPortal.java:29
传送门方块硬度 -1(不可破坏) BlockAetherPortal.java:28

交互

天根木桶(skyroot_bucket)

ItemSkyrootBucket 用 meta 区分 5 种状态(EnumSkyrootBucketType.java:5-9):

meta 枚举 中文名(zh_CN.lang) 说明
0 Empty 天根木桶 空桶,可从水源取水
1 Water 天根水桶 可点燃传送门
2 Poison 天根毒液桶 喷洒毒液
3 Remedy 天根药剂桶 解除负面效果
4 Milk 天根牛奶桶 清除药水效果
  • 点燃传送门:右键传送门方块,ItemSkyrootBucket.java:155 判断当前是否为 Empty,装满后返回 fillBucket(...)(:201)
  • 空桶耐久上限 16(ItemSkyrootBucket.java:91:... == EnumSkyrootBucketType.Empty ? 16 : 1)
  • 药剂桶与牛奶桶喷洒时调用 entityplayer.curePotionEffects(...)(ItemSkyrootBucket.java:328、:332)

仅用天根水桶激活

配置项「Activate portal with only Skyroot bucket」(AetherConfig.java:81-82,默认 false)可把门点燃方式限制为只有天根水桶可用。读取入口为 AetherConfig.activateOnlyWithSkyroot()(AetherConfig.java:222-224)。

合成配方

传送门本身无合成配方(aether_portal 由门框物品直接放置生成),aether_portal_frame 的配方定义在资源包 assets/aether_legacy/recipes/ 中。

相关条目