Пример #1
0
        public static BlockDefinition FromXml(XElement e)
        {
            int    id    = int.Parse(e.Attribute("id").Value.Substring(2), NumberStyles.HexNumber);
            string fname = e.Attribute("name")?.Value ?? $"Unknown block id={id}";
            string dname = e.Attribute("uname")?.Value ?? $"minecraft:unknown_block_{id}";

            string[] dataNames   = dname.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
            string   color       = e.Attribute("color")?.Value ?? "0xff00ff";
            var      parsedColor = ColorRgb.From0x(color);
            var      variants    = e.Elements("blockvariant").Select(el => BlockVariantDefinition.FromXml(el, dname, parsedColor)).ToList();

            return(new BlockDefinition(id, fname, dataNames, parsedColor, variants));
        }
Пример #2
0
        public static BlockVariantDefinition FromXml(XElement e, string parentBlockDataName, ColorRgb parentBlockColor)
        {
            int      data        = int.Parse(e.Attribute("blockdata").Value.Substring(2), NumberStyles.HexNumber);
            string   customColor = e.Attribute("color")?.Value;
            ColorRgb resultColor;

            if (customColor != null)
            {
                resultColor = ColorRgb.From0x(customColor);
            }
            else
            {
                resultColor = parentBlockColor.Add(data);
            }
            string fname = e.Attribute("name")?.Value ?? $"Unknown variant ({parentBlockDataName} variant {data})";

            return(new BlockVariantDefinition(data, fname, resultColor, customColor == null));
        }