public CustomObjectData(string id, string data, Texture2D texture, Color color, int tileIndex = 0, bool bigCraftable = false, Type type = null, CraftingData craftingData = null)
        {
            this.id           = id;
            this.data         = data;
            this.texture      = texture;
            this.tileIndex    = tileIndex;
            this.bigCraftable = bigCraftable;
            this.color        = color;
            type = type != null ? type : typeof(PySObject);
            string[] typeData = type.AssemblyQualifiedName.Split(',');
            this.type         = typeData[0] + ", " + typeData[1];
            this.craftingData = craftingData;

            if (craftingData != null)
            {
                craftingData.bigCraftable = bigCraftable;
            }

            sdvId = getNewSDVId();

            collection.AddOrReplace(id, this);

            if (OvSpritebatch.recCache.ContainsKey(sdvSourceRectangle))
            {
                OvSpritebatch.recCache.Remove(sdvSourceRectangle);
            }

            if (inventoryCheck == null)
            {
                inventoryCheck = new ItemSelector <Item>(i => collection.Exists(c => c.Value.sdvId == i.ParentSheetIndex && (!(i is SObject sobj) || sobj.bigCraftable.Value == c.Value.bigCraftable))).whenAddedToInventory(l => l.useAll(x => Game1.player.Items[new List <Item>(Game1.player.Items).FindIndex(o => o == x)] = collection.Find(c => c.Value.sdvId == x.ParentSheetIndex && (!(x is SObject sobj) || sobj.bigCraftable.Value == c.Value.bigCraftable)).Value.getObject(x)));
            }
        }
        public static CustomObjectData newBigObject(string uniqueId, Texture2D texture, Color color, string name, string description, int tileIndex = 0, string displayName = "", bool lamp = false, int fragility = 0, bool indoors = true, bool outdoors = true, string type = "Crafting -9", int price = 100, int edibility = -300, CraftingData craftingData = null, Type customType = null)
        {
            if (displayName == "")
            {
                displayName = name;
            }

            List <string> data = new List <string> {
                name, price.ToString(), edibility.ToString(), type, description, indoors.ToString().ToLower(), outdoors.ToString().ToLower(), fragility.ToString()
            };

            if (lamp)
            {
                data.Add("true");
            }

            data.Add(displayName);

            return(new CustomObjectData(uniqueId, String.Join("/", data), texture, color, tileIndex, true, customType, craftingData));
        }
        public static CustomObjectData newObject(string uniqueId, Texture2D texture, Color color, string name, string description, int tileIndex = 0, string displayName = "", string type = "Basic", int price = 100, int edibility = -300, string typeInfo = "", CraftingData craftingData = null, Type customType = null)
        {
            if (displayName == "")
            {
                displayName = name;
            }

            List <string> data = new List <string> {
                name, price.ToString(), edibility.ToString(), type, displayName, description
            };

            if (typeInfo != null && typeInfo != "")
            {
                data.Add(typeInfo);
            }

            return(new CustomObjectData(uniqueId, String.Join("/", data), texture, color, tileIndex, false, customType, craftingData));
        }