跳到正文
烈焰甘蔗Wiki

Configuration

BetterBuildersWands 的配置文件允许玩家自定义模组行为。 全部 7 个选项在 preInit 阶段一次性读取(ConfigValues.loadConfigFile())。

配置文件位置

config/betterbuilderswands.cfg

由 Forge 的 Configuration 类生成,loadConfigFile() 末尾调用 configFile.save(), 所以缺失的选项会自动以默认值补写进文件。

配置项总表

分区 选项名 类型 默认值 源码常量 说明
why_not straymav_ultimate_wand boolean false NO_EXTRA_UTILS_RECIPES 为不喜欢 ExtraUtils 进度的人准备
general diamond_wand_durability int 10000 DIAMOND_WAND_DURABILITY Diamond Building Wand 的耐久
general enable_stone_wand boolean true ENABLE_STONE_WAND 启用石质建造之杖配方
general enable_iron_wand boolean true ENABLE_IRON_WAND 启用铁质建造之杖配方
general enable_diamond_wand boolean true ENABLE_DIAMOND_WAND 启用钻石建造之杖配方
general forced_blocks string 见下 OVERRIDES_RECIPES 强制方块映射
general blacklisted_blocks string[] [] HARD_BLACKLIST 完全不可用的方块
general no_assumption_blocks string[] [] SOFT_BLACKLIST 会破坏预期行为的方块

⚠️ 两个分区的键名不统一:straymav_ultimate_wand 单独放在 why_not 分区, 其余 7 项都在 general。源码常量 CONFIG_WHYNOT = "why_not"、 CONFIG_GENERAL = "general"。

⚠️ 配置项名称与含义不符:straymav_ultimate_wand 的常量名是 NO_EXTRA_UTILS_RECIPES(否定式),而使用处做了取反: boolean EXTRA_UTILS_RECIPES = !configValues.NO_EXTRA_UTILS_RECIPES; 所以设为 true 会禁用 ExtraUtils 合成链(默认 false = 启用)。

straymav_ultimate_wand

值 效果
false(默认) 若装了 ExtraUtilities,注册 meta 4/5/6 的配方;否则注册下界之星的 meta 12 配方
true 强制使用下界之星配方,不注册 ExtraUtils 相关的 meta 4/5/6 配方

源码:

boolean EXTRA_UTILS_RECIPES = !configValues.NO_EXTRA_UTILS_RECIPES;
if (Loader.isModLoaded("ExtraUtilities") && EXTRA_UTILS_RECIPES) {
    … meta 4 / meta 12 (creativebuilderswand) / meta 5 / meta 6,并 addSubMeta(4,5,6) …
} else {
    … meta 12 用 Items.nether_star …
}

⚠️ meta 12/13/14 的配方不受此选项影响,无条件注册。 区别只在于 meta 12 用下界之星还是 creativebuilderswand。 详见 Unbreakable Wand。

diamond_wand_durability

值 效果
10000(默认) 钻石魔杖的物品最大耐久
任意 int 直接 setMaxDamage() 到该值

⚠️ 调到 1561 以上不会提高单次放置量 —— RestrictedWand 的 blocklimit 被硬编码为 Item.ToolMaterial.EMERALD.getMaxUses() = 1561。 详见 魔杖等级系统。

forced_blocks 默认值

minecraft:lapis_ore/0=>1*minecraft:lapis_ore/4=>minecraft:lapis_ore/0,minecraft:lit_redstone_ore/0=>1*minecraft:redstone_ore/0=>minecraft:lit_redstone_ore/0

格式(CONFIG_OVERRIDES_RECIPES_DESCRIPTION 的原文说明):

Specify forced mappings for what to build from certain blocks. (what you are looking at)=>(number required)*(item required)=>(block to build)

即:被看的方块/meta => 数量*所需物品/mod => 实际放置的方块/meta

段 含义
源方块 Block.getBlockFromName(...),玩家看到的方块
源 meta 源的 metadata
数量 每个目标方块需要多少个材料
所需物品 GameRegistry.findItem(modid, name),可以是非方块物品
物品 meta 所需物品的 metadata
目标方块 实际放下的方块
目标 meta 实际放下方块的 metadata

解析由 CustomMappingManager.parseMappingString 用一条正则完成, 必须整串完全匹配否则整条被丢弃并记 error 日志:

final String REGEX = "^(\\w[^:]+:[^/]+)/(\\d+)=>(\\d)+\\*(\\w[^:]+:[^/]+)/(\\d+)=>(\\w[^:]+:[^/]+)/(\\d+)$";

多条映射用英文逗号分隔。空字符串表示禁用全部映射(直接 return)。

⚠️ 从配置文件解析出的映射,shouldCopyTileNBT 恒为 false(构造函数默认参数), 所以不会复制 TileEntity NBT。要启用 NBT 复制只能用 mod 集成 (ArchitectureCraft / Forestry),详见 Custom Mapping。

blacklisted_blocks(硬黑名单)

String[],Forge 的 getStringList() 会写成 S:blacklisted_blocks=<值> 形式。

效果 WandWorker.getProperItemStack 直接返回 null → 魔杖完全不做任何事

条目格式为 方块注册名/元数据,例如 minecraft:bedrock/0。

no_assumption_blocks(软黑名单)

String[],同样用 方块注册名/元数据 格式。

效果 只封堵 getEquivalentItemStack 的兜底推断路径

⚠️ 软黑名单只拦兜底,不拦精确匹配:getProperItemStack 先尝试 new ItemStack(block, 1, meta) 精确匹配,玩家背包里有该物品时 照常使用;软黑名单只在你没有该物品、模组准备去猜掉落物时才生效。 详见 BFS 方块扩展算法 的黑名单一节。

黑名单在加载时被转成 TreeSet<String>(HARD_BLACKLIST_SET / SOFT_BLACKLIST_SET) 供 O(1) 查找。

配置示例

# 把钻石魔杖耐久设为 1561(与 blocklimit 对齐,浪费最少)
diamond_wand_durability=1561

# 禁用石质建造之杖的配方
enable_stone_wand=false

# 不喜欢 ExtraUtils 进度:强制用下界之星
straymav_ultimate_wand=true

# 硬黑名单:这些方块魔杖完全不响应
blacklisted_blocks=minecraft:bedrock/0,minecraft:obsidian/0

# 软黑名单:阻止"猜掉落物"这条兜底路径
no_assumption_blocks=minecraft:torch/0

# 追加自定义映射:右看末影眼 → 1 个末影之眼 → 放末影眼方块
forced_blocks=minecraft:lapis_ore/0=>1*minecraft:lapis_ore/4=>minecraft:lapis_ore/0,minecraft:lit_redstone_ore/0=>1*minecraft:redstone_ore/0=>minecraft:lit_redstone_ore/0,minecraft:ender_eye=>1*minecraft:ender_eye=>minecraft:ender_eye

相关条目

浏览全部模组