Repository navigation
Changelog zh
简体中文 | English
这一页只回答服主关心的两个问题:这个版本到底变了什么,以及 我升级时要动哪个配置。安装步骤见 安装与配置;某个键的完整含义见对应的功能页面。
| 版本 | 一句话概括 | 升级压力 |
|---|---|---|
| 1.4.0 | 稳定性修复:保护插件终于能看到怪物挖方块、拾取不再吞掉贵重物品、reload 能作用到已经在世界里的怪 | 换 jar;两处旧边界值的行为会变 |
| 1.3.0 | 新增:有新版本发布时插件会告诉你 | 换 jar 即可,不用改配置 |
| 1.2.1 | 修掉"在 Paper / Purpur 26.2 这类服务端上首次启动就加载失败",一个 jar 通吃 1.21.8 ~ 26.x | 换 jar 即可,不用改配置 |
| 1.2.0 | 新增两份配置文件(message.yml、equip.yml)、优先追杀玩家、挖自己脚下与挖头顶;同时修了一批挖掘和铺路的手感问题 |
建议手动对齐 4 个默认值,详见下文 |
如果你只想尽快跑起来:先看 1.2.1 的"升级步骤"换掉 jar,再回到 1.2.0 的默认值表按需调整。
升级建议:替换 jar 重启即可,配置一个字都不用改 —— 不过有两处你可能早就写下的边界值,从这一版开始才符合直觉(见本节末尾)。
| 变化 | 对你的意义 |
|---|---|
| 保护类插件终于能看到怪物挖方块 | 怪物挖掉的每一块方块现在都会走一次「方块被破坏」事件,WorldGuard、CoreProtect、领地插件、BlockLocker 都能看见它、也能拒绝它。以前方块是在它们背后凭空消失的。 |
| 拾取只收「背包真会用到」的方块 | 以前连钻石块、下界合金块都会捡走,而背包 15 秒后会被清理,等于东西被静默销毁。现在只捡 placement.yml → entries 里列出的方块。 |
/mobinteract reload 能作用到已经在世界里的怪 |
reload 之后,世界里已有的怪会按新配置重新掷出生装备与背包,不用重启服务端。代价:它们身上正在用的那份背包也会重掷。 |
- 长时间追击中途不再突然停止铺路、而且再也恢复不了。
- 走远再回来,怪物不再凭空多出一整包方块。
- 方块不会再"意外永久"留在图上;一只怪的清理也不会顺手删掉别处的整批方块。
- 贴着保护区外一格放 TNT 或倒水,不再能把保护区拆掉。
- 玩家站在放块位置上,不再被方块卡进墙里。
- 更新提醒不再每 6 小时为同一个版本刷一次;
1.4.0+build.7这类标签不再永远显示"有新版本"。 -
/mobinteract inspect在看的怪属于别的区域时,不再打印一条报错。 -
message.yml里改写的列表现在真的覆盖内置文本;&A、&R这类大写颜色码也认。
| 键 | 以前 | 现在 |
|---|---|---|
break-time.hard-cap-seconds |
写 0 会被夹成 0.05 秒,等于什么都挖不动 | 写 0(或负数)表示不设上限 |
placement.block-lifetime-seconds |
负数会变成 0,也就是"永久" | 负数按 1 秒处理;0 仍然是永久 |
backpack.chance |
写 65 会被夹成 1.0,等于每只都有 | 写 65 按 65% 处理(并在日志里提醒一次) |
升级建议:替换 jar 重启。首次启动会生成一份带注释的
update.yml,其余配置不用动。
| 你会得到 | 具体行为 |
|---|---|
| 有新版本时插件会提醒 | 启动 60 秒后查一次 GitHub Releases,之后每 6 小时查一次,把最新正式版的版本号和当前运行的版本对比 |
| 三个提醒位置 | 控制台打一行、给在线的 mobinteract.admin 玩家发游戏内消息、OP 每次开服后第一次上线时再提醒一次 |
/mobinteract update |
立刻手动查一次,结果只回给执行命令的人 |
新的 update.yml
|
开关、查哪个仓库、首次延迟、间隔、控制台提示、玩家提示、上线提示、是否包含预发布版、请求超时、debug |
| 不会自动下载 | 只告诉你版本号和发布页链接,升级依旧是"自己换 jar" |
给服主的几条实用说明:
-
update.yml就是普通配置文件:改完/mobinteract reload立刻生效,新的间隔马上按新值走。 -
interval-hours: 0表示只在每次启动时查一次;enabled: false表示彻底关掉,这时服务器不会发出任何请求。 - 这个检查要求服务器本身能通过 HTTPS 访问
api.github.com。没有外网的环境里它只会安静地失败,只有debug: true时才会在控制台留痕,不会刷红字让人以为插件坏了。 - 默认忽略预发布版,所以
-beta之类的标签不会来烦你;想看就开include-prerelease: true。 - 发给玩家的文字都在
message.yml的update.*下,可以随意改写或翻译。
升级建议:直接替换 jar,不需要改任何配置文件。如果你之前因为"插件在
/plugins里是红色"而放弃了 26.x 之前的服务端,现在可以重新装上。
1.2.0 在 Paper / Purpur 26.2 等较老服务端上,首次启动就会加载失败。表现很好认:
- 控制台出现
Could not load plugin ... InvalidPluginException: Unsupported API version 26.3; -
/plugins里本插件显示为红色、未启用; - 事后想用 PlugMan 手动
load补救,也只会得到That file is not a valid plugin或Plugin didn't load any plugin providers?。
根因和你自己的配置无关:jar 里声明的 API 版本被写死成了 26.3,而服务端在开机扫描阶段就会直接拒绝"比自己还新"的声明,根本走不到读配置那一步。
1.2.1 把声明改成 api-version: 1.21.8,同一个 jar 可以在 1.21.8 ~ 26.x 上加载。最低支持版本仍是 1.21.8——更旧的服务端缺少本插件依赖的寻路与调度能力,不是配置能绕过的。
| 现象 | 服主能理解的根因 | 现在的行为 |
|---|---|---|
在 Paper / Purpur 26.2 上首次启动即加载失败,报 InvalidPluginException: Unsupported API version 26.3;/plugins 里红色;PlugMan 事后 load 也无效 |
jar 里声明的 API 版本写死成 26.3,服务端开机扫描时直接拒绝比自己新的声明 |
声明改为 api-version: 1.21.8,一个 jar 在 1.21.8 ~ 26.x 全部可加载;最低支持 1.21.8
|
| 同一次加载失败中,还有一处只在新版服务端(26.3)才提供的寻路入口被直接调用,老服务端上找不到它 | 那段代码假设"服务端一定有这个新接口",1.21.8 上没有 | 改为先探测服务端有没有这个能力,缺了就退回旧做法,新旧服务端都能跑 |
第一只怪物的行为挂载失败之后,整场运行期所有怪物都不再行动;只有 /plugman reload 之后才恢复(症状:reload 一次就好了) |
插件把"这一次没挂上"(区块正在卸载、实体正要被移除这类临时状况)误判成"这个服务端不支持接管怪物",判过一次就永久关闭、不再重试 | 只有服务端真的不支持时才永久关闭;临时失败只在控制台提示一次,后续怪物继续尝试挂载 |
控制台被 [diag] 开头的调试日志刷屏 |
1.2.0 调试期留下的临时日志 | 已删除 |
- 停服,用 1.2.1 的 jar 覆盖旧 jar(文件名不变)。
- 启动,确认
/plugins里本插件是绿色。 - 跑一次
/mobinteract status,确认能正常输出。 - 想验证"怪物真的被接管了":
forceload一块区域、summon一只怪,再看/mobinteract status里的"已知怪物状态"计数是否上涨——上涨即挂载成功。
配置文件、权限、命令语法在 1.2.1 里没有任何变化,旧配置可以直接用。
升级建议:把
break-time.hard-cap-seconds改成 180.0、placement.max-per-chase改成 32;如果你的placement.yml里还是旧值block-lifetime-seconds: 60,改成 15。首次启动会自动生成equip.yml与message.yml,建议打开看一眼。
| 内容 | 对服主意味着什么 |
|---|---|
message.yml |
所有发给玩家的文本(/mobinteract status / inspect / reload)都能自己改了:支持 & 颜色码、{占位符}、YAML 列表写多行;某个键没写就回落到内置默认值,删键不会报错。reload 会一并重载它,并在回复里报告读到了多少条消息 |
equip.yml |
出生装备的总闸门:chance 默认 0.10,worlds 可以按世界名单独覆盖(不区分大小写)。闸门之内再按 tool.give.chance / backpack.chance 细分"带镐子"和"带方块"的比例 |
/mobinteract status |
新增「出生装备」一行,直接显示当前生效的概率,以及按世界覆盖了几条 |
trigger.dig-below-self |
目标在下方且就在附近时,怪物会挖掉自己脚下那一格掉下去继续追,而不是站在坑边干等(默认开) |
trigger.ceiling-blocked |
头顶被挡死时先挖掉那一格,而不是反复换列找路(默认开) |
debug |
挖掘调试日志开关(默认关),排查"为什么这只怪不挖"时再打开 |
| 临时方块续期 | 临时方块到期时,如果上面正站着生物,就自动再延一个完整周期,不会再在脚下突然消失让人掉下去 |
targeting.yml |
优先追杀玩家:附近有能追的玩家时,把目标切成最近的玩家(16 格内、每 10 tick 检查一次、已经在追玩家时不来回换、可选要求视线) |
| BlockLocker 兼容 | 自动识别 BlockLocker,被它保护的箱子 / 门 / 活板门既不挖也不炸;插件启动时会等 BlockLocker 先就绪 |
pickup.only-equipped |
只有通过出生装备闸门的怪物才会捡地上的东西,保证"带镐子 + 带方块"的怪物合计比例不超过 equip.chance
|
| 卸载清理兜底 | 卸载 / 关服时先把待清理方块写进 pending-blocks.txt 再删,下次启动再清一遍;即使进程被强杀也不会留下永久残留 |
这是升级时唯一需要你动手的地方。 升级不会覆盖你已有的配置文件:文件里显式写了的值以文件为准,只有"还用着旧默认值 / 根本没写"的项才按新默认运行。下面这张表是"新装"的默认值,以及为什么变。
| 配置 | 新默认 | 旧默认 | 为什么改 |
|---|---|---|---|
break-time.multiplier |
4.0 | 2.0 | 挖掘速度减半,怪物不再像开了加速一样瞬间掏空一面墙 |
break-time.hard-cap-seconds |
180.0 | 45 | 旧值会把黑曜石这类硬方块判成"挖不动"而放弃;被跳过的材质会在控制台提示一次 |
placement.block-lifetime-seconds |
15 | 60 | 配合"有人站着就续期"使用:方块活得短、但需要时不会消失,地图上残留更少 |
placement.max-per-chase |
32 | 10 | 旧值会让长桥 / 高柱搭到一半就停手;config-version < 2 且值仍是 10 时,按 32 运行并在控制台告警 |
tool.give.chance / backpack.chance(内置兜底) |
0.8 / 0.65 | — | 与随包发布的 yml 对齐,只在你把这两个键删掉时才生效 |
一个例外要说清楚:placement.max-per-chase 是唯一会"替你改行为"的项。若你的 placement.yml 里 config-version 小于 2、且 max-per-chase 还是旧默认 10,插件会按 32 运行并告警——因为 10 基本可以确定是没改过的旧值。你自己写的其他数值一律尊重。
| 你看到的现象 | 以前为什么会这样 | 现在 |
|---|---|---|
| 长挖掘每 3 秒被掐断重来,黑曜石尤其明显 | 判断"挖掘是否卡住"的时间戳只在开始那一刻记了一次,之后进度在走也没刷新,于是被当成卡死 | 进度推进时会刷新判定,长挖掘能一口气挖完 |
| 破坏任务刚提交就立刻判超时,怪物空挥一下就走 | 记录"本次破坏从何时开始"的值从没被填过,超时判定永远成立 | 起始时间正确记录,不再瞬间超时 |
| 到期的临时方块不消失,或者记录莫名丢失 | 到期时先删记录再判断区块是否加载,区块没加载就等于白删;清扫时区块提交失败也没重试 | 改成"到期时间表 + 定期清扫 + 失败重试",到期方块一定会被清掉 |
| 怪物对着围栏干站着不挖 | 只按"斜前一格"判断前方有没有障碍,站在方块拐角时正好漏判 | 两条水平轴分别检查,贴墙、拐角都能识别 |
| 平地上边走边铺路,一路留下方块桥 | 前方落差只要不超过 3 格也当成"沟"去搭桥 | 落差小的直接走下去,只有更深的沟才搭桥 |
| 头顶被挡时反复换列,来回横跳不干活 | 没有"先把头顶那格挖掉"这条路径 | 有镐子就先挖掉头顶那一格;挖掘与放置互斥,挖掘期间持续盯着目标方块 |
出生装备的怪物比例明显高于 equip.chance
|
有一条发放装备的路径没经过总闸门 | 闸门结果在怪物被接管时就定下来,之后任何路径都遵守 |
| 配置里有两个键改了没反应 |
approach.start-distance / approach.timeout-ticks 一直被读取,但从来没有行为真正使用它们 |
这两个键已移除,配置里留着也不再生效(可以删掉) |
-
equip.yml/message.yml首次启动自动生成,不需要手动创建;想改文案就改message.yml,改完/mobinteract reload。 - 旧的
placement.yml会被识别(config-version小于 2),你的文件不会被改写,只在运行时套用新默认值。 - 如果你的服上装了 BlockLocker,升级后建议实测一次:拿被保护的箱子让怪物去挖,确认它不动手。
- 想让"怪物拿镐子挖矿"整体更克制,调
equip.yml的chance(默认 0.10);想让单个怪物更勤劳,调break-time.multiplier(默认 4.0,数值越大越慢)。
MobInteract · QQ 群 995974858 · Repository · Releases · Issues · English | 简体中文