Kelas ModItem
Kelas dasar untuk membuat item, senjata, alat, dan aksesori kustom.
Ringkasan
Kelas ModItem digunakan untuk mendefinisikan item kustom di tModLoader. Dengan memperluas kelas ini, Anda dapat membuat senjata, aksesori, barang habis pakai, dan jenis item lainnya. Lihat contoh praktis di tutorial Membuat Item kami.
Namespace
Terraria.ModLoader
Metode Umum
SetDefaults()
Atur properti item seperti damage, ukuran, waktu penggunaan, dll.
public override void SetDefaults()
{
Item.damage = 50;
Item.width = 40;
Item.height = 40;
Item.useTime = 20;
}
AddRecipes()
Tentukan resep crafting untuk item Anda.
public override void AddRecipes()
{
Recipe recipe = CreateRecipe();
recipe.AddIngredient(ItemID.Wood, 10);
recipe.AddTile(TileID.WorkBenches);
recipe.Register();
}
Contoh Item Lanjutan
Membuat Senjata Jarak Jauh
public class ExampleBow : ModItem
{
public override void SetDefaults()
{
Item.damage = 30;
Item.DamageType = DamageClass.Ranged;
Item.width = 16;
Item.height = 32;
Item.useTime = 25;
Item.useAnimation = 25;
Item.useStyle = ItemUseStyleID.Shoot;
Item.noMelee = true; // Don't deal melee damage
Item.knockBack = 2;
Item.value = Item.sellPrice(silver: 30);
Item.rare = ItemRarityID.Green;
Item.UseSound = SoundID.Item5;
Item.autoReuse = true;
Item.shoot = ProjectileID.WoodenArrowFriendly;
Item.shootSpeed = 10f;
Item.useAmmo = AmmoID.Arrow; // Uses arrows as ammo
}
}
Membuat Item Habis Pakai
public class ExamplePotion : ModItem
{
public override void SetDefaults()
{
Item.width = 20;
Item.height = 26;
Item.useStyle = ItemUseStyleID.DrinkLiquid;
Item.useAnimation = 15;
Item.useTime = 15;
Item.useTurn = true;
Item.UseSound = SoundID.Item3;
Item.maxStack = 30;
Item.consumable = true; // Item is consumed on use
Item.rare = ItemRarityID.Orange;
Item.value = Item.buyPrice(gold: 1);
Item.buffType = BuffID.Ironskin; // Grants buff
Item.buffTime = 5 * 60 * 60; // 5 minutes
}
}
Membuat Aksesori
public class ExampleAccessory : ModItem
{
public override void SetDefaults()
{
Item.width = 24;
Item.height = 24;
Item.value = Item.sellPrice(gold: 1);
Item.rare = ItemRarityID.Orange;
Item.accessory = true; // Mark as accessory
}
public override void UpdateAccessory(Player player, bool hideVisual)
{
player.moveSpeed += 0.15f; // +15% movement speed
player.jumpSpeedBoost += 1.5f; // Better jumps
player.GetDamage(DamageClass.Generic) += 0.08f; // +8% all damage
}
}
Referensi Properti Lengkap
| Properti | Tipe | Deskripsi | Contoh |
|---|---|---|---|
| damage | int | Nilai damage dasar | 50 |
| useTime | int | Frame antar penggunaan | 20 |
| knockBack | float | Kekuatan knockback | 6.5f |
| autoReuse | bool | Otomatis ayun saat ditekan | true |
| maxStack | int | Ukuran tumpukan maksimal | 999 |
| consumable | bool | Habis saat digunakan | true |