tModLoader v2024.03
A mod to make and play Terraria mods
ItemLoader Class Reference

This serves as the central class from which item-related functions are carried out. It also stores a list of mod items by ID. More...

Static Public Member Functions

static T AddModHook< T > (T hook)
 
static bool AllowPrefix (Item item, int pre)
 
static bool AltFunctionUse (Item item, Player player)
 Calls ModItem.AltFunctionUse, then all GlobalItem.AltFunctionUse hooks, until one of them returns true. Returns whether any of the hooks returned true.
 
static string AnglerChat (int type)
 
static void ArmorArmGlowMask (int slot, Player drawPlayer, float shadow, ref int glowMask, ref Color color)
 Calls the item's body equipment texture's ArmorArmGlowMask hook, then all GlobalItem.ArmorArmGlowMask hooks.
 
static void ArmorSetShadows (Player player)
 If the player's head texture's IsVanitySet returns true, calls the equipment texture's ArmorSetShadows. This is then repeated for the player's body, then the legs. Then for each GlobalItem, if GlobalItem.IsVanitySet returns a non-empty string, calls GlobalItem.ArmorSetShadows, using player.head, player.body, and player.legs.
 
static bool CanAccessoryBeEquippedWith (Item equippedItem, Item incomingItem)
 
static ? bool CanAutoReuseItem (Item item, Player player)
 
static ? bool CanCatchNPC (Item item, NPC target, Player player)
 Gathers the results of all GlobalItem.CanCatchNPC hooks, then the ModItem.CanCatchNPC hook if applicable.
If any of them returns false, this returns false.
Otherwise, if any of them returns true, then this returns true.
If all of them return null, this returns null.

 
static bool CanChooseAmmo (Item weapon, Item ammo, Player player)
 Calls each GlobalItem.CanChooseAmmo hook for the weapon, and each GlobalItem.CanBeChosenAsAmmo hook for the ammo,
then each corresponding hook in ModItem if applicable for the weapon and/or ammo, until one of them returns a concrete false value.
If all of them fail to do this, returns either true (if one returned true prior) or ammo.ammo == weapon.useAmmo.
 
static bool CanConsumeAmmo (Item weapon, Item ammo, Player player)
 Calls each GlobalItem.CanConsumeAmmo hook for the weapon, and each GlobalItem.CanBeConsumedAsAmmo hook for the ammo,
then each corresponding hook in ModItem if applicable for the weapon and/or ammo, until one of them returns a concrete false value.
If all of them fail to do this, returns true.
 
static ? bool CanConsumeBait (Player player, Item bait)
 
static bool CanEquipAccessory (Item item, int slot, bool modded)
 
static ? bool CanHitNPC (Item item, Player player, NPC target)
 Gathers the results of ModItem.CanHitNPC and all GlobalItem.CanHitNPC hooks. If any of them returns false, this returns false. Otherwise, if any of them returns true then this returns true. If all of them return null, this returns null.
 
static bool CanHitPvp (Item item, Player player, Player target)
 Calls all GlobalItem.CanHitPvp hooks, then ModItem.CanHitPvp, until one of them returns false. If all of them return true, this returns true.
 
static ? bool CanMeleeAttackCollideWithNPC (Item item, Rectangle meleeAttackHitbox, Player player, NPC target)
 
static bool CanPickup (Item item, Player player)
 
static bool CanReforge (Item item)
 Calls ModItem.CanReforge, then all GlobalItem.CanReforge hooks. If any return false then false is returned.
 
static bool CanResearch (Item item)
 Hook that determines if an item will be prevented from being consumed by the research function. More...
 
static bool CanRightClick (Item item)
 Calls ModItem.CanRightClick, then all GlobalItem.CanRightClick hooks, until one of the returns true. Also returns true if ItemID.Sets.OpenableBag
 
static bool CanShoot (Item item, Player player)
 Calls each GlobalItem.CanShoot hook, then ModItem.CanShoot, until one of them returns false. If all of them return true, returns true.
 
