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
相关条目
- Custom Mapping -
forced_blocks的解析与应用 - 魔杖等级系统 -
diamond_wand_durability的实际作用边界 - Unbreakable Wand -
straymav_ultimate_wand影响的配方 - BFS 方块扩展算法 - 两个黑名单的生效位置
- AE2 Integration - 硬黑名单的返回值如何中断流程