////////////////

        private static IDictionary <string, RecipeGroup> CreateRecipeGroups()
        {
            IDictionary <string, ItemGroupDefinition> commonItemGrps = ItemCommonGroupsLibraries.GetCommonItemGroups();

            IDictionary <string, RecipeGroup> groups = commonItemGrps.ToDictionary(
                kv => {
                string internalGrpName = kv.Key;
                return("ModLibs:" + internalGrpName);
            },
                kv => {
                string grpName     = kv.Value.GroupName;
                ISet <int> itemIds = kv.Value.Group;

                return(new RecipeGroup(
                           () => Lang.misc[37].ToString() + " " + grpName,
                           itemIds.ToArray()
                           ));
            }
                );

            return(groups);
        }
Exemplo n.º 2
0
        public override bool PreOpenVanillaBag(string context, Player player, int arg)
        {
            var mymod   = (NihilismMod)this.mod;
            var myworld = ModContent.GetInstance <NihilismWorld>();

            if (myworld.Logic == null)
            {
                LogLibraries.WarnOnce("Logic not loaded.");
                return(base.PreOpenVanillaBag(context, player, arg));
            }

            if (!myworld.Logic.AreItemFiltersEnabled())
            {
                return(base.PreOpenVanillaBag(context, player, arg));
            }

            IList <Item> containerInvIndexes = player.inventory
                                               .SafeWhere((item) => {
                if (item == null || item.IsAir)
                {
                    return(false);
                }
                if (ItemAttributeLibraries.GetVanillaContainerContext(item) != context)
                {
                    return(false);
                }
                if (arg != 0)
                {
                    return(item.type == arg);
                }
                return(true);
            })
                                               .ToList();

            if (containerInvIndexes.Count == 0)
            {
                LogLibraries.Alert("Unknown bag of context " + context + ", " + arg);
                return(base.PreOpenVanillaBag(context, player, arg));                   // Shouldn't happen?
            }

            Item containerItem = containerInvIndexes.FirstOrDefault();
            bool isAir         = containerItem?.IsAir ?? true;

            if (isAir)
            {
                int containerType = arg != 0
                                        ? arg
                                        : ItemCommonGroupsLibraries.GetVanillaContainerItemTypes(context)[0];
                containerItem = new Item();
                containerItem.SetDefaults(containerType, true);
            }

            bool _;
            bool canOpen = myworld.Logic.DataAccess.IsItemEnabled(containerItem, out _, out _);

            if (!canOpen)
            {
                if (containerInvIndexes.Count > 1 || isAir)
                {
                    Main.NewText("Due to a tModLoader bug, opening blacklisted bags and boxes will sometimes consume the item. Sorry. :(", Color.Red);
                }
                return(false);
            }

            return(base.PreOpenVanillaBag(context, player, arg));
        }