static bool CanStack (Item destination, Item source)
 Returns false if item prefixes don't match. Then calls all GlobalItem.CanStack hooks until one returns false then ModItem.CanStack. Returns whether any of the hooks returned false. More...
 
static bool CanStackInWorld (Item destination, Item source)
 Calls all GlobalItem.CanStackInWorld hooks until one returns false then ModItem.CanStackInWorld. Returns whether any of the hooks returned false. More...
 
static bool CanUseItem (Item item, Player player)
 
static void CaughtFishStack (Item item)
 
static int ChoosePrefix (Item item, UnifiedRandom rand)
 
static bool ConsumeItem (Item item, Player player)
 If ModItem.ConsumeItem or any of the GlobalItem.ConsumeItem hooks returns false, sets consume to false.
 
static void DrawArmorColor (EquipType type, int slot, Player drawPlayer, float shadow, ref Color color, ref int glowMask, ref Color glowMaskColor)
 Calls the item's equipment texture's DrawArmorColor hook, then all GlobalItem.DrawArmorColor hooks.
 
static void ExtractinatorUse (ref int resultType, ref int resultStack, int extractType, int extractinatorBlockType)
 
static ? Color GetAlpha (Item item, Color lightColor)
 Calls all GlobalItem.GetAlpha hooks then ModItem.GetAlpha, until one of them returns a color, and returns that color. Returns null if all of the hooks return null.
 
static void GetHealLife (Item item, Player player, bool quickHeal, ref int healValue)
 Calls ModItem.GetHealLife, then all GlobalItem.GetHealLife hooks.
 
static void GetHealMana (Item item, Player player, bool quickHeal, ref int healValue)
 Calls ModItem.GetHealMana, then all GlobalItem.GetHealMana hooks.
 
static ModItem GetItem (int type)
 Gets the ModItem template instance corresponding to the specified type (not the clone/new instance which gets added to Items as the game is played). Returns null if no modded item has the given type.
 
static void GrabRange (Item item, Player player, ref int grabRange)
 Calls ModItem.GrabRange, then all GlobalItem.GrabRange hooks.
 
static bool GrabStyle (Item item, Player player)
 Calls all GlobalItem.GrabStyle hooks then ModItem.GrabStyle, until one of them returns true. Returns whether any of the hooks returned true.
 
static void HoldItem (Item item, Player player)
 Calls ModItem.HoldItem and all GlobalItem.HoldItem hooks.
 
static void HoldItemFrame (Item item, Player player)
 Calls ModItem.HoldItemFrame, then all GlobalItem.HoldItemFrame hooks, until one of them returns true. Returns whether any of the hooks returned true.
 
static void HoldoutOffset (float gravDir, int type, ref Vector2 offset)
 
static void HoldoutOrigin (Player player, ref Vector2 origin)
 
static void HoldStyle (Item item, Player player, Rectangle heldItemFrame)
 If the player is not holding onto a rope and is not in the middle of using an item, calls ModItem.HoldStyle and all GlobalItem.HoldStyle hooks.
Returns whether or not the vanilla logic should be skipped.
 
static void HorizontalWingSpeeds (Player player)
 If the player is using wings, this uses the result of GetWing, and calls ModItem.HorizontalWingSpeeds then all GlobalItem.HorizontalWingSpeeds hooks.
 
static void IsAnglerQuestAvailable (int itemID, ref bool notAvailable)
 
static bool ItemSpace (Item item, Player player)
 
static void MeleeEffects (Item item, Player player, Rectangle hitbox)
 Calls ModItem.MeleeEffects and all GlobalItem.MeleeEffects hooks.
 
static void ModifyFishingLine (Projectile projectile, ref float polePosX, ref float polePosY, ref Color lineColor)
 
static void ModifyHitNPC (Item item, Player player, NPC target, ref NPC.HitModifiers modifiers)
 Calls ModItem.ModifyHitNPC, then all GlobalItem.ModifyHitNPC hooks.
 
