📔
TerraCraft
  • TerraCraft
  • English
    • Mod Document
      • Mod Dev Official Tutorial
      • Mod API Document
        • Data Types and Enums
        • JSON
        • Entity
        • NPC
  • 简体中文(旧版教程)
    • 模组文档
      • Engine API
        • App
        • AssetBundle
        • AtlasInfo
        • AtlasTextureManager
        • Audio
        • Bytes
        • File
        • GameObject
        • GlobalHook
        • Graphics
        • Hotfix
        • Image
        • ImageInfo
        • IntegratedClient : IntegratedEnv
        • IntegratedEnv
        • JsonUtil
        • Log
        • MathHelper
        • Matrix
        • Path
        • Random
        • Rect
        • Rigidbody
        • TextureLocation
        • TextureManager
        • Transform
        • Vector2
        • Vector3
        • Vector4
      • Game API
        • Attack
        • ArrayList<T>
        • EffectUtils
        • Entity
        • LightingUtils
        • ModNpc
        • ModProjectile
        • Npc : Entity
        • NpcUtils
        • Projectile : Entity
        • ProjectileUtils
        • Reg
        • SoundUtils
        • Utils
      • 模组API文档
        • 数据类型、枚举类型
        • JSON API
        • 引用API
        • 注册信息API
        • 语言API
        • 通用API
        • 物品API
        • 实体API
        • 特效API
        • 抛射物API
        • 状态效果API
        • 附魔API
        • 玩家API
        • NPC API
        • 骨骼模型API
        • 光照API
        • 音效API
        • 方块API
        • 方块实体API
        • 地图API
        • 渲染API
        • 指令API
        • 用户图形界面UI
        • 其他API
      • 模组开发官方教程
        • ExampleMod源代码仓库
        • 1.0 教程对应游戏版本(Indev 1.1)
        • 1.1 开始
        • 1.2 安装Visual Studio Code
        • 1.3 配置模组环境
        • 1.4 认识模组路径
        • 1.5 认识JSON数据表
        • 1.6 第一个物品
        • 1.7 认识地图元素
        • 1.8 第一个图块TODO
        • 1.9 第一个家具TODO
        • 1.10 加入合成表TODO
        • 未完待续……
      • 模组数据表文档
        • 基本JSON类型
        • 模组配置表(tcmod.json)
        • 物品表(contents/items/...)
        • 物品配置表
        • 弹药表(ammos.json)
        • 状态效果表(buffs.json)
        • 音效配置表(sound_config.json)
        • 音效表(sounds.json)
        • 背景表(backgrounds.json)
        • 皮肤表(skins.json)
        • 着色器表(shaders.json)
  • 新版教程
    • 1 基础部分
      • 1.1 安装集成开发环境
      • 1.2 获取TerraCraft源码
      • 1.3 认识Lua
      • 1.4 Mod架构
      • 1.5 游戏主生命周期和主状态机
      • 1.6 Lua实战
      • 1.7 第一个物品
      • 1.8 本地化翻译
      • 1.9 配方系统初探和矿物字典
Powered by GitBook
On this page
  • 创建物品文件夹
  • 创建一个物品
  • 在游戏中查看物品
  • 写入语言文件

Was this helpful?

  1. 简体中文(旧版教程)
  2. 模组文档
  3. 模组开发官方教程

1.6 第一个物品

Previous1.5 认识JSON数据表Next1.7 认识地图元素

Last updated 4 years ago

Was this helpful?

创建物品文件夹

在模组文件夹中创建contents文件夹,在contents文件夹中创建items文件夹作为物品文件夹。

创建一个物品

我们为创建一颗金蛋作为第一个模组物品。将物品id命名为golden_egg。

在物品文件夹中添加金蛋贴图,命名为golden_egg_icon.png,并在同级目录创建golden_egg.json作为金蛋的JSON数据表。金蛋贴图和JSON文件可以在contents\items文件夹中任意子目录创建,游戏会遍历所有子文件夹自动寻找并加载金蛋的数据。

在golden_egg.json中写入数据:

{
  "golden_egg": {
    "type": "MATERIALS",
    "iconTextureData": "golden_egg_icon.png",
    "group": "GROUP_FOOD"
  }
}
  • type属性表示当前物品类型,使用物品类型表中的常量名称字符串作为值。

  • iconTextureData属性表示当前物品图标在模组textures文件夹的相对位置。

  • group表示物品所在分组。

在游戏中,我们把物品分为这么几大类:材料类(Materials)、方块类(Blocks)、工具类(Tools)、抛射物类(Projectiles)、存储类(Chests)。

这几类物品的使用场合如下:

类型

常量名称

最大堆叠数

描述

常见

材料类

MATERIALS

640

最常见、最通用、最简单的物品,一般不附带特殊数据

原料、食物、药水等

方块类

BLOCKS

640

用于放置方块

地砖、家具等

工具类

TOOLS

1

有附魔、耐久度等属性

装备、武器、镐子、斧头等

抛射物类

PROJECTILES

1000

可以大量抛掷出去,或者作为某种武器的消耗品

炸弹、箭、子弹等

存储类

CHESTS

1

可以存储多种物品

潜影盒

在游戏中查看物品

保存这个JSON数据表文件,然后运行TerraCraft。打开查询界面,你会看到金蛋已经加入到了游戏中!

但是,玩家看到的物品名称却是命名空间:名称,而且也没有物品的描述信息。这是因为我们还没有将物品的文字信息加入到翻译文件中。我们的征途是让Mod走向国际化,因此我们不仅需要写中文的翻译文件,也需要写英文翻译文件。

写入语言文件

每次创建一个新的物品,我们还需要把物品的文本信息写入到翻译数据表内。创建languages文件夹作为语言文件夹,并在该文件夹中创建english.json和chinese.json两个文件作为英文和中文的语言表,注意必须以UTF8格式保存。

注:游戏运行一次后所有模组文件夹会自动创建一个outputs文件夹,用于存放一些导出信息。

对于/languages/english.json英文表,写入如下信息:

{
  "items": [
    [ "golden_egg", "Golden Egg", "This is a golden egg." ]
  ]
}

对于/languages/chinese.json中文表,写入如下信息:

{
  "items": [
    [ "golden_egg", "金蛋", "这是一个金蛋" ]
  ]
}

对于JSON中items数组的每一项,第一个字符串表示物品在Mod私有空间中的名称(id),第二个字符串表示展示名称(Display Name),第三个字符串是对于该物品的描述(Description)。

一般建议必须进行英文翻译,即必须填写英文语言文件的数据表,而其他语言根据自己的掌握情况尽可能填写。因为我们切换语言的时候总是基于如下规则进行展示文本替换的:

如果目标语言展示文本不存在,使用英文展示文本。 如果英文展示文本不存在,使用命名空间:名称。 如果不适合使用上述文本,则使用空。

再次运行游戏,我们可以发现物品的名称和描述可以正确显示。

在中文语言中:

在英文语言中:

详细描述见:

golden_egg_icon.png
物品表——材料