Hey everyone, I'm basically new to the whole Terraria community. and well i have a problem or error with the calamity mod. Sorry if I am posting this in the wrong place, but the problem is that the lore items from the calamity mod are showing as unloaded items. I think its only the lore items you get after defeating bosses that are unloaded. This happened after I updated Overhaul and Tmodloader, but I only went into my world after updating both, so im not sure which update caused it. Its hard to remember the exact details of what happened but I do need help. I tried disabling all the mods I have in the mods list (Calamity, Thorium, Recipe Browser, Calamity music, and Overhaul) and re enabling them, but that didnt work. As of now all my mods are fully updated along with terraria itself im pretty sure, but The lore items are still unloaded. Does anyone have a solution? I have found no solutions online so Im posting here
[20/ERROR] [tML]: An error occurred while loading ThoriumMod
The mod(s) have been automatically been disabled.
System.Reflection.ReflectionTypeLoadException: Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.
at System.Reflection.RuntimeModule.GetTypes(RuntimeModule module)
at System.Reflection.RuntimeModule.GetTypes()
at System.Reflection.Assembly.GetTypes()
at Terraria.ModLoader.Core.AssemblyManager.Instantiate(LoadedMod mod)
at Terraria.ModLoader.Core.AssemblyManager.<>c__DisplayClass10_0.<InstantiateMods>b__1(LoadedMod mod)
at System.Linq.Enumerable.WhereSelectListIterator`2.MoveNext()
at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
at Terraria.ModLoader.Core.AssemblyManager.InstantiateMods(List`1 modsToLoad, CancellationToken token)
at Terraria.ModLoader.Core.ModOrganizer.LoadMods(CancellationToken token)
at Terraria.ModLoader.ModLoader.Load(CancellationToken token)
Right, what the hell is this?
error CS0019: Operator '&&' cannot be applied to operands of type 'Rain[]' and 'bool'
error CS0019: Operator '&&' cannot be applied to operands of type 'bool' and 'Rain[]'
error CS0019: Operator '==' cannot be applied to operands of type 'Rain[]' and 'bool'
error CS0019: Operator '==' cannot be applied to operands of type 'Rain[]' and 'bool'
All I did was use the Main.rain bool like I was using all the other bools, then this.
Right, what the hell is this?
error CS0019: Operator '&&' cannot be applied to operands of type 'Rain[]' and 'bool'
error CS0019: Operator '&&' cannot be applied to operands of type 'bool' and 'Rain[]'
error CS0019: Operator '==' cannot be applied to operands of type 'Rain[]' and 'bool'
error CS0019: Operator '==' cannot be applied to operands of type 'Rain[]' and 'bool'
All I did was use the Main.rain bool like I was using all the other bools, then this.
Hey! I'm newish to modding, and I have no idea what I'm doing. I have two questions. First, I have an accessory (Yes, Kinkyboots) whose effect should be to have a small chance to confuse the enemy upon hit. I'm trying to make it work, as you can see here:
C#:
using System;
using System.Collections.Generic;
using Terraria;
using Terraria.ID;
using Terraria.ModLoader;
using static Terraria.ModLoader.ModContent;
namespace Flummox.Items
{
public class kinkyboots : ModItem
{
public override void SetStaticDefaults()
{
DisplayName.SetDefault("Kinkyboots");
Tooltip.SetDefault("Attacks have a small chance to confuse enemies");
}
public override void SetDefaults()
{
item.width = 26;
item.height = 28;
item.value = 10;
item.rare = 2;
item.accessory = true;
}
public override void AddRecipes()
{
ModRecipe recipe = new ModRecipe(mod);
recipe.AddIngredient(ItemID.SpiderFang, 10);
recipe.AddIngredient(ItemID.Silk, 10);
recipe.AddTile(TileID.WorkBenches);
recipe.SetResult(this);
recipe.AddRecipe();
}
public override void UpdateAccessory(Player player, bool hideVisual)
{
public override void OnHitNPC(Player player, NPC target, int damage, float knockBack, bool crit)
{
target.AddBuff(BuffID.Confused, 240)
}
}
}
}
I've tried putting the OnHitNPC method outside of the UpdateAccessory method but it just does nothing, and when I put it inside the UpdateAccessory method, it gives me this log:
[23:07:57] [39/INFO] [tML]: Reading properties: Flummox
[23:07:57] [39/INFO] [tML]: Building: Flummox
[23:07:57] [39/INFO] [tML]: Compiling Flummox.XNA.dll
[23:07:57] [39/INFO] [tML]: Compilation finished with 2 errors and 0 warnings
[23:07:57] [39/ERROR] [tML]: C:\Users\Diego Tapia\Documents\My Games\Terraria\ModLoader\Mod Sources\Flummox\Items\kinkyboots.cs(35,9) : error CS1513: } expected
[23:07:57] [39/ERROR] [tML]: C:\Users\Diego Tapia\Documents\My Games\Terraria\ModLoader\Mod Sources\Flummox\Items\kinkyboots.cs(42,0) : error CS1022: Type or namespace definition, or end-of-file expected
[23:07:57] [39/ERROR] [tML]: Compiling Flummox.XNA.dll failed with 2 errors and C:\Users\Diego Tapia\Documents\My Games\Terraria\ModLoader\Mod Sources\Flummox\Items\kinkyboots.cs(35,9) : error CS1513: } expected warnings
Terraria.ModLoader.Exceptions.BuildException: Compiling Flummox.XNA.dll failed with 2 errors and C:\Users\Diego Tapia\Documents\My Games\Terraria\ModLoader\Mod Sources\Flummox\Items\kinkyboots.cs(35,9) : error CS1513: } expected warnings
en Terraria.ModLoader.Core.ModCompile.CompileMod(BuildingMod mod, String outputPath, List`1& refMods, Boolean xna)
en Terraria.ModLoader.Core.ModCompile.BuildModForPlatform(BuildingMod mod, List`1& refMods, Boolean xna)
en Terraria.ModLoader.Core.ModCompile.Build(BuildingMod mod)
en Terraria.ModLoader.Core.ModCompile.BuildAll()
en Terraria.ModLoader.UI.UIBuildMod.<>c.<BuildAll>b__6_0(ModCompile mc)
en Terraria.ModLoader.UI.UIBuildMod.BuildMod(Action`1 buildAction, Boolean reload)
[23:08:02] [1/DEBUG] [Terraria]: Device Reset, Profile: HiDef, Width: 1920, Height: 1080, Fullscreen: True, Display: \\.\DISPLAY1
[23:08:06] [1/DEBUG] [tML]: Process.Start (UseShellExecute = True): "C:\Users\Diego Tapia\Documents\My Games\Terraria\ModLoader\Logs\client.log"
So my first question is how the heck would I make that work.
My second question is a bit more complicated and I have no clue how to implement it: I have a staff, and I want it to fire three projectiles, one after the other, on a straight line. I've been looking up tutorials on the Internet and I've found a way to make it fire three projectiles at the same time, spreading out:
C#:
using System;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using Flummox.Dusts;
using Terraria;
using Terraria.ID;
using Terraria.ModLoader;
using static Terraria.ModLoader.ModContent;
using System.Threading;
namespace Flummox.Items
{
public class antiqueMicrophone : ModItem
{
public override void SetStaticDefaults()
{
DisplayName.SetDefault("Antique Microphone");
Tooltip.SetDefault("Perfect for singing old-timey songs!");
Item.staff[item.type] = true;
}
public override void SetDefaults()
{
item.damage = 34;
item.magic = true; //this make the item do magic damage
item.width = 58;
item.height = 58;
item.useTime = 30;
item.useAnimation = 30;
item.useStyle = 5; //this is how the item is holded
item.noMelee = true;
item.knockBack = 2;
item.value = 1000;
item.rare = 6;
item.mana = 5; //mana use
item.UseSound = SoundID.Item21; //this is the sound when you use the item
item.autoReuse = true;
item.shoot = mod.ProjectileType ("alastorBlast"); //this make the item shoot your projectile
item.shootSpeed = 8f; //projectile speed when shoot
}
public override bool Shoot(Player player, ref Vector2 position, ref float speedX, ref float speedY, ref int type, ref int damage, ref float knockBack)
{
float numberProjectiles = 3; // This defines how many projectiles to shot
float rotation = MathHelper.ToRadians(45);
position += Vector2.Normalize(new Vector2(speedX, speedY)) * 45f; //this defines the distance of the projectiles form the player when the projectile spawns
for (int i = 0; i < numberProjectiles; i++)
{
Vector2 perturbedSpeed = new Vector2(speedX, speedY).RotatedBy(MathHelper.Lerp(-rotation, rotation, i / (numberProjectiles - 1))) * .4f; // This defines the projectile roatation and speed. .4f == projectile speed
Projectile.NewProjectile(position.X, position.Y, perturbedSpeed.X, perturbedSpeed.Y, type, damage, knockBack, player.whoAmI);
}
return false;
}
}
}
I guess it didn't help that the tutorial wasn't much of a tutorial at all, and the guy didn't explain what he was doing at all. I have zero clue what most of the code or the arguments do. If y'all could help me with any of my problems, even a tiny bit, I would very much appreciate it!
Hey! I'm newish to modding, and I have no idea what I'm doing. I have two questions. First, I have an accessory (Yes, Kinkyboots) whose effect should be to have a small chance to confuse the enemy upon hit. I'm trying to make it work, as you can see here:
C#:
using System;
using System.Collections.Generic;
using Terraria;
using Terraria.ID;
using Terraria.ModLoader;
using static Terraria.ModLoader.ModContent;
namespace Flummox.Items
{
public class kinkyboots : ModItem
{
public override void SetStaticDefaults()
{
DisplayName.SetDefault("Kinkyboots");
Tooltip.SetDefault("Attacks have a small chance to confuse enemies");
}
public override void SetDefaults()
{
item.width = 26;
item.height = 28;
item.value = 10;
item.rare = 2;
item.accessory = true;
}
public override void AddRecipes()
{
ModRecipe recipe = new ModRecipe(mod);
recipe.AddIngredient(ItemID.SpiderFang, 10);
recipe.AddIngredient(ItemID.Silk, 10);
recipe.AddTile(TileID.WorkBenches);
recipe.SetResult(this);
recipe.AddRecipe();
}
public override void UpdateAccessory(Player player, bool hideVisual)
{
public override void OnHitNPC(Player player, NPC target, int damage, float knockBack, bool crit)
{
target.AddBuff(BuffID.Confused, 240)
}
}
}
}
I've tried putting the OnHitNPC method outside of the UpdateAccessory method but it just does nothing, and when I put it inside the UpdateAccessory method, it gives me this log:
[23:07:57] [39/INFO] [tML]: Reading properties: Flummox
[23:07:57] [39/INFO] [tML]: Building: Flummox
[23:07:57] [39/INFO] [tML]: Compiling Flummox.XNA.dll
[23:07:57] [39/INFO] [tML]: Compilation finished with 2 errors and 0 warnings
[23:07:57] [39/ERROR] [tML]: C:\Users\Diego Tapia\Documents\My Games\Terraria\ModLoader\Mod Sources\Flummox\Items\kinkyboots.cs(35,9) : error CS1513: } expected
[23:07:57] [39/ERROR] [tML]: C:\Users\Diego Tapia\Documents\My Games\Terraria\ModLoader\Mod Sources\Flummox\Items\kinkyboots.cs(42,0) : error CS1022: Type or namespace definition, or end-of-file expected
[23:07:57] [39/ERROR] [tML]: Compiling Flummox.XNA.dll failed with 2 errors and C:\Users\Diego Tapia\Documents\My Games\Terraria\ModLoader\Mod Sources\Flummox\Items\kinkyboots.cs(35,9) : error CS1513: } expected warnings
Terraria.ModLoader.Exceptions.BuildException: Compiling Flummox.XNA.dll failed with 2 errors and C:\Users\Diego Tapia\Documents\My Games\Terraria\ModLoader\Mod Sources\Flummox\Items\kinkyboots.cs(35,9) : error CS1513: } expected warnings
en Terraria.ModLoader.Core.ModCompile.CompileMod(BuildingMod mod, String outputPath, List`1& refMods, Boolean xna)
en Terraria.ModLoader.Core.ModCompile.BuildModForPlatform(BuildingMod mod, List`1& refMods, Boolean xna)
en Terraria.ModLoader.Core.ModCompile.Build(BuildingMod mod)
en Terraria.ModLoader.Core.ModCompile.BuildAll()
en Terraria.ModLoader.UI.UIBuildMod.<>c.<BuildAll>b__6_0(ModCompile mc)
en Terraria.ModLoader.UI.UIBuildMod.BuildMod(Action`1 buildAction, Boolean reload)
[23:08:02] [1/DEBUG] [Terraria]: Device Reset, Profile: HiDef, Width: 1920, Height: 1080, Fullscreen: True, Display: \\.\DISPLAY1
[23:08:06] [1/DEBUG] [tML]: Process.Start (UseShellExecute = True): "C:\Users\Diego Tapia\Documents\My Games\Terraria\ModLoader\Logs\client.log"
So my first question is how the heck would I make that work.
My second question is a bit more complicated and I have no clue how to implement it: I have a staff, and I want it to fire three projectiles, one after the other, on a straight line. I've been looking up tutorials on the Internet and I've found a way to make it fire three projectiles at the same time, spreading out:
C#:
using System;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using Flummox.Dusts;
using Terraria;
using Terraria.ID;
using Terraria.ModLoader;
using static Terraria.ModLoader.ModContent;
using System.Threading;
namespace Flummox.Items
{
public class antiqueMicrophone : ModItem
{
public override void SetStaticDefaults()
{
DisplayName.SetDefault("Antique Microphone");
Tooltip.SetDefault("Perfect for singing old-timey songs!");
Item.staff[item.type] = true;
}
public override void SetDefaults()
{
item.damage = 34;
item.magic = true; //this make the item do magic damage
item.width = 58;
item.height = 58;
item.useTime = 30;
item.useAnimation = 30;
item.useStyle = 5; //this is how the item is holded
item.noMelee = true;
item.knockBack = 2;
item.value = 1000;
item.rare = 6;
item.mana = 5; //mana use
item.UseSound = SoundID.Item21; //this is the sound when you use the item
item.autoReuse = true;
item.shoot = mod.ProjectileType ("alastorBlast"); //this make the item shoot your projectile
item.shootSpeed = 8f; //projectile speed when shoot
}
public override bool Shoot(Player player, ref Vector2 position, ref float speedX, ref float speedY, ref int type, ref int damage, ref float knockBack)
{
float numberProjectiles = 3; // This defines how many projectiles to shot
float rotation = MathHelper.ToRadians(45);
position += Vector2.Normalize(new Vector2(speedX, speedY)) * 45f; //this defines the distance of the projectiles form the player when the projectile spawns
for (int i = 0; i < numberProjectiles; i++)
{
Vector2 perturbedSpeed = new Vector2(speedX, speedY).RotatedBy(MathHelper.Lerp(-rotation, rotation, i / (numberProjectiles - 1))) * .4f; // This defines the projectile roatation and speed. .4f == projectile speed
Projectile.NewProjectile(position.X, position.Y, perturbedSpeed.X, perturbedSpeed.Y, type, damage, knockBack, player.whoAmI);
}
return false;
}
}
}
I guess it didn't help that the tutorial wasn't much of a tutorial at all, and the guy didn't explain what he was doing at all. I have zero clue what most of the code or the arguments do. If y'all could help me with any of my problems, even a tiny bit, I would very much appreciate it!
First things first, for accessories you should always make them set a player value when equipped, create a new class and name it something like PlayerMod
Here is an example
C#:
using Microsoft.Xna.Framework;
using Terraria;
using Terraria.ID;
using Terraria.ModLoader;
namespace ShinkunsAccessories
{
public class PlayerEditMod : ModPlayer
{
public bool KinkyBoots;
public override void OnHitNPC(Player player, NPC target, int damage, float knockBack, bool crit)
{
if(KinkyBoots)
{
target.AddBuff(BuffID.Confused, 240);
}
}
}
}
then in your item class make the UpdateEquip event set this boolean to true, so that when the item is equipped the player value will be true, which will execute the code after "if(KinkyBoots)" because that boolean will be true.
So your accessory will look like this:
Code:
using System;
using System.Collections.Generic;
using Terraria;
using Terraria.ID;
using Terraria.ModLoader;
using static Terraria.ModLoader.ModContent;
namespace Flummox.Items
{
public class kinkyboots : ModItem
{
public override void SetStaticDefaults()
{
DisplayName.SetDefault("Kinkyboots");
Tooltip.SetDefault("Attacks have a small chance to confuse enemies");
}
public override void SetDefaults()
{
item.width = 26;
item.height = 28;
item.value = 10;
item.rare = 2;
item.accessory = true;
}
public override void AddRecipes()
{
ModRecipe recipe = new ModRecipe(mod);
recipe.AddIngredient(ItemID.SpiderFang, 10);
recipe.AddIngredient(ItemID.Silk, 10);
recipe.AddTile(TileID.WorkBenches);
recipe.SetResult(this);
recipe.AddRecipe();
}
public override void UpdateEquip(Player player)
{
Player.getModPlayer<PlayerEditMod>().KinkyBoots = true;
}
}
}
where <PlayerEditMod> is the name of your class that extends ModPlayer
reason your original code doesn't work: you can't override an event inside of a method that overrides another event.
As for the projectile I don't really have much experience with that, but since you're using a for loop to spawn them you could use int i to change the angle slightly so that the first fires a bit down from straight when i = 0, the second projectile fires straight when i = 1 and the last one slightly up when i = 2
You'll have to do some math or clever coding there
hope that helps ^^
There is a mod that can move stuff to chests and whatnot that I wanted to try.
But the mod seemly loads on Windows, but not on Linux, the author said that is because tModLoader do some compatibility shenanigans with mods compiled with old version, and it must be working on Windows and not on Linux...
I need a little help.
enemies I create do much more damage with projectiles than with contact, even though I use npc.damage as the damage value for the projectile, and this problem is amplified in expert mode, effectively making projectiles that one shot the player. what gives?
C#:
private void shoot()
{
int type = mod.ProjectileType("projectile");
Vector2 velocity = player.Center - npc.Center;
Vector2 shootFrom = new Vector2(npc.position.X + 24, npc.position.Y + 24);
Projectile.NewProjectile(shootFrom, velocity, type, npc.damage, 0.0f);
}
I keep getting this and dont know what to do, can someone help me?
The mod(s) have been automatically been disabled.
System.Reflection.ReflectionTypeLoadException: Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.
at System.Reflection.RuntimeModule.GetTypes(RuntimeModule module)
at System.Reflection.RuntimeModule.GetTypes()
at System.Reflection.Assembly.GetTypes()
at Terraria.ModLoader.Core.AssemblyManager.Instantiate(LoadedMod mod)
at Terraria.ModLoader.Core.AssemblyManager.<>c__DisplayClass10_0.<InstantiateMods>b__1(LoadedMod mod)
at System.Linq.Enumerable.WhereSelectListIterator`2.MoveNext()
at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
at Terraria.ModLoader.Core.AssemblyManager.InstantiateMods(List`1 modsToLoad, CancellationToken token)
at Terraria.ModLoader.Core.ModOrganizer.LoadMods(CancellationToken token)
at Terraria.ModLoader.ModLoader.Load(CancellationToken token)
Hiiii I have this problem... When I've downloaded the lastest modloader I get this Error
System.Threading. SynchronizationLockException: Object synchronization method was called from an unsynchronized block of code.
at Terraria.IO.Preferences.Save(Boolean crateFile)
at Terraria.Main.SaveSetting()
at Terraria.Main.OpenSettings()
at Terraria.Main.ClientInitialize()
at Terraria.Main.Initialize()
at Microsoft.Xna.Framework.Game.RunGame(BooleanuseBlockingRun)
at Terraia.Program.LaunchGame_()
I'm not sure as to what that meannnsssssss, BUT i thought it was the same problem as last time, You know the windows defender, So i've allowed it through it.. and i still get the same message.. I could really use some help because the old one was working fine until i saw an update and i updated it and then it give the Error, i thought there was something wrong with the file, So i tried to go back to the 11.4 one and it won't even work anymore. Please help ^^
______________________________
UPDATE: I was able to fix it.. took me a while but i fixed it. so what i did is deleted all the files/folders..
all from
C:\Program Files (x86)\Steam\steamapps\common\Terraria
C:\Users\azure\OneDrive\Documents\My Games\Terraria ( You can save your player and world in a different folder)
Uninstalled from Steam, then reinstalled..
Ohhh and i turned off my Threats & Virus Protection Real time protection.
This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
By continuing to use this site, you are consenting to our use of cookies.