Exemplo n.º 1
0
        private void ProcessBlockStateModel(McResourcePack resourcePack, Dictionary <ResourceLocation, ImageEntry> textures, BlockStateModel bsModel)
        {
            var model = bsModel.Model;

            foreach (var texture in model.Textures)
            {
                var text = texture.Value;

                if (text[0] == '#')
                {
                    var substr = text.Substring(1);

                    if (model.Textures.TryGetValue(substr, out var p))
                    {
                        text = p;
                    }
                    else
                    {
                        var parent = model.Parent;

                        while (parent != null)
                        {
                            if (parent.Textures.TryGetValue(substr, out string parentName))
                            {
                                text = parentName;

                                break;
                            }

                            parent = parent.Parent;
                        }
                    }
                }

                var key = new ResourceLocation(text);

                var alreadyLoaded = textures.ContainsKey(key);
                if (!alreadyLoaded && resourcePack.TryGetBitmap(key, out var bmp))
                {
                    TextureMeta meta = null;
                    resourcePack.TryGetTextureMeta(key, out meta);

                    textures.TryAdd(key, new ImageEntry(bmp, meta));
                }
                else if (!alreadyLoaded)
                {
                    if (texture.Value[0] != '#' || text[0] != '#')
                    {
                        Log.Warn(
                            $"Could not get bitmap {texture.Value} or {text} (Key: {texture.Key} Model: {bsModel.ModelName})");
                    }
                }
            }
        }
Exemplo n.º 2
0
        private void GetTextures(McResourcePack resourcePack,
                                 Dictionary <ResourceLocation, ImageEntry> textures,
                                 IProgressReceiver progressReceiver)
        {
            foreach (var texture in resourcePack.Textures.Where(x => x.Key.Path.StartsWith("block/", StringComparison.InvariantCultureIgnoreCase)))
            {
                if (textures.ContainsKey(texture.Key))
                {
                    continue;
                }

                TextureMeta meta = null;
                resourcePack.TryGetTextureMeta(texture.Key, out meta);
                textures.Add(texture.Key, new ImageEntry(texture.Value, meta));
            }

            /*
             * progressReceiver.UpdateProgress(0, "Processing blockstate textures...");
             * int blockstatesProcessed = 0;
             * int totalStates          = resourcePack.BlockStates.Count;
             *
             * foreach (var kv in resourcePack.BlockStates)
             * {
             *      progressReceiver.UpdateProgress(
             *              (int) (100D * ((double) blockstatesProcessed / (double) totalStates)), null, kv.Key);
             *
             *      var state = kv.Value;
             *
             *      foreach (var variant in state.Variants)
             *      {
             *              foreach (var va in variant.Value)
             *              {
             *                      ProcessBlockStateModel(resourcePack, textures, va);
             *              }
             *      }
             *
             *
             *      foreach (var part in state.Parts)
             *      {
             *              if (part.Apply == null)
             *                      continue;
             *
             *              foreach (var applied in part.Apply)
             *              {
             *                      ProcessBlockStateModel(resourcePack, textures, applied);
             *              }
             *      }
             *
             *      blockstatesProcessed++;
             *      // state.
             * }*/
        }
Exemplo n.º 3
0
        public void GetTextures(McResourcePack resourcePack,
                                Dictionary <ResourceLocation, ImageEntry> textures,
                                IProgressReceiver progressReceiver)
        {
            /*List<ResourceLocation> texturePaths = new List<ResourceLocation>();
             * foreach (var model in resourcePack.BlockModels)
             * {
             *      foreach (var texture in model.Value.Textures)
             *      {
             *              if (!texturePaths.Contains(texture.Value))
             *                      texturePaths.Add(texture.Value);
             *      }
             *     // model.Value.Textures
             * }*/

            int done = 0;
            //    var items = resourcePack.Textures.Where(x => texturePaths.Contains(x.Key)).ToArray();
            var texturePaths = resourcePack.Textures.Where(x => x.Key.Path.Contains("block/")).ToArray();

            foreach (var path in texturePaths)
            {
                progressReceiver?.UpdateProgress(done++, texturePaths.Length, "Resolving textures...", path.ToString());

                if (resourcePack.TryGetBitmap(path.Key, out var texture))
                {
                    TextureMeta meta = null;
                    resourcePack.TryGetTextureMeta(path.Key, out meta);
                    //var entry = new ImageEntry(texture.Value.Value, meta);

                    if (textures.ContainsKey(path.Key))
                    {
                        if (meta != null)
                        {
                            textures[path.Key].Meta = meta;
                        }

                        if (texture != null)
                        {
                            textures[path.Key].Image = texture;
                        }

                        //textures[texture.Key] = entry;
                    }
                    else
                    {
                        textures.Add(path.Key, new ImageEntry(texture, meta));
                    }
                }
            }
        }
Exemplo n.º 4
0
        private void GetTextures(McResourcePack resourcePack,
                                 Dictionary <ResourceLocation, ImageEntry> textures,
                                 IProgressReceiver progressReceiver)
        {
            foreach (var texture in resourcePack.Textures.Where(x => x.Key.Path.StartsWith("block/", StringComparison.OrdinalIgnoreCase)))
            {
                if (textures.ContainsKey(texture.Key))
                {
                    continue;
                }

                TextureMeta meta = null;
                resourcePack.TryGetTextureMeta(texture.Key, out meta);
                textures.Add(texture.Key, new ImageEntry(texture.Value.Value, meta));
            }
        }