Skip to content

Changelog zh

liuye edited this page Nov 8, 2026 · 3 revisions

更新日志

简体中文 | 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 的默认值表按需调整。


1.4.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% 处理(并在日志里提醒一次)

1.3.0(检查更新)

升级建议:替换 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.* 下,可以随意改写或翻译。

1.2.1(兼容性修复)

升级建议:直接替换 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. 停服,用 1.2.1 的 jar 覆盖旧 jar(文件名不变)。
  2. 启动,确认 /plugins 里本插件是绿色。
  3. 跑一次 /mobinteract status,确认能正常输出。
  4. 想验证"怪物真的被接管了":forceload 一块区域、summon 一只怪,再看 /mobinteract status 里的"已知怪物状态"计数是否上涨——上涨即挂载成功。

配置文件、权限、命令语法在 1.2.1 里没有任何变化,旧配置可以直接用。


1.2.0(功能与手感)

升级建议:把 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,数值越大越慢)。

相关页面

Clone this wiki locally