static void ModifyHitPvp (Item item, Player player, Player target, ref Player.HurtModifiers modifiers)
 Calls ModItem.ModifyHitPvp, then all GlobalItem.ModifyHitPvp hooks.
 
static void ModifyItemLoot (Item item, ItemLoot itemLoot)
 Calls each GlobalItem.ModifyItemLoot hooks.
 
static void ModifyItemScale (Item item, Player player, ref float scale)
 Calls ModItem.ModifyItemScale if applicable, then all applicable GlobalItem.ModifyItemScale instances.
 
static void ModifyManaCost (Item item, Player player, ref float reduce, ref float mult)
 Calls ModItem.ModifyManaCost, then all GlobalItem.ModifyManaCost hooks.
 
static void ModifyResearchSorting (Item item, ref ContentSamples.CreativeHelper.ItemGroup itemGroup)
 
static void ModifyShootStats (Item item, Player player, ref Vector2 position, ref Vector2 velocity, ref int type, ref int damage, ref float knockback)
 Calls ModItem.ModifyShootStats, then each GlobalItem.ModifyShootStats hook.
 
static List< TooltipLineModifyTooltips (Item item, ref int numTooltips, string[] names, ref string[] text, ref bool[] modifier, ref bool[] badModifier, ref int oneDropLogo, out Color?[] overrideColor, int prefixlineIndex)
 
static void ModifyWeaponCrit (Item item, Player player, ref float crit)
 Calls ModItem.ModifyWeaponCrit, then all GlobalItem.ModifyWeaponCrit hooks.
 
static void ModifyWeaponDamage (Item item, Player player, ref StatModifier damage)
 Calls ModItem.HookModifyWeaponDamage, then all GlobalItem.HookModifyWeaponDamage hooks.
 
static void ModifyWeaponKnockback (Item item, Player player, ref StatModifier knockback)
 Calls ModItem.ModifyWeaponKnockback, then all GlobalItem.ModifyWeaponKnockback hooks.
 
static bool NeedsAmmo (Item weapon, Player player)
 Calls ModItem.NeedsAmmo, then all GlobalItem.NeedsAmmo hooks, until any of them returns false.
 
static void OnCatchNPC (Item item, NPC npc, Player player, bool failed)
 
static void OnConsumeAmmo (Item weapon, Item ammo, Player player)
 Calls ModItem.OnConsumeAmmo for the weapon, ModItem.OnConsumedAsAmmo for the ammo, then each corresponding hook for the weapon and ammo.
 
static void OnConsumeItem (Item item, Player player)
 Calls ModItem.OnConsumeItem and all GlobalItem.OnConsumeItem hooks.
 
static void OnConsumeMana (Item item, Player player, int manaConsumed)
 Calls ModItem.OnConsumeMana, then all GlobalItem.OnConsumeMana hooks.
 
static void OnCreated (Item item, ItemCreationContext context)
 
static void OnHitNPC (Item item, Player player, NPC target, in NPC.HitInfo hit, int damageDone)
 Calls ModItem.OnHitNPC and all GlobalItem.OnHitNPC hooks.
 
static void OnHitPvp (Item item, Player player, Player target, Player.HurtInfo hurtInfo)
 Calls ModItem.OnHitPvp and all GlobalItem.OnHitPvp hooks.
Called on local, server and remote clients.

 
static void OnMissingMana (Item item, Player player, int neededMana)
 Calls ModItem.OnMissingMana, then all GlobalItem.OnMissingMana hooks.
 
static bool OnPickup (Item item, Player player)
 Calls all GlobalItem.OnPickup hooks then ModItem.OnPickup, until one of the returns false. Returns true if all of the hooks return true.
 
static void OnResearched (Item item, bool fullyResearched)
 
static void OnStack (Item destination, Item source, int numToTransfer)
 Calls the GlobalItem.OnStack hooks in destination , then the ModItem.OnStack hook in destination
OnStack is called before the items are transferred from source to destination More...
 
