Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
## 项目概述

mcpywrap 是一个用于《我的世界》中国版 ModSDK/资源包的全周期管理工具,基于 Python 生态系统构建。项目支持:

- Minecraft Addon(插件)开发和构建
- Minecraft Map(地图)项目管理
- 依赖包管理和模块化开发
Expand All @@ -18,6 +19,7 @@ mcpywrap 是一个用于《我的世界》中国版 ModSDK/资源包的全周期
## 常用命令

### 开发命令

```bash
# 安装项目到开发环境(可编辑模式)
pip install -e .
Expand All @@ -43,9 +45,14 @@ mcpy edit

# 创建 Python Mod 模板
mcpy mod

# 构建并打包可直接用于《我的世界》中国版市场发布的ZIP包
mcpy package
mcpy package --merge # 强制合并所有资源文件(针对地图项目)
```

### 依赖管理

```bash
# 添加依赖包
mcpy add <package> [version]
Expand All @@ -55,6 +62,7 @@ mcpy remove <package>
```

### 发布

```bash
# 发布到 PyPI
mcpy publish
Expand All @@ -63,6 +71,7 @@ mcpy publish
## 核心架构深度解析

### 项目结构

- `mcpywrap/` - 主包目录
- `cli.py` - Click CLI 入口点
- `commands/` - 所有CLI命令实现
Expand All @@ -75,6 +84,7 @@ mcpy publish
### 关键组件详解

#### 1. 依赖管理系统 (builders/dependency_manager.py)

- **DependencyManager**: 核心依赖管理器
- 支持 `pip install -e` 安装的开发包发现
- 通过 `direct_url.json` 解析本地包路径
Expand All @@ -84,6 +94,7 @@ mcpy publish
- **find_all_mcpywrap_packages()**: 自动发现系统中所有 mcpywrap 兼容包

#### 2. 包构建系统 (builders/)

- **AddonsPack**:
- 处理行为包和资源包的复制、合并操作
- 智能文件过滤(排除 Python 包管理文件)
Expand All @@ -94,6 +105,7 @@ mcpy publish
- 自动生成 world_behavior_packs.json 和 world_resource_packs.json

#### 3. 文件监控系统 (builders/watcher.py)

- **ProjectWatcher**: 项目级文件监控
- 同时监控主项目和所有依赖项目
- 智能文件变化处理(创建、修改、删除、移动)
Expand All @@ -104,6 +116,7 @@ mcpy publish
- 支持软链接和临时文件过滤

#### 4. 文件合并系统 (builders/file_merge.py)

- 智能 JSON 文件合并:
- `terrain_texture.json`, `item_texture.json` (texture_data 字段合并)
- `sounds.json`, `sound_definitions.json` (sound_definitions 合并)
Expand All @@ -115,6 +128,7 @@ mcpy publish
#### 5. MC Studio 集成系统 (mcstudio/)

##### 软链接管理 (symlinks.py)

- **setup_global_addons_symlinks()**: 全局插件软链接
- Windows 管理员权限自动提权
- 清理旧链接 → 创建新链接的原子操作
Expand All @@ -124,6 +138,7 @@ mcpy publish
- 支持行为包和资源包目录级别的链接

##### 游戏实例管理 (game.py)

- **open_game()**:
- 自动检测和选择 MC Studio 引擎版本
- 从注册表读取 MC Studio 安装信息
Expand All @@ -134,19 +149,22 @@ mcpy publish
- **open_safaia()**: 启动 Safaia Server 日志工具

##### 运行时配置 (runtime_cppconfig.py)

- **gen_runtime_config()**:
- 生成 MC Studio 兼容的 .cppconfig 文件
- 包含世界信息、游戏设置、作弊选项
- 行为包和资源包链接配置

##### 日志服务器 (studio_server.py)

- **StudioLogServer**: 多线程日志接收服务器
- 支持命令行和 PyQt5 UI 模式
- 智能日志着色(ANSI 终端色彩 + Qt 富文本)
- 命令历史记录和客户端管理
- JSON 命令消息解析和处理

#### 6. MC Studio 系统集成 (mcstudio/mcs.py)

- 从 Windows 注册表读取 MC Studio 配置:
- `get_mcs_download_path()`: 下载路径
- `get_mcs_install_location()`: 安装路径
Expand All @@ -156,11 +174,13 @@ mcpy publish
### 项目类型支持

#### Addon 项目架构

- **behavior_pack/**: 行为包(脚本逻辑、实体定义、物品定义等)
- **resource_pack/**: 资源包(纹理、模型、声音、UI 等)
- 支持依赖层次化合并:深层依赖先合并,浅层依赖后合并

#### Map 项目架构

- **地图核心文件**: level.dat, levelname.txt, db/
- **behavior_packs/**: 地图专用行为包
- **resource_packs/**: 地图专用资源包
Expand All @@ -170,6 +190,7 @@ mcpy publish
### 配置系统

#### pyproject.toml 结构

```toml
[project]
name = "project-name"
Expand Down Expand Up @@ -219,6 +240,7 @@ target_dir = "./build" # 构建输出目录
### 测试和调试

项目无自动化测试,依赖实际运行验证:

- `mcpy run` - 启动游戏实例验证功能
- `mcpy dev` - 热重载测试开发工作流
- **Safaia Server** - 游戏内日志和调试命令
Expand Down
68 changes: 41 additions & 27 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# 🧰 mcpywrap
# 🧰 mcpywrap

**《我的世界》中国版 ModSDK 与资源包的全周期管理工具**

Expand All @@ -18,53 +18,60 @@ mcpywrap 是基于 Python 生态的《我的世界》中国版 ModSDK/资源包
## 📖 为何选择此工具?

### 传统开发痛点

- 📜 **代码复用困难** - 通过 **文件拷贝** 导致版本管理混乱
- 🚧 **协作效率低下** - 多项目 **重复代码** 维护成本高
- ⚠️ **代码质量** - 缺乏现代开发工具和语法支持

### mcpywrap 解决方案

1. **标准化开发**
通过 `pyproject.toml` 声明项目元数据和依赖关系,实现真正的模块化开发
通过 `pyproject.toml` 声明项目元数据和依赖关系,实现真正的模块化开发

2. **直接启动测试和编辑**
- 直接通过 `mcpy run` 启动游戏实例,支持热重载和实时构建,提升开发效率
- 通过 `mcpy edit` 命令,使用 MC Studio Editor 编辑器进行编辑

- 通过 `mcpy edit` 命令,使用 MC Studio Editor 编辑器进行编辑
3. **生态集成**
依托 pip 包管理体系,支持依赖的版本锁定和自动解析

依托 pip 包管理体系,支持依赖的版本锁定和自动解析

## 🚀 快速开始

### 前置要求

- Python ≥ 3.8
- pip ≥ 21.0

### 安装

```bash
pip install mcpywrap
```

### 初始化项目

```bash
# 首先进入项目目录
mcpy init
```

交互式创建项目结构,自动生成标准的 Mod 框架。

### 运行测试

```bash
mcpy run
```

## 🛠 工作流指南

### 依赖管理
| 命令 | 说明 |
|-------------------------------|---------------------|
| `mcpy` | 维护项目,将项目安装到系统 site-package 环境 |
| `mcpy add <package> [version]` | 添加指定版本依赖 |
| `mcpy remove <package>` | 移除依赖 |

| 命令 | 说明 |
| ------------------------------ | ----------------------------- |
| `mcpy` | 维护项目,将项目安装到系统 site-package 环境 |
| `mcpy add <package> [version]` | 添加指定版本依赖 |
| `mcpy remove <package>` | 移除依赖 |

### 完整命令参考

Expand All @@ -73,30 +80,35 @@ mcpy --help
```

#### 依赖管理
| 命令 | 说明 |
|-------------------------------|---------------------|
| `mcpy add <package> [version]` | 添加指定版本依赖并安装到项目中 |

| 命令 | 说明 |
| ------------------------------ | ---------------- |
| `mcpy add <package> [version]` | 添加指定版本依赖并安装到项目中 |
| `mcpy remove <package>` | 从项目配置中删除依赖并可选择卸载 |

#### 项目初始化与开发
| 命令 | 说明 |
|-------------------------------|---------------------|
| `mcpy init` | 交互式初始化项目,创建基础的包信息及配置 |
| `mcpy mod` | 向导式创建 Python Mod 基础框架 |
| `mcpy build` | 构建为 MCStudio 工程 |
| `mcpy dev` | 使用watch模式,实时构建与热重载 |
| `mcpy edit` | 使用 MC Studio Editor 编辑器进行编辑 |

| 命令 | 说明 |
| -------------- | ---------------------------- |
| `mcpy init` | 交互式初始化项目,创建基础的包信息及配置 |
| `mcpy mod` | 向导式创建 Python Mod 基础框架 |
| `mcpy build` | 构建为 MCStudio 工程 |
| `mcpy dev` | 使用watch模式,实时构建与热重载 |
| `mcpy edit` | 使用 MC Studio Editor 编辑器进行编辑 |
| `mcpy package` | 构建并打包可直接用于《我的世界》中国版市场发布的ZIP包 |

#### ModSDK与游戏实例
| 命令 | 说明 |
|-------------------------------|---------------------|
| `mcpy modsdk` | 管理网易我的世界ModSDK |
| `mcpy run` | 游戏实例运行与管理 |

| 命令 | 说明 |
| ------------- | -------------- |
| `mcpy modsdk` | 管理网易我的世界ModSDK |
| `mcpy run` | 游戏实例运行与管理 |

#### 发布项目
| 命令 | 说明 |
|-------------------------------|---------------------|
| `mcpy publish` | 发布项目到 PyPI |

| 命令 | 说明 |
| -------------- | ---------- |
| `mcpy publish` | 发布项目到 PyPI |

#### 游戏实例管理详解

Expand All @@ -115,7 +127,9 @@ mcpy run -d <实例ID前缀>
```

## 🤝 参与贡献

欢迎提交 Issue 和 PR!请先阅读 [贡献指南](CONTRIBUTING.md)。

## 开源协议

[MIT License](LICENSE) © 2025 EaseCation
2 changes: 2 additions & 0 deletions mcpywrap/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
from .commands.remove_cmd import remove_cmd
from .commands.build_cmd import build_cmd
from .commands.dev_cmd import dev_cmd
from .commands.package_cmd import package_cmd
from .commands.publish_cmd import publish_cmd
from .commands.default_cmd import default_cmd
from .commands.modsdk_cmd import modsdk_cmd
Expand All @@ -32,6 +33,7 @@ def cli(ctx):
cli.add_command(remove_cmd, name='remove')
cli.add_command(build_cmd, name='build')
cli.add_command(dev_cmd, name='dev')
cli.add_command(package_cmd, name='package')
cli.add_command(publish_cmd, name='publish')
cli.add_command(mod_cmd, name='mod')
cli.add_command(run_cmd, name='run')
Expand Down
Loading