等离子电池
基本信息
| 属性 | 值 |
|---|---|
| 注册名 | gravisuiteneo:itemPlasmaCell |
| 英文名 | Plasma Cell [WIP](en_US.lang:7,WIP 标记来自 mod 自身) |
| 中文名 | 无中文翻译 |
| 实现类 | com.gtnewhorizons.gravisuiteneo.items.ItemPlasmaCell |
| 实现的接口 | IElectricItem、IItemTickListener(父模组)、ICustomItemBars、IFluidContainerItem |
| 稀有度 | EnumRarity.uncommon(ItemPlasmaCell.java:184) |
| 最大堆叠 | 1(:43) |
| 最大耐久 | 27(:42) |
| 流体容量 | 64000 mB(CAPACITY,:32) |
| 贴图 | gravisuiteneo:itemPlasmaCell(:45) |
双重身份
等离子电池同时是:
- 流体容器(
IFluidContainerItem)——装等离子,容量 64000 mB - IC2 电力物品(
IElectricItem)——自身也存 EU
它不是 等离子炮 的专属弹药,而是通用容器;炮只是从自己的 1 格弹药槽里读它。
流体部分
| NBT 键 | 类型 | 含义 |
|---|---|---|
Fluid |
NBTTagCompound | 内部流体(NBT_FLUID_TAG,:31) |
fill(:75-108)只接受效率值 ≥ 1 的流体(:77getPlasmaEfficiency(resource) < 1即返回 0);堆叠数必须为 1;已装液体必须isFluidEqual同种,否则拒绝drain(:111-135)抽干后(amount <= 0)移除整个Fluid标签(:128),使物品回到「空」状态getEmptyItem返回this(:178-180)——排空后得到的是同一个物品,不是空容器
电力部分
| 方法 | 返回值 | 来源 |
|---|---|---|
canProvideEnergy |
true |
:188-190 |
getMaxCharge |
Properties.ElectricPresets.PlasmaCell.maxCharge |
:193-195 |
getTier |
Properties.ElectricPresets.PlasmaCell.tier |
:198-200 |
getTransferLimit |
Properties.ElectricPresets.PlasmaCell.transferLimit |
:203-205 |
getChargedItem |
this |
:213-215 |
onTick |
false(不做事) |
:208-210 |
getChargedItem 返回自身,意味着充放电不消耗物品实体,只改 NBT。
数值
| 数值名 | 值 | 来源 |
|---|---|---|
| 流体容量 | 64000 mB | ItemPlasmaCell.java:32 |
| 最大电量 | 100000000 EU | Properties.ElectricPresets.PlasmaCell(Properties.java:122) |
| 电力等级 | 5 | 同上 |
| 传输上限 | 375000 EU/t | 同上 |
| 单次操作耗电 | 0 | 同上 |
| 效率表条目数 | 取决于运行时注册了哪些等离子流体 | GraviSuiteNeoRegistry.getRegisteredFuels() |
⚠️ 流体容量 64000 是硬编码常量(:32 private static final int CAPACITY = 64000),不受配置控制——ElectricPresets 里没有它。
自定义物品条
showDurabilityBar 返回 false(:172-174),改用本 mod 自己的 ICustomItemBars 双条显示:
| 条索引 | 含义 | 最小值颜色 | 最大值颜色 | 上限 |
|---|---|---|---|---|
| 0 | 电池 EU 电量 | 红 | 绿 | maxCharge |
| 1 | 内部流体量 | 红 | 黄 | CAPACITY(64000) |
- 条数:有液时 2 条(
getNumBars,:233-235) - 对齐:
BarAlignment.BOTTOM(底部对齐,:271-273) - 厚度:1 像素(
:276-278) - 反转:
getIsBarInverted恒true(:281-283)——条从满往空减 - 电量条数值取
ElectricItem.manager.getCharge(itemStack),流体条取getFluid(stack).amount(:259-268)
提示文本
getToolTipInfo(:146-166)被电池自身与 等离子炮 共用:
| 状态 | 提示 |
|---|---|
| 有液体 | message.plasmaCell.contains(流体名 + 数量)+ message.plasmaCell.efficiency(效率值) |
| 无液体 | message.plasmaCell.nothing + message.plasmaCell.efficiency 传 0.0f |
⚠️ 这两个 message.plasmaCell.* 键在 en_US.lang 中不存在(该文件只有 7 行物品相关键),会显示为原始键名。
创意标签变体
getSubItems(:218-230)动态生成变体,数量取决于 getRegisteredFuels():
- 1 个空电池(
ElectricItem.manager.charge充满 EU,但无流体) - 每个已注册等离子流体 1 个满电 + 满流体的电池(
fill(tempStack, new FluidStack(fluid, CAPACITY), true))
⚠️ 变体数不是固定值:由于 GraviSuiteNeoRegistry 的流体表存在前述 split(":", 1) 缺陷,实际只有从 GregTech API 取到的等离子才会进入 getRegisteredFuels()。在只靠配置文件配置等离子流体的环境下,本物品只有 1 个创意变体。
成就
gravisuite.qshield_plasmaimpact,坐标 (0, 0),类型 special,前置为 gravisuite.qshield_enable(Achievements.java:45-50)。
兼容映射
GraviSuite:itemPlasmaCell → gravisuiteneo:itemPlasmaCell(GraviSuiteNeo.java:72-74)。
配方
本仓库无配方。 common/RecipeHandler.java 只注册了纳米机器人与史诗镐之背包两条配方。