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 配置系统内,改它需重启游戏。 见 虚空方块 的名字表说明。

相关条目