Skip to content
liuye edited this page Nov 7, 2026 · 1 revision

常见问题与已知限制

简体中文 | English

← 返回目录

本页面向服务器管理员。前半部分从「怪物不动」这类现象出发做排查问答,后半部分列出这一版仍然存在的已知限制。报错原文、配置键与数值都取自插件手册,可以照着直接改。

手段 能看出什么
/mobinteract status 世界筛选、生物筛选、挖掘与放置参数、出生装备概率、已知怪物数、正在挖掘数、临时方块数、BlockLocker 接入状态
/mobinteract inspect 准星 16 格内那只怪的冷却、本次追击已放置次数、主手镐子、最近行为、背包内容
mining.yml 里 debug: true 控制台打印每个候选方块的取舍原因、临时方块到期时的续期判定;会刷屏,排查完记得关掉

一、插件没启用:/plugins 里显示红色

症状

  • /plugins 里 MobInteract 是红色、状态为未启用;
  • 开机日志出现 [ModernPluginLoadingStrategy] Could not load plugin ... InvalidPluginException: Unsupported API version 26.3;
  • 事后用 PlugMan 去 load,报 That file is not a valid plugin 或 Plugin didn't load any plugin providers?。

原因

服务端在开机扫描插件清单阶段就校验 api-version,只要它比服务端版本新就直接拒绝,根本走不到加载流程,所以任何「事后补救」的插件都救不回来。这就是装错版本,不是权限或依赖问题。

怎么办

  1. 换成面向较旧服务端的 jar:默认产物按最旧受支持版本 1.21.8 制作,一个 jar 可以在 1.21.8 ~ 26.x 上加载;
  2. 只有专门针对 26.3 制作的 jar 才要求服务端 26.3 或更高——服务端是 26.2 一类版本却装了这一种,就会出现上面的报错;
  3. 最低支持版本是 1.21.8,更旧的服务端缺少本插件用到的寻路与调度接口,无法运行;
  4. 换 jar 后完整重启服务端(不是 reload),再确认 /plugins 颜色正常、/mobinteract status 有输出。

二、怪物站着不动:先按这张表定位

现象 最可能的原因 先查什么
完全不挖,但会追人 主手没有镐子(tool.require-pickaxe: true) inspect 的「主手镐子」
连追击都不做,像没装插件 总开关关了,或这个世界 / 这种生物被筛掉 status 的世界与生物筛选摘要
搭一两格就停手 本次追击放置次数用完(max-per-chase 默认 32),或背包没方块了 inspect 的已放置次数与背包
挖一下、停一会儿、再挖一下 挖断一个方块后有 cooldown-seconds(默认 8 秒)冷却 inspect 的冷却
对着方块干站着不挖 目标被封死看不见 → 寻路受阻触发依赖原版索敌 打开 debug 看候选方块为何被跳过
沿着水边来回走 液体一律回避 见下面「不搭」一节
地上有明显该捡的东西却不捡 拾取限制:重力方块、非方块物品、主手已占用 pickup.* 配置与 inspect 背包

不挖

症状:怪物追到目标面前,头顶有方块、脚下有方块、前面有墙,就是不挖。

原因(按出现频率排序):

  1. 主手没有镐子。tool.require-pickaxe 默认为 true,没有镐子就完全不参与挖掘;
  2. 这只怪出生时没过装备闸门。闸门在进入世界时只掷一次,没通过的怪在任何路径上都拿不到方块和镐子(详见「八、其它」第一条);
  3. 方块被判成「挖不动」:算出的耗时超过 break-time.hard-cap-seconds(默认 180)会被直接跳过,控制台对每种材质只提示一次 [MobInteract] OBSIDIAN 的挖掘耗时超过 hard-cap-seconds=…;
  4. 方块本身不在可挖范围内:基岩、屏障、命令方块、结构方块、传送门、移动活塞、刷怪笼、紫水晶母岩等安全黑名单,世界高度或世界边界之外,以及 safety.disallow-tile-entities: true(默认)下的箱子、告示牌、熔炉这类方块实体;
  5. 正要挖的不是紧贴身体的方块:require-adjacent: true(默认)只挖水平 ±1 格、竖直 −1..+2 格内的方块;
  6. 触发条件没满足:目标被完全封死、怪物看不见它时,「寻路受阻」这一条永远不会触发(它依赖原版索敌给出的目标)。

