SGBaseTE

基本信息

属性 值
类 gcewing.sg.tileentities.SGBaseTE(tileentities/SGBaseTE.java:91),共 1571 行
父类 BaseTileInventory
附着方块 gcewing_sg:stargateBase(在 SGBaseBlock 构造函数中注册,blocks/SGBaseBlock.java:63)
库存槽数 5,全部为伪装槽(tileentities/SGBaseTE.java:118-120)
状态枚举 gcewing.sg.SGState,6 值(SGState.java:9-16)
虹膜状态枚举 gcewing.sg.IrisState,4 值(IrisState.java:9-14)

功能

SGBaseTE 是整个模组的核心:地址计算、拨号状态机、能量消耗、传送、虹膜、伪装渲染、跨区块加载、OC 无线端点挂载全在这里。

地址与拨号

底座首次被服务端加载时(serverUpdate 的 !loaded 分支)计算自己的 homeAddress,失败则写入 addressError(tileentities/SGBaseTE.java:648-659)。地址编码规则见 星门地址。

拨号状态机按 SGState 推进:Idle → Dialling → Transient → Connected → Disconnecting,跨维度时多一个 InterDialling(SGState.java:11-16、tileentities/SGBaseTE.java:679-690)。每个符号先红石解锁、再由能量驱动,锁不住的位数叫"未拨通位数"(undialledDigitsRemaining),Idle 下会继续拨下一位(tileentities/SGBaseTE.java:681-682)。

能量

tickEnergyUsage() 每 tick 从控制器抽能量(tileentities/SGBaseTE.java:674)。energyToOpen 与 energyUsePerTick 不是配置项,而是由 energyPerFuelItem 推导出来的(tileentities/SGBaseTE.java:189-190):

  • energyToOpen = energyPerFuelItem / gateOpeningsPerFuelItem
  • energyUsePerTick = energyPerFuelItem / (minutesOpenPerFuelItem * 60 * 20)

因此调整 stargate.energyPerFuelItem 会同时改变单次开启成本与每 tick 消耗。

库存与伪装

5 个槽全部是伪装槽,firstCamouflageSlot = 0、numCamouflageSlots = 5(tileentities/SGBaseTE.java:118-120),对应 GUI 中每格最多放 1 个的 CamouflageSlot(guis/containers/slots/CamouflageSlot.java:13-15)。伪装内容决定导标的角度档位(baseCornerCamouflage(),见 tileentities/SGBaseTE.java:392-394)。

OC 无线端点

serverUpdate 首次加载时,若 SGCraft.ocIntegration != null,会调用 ocIntegration.onSGBaseTEAdded(this) 给底座挂一个 OCWirelessEndpoint(tileentities/SGBaseTE.java:657-658);区块卸载时若该端点存在则 remove()(tileentities/SGBaseTE.java:433-434)。这条链路确实双向连通,不是死代码。

数值

项目 值 配置键 来源
每件燃料能量 96000 stargate.energyPerFuelItem tileentities/SGBaseTE.java:131
每件燃料可开启次数 24 stargate.gateOpeningsPerFuelItem :134
每件燃料维持分钟 80 stargate.minutesOpenPerFuelItem :135
门保持开启秒数 300 stargate.secondsToStayOpen :136
单向通行 关闭 stargate.oneWayTravel :137
任一端可关闭 开启 stargate.closeFromEitherEnd :138
距离系数倍率 1.0 stargate.distanceFactorMultiplier :132
跨维度系数倍率 4.0 stargate.interDimensionMultiplier :133
区块加载半径 1 options.chunkLoadingRange :139
事件日志 关闭 options.logStargateEvents :140
奇点保留物品 关闭 iris.preserveInventory :141
音效音量 1.0 stargate.soundVolume :142
导标位置可变 开启 stargate.variableChevronPositions :143
半透明渲染 开启 stargate.transparency :148
单次开启能量 推导值 4000 — :189
每 tick 能量 推导值 1.0 — :190
拨号时间 / 跨维度拨号 40 / 10 tick — :105-106
瞬态 / 断开延时 20 / 30 tick — :108-109

baseCornerCamouflage() 取 5 个伪装槽中第 0 号与第 4 号槽的较大等级(tileentities/SGBaseTE.java:1480-1482)。等级判定:槽里是台阶 → 1,是完整立方体 → 2,空或其他 → 0(tileentities/SGBaseTE.java:1484-1494)。

完整 35 个配置键见 配置项。

交互

  • 红石输入:解锁待拨符号。redstoneInput 字段记录当前红石状态。
  • 红石输出:非 Idle 时输出 15(由 Stargate Base 的 getWeakPower 提供)。
  • GUI:见 界面。
  • 跨维度传送:SGLocation 记录目标维度与区块坐标,传送后调用 MystcraftIntegration.sendAgeData 同步 Mystcraft 年龄数据(tileentities/SGBaseTE.java:1107)。

相关条目