УЧЕБНИК ПО API

Учебник по API tModLoader для разработчиков 2025

Подробный учебник по API, охватывающий ModItem, ModNPC и продвинутые техники разработки с практическими примерами.

Обзор основных классов API

ModItem

Создание пользовательского оружия, инструментов, аксессуаров и расходных материалов

  • • SetDefaults() - Define item properties
  • • AddRecipes() - Create crafting recipes
  • • UseItem() - Custom use behavior

ModNPC

Создание врагов, городских NPC и боссов с пользовательским ИИ

  • • SetDefaults() - NPC stats and behavior
  • • AI() - Custom artificial intelligence
  • • ModifyNPCLoot() - Define drop tables

Пример: создание продвинутого магического оружия

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
    }
}

Это создаёт посох, который стреляет 3 магическими снарядами веером, демонстрируя продвинутую механику снарядов.

Лучшие практики API 2025

✅ Рекомендуется

  • • Используйте ModContent.ItemType<T>() для ссылок на предметы
  • • Реализуйте правильную проверку на null
  • • Следуйте соглашениям об именовании C#
  • • Тестируйте в мультиплеерной среде
  • • Документируйте код комментариями

❌ Не рекомендуется

  • • Не указывайте ID предметов жёстко
  • • Не обращайтесь к Main.player напрямую в мультиплеере
  • • Не игнорируйте предупреждения компилятора
  • • Не используйте тяжёлые операции в AI()
  • • Не изменяйте ванильный контент без необходимости

Продолжайте обучение

Этот учебник охватывает основы. Для полной документации по API и продвинутых примеров ознакомьтесь с этими ресурсами: