# SC-CommandBlock **Repository Path**: SC-SPM/SC-CommandBlock ## Basic Information - **Project Name**: SC-CommandBlock - **Description**: 生存战争命令方块重置版 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: NEXTrue - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 9 - **Forks**: 7 - **Created**: 2022-01-14 - **Last Updated**: 2026-06-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SC-CommandBlock 命令方块 通过指令实现各种各样的功能——为 Survivalcraft 提供强大的命令方块系统。 ## 功能概述 命令方块模组为游戏添加了一个可编程的指令执行系统,支持 **77 条功能指令**、**28 条条件指令**、**3 条扩展指令**,指令还在不断扩充,覆盖建筑、实体、逻辑、特效等多个领域。 ## 项目结构 ``` SC-CommandBlock/ ├── Assets/ │ ├── InstructionsDoc_Def.xml # 标准指令定义 │ ├── InstructionsDoc_Ext.xml # 扩展指令定义 │ ├── InstructionsDoc_Particle.xml # 粒子指令定义 │ ├── InstructionsDoc_AI.xml # AI 扩展指令定义 │ ├── InstructionLang/ # 指令多语言文件 │ ├── Lang/ # 界面多语言文件 │ ├── Textures/ # 材质图片 │ └── Widgets/ # 界面 XML ├── Game/ │ ├── Basic/ # 基础类(Instruction, CommandData, 枚举等) │ ├── Block/ # 方块类 │ ├── BlockOverride/ # 方块覆盖(树叶、玻璃、黏土) │ ├── DataHandle/ # 数据处理(表达式计算、颜色处理) │ ├── Function/ # 功能类(粒子系统、模组加载、快捷键) │ ├── Manager/ # 管理器(指令、复制、实体信息、撤销) │ ├── Subsystem/ # 子系统 │ │ ├── SubsystemCommand.cs # 命令系统入口 │ │ ├── SubsystemCommandDef.cs # 标准指令实现 │ │ ├── SubsystemCommandExt.cs # 扩展指令实现 │ │ ├── SubsystemCommandAI.cs # AI 扩展指令实现 │ │ ├── SubsystemCommandBlockBehavior.cs # 命令方块行为 │ │ └── SubsystemCmdRodBlockBehavior.cs # 命令棒行为 │ └── Widget/ # 界面控件 ├── Properties/ # 程序集属性 ├── CommandBlock.csproj # 项目文件 ├── CommandBlock.sln # 解决方案 ├── modinfo.json # 模组信息 └── nuget.config # NuGet 配置 ``` ## 架构设计 ### 核心类关系 ``` SubsystemCommand # 系统入口,管理指令注册与分发 ├── m_functions # 功能指令字典 (name → Func) ├── m_conditions # 条件指令字典 (name → Func) │ ├── SubsystemCommandDef # 标准指令实现(AddFunction / AddCondition) ├── SubsystemCommandExt # 扩展指令实现 └── SubsystemCommandAI # AI 扩展指令实现 InstructionManager # 指令管理器,解析 XML 定义 ├── FunInstructions # 功能指令字典 (name → Instruction) ├── ConInstructions # 条件指令字典 (if:name → Instruction) └── LangDictionary # 多语言字典 Instruction # 指令数据模型 ├── Name, About, Order, Condition, Survival ├── Types[] # 命令类型列表 ├── Demos{} # 指令演示 ├── Details{} # 指令说明 ├── Paras{} # 参数列表 ├── Definitions{} # 参数说明 ├── Ranges{} # 参数范围 └── Options{} # 参数选项 ``` ### 工作模式 - **创造模式**:所有指令可用,无范围限制 - **生存模式**:仅 `Limit="false"` 的指令可用,受范围限制 ### 指令执行流程 1. 用户在命令方块界面输入指令 2. `CommandEditWidget` 解析并提交指令 3. `SubsystemCommand` 根据指令名查找注册的函数 4. 执行对应子系统中的实现方法 5. 返回 `SubmitResult`(成功/失败/提示信息) ## 开发指南 ### 添加新指令 详见 [指令添加文档.md](指令添加文档.md),简要流程: 1. **定义 XML**:在 `Assets/InstructionsDoc_XXX.xml` 中添加 `` 元素 2. **实现逻辑**:在对应子系统中用 `AddFunction` / `AddCondition` 注册并实现 3. **添加翻译**:在 `Assets/InstructionLang/InstructionLang_en-US.ini` 中添加翻译 Key 4. **测试验证**:在游戏内测试指令效果 ### 开发规范 详见 [命令方块开发规范.md](命令方块开发规范.md),核心要点: - 命名空间统一使用 `Command` - 方法使用大驼峰(PascalCase),变量以 `m` 开头 - 大括号另起一行(展开式) - 指令尽量独立,共用逻辑封装为 `public` 方法 - **严禁破坏原版存档结构**,移除 Mod 后存档须正常可用 ### 子系统扩展 每位开发者维护独立的子系统: | 子系统 | 用途 | |--------|------| | SubsystemCommandDef | 标准指令,只修 Bug 不大改 | | SubsystemCommandExt | 扩展示例 | | SubsystemCommandAI | AI 编写的指令 | 新增开发者:复制 `CommandExt`,重命名为 `CommandXXX`(XXX 为英文缩写)。 ## 相关文档 | 文档 | 说明 | |------|------| | [指令添加文档.md](指令添加文档.md) | 新增指令的完整开发指南 | | [命令方块开发规范.md](命令方块开发规范.md) | 代码风格、架构规范与兼容性要求 | ## 作者 再回首zh, 把红色赋予黑海, 镁生素等