怎么办:先用 inspect 看主手与「最近行为」,再按顺序检查 tool.require-pickaxe、tool.give.chance、break-time.hard-cap-seconds、materials.disabled / materials.allowed。如果场景就是「目标被围死但看得见墙」,把 trigger.configured-blocks.enabled 打开并把那种方块加进 .blocks,让怪物见到指定方块就开挖。

不搭(不铺路、不垫高)

症状:目标和怪物之间隔着沟、或者目标在柱子上,怪物原地转圈。

原因:

  1. 没有背包:backpack.chance 默认 0.65,没抽中的怪永远没有方块;placement.enabled: false 也会一并停掉放置与拾取;
  2. 本次追击的放置次数用完(placement.max-per-chase 默认 32),或不在冷却里却在等抬高的落点;
  3. 有高度差但只有 1 格、或者前方落差 ≤ 3 格——这种情况插件故意不铺路,交给原版直接走 / 跳;
  4. 前方或前方脚下是液体:泡在水里先上岸、跨水不搭桥不搭楼梯,必须跨水才能接近的目标只能靠原版游泳或绕路;
  5. 目标在别的区域、方块位置被同伴占住:插件会重新规划最多 4 次,仍不行就这次不放置;
  6. placement.pillar-up / stair-up / bridge 被手动关掉,对应动作直接不可用。

怎么办:inspect 看背包是否为空、已放置次数是否到顶;status 看放置参数摘要。长桥 / 高柱搭到一半停手,九成是 max-per-chase 太小——旧版本默认 10 就出现过这个问题,把它调回 32 或更大(0..512)。

不捡

症状:地上有圆石、有镐子,怪物从旁边走过去。

原因:

  1. pickup.enabled: false,或者 placement.enabled: false(放置总开关同时控制拾取);
  2. 掉落物不在「值得捡」的范围内:只捡可放置的方块与镐子,不捡沙子沙砾这类有重力的方块、硬黑名单方块(基岩、刷怪笼等)和非方块物品;
  3. 主手已经有东西时捡不了镐子——这种情况镐子会被丢回地上,不会凭空消失;
  4. pickup.reach(默认 1.8)必须小于 pickup.radius(默认 8.0),否则会被自动下调为 radius / 2 并在控制台告警,实际拾取范围因此变小;
  5. 怪物正在挖掘或放置(忙碌状态)时不会被打断去捡东西;
  6. 这只怪没通过世界 / 生物筛选,或者出生时没过装备闸门(pickup.only-equipped 打开时只有过了闸门的怪才捡)。

怎么办:先确认 pickup.radius 与 pickup.reach 的关系,再把贵重掉落物放到怪物会经过的路线上;需要「带镐子又带方块」的怪,就提高 equip.yml 的 chance。

不追(没有目标)

症状:怪物完全无视玩家,也不理会村民。

原因:放置与挖掘都以「有追击目标」为前提;目标来自原版索敌,玩家在创造 / 旁观模式、不同世界、或者隔着墙且距离较远时都可能没有目标。

怎么办:targeting.yml 的 enabled 默认 true,会在 16 格内把目标切成最近的生存 / 冒险玩家,每 10 tick 检查一次;require-line-of-sight: false(默认)表示隔着墙也会朝玩家走。想保留原本的村民目标,就保持 keep-villager-target: true。

三、黑曜石挖不动 / 挖到一半停

挖不动

原因:耗时是算出来的,不是配置里写死的。有效倍率优先取 materials.multiplier 里对该方块的覆盖值,没有覆盖时用 break-time.multiplier(默认 4.0);算出的耗时超过 break-time.hard-cap-seconds(默认 180)就判定为「挖不动」并跳过。黑曜石有单独的 6.0 倍率覆盖,所以比 4.0 更慢:

