Back to skills
extension
Category: Development & EngineeringNo API key required

edit-schema

A guide for editing the YAML schema of master data. Use when: 1. Need to edit VanillaSchema's yml files (such as blocks.yml, items.yml, etc.) 2. Adding new block types or parameters 3. Changing the structure of existing schemas 4. Checking the trigger method of SourceGenerator

personAuthor: jakexiaohubgithub

Schema Editing Guide

Directory Structure

VanillaSchema/
├── blocks.yml, items.yml, fluids.yml ...  # メインスキーマ
└── ref/                                    # 再利用可能なスキーマ部品
    ├── inventoryConnects.yml
    ├── gearConnects.yml
    └── ...

Editing Procedure

1. Edit Schema YAML

VanillaSchema/ 配下の該当YAMLファイルを編集。

2. Update csc.rsp (Add/Delete Schema)

スキーマの追加・削除時に moorestech_server/Assets/Scripts/Core.Master/csc.rsp を編集:

# 追加時
/additionalfile:Assets/../../VanillaSchema/newSchema.yml

# 削除時は該当行を削除

3. Trigger SourceGenerator

moorestech_server/Assets/Scripts/Core.Master/_CompileRequester.csdummyText を変更:

private const string dummyText = "new-value-here";

4. Rebuild

MCPまたはUnityでリビルド。生成コードは Mooresmaster.Model.*Module 名前空間に配置される。

Key Patterns

ref (Reusable Schema)

- key: inventoryConnectors
  ref: inventoryConnects  # VanillaSchema/ref/inventoryConnects.yml を参照

switch/cases (Conditional Properties)

- key: blockParam
  switch: ./blockType
  cases:
  - when: Chest
    type: object
    properties:
    - key: itemSlotCount
      type: integer

defineInterface (Shared Properties)

defineInterface:
- interfaceName: IChestParam
  properties:
  - key: itemSlotCount
    type: integer

# 使用時
implementationInterface:
- IChestParam

foreignKey (Reference to Other Schema)

- key: itemGuid
  type: uuid
  foreignKey:
    schemaId: items
    foreignKeyIdPath: /data/[*]/itemGuid
    displayElementPath: /data/[*]/name

Important Rules

  • optional: true は本当に必要な場合のみ使用
  • 手動で Mooresmaster.Model.* クラスを作成しない
  • スキーマ変更後は必ず _CompileRequester.cs を更新してコミット

SourceGenerator Troubleshooting

SourceGeneratorはどのような環境(git worktree、root repo、CI/CD)でも動作します。

もしSourceGeneratorでコードが生成されていないことによるコンパイルエラー(例:The type or namespace name 'Mooresmaster' could not be found (are you missing a using directive or an assembly reference?) 等)が発生した場合、100%スキーマの書き方に問題があります

このような時は:

  1. YAMLファイル全体を見直して不具合がないかチェック
  2. yaml_spec.md でYAMLの書き方の仕様を確認
  3. コンパイルエラーが解消するまで修正を続ける

Reference

MUST: IF もし今から実行しようとしているタスクがYAMLを編集する必要がある場合 THEN 必ず yaml_spec.md を確認してください。利用可能なプロパティ、型、設定オプションの完全なリファレンスが記載されています。