Basic ModItem Guide
本文内容整理自 tModLoader 官方 Wiki(Terraria 模组开发指南),原文:Basic ModItem Guide。
这篇讲的是所有物品共用的那套东西:怎么建一个物品类、SetDefaults 里该填什么、物品的名字和提示文字又从哪儿来。原文已更新到 1.4.4,想翻 1.3 时代的老版本请点这里。
什么是物品?
Item(物品)、Projectile(弹幕)、Tile(物块)是三个不同的概念,刚上手时很容易绕晕。最典型的一个例子:有人想往配方里加工作台,填的却是工作台物品,而他真正需要的是工作台物块。回旋镖这类武器也一样,它是「物品 + 弹幕」两件东西配合出来的 —— 概念不复杂,但写的时候心里得有这根弦。
做一个物品
要往 Terraria 里加物品,先写一个类继承 ModItem,它是 tModLoader 里所有物品类的基类。在模组的源码目录 My Games\Terraria\tModLoader\ModSources\MyModName 下新建一个 .cs 文件,用编辑器打开,把下面这段粘进去 —— NameHere 换成你物品的内部名,ModNamespaceHere 换成模组的文件夹名 / 命名空间:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
using Terraria;
using Terraria.ID;
using Terraria.ModLoader;
namespace ModNamespaceHere
{
public class NameHere : ModItem
{
public override void SetDefaults()
{
Item.width = 20;
Item.height = 20;
Item.maxStack = 9999;
Item.value = 100;
Item.rare = ItemRarityID.Blue;
// Set other Item.X values here
}
public override void AddRecipes()
{
// Recipes here. See Basic Recipe Guide
}
}
}内部名这里最常见的错是写成带撇号或带空格的名字,别这么干,计算机读不懂。
接下来把你画好的贴图(.png 文件)放到跟这个 .cs 文件同一个目录里。文件名和目录结构要怎么摆计算机才认,看 Autoload。
SetDefaults
物品最重要的部分就是 SetDefaults:这件物品用什么弹药、体积多大、能放置成哪个物块,都在这个方法里设。这些字段的常见含义查 Item Class Documentation;想看原版物品都填了些什么值,翻 Vanilla Item Field Values;各种物品的现成例子在 ExampleMod.Content.Items 里有很多。
本地化(Localization)
模组构建过一次之后,本地化文件里就会自动补上新物品的条目。这个文件通常位于 My Games\Terraria\tModLoader\ModSources\MyModName\Localization\en-US_Mods.MyModName.hjson。物品对应两条:DisplayName 默认取类名,并按大写字母把单词拆开;Tooltip 默认是空的。想改成自己的文案,直接编辑这个文件就行:
1
2
3
4
5
6
Items: {
NameHere: {
DisplayName: Name Here
Tooltip: This is a modded item.
}
}提示文字要显示成多行的话,语法见 Localization 页面的 Multiline 一节。