方块 有效倍率 木镐 铁镐 钻石镐 默认结果
黑曜石 6.0 450 s 150 s 112.5 s 木 / 石镐超上限,铁镐以上可挖
远古残骸 8.0 360 s 120 s 90 s 木镐超上限
强化深板岩 20.0 3000 s 1000 s 750 s 默认永远挖不动

怎么办:想让它挖黑曜石,给铁镐以上(或调高 tool.speed、调低 materials.multiplier 的覆盖值);想让它放弃得更干脆,就把 hard-cap-seconds 调小。注意这个值调小会把一批硬方块一起变成「挖不动」,控制台对每种材质只提示一次,不要以为没报错就是没发生。

挖到一半停

症状:裂纹推进到一半,方块还在,怪物却走了;过一会儿又开始挖同一格,但进度从零起步的情况也有。

原因:

  1. 进度看门狗:连续 3 秒(60 tick)没有任何推进就判定停滞并放弃(inspect 里会看到 挖掘停滞,已放弃),随后进入 retry-seconds(默认 1.5 秒)冷却;
  2. 挖断一个方块后有 cooldown-seconds(默认 8 秒)冷却,冷却期间不会再判定新方块,所以「打通一条隧道」要跨好几个冷却周期;
  3. 中断后能续挖,但有时间窗:只要还是同一方块、且中断在 100 tick(5 秒)以内,就接着原进度;超过就得从头来;
  4. 目标被原版 AI 抢回控制权、或者中途 reload 配置,也会让那次挖掘重新激活。

怎么办:如果是硬方块长耗时,优先检查是不是被看门狗掐断(把 debug 打开能看到停滞日志);把 cooldown-seconds 调小可以让连续开挖更快,但会明显加重服务器负担。

四、搭好的桥不消失 / 消失太慢

不消失

症状:怪物早走了,临时方块还留在原地,甚至一直留着。

原因:

  1. placement.block-lifetime-seconds 被设成 0——那是永久方块,只做来源标记,永远不会自动清理;
  2. 玩家后来把方块换成了别的类型:清扫前会比对方块类型,类型不符只丢记录、不误删,所以「看起来还在」;
  3. 方块上方 1.2 格内有活着的生物(包括正在过桥的怪物、路过的玩家):到期时会再延一个完整周期,脚下有人就一直续;
  4. 该区块没加载:记录会延后 5 秒重试,不会丢,但也不会立刻删;
  5. 登记表满了(见「八、其它」的 5 万条上限),被淘汰的记录不再受保护、也不再自动到期。

怎么办:先看 block-lifetime-seconds 是不是 0,再确认那块地上是不是常年站着生物。排查期把 debug 打开,控制台会打印到期时的续期判定。

消失太慢

原因:清扫是全局清扫器每 20 tick 扫一次到期时间表,再按区块合并成一次区域任务批量删除;区域暂停、向区域提交任务失败会重新排队,区块未加载会延后 5 秒重试。所以实际消失时间略晚于配置值是正常现象,不是配置没生效。

怎么办:想要更短的存在时间就调小 block-lifetime-seconds(默认 15,上限 86400),但要接受「怪物还没走过去方块就没了」的风险;跨大沟的长桥建议配合「上方有生物就续期」的机制用默认值。

服务器被强杀后留下的方块

症状:服务器被 kill -9 之后重启,世界里多出一堆来路不明的圆石、泥土。

原因:临时方块登记表是内存态的。正常关服 / 重启会删掉全部怪物方块;但如果进程被强杀,关服流程走不到,这些方块就留在世界里,只能手动清理。

怎么办:

  1. 手动清理(WorldEdit 选区替换空气是最快的);
  2. 插件目录下的 pending-blocks.txt 是关服 / 重启时的兜底:卸载或关服时会先把清单落盘、再删方块,下次启动再清一次;关服过程中被强杀也能覆盖,但运行期的 kill -9 不在它的覆盖范围内;
  3. 想避免这类残留,就别在运行期强杀进程;定期清理时优先低峰期重启。

