Skip to content

Conversation

@maoqijie
Copy link
Contributor

@maoqijie maoqijie commented Feb 1, 2026

关联 Issue

Refs #1011

背景 / 需求

MCSManager 的文件管理很强大,但多实例管理场景下仍缺少:

  1. 单实例的可视化指标(Metrics),便于定位性能与资源瓶颈
  2. 玩家管理(Player Manager),便于快速 whitelist / ban / unban

主要变更

1) Instance Metrics(实例指标)卡片

  • 新增实例卡片 InstanceMetrics
  • 展示实时指标(按实例类型自动适配数据源):
    • 非 Docker 实例:展示进程 CPU / 内存(来自 instance/detailprocessInfo
    • Docker 实例:展示容器 CPU / 内存 / 网络收发 / 磁盘占用(来自 daemon 已有的 docker stats 写入到 instance.info
  • 提供 CPU / 内存的趋势图(前端页面打开后滚动采样,默认保留 60 个点;不做持久化历史)

2) Player Manager(玩家管理)卡片

  • 新增实例卡片 InstancePlayerManager(当前仅对 Minecraft Java 实例启用)
  • 支持快捷操作(通过现有的实例命令通道下发):
    • whitelist add/remove <player>
    • ban <player> [reason]
    • pardon <player>
  • 提供只读列表展示(便于对照):
    • 读取 whitelist.json
    • 读取 banned-players.json
    • 读取失败(文件未生成/无权限)会提示,但不阻塞其它操作

3) 卡片注册与默认布局

  • 将两张卡片注册到前端卡片系统(可在“设计模式 -> 新增卡片”中自由添加)
  • 更新默认布局:新装/重置布局时,/instances/terminal 页面默认展示 Metrics 与 Player Manager 两张卡片

4) i18n

  • 新增相关 i18n key(en_US / zh_CN),其它语言由 fallback 机制回退

权限与安全说明

  • Player Manager 复用现有 /api/protected_instance/command 权限校验(需要用户对该实例有权限)
  • 列表读取复用现有 File Manager 权限校验(无权限不会泄露内容)
  • 输入会做基础规整(去空白),避免换行/空白导致的多指令注入风险

兼容性 / 限制

  • 指标趋势图为前端滚动采样:不做跨会话/跨时间段持久化(避免引入额外存储与后端复杂度)
  • Player Manager 当前仅支持 Minecraft Java(Bedrock 等类型不启用)
  • Ban/Whitelist 的具体效果依赖服务端实现(Vanilla/Spigot/Paper 等命令兼容性)

- Introduced InstanceMetrics and InstancePlayerManager components for monitoring and managing Minecraft Java instances.
- Updated layout configuration to include new components.
- Added API for sending commands to instances.
- Enhanced type definitions to support new features.
- Updated language files for localization of new features.
- Changed latency calculation to check if mcPingOnline is true before accessing latency value.
- Improved handling of undefined latency scenarios.
@yumao233
Copy link
Member

yumao233 commented Feb 5, 2026

年前公司业务繁忙,晚几天看哈,语言文件有冲突可先解一下。

另外,能够提供一个视频,或者几张截图,让我先看看你的前端的小卡片是什么样子的。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants