寻矿魔杖配置

基本信息

属性 值
配置文件 <config>/ifu.cfg
分类 全部 9 项都在 Configuration.CATEGORY_GENERAL(同一段 general)
读取时机 preInit → ConfigHandler.init(event.getModConfigurationDirectory().toString());cfg == null 时才 new Configuration(path) 并 loadConfiguration()
热重载 @SubscribeEvent onConfigChangeEvent(ConfigHandler 注册在 FMLCommonHandler.instance().bus())—— 仅当 event.modID.equalsIgnoreCase("ifu") 时重载全部项
写回 loadConfiguration() 结尾 if (cfg.hasChanged()) cfg.save();

配置项

配置键 类型 默认值 取值范围 内部字段 作用
X Z Area radius int 5 1 ~ 16 xzAreaRadius 面积扫描的水平(X/Z)半径
Y Area radius int 60 1 ~ 60 yAreaRadius 面积扫描的垂直(Y)上下半径
Ore vein discovery range int 24 xzAreaRadius ~ 64 oreVeinDiscoveryRange 矿脉揭示半径(方形,以玩家为中心)
Enable Everywhere boolean false — enableEverywhere 为 false 时只在主世界 / 下界 / 暮色森林生效
Sounds boolean true — wandSound 命中 ≥ 5 格时是否播放音效
Blocklist String[] {} — blocklist 永不允许搜索的方块(按方块 Item ID)
Material Blocklist String[] {} — materialBlocklist 永不允许搜索的矿石材质名(大小写不敏感)
Allowlist String[] {} — allowlist 允许搜索的额外非矿石方块
Debug block info boolean false — debugBlockInfo 不潜行右键方块时在聊天栏打印调试信息

Blocklist / Material Blocklist / Allowlist 三项在源码里的默认值是空数组 {},即默认不过滤任何方块或材质。

三个列表项的语法

OreFinderSearch.listMatch(String[] entries, Block block, int meta) 统一解析允许表与阻止表,返回命中的 metadata(通配为 ANY_META = -1),未命中返回 NO_MATCH = -2。

解析规则:

  • 物品名自带一个冒号(modid:block),所以第二个冒号起才是 metadata 后缀
  • minecraft:cobblestone → 名称 minecraft:cobblestone + 通配 metadata,匹配该方块任意 metadata
  • gregtech:gt.blockores2:307 → 名称 gregtech:gt.blockores2 + metadata 307,只匹配该 metadata
  • 最后一个冒号后不是数字 → 整条当作名称,metadata 回退为通配(源码里捕获 NumberFormatException 后这样处理)
  • 每条先 trim();null 与空串直接跳过
  • 名称比较用 Block.getBlockFromName(name) != block

materialBlocklist 的比较方式不同:遍历条目,对每个非 null 条目做 entry.trim().equalsIgnoreCase(material.getInternalName()),因此填 Gold、MeteoricIron 这类材质内部名即可(源码注释也这么建议)。

取值之间的相互影响

  • Ore vein discovery range 的下界绑定当前 xzAreaRadius:每次 loadConfiguration 都拿当次的 xzAreaRadius 作为 minValue 传入。因此把 X/Z 半径调大后,矿脉半径的合法下限会随之抬高。
  • Enable Everywhere 为 false 时,魔杖的物品提示会追加 2 行警告(IFU.disableAtSomewhereWarning1/2,“无法在地球之外使用” / “只可在主世界、下界与暮色森林使用”),见 ItemOreFinderTool.addInformation。
  • Debug block info 打开后,每次不潜行右键方块都会经 GTUtility.sendChatComp 输出 1~2 行聊天信息:方块注册名 + metadata;若 OreManager.getOreInfo 认得出矿石,再补一行材质内部名、stoneType、isNatural、isSmall;认不出则输出 “Not a recognised ore block”。此外还会输出筛选格当前解析出的 MatchTarget 内部名,可直接抄进 Material Blocklist / Allowlist。
  • 三个半径都是每 tick 实时读取的静态字段,改配置并重载后立刻生效,不需要重启。

相关条目