五、保护区不生效

症状:装了 WorldGuard、Residence 这类保护插件,怪物照样在保护区里挖和放。

原因:本插件没有内置对任何保护插件的适配,默认全部放行。保护判定必须由外部插件主动接进来:要么向本插件登记一个「这个位置受保护吗」的判定,要么监听本插件在怪物改动方块前发出的可取消事件。装了几个判定时,任意一个拒绝即视为受保护。

怎么办:

  1. 找你的保护插件是否有面向本插件的接入方案;没有的话,用脚本 / 桥接插件登记判定或监听方块变更事件;
  2. 只有 BlockLocker 是开箱即用的:装上之后被它保护的箱子、门、活板门、木桶不会被挖也不会被炸,/mobinteract status 会显示「BlockLocker 保护:是/否」;这是软依赖,没装不影响其它功能;
  3. BlockLocker 的接口调用失败时按「不保护」处理(fail-open),每个实例只告警一次——看到这条告警就去查 BlockLocker 本身,别以为是本插件的 bug。

六、哪些生物会被接管

村民为什么不被接管

原因:默认人形集合只包含僵尸(含溺尸、尸壳、僵尸村民、僵尸猪灵)、骷髅、灾厄村民、猪灵、女巫。村民与流浪商人不在这套默认集合里——它们是目标,不是执行者。

怎么办:真要接管就写 mob-whitelist: [VILLAGER, WANDERING_TRADER];mob-whitelist: ["*"](或 ALL / ANY)表示全部生物,mob-blacklist 永远优先。

史莱姆、恶魂不挖;船、盔甲架、掉落物、玩家无法接管

原因:没有主手装备槽的生物(史莱姆、恶魂等)在 require-pickaxe: true 下拿不了镐子,因此不会挖掘;Mob 之外的实体(船、盔甲架、掉落物、玩家)本身不在接管范围内。

怎么办:这类生物只能当目标或装饰;想让它们也挖,只能把 require-pickaxe 关掉——但那等于放弃「有镐子的怪才挖」这个平衡,通常不建议。

出生装备只抽一次

原因:equip.yml 的闸门在怪物进入世界时掷一次,结果记在这只怪的档案上,之后不再重掷。没通过闸门的怪在任何路径(包括首次放置时的背包判定)都拿不到方块,镐子同理。

怎么办:想让某只怪立刻有装备,重新生成它,或者手动把镐子 / 方块塞给它(塞进主手 / 副手按原版规则生效)。想让整体比例更高,就调 equip.yml 的 chance(默认 0.10),闸门内再按 tool.give.chance(默认 0.8)抽镐子、按 backpack.chance(默认 0.65)抽背包。

七、背包与掉落

背包不持久化

症状:怪物区块卸载再加载,背包空了;或者同一只怪下次出现时装备不见了。

原因:方块背包是虚拟的、只存在内存里;怪物卸载再加载会重新掷骰,拾取攒下来的方块也会随实体移除一起丢失。

怎么办:这是设计取舍,不是 bug。需要「长期存在的守门怪」时,用原版方式给它真实物品,别依赖虚拟背包;跨区块的长途追击会自然损耗背包,属正常现象。

掉落物丢了 / 捡不起来

原因:

  1. 主手已有物品时捡不了镐子,镐子会丢回地上(不是被吞掉),去原地找;
  2. 有重力的方块(沙子、沙砾)与非方块物品一律不捡;
  3. pickup.reach 被自动下调后,怪物走不到那么近就捡不到;
  4. 插件发放的镐子默认不掉落(tool.give.drop-chance: 0.0),但怪物捡来的镐子仍按原版规则掉落,玩家击杀可以拿回。

怎么办:确认掉落物类型在允许范围内;贵重装备直接用原版方式给怪,别指望它一直拿着。

八、其它已知限制

