
MDevTools - 热重载 / 开发工具
Hytale服务器和模组制作者的开发工具
MDevTools - Hytale 服务器与模组开发者的开发工具
MDevTools 是一套面向 Hytale 服务器与模组开发者的开发工具包,它通过自动清理日志、调整全局日志级别以及启用开发过程中的模组热重载(无需完全重启服务器)来精简迭代流程。
概述
MDevTools 通过监控关键的插件目录,并在检测到变更时重载或加载模组来改进 Hytale 模组作者的开发工作流。这消除了每次 JAR 或 ZIP 文件更新时都需要重启服务器的需求,显著提升了迭代速度。
它还能管理日志清理以防止工作区杂乱,并能设置全局日志级别,以便在每个会话中调整调试或详细输出。
主要特性
- 启动时清理日志以防止杂乱 🧹
- 为所有服务器日志记录器配置全局日志级别 🎛️
- 开发过程中自动热重载已修改的模组 ♻️
- 自动加载放入监控目录的新模组 📦
- 排除模式以避免重载关键或大型模组 🚫
- 针对容器环境使用带轮询备用的混合文件监控方式 🐳
- 针对慢速上传或传输的智能文件稳定性检测 ⏱️
热重载行为
当 mods、builtin 或 earlyplugins 目录(或任何额外监控路径)中的 JAR 或 ZIP 文件发生更改时,MDevTools 将安排重载,并首先确保文件已完全写入。这可以防止在 SCP 上传、Docker 绑定或 IDE 部署期间发生文件损坏或半写入文件加载。
热重载支持加载新模组和重载现有模组,具体取决于具有相同 ID 的插件是否已处于活动状态。
支持的使用场景
热重载适用于:
- 开发期间的快速迭代 🚀
- 无需重启服务器即可测试模组交互 🧩
- 自动部署更新插件工件的 CI 流水线 🏗️
- 运行在 Docker 或 VM 容器中的远程开发环境 🌐
混合文件监控
MDevTools 将 Java 的 WatchService(用于事件驱动通知)与轮询备用方案结合起来,以应对 inotify 或文件系统事件无法正确传播的容器和网络环境。
这确保了在以下环境中文件变更检测仍然可靠:
- Docker 及容器设置 🐳
- 虚拟机 🖥️
- 网络文件系统(NFS / CIFS) 🌐
- 开发卷挂载 🔁
文件稳定性检测
为确保在重载模组之前文件已完全写入,MDevTools 应用了:
- 首次检测后的可配置延迟
- 文件大小稳定窗口
- 当发生新的写入事件时自动重置计时器
这可以防止在部分上传、IDE 构建或慢速网络传输期间进行重载。
安装
- 将 MDevTools JAR 文件放入服务器的
mods目录 - 按需配置
config.json5 - 重启服务器
MDevTools 将开始监控,并在启动时应用日志清理和日志级别调整。
配置
MDevTools 的配置文件位于:
config/com.machina/mdevtools(首选,可写时使用)- 备用路径:
mods/com.machina/mdevtools(当主要路径不可写时使用)
所有配置均采用 JSON5 格式,以便于编辑(允许注释和尾部逗号)。
日志设置
日志设置控制清理和全局详细程度:
logs.cleanupOnStartup.enabled:启动时删除旧的日志和锁定文件(保持工作区清洁)logs.global.level:为所有服务器日志记录器设置全局日志级别(例如INFO、DEBUG、WARNING)logs.global.skip:在应用全局级别时跳过特定的嘈杂日志记录器(例如数据包/世界垃圾信息)
模组重载设置
重载设置控制模组文件的热重载行为:
mods.reload.enabled:热重载的主开关mods.reload.delayMs:检查稳定性之前的延迟(有助于处理慢速写入)mods.reload.fileStabilityCheckMs:文件在重载前必须保持大小稳定的持续时间mods.reload.additionalDirectories:可选的要监控的额外目录mods.reload.exclude:用于排除模组的通配符模式(匹配模组 ID 和文件名)mods.reload.unloadWhenDeleted:如果模组文件被删除,则卸载该模组
配置示例:
{
"logs": {
"cleanupOnStartup": { "enabled": true },
"global": {
"level": "INFO",
"skip": ["PacketLogging", "WorldChunk"]
}
},
"mods": {
"reload": {
"enabled": true,
"delayMs": 1000,
"fileStabilityCheckMs": 500,
"additionalDirectories": [],
"exclude": ["com.example:core", "*:system", "test*.jar"],
"unloadWhenDeleted": false
}
}
}
支持开发
您可以在此处 💖 支持开发工作,助力未来的更新和功能:
https://machinastudios.net/support-us
社区
💬 加入我们的 Discord 社区!
获取帮助、分享创意,并与其他开发者建立联系 🧑💻:
- 🆘 支持与故障排除
- 💡 建议与反馈
- 🤝 社区与协作
👉 加入我们的 Discord 服务器:https://discord.gg/QAFrzj48EN
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。