diff --git a/patches/minecraft/net/minecraft/client/renderer/texture/TextureManager.java.patch b/patches/minecraft/net/minecraft/client/renderer/texture/TextureManager.java.patch index 2d7ffaa49..ff6703387 100644 --- a/patches/minecraft/net/minecraft/client/renderer/texture/TextureManager.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/texture/TextureManager.java.patch @@ -1,12 +1,13 @@ --- ../src_base/minecraft/net/minecraft/client/renderer/texture/TextureManager.java +++ ../src_work/minecraft/net/minecraft/client/renderer/texture/TextureManager.java -@@ -66,15 +66,20 @@ +@@ -66,17 +66,27 @@ public List func_94266_e(String par1Str) { -+ return createNewTexture(par1Str, par1Str); ++ return createNewTexture(par1Str, par1Str, null); + } -+ public List createNewTexture(String textureName, String textureFile) ++ ++ public List createNewTexture(String textureName, String textureFile, TextureStitched stitched) + { + String par1Str = textureFile; ArrayList arraylist = new ArrayList(); @@ -21,5 +22,12 @@ - String s1 = this.func_98146_d(par1Str); + String s1 = textureName; - if (this.func_98147_a(par1Str, itexturepack)) +- if (this.func_98147_a(par1Str, itexturepack)) ++ if (stitched != null && stitched.loadTexture(this, itexturepack, textureName, textureFile, bufferedimage, arraylist)) ++ { ++ ; ++ } ++ else if (this.func_98147_a(par1Str, itexturepack)) { + int k = j; + int l = j; diff --git a/patches/minecraft/net/minecraft/client/renderer/texture/TextureMap.java.patch b/patches/minecraft/net/minecraft/client/renderer/texture/TextureMap.java.patch index baf57e284..d7c3455ba 100644 --- a/patches/minecraft/net/minecraft/client/renderer/texture/TextureMap.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/texture/TextureMap.java.patch @@ -1,27 +1,45 @@ --- ../src_base/minecraft/net/minecraft/client/renderer/texture/TextureMap.java +++ ../src_work/minecraft/net/minecraft/client/renderer/texture/TextureMap.java -@@ -95,8 +95,18 @@ - while (iterator.hasNext()) - { - String s = (String)iterator.next(); +@@ -90,13 +90,22 @@ + StitchHolder stitchholder = new StitchHolder(texture); + stitcher.func_94312_a(stitchholder); + hashmap.put(stitchholder, Arrays.asList(new Texture[] {texture})); +- Iterator iterator = this.field_94256_j.keySet().iterator(); +- +- while (iterator.hasNext()) +- { +- String s = (String)iterator.next(); - String s1 = this.field_94254_c + s + this.field_94251_d; - List list = TextureManager.func_94267_b().func_94266_e(s1); -+ String s1; -+ if (s.indexOf(':') == -1) ++ ++ for (Map.Entry entry : ((Map)field_94256_j).entrySet()) ++ { ++ String name = entry.getKey(); ++ String path; ++ if (name.indexOf(':') == -1) + { -+ s1 = this.field_94254_c + s + this.field_94251_d; ++ path = this.field_94254_c + name + this.field_94251_d; + } + else + { -+ String domain = s.substring(0,s.indexOf(':')); -+ String file = s.substring(s.indexOf(':')+1); -+ s1 = "mods/" + domain +"/" + field_94254_c + file + field_94251_d; ++ String domain = name.substring(0,name.indexOf(':')); ++ String file = name.substring(name.indexOf(':')+1); ++ path = "mods/" + domain +"/" + field_94254_c + file + field_94251_d; + } -+ List list = TextureManager.func_94267_b().createNewTexture(s, s1); ++ List list = TextureManager.func_94267_b().createNewTexture(name, path, entry.getValue()); if (!list.isEmpty()) { -@@ -150,7 +160,17 @@ +@@ -116,7 +125,7 @@ + } + + this.field_94257_h = stitcher.func_94306_e(); +- iterator = stitcher.func_94309_g().iterator(); ++ Iterator iterator = stitcher.func_94309_g().iterator(); + + while (iterator.hasNext()) + { +@@ -150,7 +159,17 @@ if (list1.size() > 1) { this.field_94258_i.add(texturestitched); @@ -40,7 +58,7 @@ ITexturePack itexturepack = Minecraft.getMinecraft().texturePackList.getSelectedTexturePack(); boolean flag1 = !itexturepack.func_98138_b("/" + this.field_94254_c + s2 + ".png", false); -@@ -218,4 +238,37 @@ +@@ -218,4 +237,37 @@ { return this.field_94250_g; } diff --git a/patches/minecraft/net/minecraft/client/renderer/texture/TextureStitched.java.patch b/patches/minecraft/net/minecraft/client/renderer/texture/TextureStitched.java.patch new file mode 100644 index 000000000..5f8cfb09e --- /dev/null +++ b/patches/minecraft/net/minecraft/client/renderer/texture/TextureStitched.java.patch @@ -0,0 +1,45 @@ +--- ../src_base/minecraft/net/minecraft/client/renderer/texture/TextureStitched.java ++++ ../src_work/minecraft/net/minecraft/client/renderer/texture/TextureStitched.java +@@ -2,9 +2,13 @@ + + import cpw.mods.fml.relauncher.Side; + import cpw.mods.fml.relauncher.SideOnly; ++ ++import java.awt.image.BufferedImage; + import java.io.BufferedReader; + import java.util.ArrayList; + import java.util.List; ++ ++import net.minecraft.client.texturepacks.ITexturePack; + import net.minecraft.util.Icon; + import net.minecraft.util.Tuple; + +@@ -196,4 +200,28 @@ + this.field_94236_i = arraylist; + } + } ++ ++ //=================================================================================================== ++ // Forge Start ++ //=================================================================================================== ++ /** ++ * Called when texture packs are refreshed, from TextureManager.createNewTexture, ++ * allows for finer control over loading the animation lists and verification of the image. ++ * If the return value from this is true, no further loading will be done by vanilla code. ++ * ++ * You need to add all Texture's to the textures argument. At the end of this function at least one ++ * entry should be in that argument, or a error should of been thrown. ++ * ++ * @param manager The invoking manager ++ * @param texturepack Current texture pack ++ * @param name The name of the texture ++ * @param fileName Resource path for this texture ++ * @param image Buffered image of the loaded resource ++ * @param textures ArrayList of element type Texture, split textures should be added to this list for the stitcher to handle. ++ * @return Return true to skip further vanilla texture loading for this texture ++ */ ++ public boolean loadTexture(TextureManager manager, ITexturePack texturepack, String name, String fileName, BufferedImage image, ArrayList textures) ++ { ++ return false; ++ } + }