Zinniavanilla
Terrarian
Hi. I'm playing through Terraria with my boyfriend and I wanted to make him a pet mod. Problem is I've never touched modding Terraria before. I've been trying my best but I've gotten stuck. Here's my code.
TModLoader warns me of 10 errors and gives me "No Suitable method to override" error.
I don't understand how to implement the "modplayer/ExamplePlayer"
ModRecipe isn't recognized as correct no matter what I do.
Thank you to anyone who can help me.
Pet Buff
using Terraria;
using Terraria.ModLoader;
namespace MyModForDummy.Buffs
{
public class Jaxx : ModBuff
{
public override void SetDefaults()
{
// DisplayName and Description are automatically set from the .lang files, but below is how it is done normally.
DisplayName.SetDefault("Jaxx");
Description.SetDefault("\"He Loves You!\"");
Main.buffNoTimeDisplay[Type] = true;
Main.vanityPet[Type] = true;
}
public override void Update(Player player, ref int buffIndex)
{
player.buffTime[buffIndex] = 18000;
player.GetModPlayer<MyModForDummyPlayer>().Jaxx = true;
bool petProjectileNotSpawned = player.ownedProjectileCounts[ModContent.ProjectileType<Projectiles.Pets.Jaxx>()] <= 0;
if (petProjectileNotSpawned && player.whoAmI == Main.myPlayer)
{
Projectile.NewProjectile(player.position.X + (float)(player.width / 2), player.position.Y + (float)(player.height / 2), 0f, 0f, ModContent.ProjectileType<Projectiles.Pets.Jaxx>(), 0, 0f, player.whoAmI, 0f, 0f);
}
}
}
}
Pet Item:
using MyModForDummy.Items;
using Terraria;
using Terraria.ID;
using Terraria.ModLoader;
namespace MyModForDummy.Items
{
public class Jaxx : ModItem
{
public override void SetStaticDefaults()
{
DisplayName.SetDefault("Jaxx");
Tooltip.SetDefault("He Loves You!");
}
public override void SetDefaults()
{
Item.CloneDefaults(ItemID.ZephyrFish);
Item.shoot = ModContent.ProjectileType<Projectiles.Pets.Jaxx>();
Item.buffType = ModContent.BuffType<Buffs.Jaxx>();
}
public override void AddRecipes()
{
ModRecipe recipe = new ModRecipe(Mod);
recipe.AddIngredient(ItemID.Banana);
recipe.AddTile(TileID.Anvils);
recipe.SetResult(ModContent.ItemType<Jaxx>);
recipe.AddRecipe();
}
public override void UseStyle(Player player)
{
if (player.whoAmI == Main.myPlayer && player.itemTime == 0)
{
player.AddBuff(Item.buffType, 3600, true);
}
}
}
}
Pet Projectile
using Terraria;
using Terraria.ID;
using Terraria.ModLoader;
namespace MyModForDummy.Projectiles.Pets
{
public class Jaxx : ModProjectile
{
public override void SetStaticDefaults()
{
DisplayName.SetDefault("Jaxx");
Main.projFrames[Projectile.type] = 4;
Main.projPet[Projectile.type] = true;
}
public override void SetDefaults()
{
Projectile.CloneDefaults(ProjectileID.ZephyrFish);
AIType = ProjectileID.ZephyrFish;
}
public override bool PreAI()
{
Player player = Main.player[Projectile.owner];
player.zephyrfish = false; // Relic from aiType
return true;
}
public override void AI()
{
Player player = Main.player[Projectile.owner];
ExamplePlayer modPlayer = player.GetModPlayer<ExamplePlayer>();
if (player.dead)
{
modPlayer.Jaxx = false;
}
if (modPlayer.Jaxx)
{
Projectile.timeLeft = 2;
}
}
}
}
using Terraria.ModLoader;
namespace MyModForDummy.Buffs
{
public class Jaxx : ModBuff
{
public override void SetDefaults()
{
// DisplayName and Description are automatically set from the .lang files, but below is how it is done normally.
DisplayName.SetDefault("Jaxx");
Description.SetDefault("\"He Loves You!\"");
Main.buffNoTimeDisplay[Type] = true;
Main.vanityPet[Type] = true;
}
public override void Update(Player player, ref int buffIndex)
{
player.buffTime[buffIndex] = 18000;
player.GetModPlayer<MyModForDummyPlayer>().Jaxx = true;
bool petProjectileNotSpawned = player.ownedProjectileCounts[ModContent.ProjectileType<Projectiles.Pets.Jaxx>()] <= 0;
if (petProjectileNotSpawned && player.whoAmI == Main.myPlayer)
{
Projectile.NewProjectile(player.position.X + (float)(player.width / 2), player.position.Y + (float)(player.height / 2), 0f, 0f, ModContent.ProjectileType<Projectiles.Pets.Jaxx>(), 0, 0f, player.whoAmI, 0f, 0f);
}
}
}
}
Pet Item:
using MyModForDummy.Items;
using Terraria;
using Terraria.ID;
using Terraria.ModLoader;
namespace MyModForDummy.Items
{
public class Jaxx : ModItem
{
public override void SetStaticDefaults()
{
DisplayName.SetDefault("Jaxx");
Tooltip.SetDefault("He Loves You!");
}
public override void SetDefaults()
{
Item.CloneDefaults(ItemID.ZephyrFish);
Item.shoot = ModContent.ProjectileType<Projectiles.Pets.Jaxx>();
Item.buffType = ModContent.BuffType<Buffs.Jaxx>();
}
public override void AddRecipes()
{
ModRecipe recipe = new ModRecipe(Mod);
recipe.AddIngredient(ItemID.Banana);
recipe.AddTile(TileID.Anvils);
recipe.SetResult(ModContent.ItemType<Jaxx>);
recipe.AddRecipe();
}
public override void UseStyle(Player player)
{
if (player.whoAmI == Main.myPlayer && player.itemTime == 0)
{
player.AddBuff(Item.buffType, 3600, true);
}
}
}
}
Pet Projectile
using Terraria;
using Terraria.ID;
using Terraria.ModLoader;
namespace MyModForDummy.Projectiles.Pets
{
public class Jaxx : ModProjectile
{
public override void SetStaticDefaults()
{
DisplayName.SetDefault("Jaxx");
Main.projFrames[Projectile.type] = 4;
Main.projPet[Projectile.type] = true;
}
public override void SetDefaults()
{
Projectile.CloneDefaults(ProjectileID.ZephyrFish);
AIType = ProjectileID.ZephyrFish;
}
public override bool PreAI()
{
Player player = Main.player[Projectile.owner];
player.zephyrfish = false; // Relic from aiType
return true;
}
public override void AI()
{
Player player = Main.player[Projectile.owner];
ExamplePlayer modPlayer = player.GetModPlayer<ExamplePlayer>();
if (player.dead)
{
modPlayer.Jaxx = false;
}
if (modPlayer.Jaxx)
{
Projectile.timeLeft = 2;
}
}
}
}
TModLoader warns me of 10 errors and gives me "No Suitable method to override" error.
I don't understand how to implement the "modplayer/ExamplePlayer"
ModRecipe isn't recognized as correct no matter what I do.
Thank you to anyone who can help me.