Tutorial de la API de tModLoader para Desarrolladores 2025
Tutorial completo de la API que cubre ModItem, ModNPC y técnicas de desarrollo avanzadas con ejemplos prácticos.
Resumen de Clases Principales de la API
ModItem
Crea armas, herramientas, accesorios y consumibles personalizados
- • SetDefaults() - Define propiedades del objeto
- • AddRecipes() - Crea recetas de crafteo
- • UseItem() - Comportamiento de uso personalizado
ModNPC
Crea enemigos, NPCs de pueblo y jefes con IA personalizada
- • SetDefaults() - Estadísticas y comportamiento del NPC
- • AI() - Inteligencia artificial personalizada
- • ModifyNPCLoot() - Define tablas de drop
Ejemplo: Crear un Arma Mágica Avanzada
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
}
}
Esto crea un bastón que dispara 3 rayos mágicos en un patrón disperso, demostrando mecánicas avanzadas de proyectiles.
Mejores Prácticas de la API 2025
✅ Do's
- • Use ModContent.ItemType<T>() for item references
- • Implementa verificación adecuada de null
- • Sigue las convenciones de nombres de C#
- • Prueba en entorno multijugador
- • Documenta tu código con comentarios
❌ Don'ts
- • No codifiques IDs de objetos directamente
- • No accedas a Main.player directamente en MP
- • No ignores las advertencias del compilador
- • No uses operaciones pesadas en AI()
- • No modifiques el contenido vanilla innecesariamente
Seguir Aprendiendo
Este tutorial cubre lo básico. Para documentación completa de la API y ejemplos avanzados, consulta estos recursos: