/// <inheritdoc /> internal override bool Load() { try { List <LoadedSkin> skins = new List <LoadedSkin>(); using (var archive = new ZipFileSystem(Entry.Open(), Entry.Name)) { var skinsEntry = archive.GetEntry("skins.json"); Info = MCJsonConvert.DeserializeObject <MCPackSkins>(skinsEntry.ReadAsString()); var geometryEntry = archive.GetEntry("geometry.json"); Dictionary <string, EntityModel> models = MCJsonConvert.DeserializeObject <Dictionary <string, EntityModel> >(geometryEntry.ReadAsString()); foreach (var skin in Info.Skins) { EntityModel model; if (!models.TryGetValue(skin.Geometry, out model)) { continue; } var textureEntry = archive.GetEntry(skin.Texture); if (textureEntry == null) { continue; } Image <Rgba32> img; using (var s = textureEntry.Open()) { //img = new Bitmap(s); img = Image.Load <Rgba32>(s.ReadToSpan(textureEntry.Length), PngDecoder); } LoadedSkin loaded = new LoadedSkin(skin.LocalizationName, model, img); skins.Add(loaded); //skin. } } Skins = skins.ToArray(); return(true); } catch (InvalidDataException ex) { Log.Debug(ex, $"Could not load module."); } return(false); }
/// <inheritdoc /> internal override void Load() { List <LoadedSkin> skins = new List <LoadedSkin>(); using (var archive = new ZipArchive(Entry.Open(), ZipArchiveMode.Read)) { var skinsEntry = archive.GetEntry("skins.json"); Info = MCJsonConvert.DeserializeObject <MCPackSkins>(skinsEntry.ReadAsString()); var geometryEntry = archive.GetEntry("geometry.json"); Dictionary <string, EntityModel> models = MCJsonConvert.DeserializeObject <Dictionary <string, EntityModel> >(geometryEntry.ReadAsString()); foreach (var skin in Info.Skins) { EntityModel model; if (!models.TryGetValue(skin.Geometry, out model)) { continue; } var textureEntry = archive.GetEntry(skin.Texture); if (textureEntry == null) { continue; } Image <Rgba32> img; using (var s = textureEntry.Open()) { //img = new Bitmap(s); img = Image.Load <Rgba32>(s.ReadToSpan(textureEntry.Length), PngDecoder); } LoadedSkin loaded = new LoadedSkin(skin.LocalizationName, model, img); skins.Add(loaded); //skin. } } Skins = skins.ToArray(); }