Please disclose if your mod was created primarily using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of AutoPickupIgnorer v1.0.12
AutoPickupIgnorer.dll
Decompiled a year agousing System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Configuration; using HarmonyLib; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("AutoPickupIgnorer")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("AutoPickupIgnorer")] [assembly: AssemblyCopyright("Copyright © 2023")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("dc3c126d-5fde-49f1-8712-20c5a6d97768")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] [assembly: AssemblyVersion("1.0.0.0")] namespace AutoPickupIgnorer; [BepInPlugin("Pip.AutoPickupIgnorer", "Pip's Auto-pickup Ignorer", "1.0.12")] [BepInProcess("valheim.exe")] public class AutoPickupIgnorer : BaseUnityPlugin { [HarmonyPatch(typeof(MessageHud), "Awake")] private class MessageHud_Awake_Patch { [HarmonyPostfix] private static void GetMessageHud(ref MessageHud ___m_instance) { _messageHud = ___m_instance; } } [HarmonyPatch(typeof(Player), "AutoPickup")] public static class Player_AutoPickup_Patch { private static readonly FieldInfo m_enableAutoPickupField = AccessTools.Field(typeof(Player), "m_enableAutoPickup"); private static readonly FieldInfo m_autoPickupMaskField = AccessTools.Field(typeof(Player), "m_autoPickupMask"); private static readonly FieldInfo m_inventoryField = AccessTools.Field(typeof(Humanoid), "m_inventory"); [HarmonyPrefix] private static bool AutoPickupPrefix(Player __instance, MethodBase __originalMethod, params object[] __args) { //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Expected O, but got Unknown //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Unknown result type (might be due to invalid IL or missing references) //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0073: Unknown result type (might be due to invalid IL or missing references) //IL_009f: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: Expected O, but got Unknown //IL_00bf: Unknown result type (might be due to invalid IL or missing references) //IL_0105: Unknown result type (might be due to invalid IL or missing references) //IL_020b: Unknown result type (might be due to invalid IL or missing references) //IL_0210: Unknown result type (might be due to invalid IL or missing references) //IL_0251: Unknown result type (might be due to invalid IL or missing references) //IL_025a: Unknown result type (might be due to invalid IL or missing references) //IL_025f: Unknown result type (might be due to invalid IL or missing references) //IL_0264: Unknown result type (might be due to invalid IL or missing references) //IL_0269: Unknown result type (might be due to invalid IL or missing references) //IL_0272: Unknown result type (might be due to invalid IL or missing references) //IL_0276: Unknown result type (might be due to invalid IL or missing references) //IL_027c: Unknown result type (might be due to invalid IL or missing references) //IL_0281: Unknown result type (might be due to invalid IL or missing references) //IL_028b: Unknown result type (might be due to invalid IL or missing references) //IL_0290: Unknown result type (might be due to invalid IL or missing references) //IL_0292: Unknown result type (might be due to invalid IL or missing references) //IL_02b3: Unknown result type (might be due to invalid IL or missing references) //IL_02b8: Unknown result type (might be due to invalid IL or missing references) //IL_02ba: Unknown result type (might be due to invalid IL or missing references) float num = (float)__args[0]; try { bool flag = (bool)m_enableAutoPickupField.GetValue(__instance); int num2 = (int)m_autoPickupMaskField.GetValue(__instance); Inventory val = (Inventory)m_inventoryField.GetValue(__instance); if (((Character)__instance).IsTeleporting() || !flag) { return false; } Vector3 val2 = ((Component)__instance).transform.position + Vector3.up; Collider[] array = Physics.OverlapSphere(val2, __instance.m_autoPickupRange, num2); Collider[] array2 = array; foreach (Collider val3 in array2) { if (!Object.op_Implicit((Object)val3.attachedRigidbody)) { continue; } ItemDrop component = ((Component)val3.attachedRigidbody).GetComponent<ItemDrop>(); if (_currentPickupBehavior == Common.PickupBehavior.IgnoreAll || IgnoreItem(component.m_itemData)) { return false; } FloatingTerrainDummy val4 = null; if ((Object)(object)component == (Object)null && Object.op_Implicit((Object)(object)(val4 = ((Component)val3.attachedRigidbody).gameObject.GetComponent<FloatingTerrainDummy>())) && Object.op_Implicit((Object)(object)val4)) { component = ((Component)val4.m_parent).gameObject.GetComponent<ItemDrop>(); } if ((Object)(object)component == (Object)null || !component.m_autoPickup || ((Humanoid)__instance).HaveUniqueKey(component.m_itemData.m_shared.m_name) || !((Component)component).GetComponent<ZNetView>().IsValid()) { continue; } if (!component.CanPickup(true)) { component.RequestOwn(); } else { if (component.InTar()) { continue; } component.Load(); if (!val.CanAddItem(component.m_itemData, -1) || component.m_itemData.GetWeight(-1) + val.GetTotalWeight() > __instance.GetMaxCarryWeight()) { continue; } float num3 = Vector3.Distance(((Component)component).transform.position, val2); if (num3 > __instance.m_autoPickupRange) { continue; } if (num3 < 0.3f) { ((Humanoid)__instance).Pickup(((Component)component).gameObject, true, true); continue; } Vector3 val5 = Vector3.Normalize(val2 - ((Component)component).transform.position); float num4 = 15f; Vector3 val6 = val5 * num4 * num; Transform transform = ((Component)component).transform; transform.position += val6; if (Object.op_Implicit((Object)(object)val4)) { Transform transform2 = ((Component)val4).transform; transform2.position += val6; } } } return false; } catch (NullReferenceException) { return false; } catch (Exception ex2) { Debug.unityLogger.Log((object)($"{DateTime.Now:MM/dd/yyyy HH:mm:ss}: Exception in AutoPickupIgnorer: " + ex2.Message)); return false; } } } private const string modGUID = "Pip.AutoPickupIgnorer"; private const string modName = "Pip's Auto-pickup Ignorer"; private const string modVersion = "1.0.12"; private readonly Harmony harmony = new Harmony("Pip.AutoPickupIgnorer"); private static ConfigEntry<string> AutoPickupIgnoreList; private static ConfigEntry<KeyboardShortcut> ToggleBehaviorHotkey; private static List<string> _ignoreList; private static Common.PickupBehavior _currentPickupBehavior = Common.PickupBehavior.Custom; private static MessageHud _messageHud; private static List<ItemTracking> _itemTracking = new List<ItemTracking>(); private void Awake() { //IL_0042: Unknown result type (might be due to invalid IL or missing references) Game.isModded = true; AutoPickupIgnoreList = ((BaseUnityPlugin)this).Config.Bind<string>("General", "AutoPickupIgnoreList", "#Acorn, #Amber, #AmberPearl, #AncientSeed, #ArmorBronzeChest, #ArmorBronzeLegs, #ArmorCarapaceChest, #ArmorCarapaceLegs, #ArmorDress1, #ArmorDress10, #ArmorDress2, #ArmorDress3, #ArmorDress4, #ArmorDress5, #ArmorDress6, #ArmorDress7, #ArmorDress8, #ArmorDress9, #ArmorFenringChest, #ArmorFenringLegs, #ArmorIronChest, #ArmorIronLegs, #ArmorLeatherChest, #ArmorLeatherLegs, #ArmorMageChest, #ArmorMageLegs, #ArmorPaddedCuirass, #ArmorPaddedGreaves, #ArmorRagsChest, #ArmorRagsLegs, #ArmorRootChest, #ArmorRootLegs, #ArmorTrollLeatherChest, #ArmorTrollLeatherLegs, #ArmorTunic1, #ArmorTunic10, #ArmorTunic2, #ArmorTunic3, #ArmorTunic4, #ArmorTunic5, #ArmorTunic6, #ArmorTunic7, #ArmorTunic8, #ArmorTunic9, #ArmorWolfChest, #ArmorWolfLegs, #ArrowBronze, #ArrowCarapace, #ArrowFire, #ArrowFlint, #ArrowFrost, #ArrowIron, #ArrowNeedle, #ArrowObsidian, #ArrowPoison, #ArrowSilver, #ArrowWood, #AtgeirBlackmetal, #AtgeirBronze, #AtgeirHimminAfl, #AtgeirIron, #AxeBlackMetal, #AxeBronze, #AxeFlint, #AxeIron, #AxeJotunBane, #AxeStone, #BarberKit, #Barley, #BarleyFlour, #BarleyWine, #BarleyWineBase, #Battleaxe, #BattleaxeCrystal, #BeechSeeds, #BeltStrength, #Bilebag, #BirchSeeds, #BlackCore, #BlackMarble, #BlackMetal, #BlackMetalScrap, #BlackSoup, #Bloodbag, #BloodPudding, #Blueberries, #BoarJerky, #BoltBlackmetal, #BoltBone, #BoltCarapace, #BoltIron, #BombBile, #BombOoze, #BoneFragments, #Bow, #BowDraugrFang, #BowFineWood, #BowHuntsman, #BowSpineSnap, #Bread, #BreadDough, #Bronze, #BronzeNails, #BronzeScrap, #BugMeat, #CapeDeerHide, #CapeFeather, #CapeLinen, #CapeLox, #CapeOdin, #CapeTrollHide, #CapeWolf, #Carapace, #Carrot, #CarrotSeeds, #CarrotSoup, #Chain, #chest_hildir1, #chest_hildir2, #chest_hildir3, #ChickenEgg, #ChickenMeat, #Chitin, #Cloudberry, #Club, #Coal, #Coins, #CookedBugMeat, #CookedChickenMeat, #CookedDeerMeat, #CookedEgg, #CookedHareMeat, #CookedLoxMeat, #CookedMeat, #CookedWolfMeat, #Copper, #CopperOre, #CopperScrap, #CrossbowArbalest, #CryptKey, #Crystal, #Cultivator, #Dandelion, #DeerHide, #DeerMeat, #DeerStew, #Demister, #DragonEgg, #DragonTear, #DvergerArbalest, #DvergerArbalest_shoot, #DvergrKey, #DvergrKeyFragment, #DvergrNeedle, #Eitr, #ElderBark, #Entrails, #Eyescream, #Feathers, #FineWood, #FirCone, #FireworksRocket_Blue, #FireworksRocket_Cyan, #FireworksRocket_Green, #FireworksRocket_Purple, #FireworksRocket_Red, #FireworksRocket_White, #FireworksRocket_Yellow, #Fish1, #Fish10, #Fish11, #Fish12, #Fish2, #Fish3, #Fish4_cave, #Fish5, #Fish6, #Fish7, #Fish8, #Fish9, #FishAndBread, #FishAndBreadUncooked, #FishAnglerRaw, #FishCooked, #FishingBait, #FishingBaitAshlands, #FishingBaitCave, #FishingBaitDeepNorth, #FishingBaitForest, #FishingBaitMistlands, #FishingBaitOcean, #FishingBaitPlains, #FishingBaitSwamp, #FishingRod, #FishRaw, #FishWraps, #FistFenrirClaw, #Flametal, #FlametalOre, #Flax, #Flint, #FreezeGland, #GiantBloodSack, #GoblinTotem, #GreydwarfEye, #Guck, #Hammer, #HardAntler, #HareMeat, #HelmetBronze, #HelmetCarapace, #HelmetDrake, #HelmetDverger, #HelmetFenring, #HelmetFishingHat, #HelmetHat1, #HelmetHat10, #HelmetHat2, #HelmetHat3, #HelmetHat4, #HelmetHat5, #HelmetHat6, #HelmetHat7, #HelmetHat8, #HelmetHat9, #HelmetIron, #HelmetLeather, #HelmetMage, #HelmetMidsummerCrown, #HelmetOdin, #HelmetPadded, #HelmetRoot, #HelmetTrollLeather, #HelmetYule, #HildirKey_forestcrypt, #HildirKey_mountaincave, #HildirKey_plainsfortress, #Hoe, #Honey, #HoneyGlazedChicken, #HoneyGlazedChickenUncooked, #Iron, #IronNails, #IronOre, #Ironpit, #IronScrap, #JuteBlue, #JuteRed, #KnifeBlackMetal, #KnifeButcher, #KnifeChitin, #KnifeCopper, #KnifeFlint, #KnifeSilver, #KnifeSkollAndHati, #Lantern, #Larva, #LeatherScraps, #LinenThread, #LoxMeat, #LoxPelt, #LoxPie, #LoxPieUncooked, #MaceBronze, #MaceIron, #MaceNeedle, #MaceSilver, #MagicallyStuffedShroom, #MagicallyStuffedShroomUncooked, #Mandible, #MeadBaseEitrMinor, #MeadBaseFrostResist, #MeadBaseHealthMajor, #MeadBaseHealthMedium, #MeadBaseHealthMinor, #MeadBasePoisonResist, #MeadBaseStaminaLingering, #MeadBaseStaminaMedium, #MeadBaseStaminaMinor, #MeadBaseTasty, #MeadEitrMinor, #MeadFrostResist, #MeadHealthMajor, #MeadHealthMedium, #MeadHealthMinor, #MeadPoisonResist, #MeadStaminaLingering, #MeadStaminaMedium, #MeadStaminaMinor, #MeadTasty, #MeatPlatter, #MeatPlatterUncooked, #MechanicalSpring, #MinceMeatSauce, #MisthareSupreme, #MisthareSupremeUncooked, #Mushroom, #MushroomBlue, #MushroomJotunPuffs, #MushroomMagecap, #MushroomOmelette, #MushroomYellow, #NeckTail, #NeckTailGrilled, #Needle, #Obsidian, #Onion, #OnionSeeds, #OnionSoup, #Ooze, #PickaxeAntler, #PickaxeBlackMetal, #PickaxeBronze, #PickaxeIron, #PickaxeStone, #PineCone, #Pukeberries, #QueenBee, #QueenDrop, #QueensJam, #Raspberry, #RawMeat, #Resin, #Root, #RottenMeat, #RoundLog, #RoyalJelly, #Ruby, #SaddleLox, #Salad, #Sap, #Sausages, #ScaleHide, #SeekerAspic, #SerpentMeat, #SerpentMeatCooked, #SerpentScale, #SerpentStew, #SharpeningStone, #ShieldBanded, #ShieldBlackmetal, #ShieldBlackmetalTower, #ShieldBoneTower, #ShieldBronzeBuckler, #ShieldCarapace, #ShieldCarapaceBuckler, #ShieldIronBuckler, #ShieldIronSquare, #ShieldIronTower, #ShieldKnight, #ShieldSerpentscale, #ShieldSilver, #ShieldWood, #ShieldWoodTower, #ShocklateSmoothie, #Silver, #SilverNecklace, #SilverOre, #SledgeDemolisher, #SledgeIron, #SledgeStagbreaker, #Softtissue, #Sparkler, #SpearBronze, #SpearCarapace, #SpearChitin, #SpearElderbark, #SpearFlint, #SpearWolfFang, #StaffFireball, #StaffIceShards, #StaffShield, #StaffSkeleton, #Stone, #SurtlingCore, #SwordBlackmetal, #SwordBronze, #SwordIron, #SwordIronFire, #SwordMistwalker, #SwordSilver, #Tankard, #Tankard_dvergr, #TankardAnniversary, #TankardOdin, #Tar, #Thistle, #THSwordKrom, #Thunderstone, #Tin, #TinOre, #Torch, #TorchMist, #TrollHide, #TrophyAbomination, #TrophyBlob, #TrophyBoar, #TrophyBonemass, #TrophyCultist, #TrophyCultist_Hildir, #TrophyDeathsquito, #TrophyDeer, #TrophyDragonQueen, #TrophyDraugr, #TrophyDraugrElite, #TrophyDraugrFem, #TrophyDvergr, #TrophyEikthyr, #TrophyFenring, #TrophyForestTroll, #TrophyFrostTroll, #TrophyGjall, #TrophyGoblin, #TrophyGoblinBrute, #TrophyGoblinBruteBrosBrute, #TrophyGoblinBruteBrosShaman, #TrophyGoblinKing, #TrophyGoblinShaman, #TrophyGreydwarf, #TrophyGreydwarfBrute, #TrophyGreydwarfShaman, #TrophyGrowth, #TrophyHare, #TrophyHatchling, #TrophyLeech, #TrophyLox, #TrophyNeck, #TrophySeeker, #TrophySeekerBrute, #TrophySeekerQueen, #TrophySerpent, #TrophySGolem, #TrophySkeleton, #TrophySkeletonHildir, #TrophySkeletonPoison, #TrophySurtling, #TrophyTheElder, #TrophyTick, #TrophyUlv, #TrophyWolf, #TrophyWraith, #Turnip, #TurnipSeeds, #TurnipStew, #TurretBolt, #TurretBoltWood, #Wishbone, #Wisp, #WitheredBone, #WolfClaw, #WolfFang, #WolfHairBundle, #WolfJerky, #WolfMeat, #WolfMeatSkewer, #WolfPelt, #Wood, #YagluthDrop, #YggdrasilPorridge, #YggdrasilWood, #YmirRemains", "Comma-separated list of items to ignore auto-pickup. Remove # before item to add to ignore list."); ToggleBehaviorHotkey = ((BaseUnityPlugin)this).Config.Bind<KeyboardShortcut>("General", "BehaviorHotkey", new KeyboardShortcut((KeyCode)39, Array.Empty<KeyCode>()), "Hotkey to change pickup behavior between custom ignore, ignore all, and default behavior"); _ignoreList = (from i in AutoPickupIgnoreList.Value.Split(new char[1] { ',' }) select i.Trim() into i where !i.StartsWith("#") select i).ToList(); harmony.PatchAll(); } private void Update() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) KeyboardShortcut value = ToggleBehaviorHotkey.Value; if (((KeyboardShortcut)(ref value)).IsDown()) { switch (_currentPickupBehavior) { case Common.PickupBehavior.Custom: _currentPickupBehavior = Common.PickupBehavior.IgnoreAll; _messageHud.ShowMessage((MessageType)1, "Ignoring all items", 0, (Sprite)null, false); break; case Common.PickupBehavior.IgnoreAll: _currentPickupBehavior = Common.PickupBehavior.Default; _messageHud.ShowMessage((MessageType)1, "Default pickup behavior", 0, (Sprite)null, false); break; case Common.PickupBehavior.Default: _currentPickupBehavior = Common.PickupBehavior.Custom; _messageHud.ShowMessage((MessageType)1, "Ignoring custom items", 0, (Sprite)null, false); break; default: _currentPickupBehavior = Common.PickupBehavior.Custom; _messageHud.ShowMessage((MessageType)1, "Ignoring custom items", 0, (Sprite)null, false); break; } } } public static bool IgnoreItem(ItemData itemData) { if (_currentPickupBehavior == Common.PickupBehavior.Custom && _ignoreList.Contains(((Object)itemData.m_dropPrefab).name)) { ItemTracking itemTracking = _itemTracking.Find((ItemTracking i) => i.ItemName == ((Object)itemData.m_dropPrefab).name); if (itemTracking != null) { if ((DateTime.Now - itemTracking.LastPickupTime).TotalSeconds > 30.0) { Debug.unityLogger.Log((object)$"{DateTime.Now:MM/dd/yyyy HH:mm:ss}: Ignoring item: {((Object)itemData.m_dropPrefab).name}"); itemTracking.LastPickupTime = DateTime.Now; } } else { Debug.unityLogger.Log((object)$"{DateTime.Now:MM/dd/yyyy HH:mm:ss}: Ignoring item: {((Object)itemData.m_dropPrefab).name}"); _itemTracking.Add(new ItemTracking { ItemName = ((Object)itemData.m_dropPrefab).name, LastPickupTime = DateTime.Now }); } return true; } return false; } } public class ItemTracking { public string ItemName { get; set; } public DateTime LastPickupTime { get; set; } } internal class Common { public enum PickupBehavior { Custom, IgnoreAll, Default } public const string _defaultItemList = "#Acorn, #Amber, #AmberPearl, #AncientSeed, #ArmorBronzeChest, #ArmorBronzeLegs, #ArmorCarapaceChest, #ArmorCarapaceLegs, #ArmorDress1, #ArmorDress10, #ArmorDress2, #ArmorDress3, #ArmorDress4, #ArmorDress5, #ArmorDress6, #ArmorDress7, #ArmorDress8, #ArmorDress9, #ArmorFenringChest, #ArmorFenringLegs, #ArmorIronChest, #ArmorIronLegs, #ArmorLeatherChest, #ArmorLeatherLegs, #ArmorMageChest, #ArmorMageLegs, #ArmorPaddedCuirass, #ArmorPaddedGreaves, #ArmorRagsChest, #ArmorRagsLegs, #ArmorRootChest, #ArmorRootLegs, #ArmorTrollLeatherChest, #ArmorTrollLeatherLegs, #ArmorTunic1, #ArmorTunic10, #ArmorTunic2, #ArmorTunic3, #ArmorTunic4, #ArmorTunic5, #ArmorTunic6, #ArmorTunic7, #ArmorTunic8, #ArmorTunic9, #ArmorWolfChest, #ArmorWolfLegs, #ArrowBronze, #ArrowCarapace, #ArrowFire, #ArrowFlint, #ArrowFrost, #ArrowIron, #ArrowNeedle, #ArrowObsidian, #ArrowPoison, #ArrowSilver, #ArrowWood, #AtgeirBlackmetal, #AtgeirBronze, #AtgeirHimminAfl, #AtgeirIron, #AxeBlackMetal, #AxeBronze, #AxeFlint, #AxeIron, #AxeJotunBane, #AxeStone, #BarberKit, #Barley, #BarleyFlour, #BarleyWine, #BarleyWineBase, #Battleaxe, #BattleaxeCrystal, #BeechSeeds, #BeltStrength, #Bilebag, #BirchSeeds, #BlackCore, #BlackMarble, #BlackMetal, #BlackMetalScrap, #BlackSoup, #Bloodbag, #BloodPudding, #Blueberries, #BoarJerky, #BoltBlackmetal, #BoltBone, #BoltCarapace, #BoltIron, #BombBile, #BombOoze, #BoneFragments, #Bow, #BowDraugrFang, #BowFineWood, #BowHuntsman, #BowSpineSnap, #Bread, #BreadDough, #Bronze, #BronzeNails, #BronzeScrap, #BugMeat, #CapeDeerHide, #CapeFeather, #CapeLinen, #CapeLox, #CapeOdin, #CapeTrollHide, #CapeWolf, #Carapace, #Carrot, #CarrotSeeds, #CarrotSoup, #Chain, #chest_hildir1, #chest_hildir2, #chest_hildir3, #ChickenEgg, #ChickenMeat, #Chitin, #Cloudberry, #Club, #Coal, #Coins, #CookedBugMeat, #CookedChickenMeat, #CookedDeerMeat, #CookedEgg, #CookedHareMeat, #CookedLoxMeat, #CookedMeat, #CookedWolfMeat, #Copper, #CopperOre, #CopperScrap, #CrossbowArbalest, #CryptKey, #Crystal, #Cultivator, #Dandelion, #DeerHide, #DeerMeat, #DeerStew, #Demister, #DragonEgg, #DragonTear, #DvergerArbalest, #DvergerArbalest_shoot, #DvergrKey, #DvergrKeyFragment, #DvergrNeedle, #Eitr, #ElderBark, #Entrails, #Eyescream, #Feathers, #FineWood, #FirCone, #FireworksRocket_Blue, #FireworksRocket_Cyan, #FireworksRocket_Green, #FireworksRocket_Purple, #FireworksRocket_Red, #FireworksRocket_White, #FireworksRocket_Yellow, #Fish1, #Fish10, #Fish11, #Fish12, #Fish2, #Fish3, #Fish4_cave, #Fish5, #Fish6, #Fish7, #Fish8, #Fish9, #FishAndBread, #FishAndBreadUncooked, #FishAnglerRaw, #FishCooked, #FishingBait, #FishingBaitAshlands, #FishingBaitCave, #FishingBaitDeepNorth, #FishingBaitForest, #FishingBaitMistlands, #FishingBaitOcean, #FishingBaitPlains, #FishingBaitSwamp, #FishingRod, #FishRaw, #FishWraps, #FistFenrirClaw, #Flametal, #FlametalOre, #Flax, #Flint, #FreezeGland, #GiantBloodSack, #GoblinTotem, #GreydwarfEye, #Guck, #Hammer, #HardAntler, #HareMeat, #HelmetBronze, #HelmetCarapace, #HelmetDrake, #HelmetDverger, #HelmetFenring, #HelmetFishingHat, #HelmetHat1, #HelmetHat10, #HelmetHat2, #HelmetHat3, #HelmetHat4, #HelmetHat5, #HelmetHat6, #HelmetHat7, #HelmetHat8, #HelmetHat9, #HelmetIron, #HelmetLeather, #HelmetMage, #HelmetMidsummerCrown, #HelmetOdin, #HelmetPadded, #HelmetRoot, #HelmetTrollLeather, #HelmetYule, #HildirKey_forestcrypt, #HildirKey_mountaincave, #HildirKey_plainsfortress, #Hoe, #Honey, #HoneyGlazedChicken, #HoneyGlazedChickenUncooked, #Iron, #IronNails, #IronOre, #Ironpit, #IronScrap, #JuteBlue, #JuteRed, #KnifeBlackMetal, #KnifeButcher, #KnifeChitin, #KnifeCopper, #KnifeFlint, #KnifeSilver, #KnifeSkollAndHati, #Lantern, #Larva, #LeatherScraps, #LinenThread, #LoxMeat, #LoxPelt, #LoxPie, #LoxPieUncooked, #MaceBronze, #MaceIron, #MaceNeedle, #MaceSilver, #MagicallyStuffedShroom, #MagicallyStuffedShroomUncooked, #Mandible, #MeadBaseEitrMinor, #MeadBaseFrostResist, #MeadBaseHealthMajor, #MeadBaseHealthMedium, #MeadBaseHealthMinor, #MeadBasePoisonResist, #MeadBaseStaminaLingering, #MeadBaseStaminaMedium, #MeadBaseStaminaMinor, #MeadBaseTasty, #MeadEitrMinor, #MeadFrostResist, #MeadHealthMajor, #MeadHealthMedium, #MeadHealthMinor, #MeadPoisonResist, #MeadStaminaLingering, #MeadStaminaMedium, #MeadStaminaMinor, #MeadTasty, #MeatPlatter, #MeatPlatterUncooked, #MechanicalSpring, #MinceMeatSauce, #MisthareSupreme, #MisthareSupremeUncooked, #Mushroom, #MushroomBlue, #MushroomJotunPuffs, #MushroomMagecap, #MushroomOmelette, #MushroomYellow, #NeckTail, #NeckTailGrilled, #Needle, #Obsidian, #Onion, #OnionSeeds, #OnionSoup, #Ooze, #PickaxeAntler, #PickaxeBlackMetal, #PickaxeBronze, #PickaxeIron, #PickaxeStone, #PineCone, #Pukeberries, #QueenBee, #QueenDrop, #QueensJam, #Raspberry, #RawMeat, #Resin, #Root, #RottenMeat, #RoundLog, #RoyalJelly, #Ruby, #SaddleLox, #Salad, #Sap, #Sausages, #ScaleHide, #SeekerAspic, #SerpentMeat, #SerpentMeatCooked, #SerpentScale, #SerpentStew, #SharpeningStone, #ShieldBanded, #ShieldBlackmetal, #ShieldBlackmetalTower, #ShieldBoneTower, #ShieldBronzeBuckler, #ShieldCarapace, #ShieldCarapaceBuckler, #ShieldIronBuckler, #ShieldIronSquare, #ShieldIronTower, #ShieldKnight, #ShieldSerpentscale, #ShieldSilver, #ShieldWood, #ShieldWoodTower, #ShocklateSmoothie, #Silver, #SilverNecklace, #SilverOre, #SledgeDemolisher, #SledgeIron, #SledgeStagbreaker, #Softtissue, #Sparkler, #SpearBronze, #SpearCarapace, #SpearChitin, #SpearElderbark, #SpearFlint, #SpearWolfFang, #StaffFireball, #StaffIceShards, #StaffShield, #StaffSkeleton, #Stone, #SurtlingCore, #SwordBlackmetal, #SwordBronze, #SwordIron, #SwordIronFire, #SwordMistwalker, #SwordSilver, #Tankard, #Tankard_dvergr, #TankardAnniversary, #TankardOdin, #Tar, #Thistle, #THSwordKrom, #Thunderstone, #Tin, #TinOre, #Torch, #TorchMist, #TrollHide, #TrophyAbomination, #TrophyBlob, #TrophyBoar, #TrophyBonemass, #TrophyCultist, #TrophyCultist_Hildir, #TrophyDeathsquito, #TrophyDeer, #TrophyDragonQueen, #TrophyDraugr, #TrophyDraugrElite, #TrophyDraugrFem, #TrophyDvergr, #TrophyEikthyr, #TrophyFenring, #TrophyForestTroll, #TrophyFrostTroll, #TrophyGjall, #TrophyGoblin, #TrophyGoblinBrute, #TrophyGoblinBruteBrosBrute, #TrophyGoblinBruteBrosShaman, #TrophyGoblinKing, #TrophyGoblinShaman, #TrophyGreydwarf, #TrophyGreydwarfBrute, #TrophyGreydwarfShaman, #TrophyGrowth, #TrophyHare, #TrophyHatchling, #TrophyLeech, #TrophyLox, #TrophyNeck, #TrophySeeker, #TrophySeekerBrute, #TrophySeekerQueen, #TrophySerpent, #TrophySGolem, #TrophySkeleton, #TrophySkeletonHildir, #TrophySkeletonPoison, #TrophySurtling, #TrophyTheElder, #TrophyTick, #TrophyUlv, #TrophyWolf, #TrophyWraith, #Turnip, #TurnipSeeds, #TurnipStew, #TurretBolt, #TurretBoltWood, #Wishbone, #Wisp, #WitheredBone, #WolfClaw, #WolfFang, #WolfHairBundle, #WolfJerky, #WolfMeat, #WolfMeatSkewer, #WolfPelt, #Wood, #YagluthDrop, #YggdrasilPorridge, #YggdrasilWood, #YmirRemains"; }