目录

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<CommandData, SubmitResult>)
 ├── m_conditions             # 条件指令字典 (name → Func<CommandData, SubmitResult>)
 │
 ├── 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,简要流程:

  1. 定义 XML:在 Assets/InstructionsDoc_XXX.xml 中添加 <Def> 元素
  2. 实现逻辑:在对应子系统中用 AddFunction / AddCondition 注册并实现
  3. 添加翻译:在 Assets/InstructionLang/InstructionLang_en-US.ini 中添加翻译 Key
  4. 测试验证:在游戏内测试指令效果

开发规范

详见 命令方块开发规范.md,核心要点:

  • 命名空间统一使用 Command
  • 方法使用大驼峰(PascalCase),变量以 m 开头
  • 大括号另起一行(展开式)
  • 指令尽量独立,共用逻辑封装为 public 方法
  • 严禁破坏原版存档结构,移除 Mod 后存档须正常可用

子系统扩展

每位开发者维护独立的子系统:

子系统 用途
SubsystemCommandDef 标准指令,只修 Bug 不大改
SubsystemCommandExt 扩展示例
SubsystemCommandAI AI 编写的指令

新增开发者:复制 CommandExt,重命名为 CommandXXX(XXX 为英文缩写)。

相关文档

文档 说明
指令添加文档.md 新增指令的完整开发指南
命令方块开发规范.md 代码风格、架构规范与兼容性要求

作者

再回首zh, 把红色赋予黑海, 镁生素等

关于
12.7 MB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

版权所有:中国计算机学会技术支持:开源发展技术委员会
京ICP备13000930号-9 京公网安备 11010802047560号