快速开始

你的第一个模组

一个物品、一个方块、一个配方、一句欢迎语和一条命令,已经拆分成几个小文件。你可以在模拟服务器上测试它,无需打开游戏。

1. 创建模组

终端
crafting new gems
生成的内容文本
gems/
├── main.craft
├── content/
│   ├── items.craft
│   ├── blocks.craft
│   └── recipes.craft
├── events/
│   └── welcome.craft
└── commands/
    └── gem.craft

main.craft 只说明模组是什么、有哪些部分。内容放在 content/,行为放在 events/ 和 commands/。为什么这样布局:见组织模组。配合 VS Code 扩展,输入时就能看到错误提示和自动补全。

2. 文件

gems/main.craftCraftScript
mod "gems" { name: "gems", version: "1.0.0", author: "you" }

// 存在的东西
import "content/items"
import "content/blocks"
import "content/recipes"

// 发生的事情
import "events/welcome"
import "commands/gem"
gems/content/items.craftCraftScript
item "magic_gem" { rarity: "rare", glint: true }
gems/content/blocks.craftCraftScript
block "magic_block" {
    hardness: 3
    light: 10
    tool: "pickaxe"
    drops: "magic_gem"
}
gems/content/recipes.craftCraftScript
recipe shaped "magic_block" {
    pattern: ["GGG", "GGG", "GGG"]
    keys: { G: "magic_gem" }
    result: "magic_block"
}
gems/events/welcome.craftCraftScript
on join(e) {
    e.player.send("&a欢迎,{e.player.name}!")
}
gems/commands/gem.craftCraftScript
command gem(target: player?) requires "gems.gem" {
    let p = target ?? player
    p.give(item("gems:magic_gem", 1))
    return "已给予 {p.name} 一颗魔法宝石"
}

3. 检查

终端
crafting check gems/main.craft

检查器会跟随导入。如果有问题,它会给出文件、行号和期望的内容,例如 welcome.craft:2: error: Player has no property 'helth'. Did you mean 'health'?。

4. 脱离游戏测试

沙盒是一个模拟服务器,拥有与真实游戏相同的 API。它以开发模式启动:保存文件,模组就会重新加载。

终端
mkdir -p test/mods && cp -r gems test/mods/
crafting sandbox test
会话文本
> join Steve
  [Steve] 欢迎,Steve!
> op Steve
> as Steve /gem
  [Steve] 已给予 Steve 一颗魔法宝石
> inv Steve
  1x gems:magic_gem
> quit

5. 进游戏玩

把 gems 文件夹复制到 .minecraft/mods/,然后打开 Crafting 26.3 配置。物品纹理放在 gems/textures/item/magic_gem.png,方块纹理放在 gems/textures/block/magic_block.png。在服务器上,由于它添加了方块,模组要同时装在服务器和每个客户端上。

6. 扩展模组

每个新点子都有它的位置:新物品放进 content/items.craft,新的游戏规则放进 events/ 下的新文件,被多个文件使用的函数放进 lib/,设置放进 settings.craft。完整的示例模组见组织模组。