/// <summary>
        /// Gets a shader for the provided PaintingItem. Possible results are the GSPainted and PaintedNegative shaders.
        /// </summary>
        /// <param name="item"></param>
        /// <param name="player"></param>
        /// <returns></returns>
        public static MiscShaderData getShader(PaintingItem item, Player player)
        {
            if (player == null)
            {
                return(null);
            }
            if (item == null)
            {
                return(null);
            }
            WoMDPlayer modPlayer = player.GetModPlayer <WoMDPlayer>();

            if (modPlayer == null)
            {
                return(null);
            }
            PaintData data = modPlayer.paintData.clone();

            data.paintMethod = item.overridePaintMethod(modPlayer);
            if (data.paintMethod == PaintMethods.RemovePaint)
            {
                return(null);
            }
            if (data.PaintColor == PaintID.Negative || data.CustomPaint is NegativeSprayPaint)
            {
                return(getNegativeShader());
            }
            return(getGSShader(data.RenderColor));
        }
        /// <summary>
        /// Applies a shader for the provided PaintingItem. Possible results are the GSPainted and PaintedNegative shader.
        /// </summary>
        /// <param name="item"></param>
        /// <param name="player"></param>
        /// <returns></returns>
        public static MiscShaderData applyShader(PaintingItem item, Player player)
        {
            MiscShaderData shader = getShader(item, player);

            if (shader != null)
            {
                shader.Apply();
            }
            return(shader);
        }