Gravitation Suite Neo

[!INFO] Git Commit: 569cabf | Updated: 2026-10-01

Gravitation Suite Neo(内部 modid gravisuiteneo)是 Gravitation Suite 的增强附属模组,由 Namikon 与 glowredman 编写。它的 mcmod.info description 直说了定位:“Adds Epic Lappack and Plasma Cannon. Also tweaks some other things in Gravitation Suite.”

mcmod.info 的 modid / name / version 均为 ${modId} 占位符,真实 modid 只能从 Java 源码读出:src/main/java/com/gtnewhorizons/gravisuiteneo/GraviSuiteNeo.java:32 的 public static final String MODID = "gravisuiteneo";。与分类名 gravitation-suite-neo 不一致——注册名一律用 gravisuiteneo: 前缀。

定位

  • 本质:3 个新物品 + 24 个 Mixin 对父模组既有物品/机制打补丁
  • 不含:方块、多方块结构、TileEntity、GUI 方块、实体注册、自定义流体
  • 加载:preInit 注册 3 物品与渲染器/按键 → init 注册事件与 GraviSuiteTweaker.tweak() → postInit 注册成就页与配方
  • Mixin 机制:GTNHLib late-mixin(GraviSuiteNeoMixins,@LateMixin),注入清单硬编码在 Java(GraviSuiteNeoMixins.getMixins())。mixins.gravisuiteneo.json 与 mixins.gravisuiteneo.late.json 的 mixins / client / server 三个数组全为空,只用于声明配置文件与版本下限

物品列表

实体列表

  • 等离子球 - EntityPlasmaBallMKII,伤害 charge × 100,AABB 半径 6 × charge(钳制 1–15),父模组基础伤害常量 100.0F

机制补丁

  • Mixin 列表 - 24 个 Mixin(15 无条件 + 1 条件 + 8 仅客户端),本 mod 的主要价值所在
  • 配置文件 - 64 个有效选项 + 21 个仅注释项,写进 GraviSuite 的配置文件(本 mod 无自己的 cfg)
  • 医疗包按键 - 1 个按键,默认无绑定,穿量子护盾胸甲时发包

成就

common/Achievements.java 注册 1 个成就页,共 9 个成就,分 4 棵前置树:

成就 前置 坐标 (x, y) 类型
gravisuite.craft_plasma 无 (-4, -2) 普通
gravisuite.itsover9000 craft_plasma (-4, -4) special
gravisuite.ultrakill craft_plasma (-6, -2) special
gravisuite.vaporizeself craft_plasma (-4, 0) 普通
gravisuite.powerdrill_craft 无 (-2, -2) 普通
gravisuite.powerdrill_markIII powerdrill_craft (-2, 0) special
gravisuite.qshield_enable 无 (0, -2) 普通
gravisuite.qshield_plasmaimpact qshield_enable (0, 0) special
gravisuite.epic_lappack 无 (2, -2) special

成就图标部分使用父模组物品(GraviSuite.advDDrill、GraviSuite.graviChestPlate)或原版头颅(Items.skull meta 1 / 2)。

数值总表

全部平衡数值集中在 common/Properties.java 的两个枚举里,均可配置。

电力预设 ElectricPresets

枚举构造签名是 (maxCharge, tier, transferLimit, energyPerOperation)(Properties.java:129)。默认值:

预设 maxCharge tier transferLimit energyPerOperation
AdvJetPack 3000000 3 3000 12
AdvLapPack 3000000 3 30000 0
GraviChestPlate 30000000 4 300000 278
AdvChainsaw 1000000 2 500 100
AdvDrill 10000000 4 100000 3333
GraviTool 300000 2 3000 500
Relocator 10000000 4 100000 0
UltimateLappack 30000000 4 300000 0
EpicLappack 300000000 5 3000000 0
Vajra 10000000 4 100000 3333
PlasmaLauncher 10000000 5 375000 1000000
PlasmaCell 100000000 5 375000 0

