Skip to content

BlockNexus v0.5.0

Choose a tag to compare

@live-ling live-ling released this 14 Oct 07:05
· 84 commits to main since this release

Minecraft 服务器管理面板:本地 Web 面板 + SSH 部署远程 Agent,token 加密通道,浏览器即开即用,面板无需公网地址。

⚠️ 升级须知:Agent 版本 0.3.8 → 0.4.5,含地图与托盘相关变更,请在面板设置页更新一次 Agent。协议未变,自动更新可用。

新功能:网页地图

实例详情页新增「地图」页签,把世界的方块俯视图画出来:可拖动、滚轮缩放(以光标为锚点)、跳坐标、切换世界。

做法与常见的「把方块数据传给浏览器用 wasm 渲染」不同:解析 .mca 与渲染都放在 Agent 侧完成,直接产出 PNG,浏览器原生解码。带来几个直接好处:

  • 前端零解码代码,也不需要自研二进制瓦片协议;
  • 粒度是一个区域文件(512×512 方块 = 一张 512×512 PNG),一屏只覆盖几个区域 → 每次交互只发几个请求(按单区块出图要上千个);
  • PNG 天然可被 HTTP 缓存协商(ETag/304),拖回看过的区域零请求。

Anvil 解析是零依赖实现:NBT 解析、调色板位解包、gzip/zlib/未压缩、.mcc 外置标志,以及自写 CRC32 的 PNG 编码器 —— 目标机不需要 npm 装任何东西。

其他细节:

  • 维度切换:Paper 的独立目录(world_nether)与原版的嵌套布局(world/DIM-1、world/DIM1)都支持;
  • 缓存:落盘在实例目录下的 .blocknexus-map/(已排除在备份与文件管理器之外,避免污染存档备份);缓存签名含渲染版本,升级 Agent 后旧图自动失效重渲染,无需手动清理;
  • 「重新生成」:工具条一键清掉服务端与前端缓存并重渲染;
  • 缺色自报:色表里没有的方块会显示为紫色,并在工具条直接列出方块名(悬停可看),便于精确补齐;
  • 缩放量级与参考实现对齐:每方块 1.75~10 像素(默认 2)。早先版本默认 1 像素/方块,方块会小到看不出形状。

界面

  • 全局语言切换搬到「设置 → 语言」;首次访问按浏览器语言自动判定,英文用户不再对着中文登录页。

修复

地图(每一条都有回归测试):

  • 位解包用错了版本布局 —— MC 1.16 起改为「填充式」(每个 long 固定塞 floor(64/bits) 个值、不跨边界),我按 1.15- 的「连续式」实现,调色板 17+ 项时从第 12 个值起全错 → 随机方块 → 满屏噪点。这一条也解释了早期地图为什么不可用;
  • 区块读取的 length 少减 1(该字段含压缩类型字节)→ gzip 压缩的区块全部解压失败;
  • 调色板可能是字符串列表或使用 id 键(不只 Name),未兼容时那些列会被静默丢弃;
  • 世界最低高度改用区块 yPos(原先的启发式在候选相差 16 整数倍时会取错);
  • 明暗第一行方向与参考实现相反(有坡度时每张图顶部一条色线);
  • 滚轮监听与 ResizeObserver 从未挂上(effect 依赖不全,挂在尚不存在的 ref 上)→ 滚轮不缩放且页面跟着滚;
  • 初始视角硬编码导致世界原点不在画布正中;滚轮锚点 border/content box 错配导致反复缩放时画面漂移。

托盘:无法注册托盘图标的环境下降级而不是失效 —— 主窗口保持可见并显示常驻提示,关闭窗口时给出「以管理员重启 / 直接退出」选项(此前会静默隐藏,用户既无图标又无窗口,只能去任务管理器结束进程,表现成「程序坏了」)。另外重试放宽到 60 秒(覆盖开机自启时 Explorer 托盘尚未就绪这一最常见原因),并修了提权重启会被单实例互斥锁静默吞掉的问题。

便携版

BlockNexus-v0.5.0-portable.zip:内置 Node 运行时、依赖与已构建前端,解压到任意目录双击 BlockNexus.exe 即用,数据在 data/ 目录内。

BlockNexus-shell-v0.5.0.zip:仅托盘外壳,需要本机已装 Node ≥ 18。

校验

BlockNexus-v0.5.0-portable.zip
  1FE464A3EDE8E2C089B416E6E66A0A482062AA3D36D89665081874B04CD3683C
BlockNexus-shell-v0.5.0.zip
  D2042BAFBE411FC3A02C64FA1C455127A4C096D99D805ED1C458999EBD6D5747