static void PickAmmo (Item weapon, Item ammo, Player player, ref int type, ref float speed, ref StatModifier damage, ref float knockback)
 Calls ModItem.PickAmmo, then all GlobalItem.PickAmmo hooks.
 
static void PostDrawInInventory (Item item, SpriteBatch spriteBatch, Vector2 position, Rectangle frame, Color drawColor, Color itemColor, Vector2 origin, float scale)
 Calls ModItem.PostDrawInInventory, then all GlobalItem.PostDrawInInventory hooks.
 
static void PostDrawInWorld (Item item, SpriteBatch spriteBatch, Color lightColor, Color alphaColor, float rotation, float scale, int whoAmI)
 Calls ModItem.PostDrawInWorld, then all GlobalItem.PostDrawInWorld hooks.
 
static void PostDrawTooltip (Item item, ReadOnlyCollection< DrawableTooltipLine > lines)
 
static void PostDrawTooltipLine (Item item, DrawableTooltipLine line)
 
static void PostReforge (Item item)
 Calls ModItem.PostReforge, then all GlobalItem.PostReforge hooks.
 
static void PostUpdate (Item item)
 Calls ModItem.PostUpdate and all GlobalItem.PostUpdate hooks.
 
static bool PreDrawInInventory (Item item, SpriteBatch spriteBatch, Vector2 position, Rectangle frame, Color drawColor, Color itemColor, Vector2 origin, float scale)
 Returns the "and" operator on the results of all GlobalItem.PreDrawInInventory hooks and ModItem.PreDrawInInventory.
 
static bool PreDrawInWorld (Item item, SpriteBatch spriteBatch, Color lightColor, Color alphaColor, ref float rotation, ref float scale, int whoAmI)
 Returns the "and" operator on the results of ModItem.PreDrawInWorld and all GlobalItem.PreDrawInWorld hooks.
 
static bool PreDrawTooltip (Item item, ReadOnlyCollection< TooltipLine > lines, ref int x, ref int y)
 
static bool PreDrawTooltipLine (Item item, DrawableTooltipLine line, ref int yOffset)
 
static ? bool PrefixChance (Item item, int pre, UnifiedRandom rand)
 Allows for blocking, forcing and altering chance of prefix rolling. False (block) takes precedence over True (force). Null gives vanilla behavior
 
static void PreReforge (Item item)
 Calls ModItem.PreReforge, then all GlobalItem.PreReforge hooks.
 
static void PreUpdateVanitySet (Player player)
 If the player's head texture's IsVanitySet returns true, calls the equipment texture's PreUpdateVanitySet. This is then repeated for the player's body, then the legs. Then for each GlobalItem, if GlobalItem.IsVanitySet returns a non-empty string, calls GlobalItem.PreUpdateVanitySet, using player.head, player.body, and player.legs.
 
static bool ReforgePrice (Item item, ref int reforgePrice, ref bool canApplyDiscount)
 Call all ModItem.ReforgePrice, then GlobalItem.ReforgePrice hooks. More...
 
static void RightClick (Item item, Player player)
 
static void SetMatch (int armorSlot, int type, bool male, ref int equipSlot, ref bool robes)
 Calls EquipTexture.SetMatch, then all GlobalItem.SetMatch hooks.
 
static bool Shoot (Item item, Player player, EntitySource_ItemUse_WithAmmo source, Vector2 position, Vector2 velocity, int type, int damage, float knockback, bool defaultResult=true)
 Calls each GlobalItem.Shoot hook then, if none of them returns false, calls the ModItem.Shoot hook and returns its value.
 
static void SplitStack (Item destination, Item source, int numToTransfer)
 Called when splitting a stack of items. More...
 
static void StackItems (Item destination, Item source, out int numTransferred, bool infiniteSource=false, int? numToTransfer=null)
 Stacks destination onto source
This method should not be called unless CanStack(Item, Item) returns true. See: TryStackItems(Item, Item, out int, bool) More...
 
static Item TransferWithLimit (Item source, int limit)
 Extract up to limit items from source . If some items remain, SplitStack will be used. More...
 