⚠️ ArmorPresets(Properties.java:82-107)没有 AdvChainsaw / AdvDrill 等项,它只含 4 个护甲:AdvJetPack(0.0)、AdvLapPack(0.0)、AdvNanoChestPlate(0.36)、GraviChestPlate(0.44),字段是 absorptionRatio(范围 0.0–1.0)。

tier 的合法范围被 config.getInt 限制在 0–14(Properties.java:155)。

配方

common/RecipeHandler.registerRecipes() 只注册 2 条配方,都走 IC2 高级配方机(ic2.api.recipe.Recipes.advRecipes):

产物 配方 开关
纳米机器人 ×4(GraviSuite.itemSimpleItem meta 7) C / CMC / C,C = 高级电路,M = 奶桶 disableNanobotRecipe
史诗镐之背包 RBR / RDR / RAR,R 与 D 均为终极镐之背包,B = 铱板,A = itemSuperconductor(OreDict) disableEpicLappackRecipe

⚠️ 等离子炮 与 等离子电池 在本仓库没有任何合成配方,只能靠父模组 GraviSuite 的机制、战利品或手动给予获得。源码中 en_US.lang 仍把两者标为 [WIP]。

disableBasicRecipes(Properties.java:17)不由本 mod 使用,而是被 mixins/MixinGraviSuite_Recipes.java:68,81 读取,用来摘掉父模组 GraviSuite 的基础配方。

依赖

GraviSuiteNeo.java:26 声明:

依赖 约束 状态
GraviSuite required-after:GraviSuite@[1.7.10-2.0.3] 不在本 wiki 收录范围(relation.md 无对应行)
IC2 required-after:IC2 不在本 wiki 收录范围
GregTech after:gregtech(软依赖) 见 gregtech——用于取 GT 的等离子流体效率值

代码还探测以下模组(不写进 dependencies,缺失只是少功能):

模组 用途 源码
dreamcraft 存在时跳过 MixinGraviSuite_Recipes GraviSuiteNeoMixins.java:39-41
gregtech 且非 gregapi 把 GT 等离子流体并入等离子效率表 GraviSuiteNeoRegistry.java:93-95
gregapi + gregapi_post GT6 支持(本仓库不适用) 同上条件取反
Tinkers / Iguana MaxToolLevelAvailable 仅在装了它们时影响工具提示 Properties.java:216-222
Advanced Solar Panel、Electro Morphitics Technology 量子护盾的替代头盔/护腿/靴子白名单 Properties.java:261-285
CoFH Core cofh.api.energy.IEnergyContainerItem(史诗镐之背包给 RF 物品充能) items/ItemEpicLappack.java:67-69

CoFHAPI 属于 required-after 之外的隐式依赖:ItemEpicLappack 直接 import cofh.api.energy.IEnergyContainerItem,CoFHAPI 缺失会在类加载期报错。

已知源码缺陷

  1. 等离子流体配置永远读不进来(严重):GraviSuiteNeoRegistry.java:77 写的是 entry.split(":", 1)。按 JDK String.split(String, int limit) 契约,limit 为正数时模式最多应用 limit - 1 = 0 次,返回数组长度不超过 1。因此 splitEntry.length 恒为 1,:78-80 的 if (splitEntry.length != 2) continue; 永远命中,配置文件 additional tweaks / PlasmaLauncherFluids 里配的流体一个都进不了 fuelMap。唯一能进表的是 :93-95 从 GregTech API 取的等离子流体
  2. 无中文语言文件:src/main/resources/assets/gravisuiteneo/lang/ 只有 en_US.lang 与 ru_RU.lang,完全没有 zh_CN.lang
  3. mixins.gravisuiteneo.json 是空壳:该文件存在且 "required": true,但 mixins / client / server 三个数组全为 []。实际注入全部由 GTNHLib late-mixin 的 mixins.gravisuiteneo.late.json + GraviSuiteNeoMixins.getMixins() 驱动,两份配置的 minVersion 还不同(0.8.5-GTNH vs 0.8.3-GTNH)
  4. 配置注释拼写错误:Properties.java:102 的注释把 armor piece 写成 “armor pieve”;:69 的配置键 relocatorEnergyPerDimesionTp 把 Dimension 写成 “Dimesion”