星门控制器方块
星门多方块结构的核心方块(BlockStargateController)。它位于拱门底部正中,自身携带 TileStargateController(挂载在成形后的 已成形星门方块 上),保存地址、连接状态与拨号动画。
基本信息
| 属性 | 值 |
|---|---|
| 注册名 | stargatenh:<group>_stargate_controller |
| 方块类 | BlockStargateController |
| ItemBlock | BlockStargateController.ItemBlockStargateController |
| TileEntity | TileStargateController,注册 ID TileEntityStargateControllerNH |
| 材质 | Material.iron |
| 硬度 / 爆炸抗性 | 本 mod 未设置,继承原版默认值(2.0 / 10.0) |
| 亮度 | 无 |
| 掉落 | 固定 damage 0(未覆写 damageDropped) |
6 种材质组各自注册一个独立实例:stargatenh:default_stargate_controller、stargatenh:split_origin_stargate_controller、stargatenh:polychrome_contest_stargate_controller、stargatenh:dimensional_duplicity_stargate_controller、stargatenh:harmonic_breakthrough_stargate_controller、stargatenh:heavenly_fire_stargate_controller。
[!NOTE]
ItemBlockStargateController没有覆写damageDropped,所以控制器方块物品永远以 damage 0 存在。这与 星门环方块 / 星门雪佛龙方块 的ItemBlockStargate会原样保留 metadata 形成对照。
功能
- 结构核心:放下时立即对自身执行 15 项结构检测;成形后成为整座星门的坐标原点(偏移表以本方块为
(0, 0))。 - 地址宿主:通过
TileStargateController.setAddress()持有一个 7 位地址,存入全局 星门注册表。 - 拨号发起端:
TileStargateController.dialOut()拨向目标地址,外环 7 个雪佛龙依次锁定。 - 传送目的地:
doTeleport()把实体传送到本方块y + 1.5处。
摆放要求
-
朝向由玩家视线决定,
onBlockPlacedBy()依placer.rotationYaw写入 metadata,写入值只可能是 2 / 3 / 4 / 5:玩家朝向 写入 meta 方向 0 2 北(−Z) 1 5 东(+X) 2 3 南(+Z) 3 4 西(−X) -
摆放后 metadata 即被结构检测当作
facing读取,不可手动旋转;改朝向必须先拆掉重放。 -
周围 15 个位置需由同一材质组的星门方块按 星门 的偏移表精确填充。
-
可反复放置:成形状态下放置普通控制器方块会走
onPostBlockPlaced()重新检测,凑齐时可再次触发formGate()。
数值
| 数值名 | 值 |
|---|---|
| 结构中所需数量 | 1(核心) |
| 有效朝向取值 | 2 / 3 / 4 / 5 |
| 结构外尺寸 | 宽 5 × 高 5 × 厚 1 |
| 传送落点 | (x, y + 1.5, z) |
| 渲染包围盒 | (x−3, y, z−3) – (x+2, y+4, z+2)(getRenderBoundingBox()) |
| 能量存储 / 传输 | 无(本 mod 无能量系统) |
交互
| 触发 | 行为 |
|---|---|
| 放置 | 立即执行结构检测(runStructureCheck) |
| 左键 / 右键 | 无任何自定义交互(未覆写 onBlockActivated) |
| 破坏 | 整座成形星门立刻解体(breakBlock 中 meta > 1 分支直接 deform()) |
[!IMPORTANT] 本方块独立放置时不带 TileEntity——TileEntity 只在成形后挂到
BlockFormedGate上(hasTileEntity(meta) = meta > 1)。因此单独放置的控制器方块没有地址,也不能拨号。
外观
getIcon() 中若 meta == 0 会先当作 meta = 3 处理(物品渲染的兼容技巧),随后:上/下表面用 stargate_top;正对朝向的那一面用 <group>/controller 贴图;其余侧面用 <group>/stargate_side。
所属多方块结构
- 星门 - 结构核心,决定朝向