Tutorial da API do tModLoader para Desenvolvedores 2025
Tutorial completo da API cobrindo ModItem, ModNPC e técnicas avançadas de desenvolvimento com exemplos práticos.
Visão Geral das Classes Principais da API
ModItem
Crie armas, ferramentas, acessórios e consumíveis personalizados
- • SetDefaults() - Define propriedades do item
- • AddRecipes() - Cria receitas de criação
- • UseItem() - Comportamento de uso personalizado
ModNPC
Crie inimigos, NPCs da cidade e chefes com IA personalizada
- • SetDefaults() - Estatísticas e comportamento do NPC
- • AI() - Inteligência artificial personalizada
- • ModifyNPCLoot() - Define tabelas de drop
Exemplo: Criando uma Arma Mágica Avançada
public class AdvancedStaff : ModItem
{
public override void SetDefaults()
{
Item.damage = 75;
Item.DamageType = DamageClass.Magic;
Item.mana = 15;
Item.width = 40;
Item.height = 40;
Item.useTime = 30;
Item.useAnimation = 30;
Item.useStyle = ItemUseStyleID.Shoot;
Item.knockBack = 5;
Item.value = Item.buyPrice(gold: 10);
Item.rare = ItemRarityID.Pink;
Item.UseSound = SoundID.Item20;
Item.autoReuse = true;
Item.shoot = ModContent.ProjectileType<MagicBolt>();
Item.shootSpeed = 16f;
}
public override bool Shoot(Player player, EntitySource_ItemUse_WithAmmo source,
Vector2 position, Vector2 velocity, int type, int damage, float knockback)
{
// Shoot 3 projectiles in a spread
for (int i = 0; i < 3; i++)
{
Vector2 newVelocity = velocity.RotatedByRandom(MathHelper.ToRadians(15));
Projectile.NewProjectile(source, position, newVelocity, type, damage, knockback, player.whoAmI);
}
return false; // Don't shoot the default projectile
}
}
Isso cria um cajado que dispara 3 projéteis mágicos em padrão de dispersão, demonstrando mecânicas avançadas de projéteis.
Boas Práticas da API 2025
✅ Faça
- • Use ModContent.ItemType<T>() para referências de itens
- • Implemente verificação adequada de null
- • Siga as convenções de nomenclatura do C#
- • Teste em ambiente multiplayer
- • Documente seu código com comentários
❌ Não Faça
- • Não codifique IDs de itens diretamente
- • Não acesse Main.player diretamente em MP
- • Não ignore avisos do compilador
- • Não use operações pesadas em AI()
- • Não modifique conteúdo vanilla desnecessariamente
Continue Aprendendo
Este tutorial cobre o básico. Para documentação completa da API e exemplos avançados, confira estes recursos: