Warptheory 配置
[!INFO] 实现类:
shukaro.warptheory.handlers.ConfigHandler配置文件:Forge 建议路径(event.getSuggestedConfigurationFile())
全局开关(general 分类)
| 键 | 类型 | 默认 | 说明 |
|---|---|---|---|
wussMode |
boolean | false |
enables less expensive recipes(启用更便宜的配方) |
disableRebound |
boolean | — | 关闭曲曲反弹 |
allowPermWarpRemoval |
boolean | true |
物品能否移除永久曲曲 |
allowGlobalWarpEffects |
boolean | ✅ | 允许 isGlobal 效果 |
allowMultiWarpEffects |
boolean | ✅ | 允许一次触发多个效果 |
allowWarpEffects |
boolean | ✅ | 曲曲效果总开关 |
allowServerKickWarpEffects |
boolean | ✅ | 允许可能踢服的效果 |
permWarpMult |
int | — | 永久曲曲倍率 |
加载后 ConfigHandler 被注册到 FML 总线:
ConfigHandler.init(event.getSuggestedConfigurationFile());
FMLCommonHandler.instance().bus().register(new ConfigHandler());
⚠️ 注册在 FML 总线(FMLCommonHandler.instance().bus())而非
MinecraftForge.EVENT_BUS —— 配置项是 FML 配置事件,不走游戏事件。
逐个效果的配置由枚举自动生成
每个曲曲效果自动产生 2 个配置项(warp_effects 与 warp_levels
两个分类),共 50 × 2 = 100 项。键名由 name 字段经模板派生:
private static final String CONFIG_ENABLED_NAME_FORMAT_STRING = "allow%sEffect";
private static final String CONFIG_MIN_WARP_NAME_FORMAT_STRING = "minWarp%sEffect";
| 分类 | 键格式 | 类型 | 范围 | 例 |
|---|---|---|---|---|
warp_effects |
allow<Name>Effect |
boolean | — | allowBatsEffect |
warp_levels |
minWarp<Name>Effect |
int | 1…200 | minWarpBatsEffect |
完整效果清单与各自默认值见 曲曲效果注册表。
⚠️ name 字段与枚举常量名不一致
配置键用的是显示名而非常量名,容易配错:
| 枚举常量 | name 字段 |
配置键 |
|---|---|---|
BATS |
Bats |
allowBatsEffect |
FAKE_EXPLOSION |
FakeBoom |
allowFakeBoomEffect |
WITHER |
WitherSpawn |
allowWitherSpawnEffect |
EYE_BLINK |
EyeBlink |
allowEyeBlinkEffect |
TONGUE |
Mute |
allowMuteEffect |
EARS |
Deaf |
allowDeafEffect |
FALL |
WorldHole |
allowWorldHoleEffect |
CHESTS |
Chest |
allowChestEffect |
即 allowWitherEffect、allowEarsEffect、allowTongueEffect
等直觉键名都不存在。
踢服风险项的注释差异
isServerKick = true 的常量(唯一为 FALL / WorldHole)
其 allowWorldHoleEffect 的配置注释会追加
" May cause server errors.":
if (isServerKick) {
enabledDescription += CONFIG_ENABLED_DESCRIPTION_SERVER_KICK;
}
wussMode 的两处影响需分清
| 位置 | 判断依据 | 效果 |
|---|---|---|
WarpRecipes.init() |
ConfigHandler.wussMode |
切换到低成本配方分支 |
WarpEventHandler.livingUpdate |
thaumcraft.common.config.Config.wuss |
豁免曲曲效果触发 |
⚠️ 这是两个不同变量:本模组的 wussMode 不会自动关闭曲曲效果。
要彻底禁用曲曲需 allowWarpEffects=false 或 Thaumcraft 自己的 wuss。
详见 曲曲机制。
wussMode 的配方分支
WarpRecipes.init() 结构为:
public static void init() {
initMeats();
if (!ConfigHandler.wussMode) {
// 14 个 recipes.put:完整注魔/坩埚/奥术配方
} else {
// 另一套低成本配方
}
}
即 wussMode = true 时整段 14 条配方被跳过,
改用 else 分支的廉价配方。逐条对照见
Warp 配方。
硬依赖带来的额外配置读取
WarpEventHandler 直接 import static 了 Thaumcraft 的两个配置字段:
import static thaumcraft.common.config.Config.potionWarpWardID;
import static thaumcraft.common.config.Config.wuss;
⚠️ wuss 在类加载期求值(static import 编译为常量池读取),
若 Thaumcraft 尚未初始化该字段,行为不可预期 ——
这是硬依赖 Thaumcraft@[4.2.3.5,) 的另一处体现。
名字表配置
preInit 还会释放一份非 Forge 配置的文本文件:
| 路径 | 来源 | 用途 |
|---|---|---|
config/warptheory/normal.txt |
/assets/warptheory/names/normal.txt |
NameGenerator 的方块名表 |
该文件不在 Forge 配置系统内,改它需重启游戏。 见 虚空方块 的名字表说明。