Not loading approved skins for lr300
Hello!

ImageLibrary does not load confirmed skins for lr300 at all due to the fact that in "schema.json" it is listed as "lr300.item" although in the game it has a shortname "rifle.lr300".

Accordingly, a check in line 104-106 does not skip it.
                            ItemDefinition def = ItemManager.FindItemDefinition(item.itemshortname);
                            if (def == null)
                                continue;


As an option, you can apply such a fix ;)
Yes, it is not perfect, but it fix the problem.

                            string identifier;
                            string shortname;
                            switch (item.itemshortname)
                            {
                                case "lr300.item":
                                    shortname = "rifle.lr300";
                                    break;

                                default:
                                    shortname = item.itemshortname;
                                    break;
                            }

                            ItemDefinition def = ItemManager.FindItemDefinition(shortname);
                            if (def == null)
                                continue;

                            int skinCount = def.skins.Count(k => k.id == item.itemdefid);
                            if (skinCount == 0)
                                identifier = $"{shortname}_{item.workshopid}";
                            else identifier = $"{shortname}_{item.itemdefid}";
                            if (!imageUrls.URLs.ContainsKey(identifier))
                                imageUrls.URLs.Add(identifier, item.icon_url);
SkinBox Plugin not longer work too for skins.
any problems with imagelibrary?
Rocky
SkinBox Plugin not longer work too for skins.
any problems with imagelibrary?

SkinBox not used IL.
Please contact developer SkinBox.

Merged post

As it turned out, the problem is deeper.
The developers apparently deleted the data at the link:
http://s3.amazonaws.com/s3.playrust.com/icons/inventory/rust/schema.json​

With which IL and SkinBox took information about approved skins.
As an option to solve this problem. And the problems of the latest update.

A complete replacement for the GetItemSkins method.

        private void GetItemSkins()
        {
            PrintWarning("Retrieving item skin lists...");
            if ((Steamworks.SteamInventory.Definitions?.Length ?? 0) == 0)
            {
                PrintWarning("Waiting for Steamworks update to definitions items...");
                Steamworks.SteamInventory.OnDefinitionsUpdated += GetItemSkins;
                return;
            }

            Steamworks.SteamInventory.OnDefinitionsUpdated -= GetItemSkins;

            PrintWarning($"Found {Steamworks.SteamInventory.Definitions.Length} item skins. Gathering image URLs");
            foreach (InventoryDef item in Steamworks.SteamInventory.Definitions)
            {
                string itemshortname = item.GetProperty("itemshortname");
                string icon_url = item.GetProperty("icon_url");
                if (string.IsNullOrEmpty(itemshortname) || string.IsNullOrEmpty(icon_url))
                    continue;

                string identifier;
                string shortname;
                switch (itemshortname)
                {
                    case "lr300.item":
                        shortname = "rifle.lr300";
                        break;

                    default:
                        shortname = itemshortname;
                        break;
                }

                ItemDefinition def = ItemManager.FindItemDefinition(shortname);
                if (def == null)
                    continue;

                int itemdefid;
                if (!int.TryParse(item.GetProperty("itemdefid"), out itemdefid))
                    continue;

                int skinCount = def.skins.Count(k => k.id == itemdefid);
                if (skinCount == 0)
                {
                    ulong workshopid;
                    if (!ulong.TryParse(item.GetProperty("workshopid"), out workshopid))
                        continue;

                    identifier = $"{shortname}_{workshopid}";
                }
                else
                    identifier = $"{shortname}_{itemdefid}";

                if (!imageUrls.URLs.ContainsKey(identifier))
                    imageUrls.URLs.Add(identifier, icon_url);

                skinInformation.skinData[identifier] = new Dictionary<string, object>
                {
                    {"title", item.GetProperty("name") },
                    {"votesup", 0 },
                    {"votesdown", 0 },
                    {"description", item.GetProperty("description") },
                    {"score", 0 },
                    {"views", 0 },
                    {"created", new DateTime() },
                };
            }

            SaveUrls();
            SaveSkinInfo();

            if (!orderPending)
                ServerMgr.Instance.StartCoroutine(ProcessLoadOrders());
        }