static bool TryStackItems (Item destination, Item source, out int numTransferred, bool infiniteSource=false)
 Stacks source onto destination if CanStack permits the transfer More...
 
static void Update (Item item, ref float gravity, ref float maxFallSpeed)
 Calls ModItem.Update, then all GlobalItem.Update hooks.
 
static void UpdateAccessory (Item item, Player player, bool hideVisual)
 Hook at the end of Player.ApplyEquipFunctional can be called to apply additional code related to accessory slots for a particular item.
 
static void UpdateArmorSet (Player player, Item head, Item body, Item legs)
 If the head's ModItem.IsArmorSet returns true, calls the head's ModItem.UpdateArmorSet. This is then repeated for the body, then the legs. Then for each GlobalItem, if GlobalItem.IsArmorSet returns a non-empty string, calls GlobalItem.UpdateArmorSet with that string.
 
static void UpdateEquip (Item item, Player player)
 Hook at the end of Player.VanillaUpdateEquip can be called to apply additional code related to accessory slots for a particular item
 
static void UpdateInfoAccessory (Item item, Player player)
 Calls ModItem.UpdateInfoAccessory and all GlobalItem.UpdateInfoAccessory hooks.
 
static void UpdateInventory (Item item, Player player)
 Calls ModItem.UpdateInventory and all GlobalItem.UpdateInventory hooks.
 
static void UpdateVanity (Item item, Player player)
 Hook at the end of Player.ApplyEquipVanity can be called to apply additional code related to accessory slots for a particular item
 
static void UpdateVanitySet (Player player)
 If the player's head texture's IsVanitySet returns true, calls the equipment texture's UpdateVanitySet. This is then repeated for the player's body, then the legs. Then for each GlobalItem, if GlobalItem.IsVanitySet returns a non-empty string, calls GlobalItem.UpdateVanitySet, using player.head, player.body, and player.legs.
 
static void UseAnimation (Item item, Player player)
 
static float UseAnimationMultiplier (Item item, Player player)
 
static ? bool UseItem (Item item, Player player)
 Returns false if any of ModItem.UseItem or GlobalItem.UseItem return false. Returns true if anything returns true without returning false. Returns null by default. Does not fail fast (calls every hook)
 
static void UseItemFrame (Item item, Player player)
 Calls ModItem.UseItemFrame, then all GlobalItem.UseItemFrame hooks, until one of them returns true. Returns whether any of the hooks returned true.
 
static void UseItemHitbox (Item item, Player player, ref Rectangle hitbox, ref bool noHitbox)
 Calls ModItem.UseItemHitbox, then all GlobalItem.UseItemHitbox hooks.
 
static float UseSpeedMultiplier (Item item, Player player)
 
static void UseStyle (Item item, Player player, Rectangle heldItemFrame)
 Calls ModItem.UseStyle and all GlobalItem.UseStyle hooks.
 
static float UseTimeMultiplier (Item item, Player player)
 
static void VerticalWingSpeeds (Player player, ref float ascentWhenFalling, ref float ascentWhenRising, ref float maxCanAscendMultiplier, ref float maxAscentMultiplier, ref float constantAscend)
 If the player is using wings, this uses the result of GetWing, and calls ModItem.VerticalWingSpeeds then all GlobalItem.VerticalWingSpeeds hooks.
 
static bool WingUpdate (Player player, bool inUse)
 If wings can be seen on the player, calls the player's wing's equipment texture's WingUpdate and all GlobalItem.WingUpdate hooks.
 

Properties

static int ItemCount = ItemID.Count [get]
 

Detailed Description

This serves as the central class from which item-related functions are carried out. It also stores a list of mod items by ID.

Member Function Documentation

◆ AddModHook< T >()

static T ItemLoader.AddModHook< T > ( hook)
static
Type Constraints
T :HookList 

◆ CanResearch()

static bool ItemLoader.CanResearch ( Item  item)
static

Hook that determines if an item will be prevented from being consumed by the research function.

Parameters
itemThe item to be consumed or not

◆ CanStack()

