예제 #1
0
        protected static ResourcePackManifest GetManifest(ZipArchive archive, ResourcePackType type)
        {
            if (type == ResourcePackType.Java)
            {
                var entry = archive.GetEntry("pack.mcmeta");
                if (entry != null)
                {
                    ResourcePackInfo info;
                    using (TextReader reader = new StreamReader(entry.Open()))
                    {
                        ResourcePackInfoWrapper wrap = MCJsonConvert.DeserializeObject <ResourcePackInfoWrapper>(reader.ReadToEnd());
                        info = wrap.pack;
                    }

                    try
                    {
                        var imgEntry = archive.GetEntry("pack.png");
                        if (imgEntry != null)
                        {
                            // Bitmap bmp = new Bitmap(imgEntry.Open());
                            using (var stream = imgEntry.Open())
                            {
                                var bmp = Image.Load <Rgba32>(stream.ReadToSpan(entry.Length));
                                return(new ResourcePackManifest(bmp, "", info.Description));
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        Log.Warn(ex, $"Could not read resourcepack logo: {archive.ToString()}");
                    }

                    return(new ResourcePackManifest("", info.Description));
                }
                else
                {
                    throw new InvalidResourcePackException();
                }
            }
            else if (type == ResourcePackType.Bedrock)
            {
            }

            return(null);
        }
예제 #2
0
        private void LoadMeta(ZipArchive archive)
        {
            ResourcePackInfo info;

            var entry = archive.GetEntry("pack.mcmeta");

            if (entry == null)
            {
                info = new ResourcePackInfo();
            }
            else
            {
                using (TextReader reader = new StreamReader(entry.Open()))
                {
                    ResourcePackInfoWrapper wrap = MCJsonConvert.DeserializeObject <ResourcePackInfoWrapper>(reader.ReadToEnd());
                    info = wrap.pack;
                }
            }

            Info = info;
        }
예제 #3
0
        private void LoadMeta(ZipArchive archive)
        {
            ResourcePackInfo info;

            var entry = archive.GetEntry("pack.mcmeta");

            if (entry == null)
            {
                info = new ResourcePackInfo();
            }
            else
            {
                using (var stream = entry.Open())
                {
                    ResourcePackInfoWrapper wrap =
                        MCJsonConvert.DeserializeObject <ResourcePackInfoWrapper>(
                            Encoding.UTF8.GetString(stream.ReadToSpan(entry.Length)));
                    info = wrap.pack;
                }
            }

            Info = info;
        }
예제 #4
0
        protected static ResourcePackManifest GetManifest(ZipArchive archive, ResourcePackType type)
        {
            if (type == ResourcePackType.Java)
            {
                var entry = archive.GetEntry("pack.mcmeta");
                if (entry != null)
                {
                    ResourcePackInfo info;
                    using (TextReader reader = new StreamReader(entry.Open()))
                    {
                        ResourcePackInfoWrapper wrap = MCJsonConvert.DeserializeObject <ResourcePackInfoWrapper>(reader.ReadToEnd());
                        info = wrap.pack;
                    }

                    var imgEntry = archive.GetEntry("pack.png");
                    if (imgEntry != null)
                    {
                        // Bitmap bmp = new Bitmap(imgEntry.Open());
                        var bmp = Image.Load <Rgba32>(imgEntry.Open());
                        return(new ResourcePackManifest(bmp, "", info.Description));
                    }
                    else
                    {
                        return(new ResourcePackManifest("", info.Description));
                    }
                }
                else
                {
                    throw new InvalidResourcePackException();
                }
            }
            else if (type == ResourcePackType.Bedrock)
            {
            }

            return(null);
        }
예제 #5
0
        public static ResourcePackManifest GetManifest(IFilesystem archive)
        {
            //if (archive.GetEntry("pack.mcmeta") != null)

            var entry = archive.GetEntry("pack.mcmeta");

            if (entry != null)
            {
                ResourcePackInfo info;

                using (TextReader reader = new StreamReader(entry.Open()))
                {
                    ResourcePackInfoWrapper wrap =
                        MCJsonConvert.DeserializeObject <ResourcePackInfoWrapper>(reader.ReadToEnd());

                    info = wrap.pack;
                }

                try
                {
                    var imgEntry = archive.GetEntry("pack.png");

                    if (imgEntry != null && imgEntry.Length > 0)
                    {
                        // Bitmap bmp = new Bitmap(imgEntry.Open());
                        using (var stream = imgEntry.Open())
                        {
                            //var data = stream.ReadToSpan(entry.Length);

                            var bmp = Image.Load(stream).CloneAs <Rgba32>();

                            return(new ResourcePackManifest(bmp, "", info.Description, ResourcePackType.Java));
                        }
                    }
                }
                catch (Exception ex)
                {
                    Log.Warn(ex, $"Could not read resourcepack logo: {archive.ToString()}");
                }

                return(new ResourcePackManifest("", info.Description, ResourcePackType.Java));
            }

            entry = archive.GetEntry("manifest.json");

            if (entry != null)
            {
                //Load bedrock meta
                McPackManifest info;

                using (TextReader reader = new StreamReader(entry.Open()))
                {
                    info =
                        MCJsonConvert.DeserializeObject <McPackManifest>(reader.ReadToEnd());

                    //info = new ResourcePackInfo() {Description = wrap.Header.Description};
                    //info = wrap.pack;
                }

                try
                {
                    var imgEntry = archive.GetEntry("pack_icon.png");

                    if (imgEntry != null && imgEntry.Length > 0)
                    {
                        // Bitmap bmp = new Bitmap(imgEntry.Open());
                        using (var stream = imgEntry.Open())
                        {
                            //var data = stream.ReadToSpan(entry.Length);

                            var bmp = Image.Load(stream).CloneAs <Rgba32>();

                            return(new ResourcePackManifest(bmp, info.Header.Name, info.Header.Description, ResourcePackType.Bedrock));
                        }
                    }
                }
                catch (Exception ex)
                {
                    Log.Warn(ex, $"Could not read resourcepack logo: {archive.ToString()}");
                }

                return(new ResourcePackManifest(info.Header.Name, info.Header.Description, ResourcePackType.Bedrock));
            }


            return(null);
        }