Пример #1
0
        public static MinecraftAssetManifest Parse(string content)
        {
            var jobj = JObject.Parse (content);
            var mam = new MinecraftAssetManifest();

            mam.Virtual = false;

            if (jobj["virtual"] != null)
                mam.Virtual = jobj["virtual"].Value<bool>();

            mam.Objects = new List<AssetDescription>();

            foreach (JProperty item in ((JObject)jobj["objects"]).Properties()) {
                mam.Objects.Add(new AssetDescription() {
                    FileName = item.Name,
                    Hash = item.Value["hash"].Value<string>(),
                    Size = item.Value["size"].Value<int>()
                });
            }

            return mam;
        }
Пример #2
0
            public void Install(MinecraftAssetManifest manifest, string assetsDirectory, IStatusListener listener)
            {
                string assetFile = GetAssetFile(assetsDirectory);
                Directory.CreateDirectory(Path.GetDirectoryName(assetFile));

                if (!File.Exists (assetFile))
                    Download (assetsDirectory, listener);

                // If this manifest is virtual, then keep the assets/legacy/virtual directly up to date with the correct
                // version of the file.

                if (manifest.Virtual) {
                    string virtualAssetFile = Path.Combine (assetsDirectory, "legacy", "virtual", FileName);
                    if (!File.Exists (virtualAssetFile) || FileUtility.Hash (virtualAssetFile) != Hash) {
                        if (File.Exists(virtualAssetFile))
                            File.Delete (virtualAssetFile);
                        Directory.CreateDirectory(Path.GetDirectoryName(virtualAssetFile));
                        File.Copy (assetFile, virtualAssetFile);
                    }
                }
            }