Stargate Base

基本信息

属性 值
注册名 gcewing_sg:stargateBase
英文名 Stargate Base(en_US.lang:4)
中文名 星门底座方块(zh_CN.lang:4)
类 gcewing.sg.blocks.SGBaseBlock(blocks/SGBaseBlock.java:41)
硬度 1.5,无抗爆属性(blocks/SGBaseBlock.java:64,未调用 setResistance)
TileEntity SGBaseTE,在方块构造函数内经 BaseBlock 注册(blocks/SGBaseBlock.java:63)
物品形态 反射式 BaseItemBlock(blocks/base/BaseBlock.java 的 getDefaultItemClass())
创造栏 gcewing_sg:sgcraft(SGCraft.java:106-110)

功能

底座是星门的唯一逻辑核心,也是整个 5×5×5 外环结构中唯一保存地址、能量与状态的方块。其余 24 个外环段(SGRingBlock)只持有指向底座的引用。

底座通过 checkForMerge 自行识别外环:按 pattern 数组在自身局部坐标的 -2..2 × 0..4 平面上逐格比对,图案为 1 的格子必须是外环方块(type 1),为 2 的格子必须是导标方块(type 2),为 0 的格子不做要求(blocks/SGBaseBlock.java:50-51、blocks/SGBaseBlock.java:169-197)。比对通过后调用 te.setMerged(true),再让所有外环段 mergeWith 回指底座,最后 te.checkForLink() 尝试寻找控制器(blocks/SGBaseBlock.java:188-196)。

isOpaqueCube() 返回 false、canRenderInLayer 对所有图层返回 true,用于让半透明伪装方块正确渲染(blocks/SGBaseBlock.java:70、blocks/SGBaseBlock.java:111-113)。getStrongPower 直接转发 getWeakPower,未激活时输出 0,状态非 Idle 时输出 15(blocks/SGBaseBlock.java:278-286)。

数值

项目 值 来源
合并图案宽度 × 高度 5 × 5 blocks/SGBaseBlock.java:50-51
爆炸半径 10 blocks/SGBaseBlock.java:46,配置 stargate.explosionRadius
爆炸火焰 开启 blocks/SGBaseBlock.java:47,配置 stargate.explosionFlame
爆炸烟雾 开启 blocks/SGBaseBlock.java:48,配置 stargate.explosionSmoke

交互

  • 右键:仅在 isMerged 为真时打开 星门地址界面(blocks/SGBaseBlock.java:150-153)。未合成时右键不产生任何效果。
  • 右键外环段:由 SGRingBlock.onBlockActivated 转发到底座,等效于右键底座(blocks/SGRingBlock.java:117-124)。
  • 方块被加入世界 / 邻块变化:触发 checkForMerge 或 te.onNeighborBlockChange()(blocks/SGBaseBlock.java:131-134、blocks/SGBaseBlock.java:164-167)。
  • 破坏:先 unmerge,再 dropUpgrades 把 hasChevronUpgrade / hasIrisUpgrade 还原为掉落物实体(blocks/SGBaseBlock.java:217-229)。若破坏时门处于 Connected 状态,会以底座正上方 2.5 格处为中心引爆(blocks/SGBaseBlock.java:235-246)。

相关条目