WarpTheory
[!INFO] Git Commit:
edfce4a| Updated: 2026-10-02
WarpTheory 是一个 Thaumcraft 4 附属模组:让玩家的「曲曲值(Warp)」 累积到一定量后,周期性触发恶作剧式的异常事件 —— 假雨、凋灵、 物品栏打乱、假 Discord 提示音等。
- modid:
WarpTheory(首字母大写) - 资源域:
warptheory(全小写,由modID.toLowerCase(Locale.ENGLISH)得出) - 包根:
shukaro.warptheory - 版本:
GRADLETOKEN_VERSION(构建期常量) - 目标版本: Minecraft 1.7.10 / Forge 10.13.4.1614
- 作者: Shukaro、thegreatunclean
「曲曲」是什么 —— 不是传送
⚠️ 本模组与传送、空间理论、维度旅行毫无关系。
「Warp」在此指神秘学/Lovecraft 式的扭曲值 / 疯狂值(概念源自
Thaumcraft 的 Warp 设定),玩家曲曲值过高会遭遇各种「异常现象」。
模组名 WarpTheory 中的 “Theory” 指异常理论,
不是任何物理或空间理论。
全模组没有任何传送门、维度、空间扭曲机制。
唯一与「位移」沾边的是 BLINK(random teleport,门槛 130),
它只是把玩家随机瞬移当作恶作剧,而非提供传送服务。
硬依赖(3 个)
@Mod 注解声明:
dependencies = "required-after:Forge@[10.13.2,);required-after:Baubles;required-after:Thaumcraft@[4.2.3.5,);"
| 依赖 | 版本约束 | 用途 |
|---|---|---|
Forge |
[10.13.2,) |
基础 |
Baubles |
无版本约束 | 两件护符挂在饰品槽 |
Thaumcraft |
[4.2.3.5,) |
9 条研究、全部配方、曲曲/护盾概念 |
⚠️ mcmod.info 漏报了 Baubles:其 dependencies 数组只有
["MinecraftForge", "Thaumcraft"]。实际依赖必须以 @Mod 注解为准。
WarpEventHandler 还 import static 了 Thaumcraft 的两个配置字段
(Config.potionWarpWardID、Config.wuss),
从代码层面锁死了 Thaumcraft 依赖。
关键陷阱:注册用枚举 + 驼峰/点号混用
| 陷阱 | 表现 |
|---|---|
| 枚举注册 | 50 个曲曲效果是 WarpEventRegistry 的枚举常量,其中 11 个用 lambda(warp -> new WarpBuff(…))而非方法引用 —— 数 WarpXxx::new 会少算 |
| 死类 | WarpFakeBlock 在磁盘上但枚举从不引用,doEvent 恒 return false |
| 注册名混用 | 物品注册名用 getUnlocalizedName() → warptheory.cleanser(点号,modid 重复出现);方块用驼峰 blockVanish |
| 常量名误导 | ITEM_PORTABLE_SHOWER(「便携式淋浴」)= 曲曲护符;ITEM_LITMUS(石蕊)= warptheory.paper;ITEM_POTION = 遗忘药水 |
| 实体数 | 7 个实体类,但只注册 5 个(2 个是粒子 FX) |
| 配置键名 | 50 个效果各生成 2 个配置项,键名用 name 显示名而非枚举常量名(allowFakeBoomEffect、allowDeafEffect…) |
⚠️ 没有多方块
全模组只有 1 个方块(blockVanish)与 1 个 TileEntity。
全仓 grep 以下模式全部零命中:
| 模式 | 命中 |
|---|---|
ForgeMultipart / multipart |
0 |
IMultiblock / MultiBlock |
0 |
createStructure |
0 |
即无任何多方块结构 —— 不存在几×几×几、控制器、 可否旋转拆除等字段。见 虚空方块。
注册内容总表
| 类型 | 数量 | 说明 |
|---|---|---|
| 曲曲效果(枚举) | 50 | 22 上游 + 25 GTNH + 3 需 GregTech |
| 方块 | 1 | blockVanish(无配方,效果产物) |
| TileEntity | 1 | tileEntityVanish |
| 物品 | 7 | 2 净化器 + 2 护符 + 3 消耗品 |
| 实体(已注册) | 5 | 2 个自定义 Renderer |
| 实体(未注册 FX) | 2 | 直接 spawnEntityInWorld |
| 研究 | 9 | 7 WTResearchItem + 2 FakeResearch |
| 配方(默认分支) | 10 | 7 处 put × 4 坩埚循环;另一分支同构 |
| 数据包 | 7 | +1 接口 IWarpPacket |
| 指令 | 1 | /warptheory(OP 或创造模式) |
| 研究分类 | 1 | WT_Category |
曲曲效果
- 曲曲效果注册表 - 50 个效果的注册真源、6 个构造参数与配置键生成
- 默认曲曲效果 - 22 个上游效果
- GTNH 曲曲效果 - 25 个 GTNH 追加
- GregTech 曲曲效果 - 3 个需 gregtech + IC2NuclearControl
- 曲曲机制 - 累积、门槛、队列与消耗
物品
方块与实体
配方与研究
设定与命令
- Warptheory 配置 - 全局开关 + 100 个自动生成项
- Warp 数据包 - 7 个包,仅 1 个上行
- /warptheory 指令 - 触发/打印/清除曲曲
已知源码缺陷
| # | 位置 | 问题 |
|---|---|---|
| 1 | WarpRecipes.init()(WarpWardAmulet 块) |
传给 Thaumcraft API 的研究键写成 ITEM_PURE_TALISMAN(应为 ITEM_PORTABLE_SHOWER),与 PureAmulet 重复;且产物写成 itemAmulet → 曲曲护符无任何配方 |
| 2 | handlers/warpevents/WarpFakeBlock.java |
完全死类:全仓仅自引用,doEvent 恒 return false |
| 3 | WarpEventRegistry(Phase 无关) |
50 个常量中 11 个用 lambda,按方法引用计数会少算 11 |
| 4 | WarpTheory.java(@Mod)vs mcmod.info |
依赖声明不一致:注解含 Baubles,mcmod.info 漏报 |
| 5 | BlockVanish 构造器 |
Material.rock 配 Block.soundTypeGlass 脚步声,材质与音效故意不一致 |
| 6 | WarpTheory.preInit |
名字表释放失败被 catch (Exception e) { e.printStackTrace(); } 吞掉,normalNames 保持 null 且无日志级错误 |
| 7 | WarpTheory.mainTab |
静态字段在类初始化期用 StatCollector.translateToLocal 求值,语言未就绪时标签名退化为键名 |
| 8 | WarpCommand.getCommandUsage |
只写 /warptheory <event> [player],漏掉实际支持的 print / purge 子命令 |
外部依赖
除上表 3 个硬依赖外,下列为可选集成,
均不在本 wiki 收录范围(relation.md 无对应行),
故不建分类、不建前向引用:
| 依赖 | 用途 | 缺失时 |
|---|---|---|
gregtech 且 IC2NuclearControl |
GREGTECH_FAKE_SOUND 效果 |
效果静默不创建(无日志) |
IC2NuclearControl |
核设施音效资源 | 同上 |
Baubles 与 Thaumcraft 是 @Mod 声明的硬依赖,
但同样不在本 wiki 收录范围,故不建分类。