static bool ItemLoader.CanStack ( Item  destination,
Item  source 
)
static

Returns false if item prefixes don't match. Then calls all GlobalItem.CanStack hooks until one returns false then ModItem.CanStack. Returns whether any of the hooks returned false.

Parameters
destinationThe item instance that source will attempt to stack onto
sourceThe item instance being stacked onto destination
Returns
Whether or not the items are allowed to stack

◆ CanStackInWorld()

static bool ItemLoader.CanStackInWorld ( Item  destination,
Item  source 
)
static

Calls all GlobalItem.CanStackInWorld hooks until one returns false then ModItem.CanStackInWorld. Returns whether any of the hooks returned false.

Parameters
destinationThe item instance that source will attempt to stack onto
sourceThe item instance being stacked onto destination
Returns
Whether or not the items are allowed to stack

◆ OnStack()

static void ItemLoader.OnStack ( Item  destination,
Item  source,
int  numToTransfer 
)
static

Calls the GlobalItem.OnStack hooks in destination , then the ModItem.OnStack hook in destination
OnStack is called before the items are transferred from source to destination

Parameters
destinationThe item instance that source will attempt to stack onto
sourceThe item instance being stacked onto destination
numToTransferThe quantity of source that will be transferred to destination

◆ ReforgePrice()

static bool ItemLoader.ReforgePrice ( Item  item,
ref int  reforgePrice,
ref bool  canApplyDiscount 
)
static

Call all ModItem.ReforgePrice, then GlobalItem.ReforgePrice hooks.

Parameters
item
reforgePrice
canApplyDiscount
Returns

◆ RightClick()

static void ItemLoader.RightClick ( Item  item,
Player  player 
)
static

  1. Call ModItem.RightClick
  2. Calls all GlobalItem.RightClick hooks
  3. Call ItemLoader.ConsumeItem, and if it returns true, decrements the item's stack
  4. Sets the item's type to 0 if the item's stack is 0
  5. Plays the item-grabbing sound
  6. Sets Main.stackSplit to 30
  7. Sets Main.mouseRightRelease to false
  8. Calls Recipe.FindRecipes.

◆ SplitStack()

static void ItemLoader.SplitStack ( Item  destination,
Item  source,
int  numToTransfer 
)
static

Called when splitting a stack of items.

Parameters
destinationThe item instance that source will transfer items to, and is usually a clone of source .
This parameter's stack will be set to zero before any transfer occurs.
sourceThe item instance being stacked onto destination
numToTransferThe quantity of source that will be transferred to destination

◆ StackItems()

static void ItemLoader.StackItems ( Item  destination,
Item  source,
out int  numTransferred,
bool  infiniteSource = false,
int?  numToTransfer = null 
)
static

Stacks destination onto source
This method should not be called unless CanStack(Item, Item) returns true. See: TryStackItems(Item, Item, out int, bool)

Parameters
destinationThe item instance that source will attempt to stack onto
sourceThe item instance being stacked onto destination
numTransferredThe quantity of source that was transferred to destination
infiniteSourceIf true, source .stack will not be decreased
numToTransferAn optional argument used to specify the quantity of items to transfer from source to destination .
By default, as many items as possible will be transferred. That is, either source will be empty, or destination will be full (maxStack)

◆ TransferWithLimit()

static Item ItemLoader.TransferWithLimit ( Item  source,
int  limit 
)
static

Extract up to limit items from source . If some items remain, SplitStack will be used.

Parameters
sourceThe original item instance
limitHow many items should be transferred

◆ TryStackItems()

static bool ItemLoader.TryStackItems ( Item  destination,
Item  source,
out int  numTransferred,
bool  infiniteSource = false 
)
static

Stacks source onto destination if CanStack permits the transfer

Parameters
destinationThe item instance that source will attempt to stack onto
sourceThe item instance being stacked onto destination
numTransferredThe quantity of source that was transferred to destination
infiniteSourceIf true, source .stack will not be decreased
Returns
Whether or not the items were allowed to stack