挖掘与放置互斥

怪物一旦开始挖掘就立刻让出放置行为,并一直盯着被挖的方块,所以不会出现「边挖边铺」;代价是挖掘期间不会启动新的搭路。想让它先搭桥,就减少触发挖掘的机会(例如别让目标处在被围死的环境里)。

一次只挖一块

挖掉一块后如果还有阻挡,要等 cooldown-seconds(默认 8 秒)才做下一次判定,所以打通一条通道需要多个冷却周期,看起来「很慢」是正常的。

登记表上限 5 万条

临时方块登记表最多 5 万条,超出后按插入顺序淘汰最旧的记录;被淘汰的方块不再受保护、也不再自动到期。block-lifetime-seconds: 0 的永久方块长期累积时更容易触发。出现这种情况只能手动清理,并考虑把永久方块改回有限存在时间。

/inspect 的「最近行为」改不了文本

这一行是行为内部生成的状态串(例如 放置次数已用完(max-per-chase=32)),由插件直接显示,不在 message.yml 的键范围内。message.yml 管的是发给玩家的常规文本(status / inspect / reload 的输出骨架),改不到这一条。

看不到裂纹

裂纹进度用的是「附近玩家」查询;在极严格的区域化实体查询策略下可能一个玩家都查不到,于是看不到裂纹。这只影响显示,不影响挖掘本身是否成功。

火焰引信的兜底值与 yml 不一致

极少数情况下(某个键被从文件里删掉时)会走内置兜底值,其中 TNT 的 fuse-ticks 兜底是 80,而 yml 里写的是 60。正常的内置文件里以 yml 为准,别删键就不会遇到。

两个「世界配置」不是一回事

位置 管什么
equip.yml 的 chance、worlds.<世界名> 出生装备概率:这个世界的怪出生时有多大机会带镐子 / 方块(世界名不区分大小写)
mining.yml / placement.yml 的 worlds.whitelist / worlds.blacklist 行为是否生效:白名单留空 = 所有世界,非空 = 只在这些世界,黑名单优先

「某个世界完全没反应」通常是后者被写了黑名单,而不是 equip.yml 的问题。

九、自检清单

改完配置想知道「到底生效没有」,可以照着下面这些实机场景自查(这些场景都在共享的 26.3 服务端上逐条跑过):

场景 布置 预期结果
沟壑 6 格宽沟壑,对岸站村民 搭桥过沟并击杀
高柱 村民站 6 格高石柱顶 垫高上柱顶并击杀
远平台 4 格高、10 格外平台 楼梯 + 搭桥
掉落物 地上 3 个圆石 + 1 把石镐 镐子进主手、方块进背包、掉落物清空
村民与方块 村民 + 地上圆石 村民未被接管,圆石留在地上
拥挤 3 只僵尸追同一目标 拥挤时绕行 / 让位,不互相卡死
头顶挡死 无镐子 / 有镐子各一次 无镐子换列垫高;有镐子挖穿头顶再沿本列垫高
水里 泡在水池里、目标在水池上方 水里不放置,先上岸
悬空目标 无重力村民悬空 补桥 / 垫高到近战距离
水里追人 水池里的溺尸 + 对岸台子上的村民 溺尸被接管,上岸后垫高
往下搭 怪物在 5 格柱顶、目标在下方地面 往下搭一格
挖脚下 目标站在 2 格高石柱上 挖掉目标脚下,目标掉落
存在时间 block-lifetime-seconds 改为 5 登记 5 秒到期,第 7 秒方块变为空气
围死 + 黑曜石 村民被黑曜石围住 + 钻石镐,打开 trigger.path-blocked 部分通过:日志显示开始挖黑曜石,但该场景最终未跑完(服务端被外部停止)

最后一条要特别注意:黑曜石这种硬方块的完整挖掘链路没有被完整跑完过,遇到「挖黑曜石挖到一半停」时优先怀疑上文的看门狗与 hard-cap-seconds,而不是配置写错。

相关页面

Clone this wiki locally