Skip to content

MWP V2.4.3

Choose a tag to compare

@4YStudio 4YStudio released this 12 Sep 11:18
· 22 commits to main since this release

🛠️ 优化与修复

  • 面板全局备份与系统还原全链路重构与加固 (彻底解决丢配置、丢文件、还原损坏):

    • 原生流式解压与权限软链无损还原:重构 extractBackupArchive,优先调用系统原生 unzip -qo(自动重置 UNZIP='' 环境变量),原生保留所有 POSIX 0755/0644 权限与符号链接,避免将大文件读入 V8 堆内存造成 OOM;第二级智能降级至原生 tar -xf;第三级降级至 AdmZip 并从 entry.attr 恢复文件权限与符号链接,并在 Linux 环境下自动校验并修复 data/java/**/bin/java 的可执行权限;
    • 关键配置子目录全量打包:彻底解决原备份仅打包 data/*.json 顶层文件导致 appearance/(外观主题)、frp/(内网穿透)、scroll_storage/(卷轴持久化存储)丢失的缺陷,全面打包所有子目录并排除临时缓存;
    • 世界安全刷盘与嵌套备份递归排除:备份前向运行中的服务端发送 save-off 与 save-all flush 确保世界区块完整落盘;打包实例时严格过滤 backups/ 目录与 panel.log,防止压缩包无限递归膨胀;
    • Stream Pipeline 分片装配:分片合并改写为基于 Node.js 流式管道 (stream/promises pipeline) 拼接,彻底解决大文件背压截断与末尾损坏;
    • 登录界面灾难恢复模式与多重别名路由:
      • 修复登录界面因调用 /api/backups/global/... 导致 404 错误的问题,注册全套别名路由;
      • 改造 requireBackupAccess 鉴权中间件,支持携带 x-admin-password 在未登录状态下验证管理员密码执行灾难恢复;
      • 登录界面新增「灾难恢复 / 从备份还原」模式,支持查看待回档文件名与文件大小、动态上传进度展示与一键回档。
  • 卷轴工坊:单人快速跳过夜晚 (fast-sleep v1.1.0) 与健康防沉迷守护 (health-guardian v1.1.0) 重构:

    • fast-sleep v1.1.0:启动自动下发 Minecraft 1.17+ 原生规则 /gamerule playersSleepingPercentage 1(卸载自动恢复 100);支持聊天输入 !sleep、!day、睡觉、晚安 快捷跳夜;支持原版 [Sweet Dreams] / [甜蜜的梦] 进度与中英文入睡日志;支持全屏大标题与破晓音效;
    • health-guardian v1.1.0:启动即刻通过 scroll.getOnlinePlayers() 同步当前所有在服玩家;使用 scroll.storage 持久化 sessions,离线重连连续累计时长;ActionBar + tellraw 私聊 + 拾取音效三重提醒;支持聊天栏输入 !health、!防沉迷 随时查询在线时长与下次提醒倒计时;
    • 卷轴引擎与生命周期增强:scroll-engine.js 扩展 sendMessage 与 playSound 快捷接口;日志分发统一提供 line 与 raw 字段;在服务端状态切为 running 时触发 onServerStart,在 stopping 和进程退出时触发 onServerStop;
    • 重新打包发布 docs/scrolls_shop/fast-sleep.zip 与 health-guardian.zip,更新 docs/scrolls_shop/scrolls.json。
  • 语音聊天插件 (Simple Voice Chat) 全方位配置适配与升级 (v1.1.0):

    • 状态判定与加载时序修复:修复前端检查 store.stats.hasVoicechat 导致始终误判为“未安装模组”且拦截配置加载的严重问题,实现 store.hasVoicechat 与 store.stats.hasVoicechat 双向无缝同步;支持即使模组尚未启动也可一键强制打开配置;
    • 智能多路径嗅探与零 404 兜底:
      • 后端增加多环境、多加载器配置文件自动探测(覆盖 config/voicechat/voicechat-server.properties、config/voicechat.properties、plugins/voicechat/ 等路径);
      • 若服务器尚未首次启动生成该文件,自动提供官方标准的默认配置模板(标明 exists: false),彻底消除 404 报错与 # Error reading config 页面覆盖异常;
      • 保存配置时自动创建对应父级目录,支持向后写入真实探测路径。
    • 全属性 GUI 配置模型重构:
      • 废除原界面中与 Simple Voice Chat 不符的废弃字段;
      • 完整覆盖官方所有核心配置属性(网络连接、语音距离、耳语距离、广播范围、Opus 编码器、MTU 包大小、TCP 速率限制、群组开关、录音权限、旁观者通话、强制模组校验、原生动态库加速、多线程 Folia 支持等);
      • 智能兼容 max_voice_distance 与旧版 voice_distance 别名映射;
    • 高保真双向转换引擎:GUI 模式与文本模式切换或保存时,精确替换目标项并无损保留配置文件中的原版注释说明与结构;
    • 全量多语言国际化:在宿主 i18n.js 中补齐所有语音配置项的中英文双语翻译。
  • 认证管理插件 (EasyAuth) 数据库读取、Schema 适配与密码维护修复 (v1.2.0):

    • 解除前端挂载与刷新阻断:修复前端因检查未初始化的 store.stats.hasEasyAuth 导致组件挂载时不调用 loadUsers()、界面锁定为“未安装模组”的缺陷;
    • Linux 大小写与动态路径兼容查找:
      • 优先解析 config/EasyAuth/storage.conf,读取自定义的 sqlite-path 与 sqlite-table;
      • 候选扫描全面兼顾 Linux 大小写敏感特性(同时支持 EasyAuth/ 与 easyauth/ 目录);
      • 增加备用目录 .db 文件自动兜底探测。
    • EasyAuth 真实表结构与 data JSON 列适配:
      • 针对 EasyAuth 表中无独立 password 列、密码与鉴权数据存于 data JSON 列的真实结构进行重构;
      • 查询玩家列表时自动解析 data JSON,提取真实注册状态、最近登录 IP、最近活跃时间及注册时间;
      • 彻底修复修改密码时因执行 UPDATE easyauth SET password = ? 抛出 SQLITE_ERROR: no such column: password 导致的 500 异常,实现对 data JSON 列的反序列化、BCrypt 哈希注入与无损回写;
      • 注销/删除玩家增加 username 与 username_lower 大小写双重匹配。
    • SQLite 执行高可用双引擎降级:
      • 默认优先使用 Node 原生 sqlite3 模块;
      • 若遇环境或 ABI 限制,自动降级启用系统原生 sqlite3 CLI,确保任何环境下均能百分之百稳定读取数据库。
    • UI 呈现升级:新增当前数据库路径状态徽章、玩家最后登录 IP / 注册时间展示,并在无数据时给出明确的注册指引提示。
  • 服务器地图插件 (mc-panel-plugin-map) 玩家雷达头像加载与动态校准修复 (v1.1.1):

    • 地图雷达头像源对齐:彻底修复地图内标记硬编码请求 minotar.net 导致的非正版/离线皮肤无法加载、退化为默认 Steve 面孔的问题;全面对齐宿主面板内置的 /api/avatar 接口(具备本地磁盘缓存与多源极速容灾机制);
    • 多源优雅容灾回退链路:地图标记增加 onerror 级联回退机制(依次尝试 /api/avatar → Crafthead → LittleSkin → MC-Heads → 首字母圆标),确保任何网络环境下均能平滑展现;
    • 玩家雷达标记动态同步增强:在轮询更新玩家坐标时,实时同步更新高度 Y 坐标徽章、在线状态脉冲光圈、头像边框颜色与头像资源地址,并支持点击后定位最新动态位置。
  • 官方插件商店索引更新与发布包构建:

    • 同步更新 mc-panel-plugin-voicechat 至 v1.1.0,重新压缩打包 mc-panel-plugin-voicechat.zip;
    • 同步更新 mc-panel-plugin-easyauth 至 v1.2.0,重新压缩打包 mc-panel-plugin-easyauth.zip;
    • 同步更新 mc-panel-plugin-map 至 v1.1.1,重新压缩打包 mc-panel-plugin-map.zip;
    • 同步更新 docs/plugins_shop/plugins.json 索引信息并同步至 runner/ 与 dist/temp/ 目录。