This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
- 使用中文进行沟通
- 代码注释中使用中文进行注释
mcpywrap 是一个用于《我的世界》中国版 ModSDK/资源包的全周期管理工具,基于 Python 生态系统构建。项目支持:
- Minecraft Addon(插件)开发和构建
- Minecraft Map(地图)项目管理
- 依赖包管理和模块化开发
- 与 MC Studio 的深度集成
# 安装项目到开发环境(可编辑模式)
pip install -e .
# 初始化新项目
mcpy init
# 构建项目到 MCStudio 工程
mcpy build
mcpy build --merge # 强制合并所有资源文件
# 开发模式(watch模式,实时构建与热重载)
mcpy dev
# 运行游戏实例
mcpy run
mcpy run -n # 创建新实例
mcpy run -l # 列出所有实例
mcpy run -d <prefix> # 删除指定实例
# 使用 MC Studio 编辑器
mcpy edit
# 创建 Python Mod 模板
mcpy mod# 添加依赖包
mcpy add <package> [version]
# 移除依赖包
mcpy remove <package># 发布到 PyPI
mcpy publishmcpywrap/- 主包目录cli.py- Click CLI 入口点commands/- 所有CLI命令实现builders/- 项目构建器(AddonsPack, MapPack, 依赖管理)minecraft/- Minecraft相关功能(addons, map, template)mcstudio/- MC Studio 集成(game, symlinks, runtime配置)utils/- 工具函数和项目设置ui/- PyQt5 用户界面组件
- DependencyManager: 核心依赖管理器
- 支持
pip install -e安装的开发包发现 - 通过
direct_url.json解析本地包路径 - 构建递归依赖树,处理依赖的依赖关系
- 防止循环依赖的机制
- 支持
- DependencyNode: 依赖树节点,支持层次化依赖解析
- find_all_mcpywrap_packages(): 自动发现系统中所有 mcpywrap 兼容包
- AddonsPack:
- 处理行为包和资源包的复制、合并操作
- 智能文件过滤(排除 Python 包管理文件)
- 支持 manifest.json 冲突处理
- MapPack:
- 地图存档数据管理(level.dat, levelname.txt, db/)
- 资源包和行为包目录管理
- 自动生成 world_behavior_packs.json 和 world_resource_packs.json
- ProjectWatcher: 项目级文件监控
- 同时监控主项目和所有依赖项目
- 智能文件变化处理(创建、修改、删除、移动)
- 支持热重载,文件变化时自动重新合并
- FileChangeHandler:
- 基于 watchdog 库的文件系统事件处理
- 冷却机制防止重复处理相同事件
- 支持软链接和临时文件过滤
- 智能 JSON 文件合并:
terrain_texture.json,item_texture.json(texture_data 字段合并)sounds.json,sound_definitions.json(sound_definitions 合并)animations.json,animation_controllers.json(动画数据合并)_ui_defs.json(UI 定义去重合并)
- .lang 文件键值对合并
- 图片文件冲突警告和覆盖机制
- setup_global_addons_symlinks(): 全局插件软链接
- Windows 管理员权限自动提权
- 清理旧链接 → 创建新链接的原子操作
- 支持多包同时链接,避免命名冲突
- setup_map_packs_symlinks(): 地图专用软链接
- 运行时地图目录软链接到源代码目录
- 支持行为包和资源包目录级别的链接
- open_game():
- 自动检测和选择 MC Studio 引擎版本
- 从注册表读取 MC Studio 安装信息
- 启动游戏进程并应用 Windows 主题样式
- apply_system_titlebar_style():
- Windows 11 Mica 效果和深色主题支持
- DWM API 调用优化窗口外观
- open_safaia(): 启动 Safaia Server 日志工具
- gen_runtime_config():
- 生成 MC Studio 兼容的 .cppconfig 文件
- 包含世界信息、游戏设置、作弊选项
- 行为包和资源包链接配置
- StudioLogServer: 多线程日志接收服务器
- 支持命令行和 PyQt5 UI 模式
- 智能日志着色(ANSI 终端色彩 + Qt 富文本)
- 命令历史记录和客户端管理
- JSON 命令消息解析和处理
- 从 Windows 注册表读取 MC Studio 配置:
get_mcs_download_path(): 下载路径get_mcs_install_location(): 安装路径get_mcs_game_engine_dirs(): 引擎版本目录(按版本排序)get_mcs_game_engine_data_path(): 用户数据路径
- behavior_pack/: 行为包(脚本逻辑、实体定义、物品定义等)
- resource_pack/: 资源包(纹理、模型、声音、UI 等)
- 支持依赖层次化合并:深层依赖先合并,浅层依赖后合并
- 地图核心文件: level.dat, levelname.txt, db/
- behavior_packs/: 地图专用行为包
- resource_packs/: 地图专用资源包
- 强制合并模式支持(--merge 参数)
- 自动生成包配置文件(从 manifest.json 提取 UUID 和版本)
[project]
name = "project-name"
version = "0.1.0"
dependencies = ["other-mcpywrap-package>=1.0.0"]
[tool.mcpywrap]
project_type = "addon" # "addon" 或 "map"
target_dir = "./build" # 构建输出目录- 包发现: 扫描 site-packages 中的 *.dist-info 目录
- 路径解析: 读取 direct_url.json 获取本地开发包路径
- 递归依赖: 解析每个包的 pyproject.toml 获取子依赖
- 依赖树构建: 构建完整的依赖关系树
- 层次化处理: 按依赖层次顺序合并文件
mcpy dev启动监控模式- 初始构建项目到目标目录
- 启动 ProjectWatcher 监控源码和所有依赖
- 文件变化时:
- 识别文件属于哪个包(主项目或依赖)
- 确定文件类型(行为包/资源包)
- 计算目标文件路径
- 执行智能合并(覆盖或深度合并)
- 实时反馈处理结果
- .runtime/ 目录存储实例配置
- level_id: UUID 格式的世界唯一标识符
- 实例配置文件: {level_id}.cppconfig
- 软链接机制: 避免文件拷贝,支持热更新
- 多实例支持: 可同时管理多个游戏世界
- 注册表访问: 自动发现 MC Studio 安装信息
- 管理员权限: 软链接创建时自动提权
- 进程管理: 游戏进程启动和窗口样式控制
- DWM API: Windows 11 现代化窗口效果
项目无自动化测试,依赖实际运行验证:
mcpy run- 启动游戏实例验证功能mcpy dev- 热重载测试开发工作流- Safaia Server - 游戏内日志和调试命令
- StudioLogServer - 彩色日志输出和命令控制
- 依赖管理: 使用
mcpy add/remove管理依赖,避免手动编辑 pyproject.toml - 开发模式: 优先使用
mcpy dev进行开发,充分利用热重载 - 文件组织: 遵循标准的 behavior_pack/resource_pack 目录结构
- 日志调试: 使用日志服务器监控游戏运行状态和脚本输出