diff --git a/client/cpw/mods/fml/client/FMLClientHandler.java b/client/cpw/mods/fml/client/FMLClientHandler.java index 342d2d16f3..3ec8eda662 100644 --- a/client/cpw/mods/fml/client/FMLClientHandler.java +++ b/client/cpw/mods/fml/client/FMLClientHandler.java @@ -12,10 +12,10 @@ */ package cpw.mods.fml.client; -import static org.lwjgl.opengl.GL11.GL_TEXTURE_2D; -import static org.lwjgl.opengl.GL11.GL_TEXTURE_WIDTH; +import static org.lwjgl.opengl.GL11.*; import java.awt.image.BufferedImage; +import java.awt.Dimension; import java.io.File; import java.io.IOException; import java.io.InputStream; @@ -26,6 +26,7 @@ import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.Hashtable; +import java.util.IdentityHashMap; import java.util.List; import java.util.ListIterator; import java.util.Map; @@ -39,48 +40,11 @@ import javax.imageio.ImageIO; import org.lwjgl.opengl.GL11; import net.minecraft.client.Minecraft; -import net.minecraft.src.BaseMod; -import net.minecraft.src.BiomeGenBase; -import net.minecraft.src.Block; -import net.minecraft.src.ClientRegistry; -import net.minecraft.src.CommonRegistry; -import net.minecraft.src.EntityItem; -import net.minecraft.src.EntityPlayer; -import net.minecraft.src.GuiScreen; -import net.minecraft.src.IBlockAccess; -import net.minecraft.src.IChunkProvider; -import net.minecraft.src.IInventory; -import net.minecraft.src.Item; -import net.minecraft.src.ItemStack; -import net.minecraft.src.KeyBinding; -import net.minecraft.src.ModTextureStatic; -import net.minecraft.src.NetClientHandler; -import net.minecraft.src.NetworkManager; -import net.minecraft.src.Packet; -import net.minecraft.src.Packet1Login; -import net.minecraft.src.Packet250CustomPayload; -import net.minecraft.src.Packet3Chat; -import net.minecraft.src.Profiler; -import net.minecraft.src.Render; -import net.minecraft.src.RenderBlocks; -import net.minecraft.src.RenderEngine; -import net.minecraft.src.RenderManager; -import net.minecraft.src.RenderPlayer; -import net.minecraft.src.StringTranslate; -import net.minecraft.src.TextureFX; -import net.minecraft.src.TexturePackBase; -import net.minecraft.src.World; -import net.minecraft.src.WorldType; +import net.minecraft.src.*; import argo.jdom.JdomParser; import argo.jdom.JsonNode; -import cpw.mods.fml.common.FMLCommonHandler; -import cpw.mods.fml.common.IFMLSidedHandler; -import cpw.mods.fml.common.IKeyHandler; -import cpw.mods.fml.common.Loader; -import cpw.mods.fml.common.ModContainer; +import cpw.mods.fml.common.*; import cpw.mods.fml.common.ModContainer.TickType; -import cpw.mods.fml.common.ModMetadata; -import cpw.mods.fml.common.ReflectionHelper; import cpw.mods.fml.common.modloader.ModLoaderHelper; import cpw.mods.fml.common.modloader.ModLoaderModContainer; @@ -825,12 +789,22 @@ public class FMLClientHandler implements IFMLSidedHandler return meta; } - public void pruneOldTextureFX(TexturePackBase var1, int tileSize, int tileSizeSquare, int tileSizeMask, int tileSizeSquareMask) + public void pruneOldTextureFX(TexturePackBase var1, List effects) { ListIterator li = addedTextureFX.listIterator(); - while (li.hasNext()) { - TextureFX tex=li.next(); - if (tex.unregister(client.field_6315_n)) { + while (li.hasNext()) + { + TextureFX tex = li.next(); + if (tex instanceof FMLTextureFX) + { + if (((FMLTextureFX)tex).unregister(client.field_6315_n, effects)) + { + li.remove(); + } + } + else + { + effects.remove(tex); li.remove(); } } @@ -904,11 +878,117 @@ public class FMLClientHandler implements IFMLSidedHandler Minecraft.fmlReentry(user, sessionToken); } - /** - * @param var1 - * @param tileSize - * @param tileSizeSquare - * @param tileSizeMask - * @param tileSizeSquareMask - */ + public void onTexturePackChange(RenderEngine engine, TexturePackBase texturepack, List effects) + { + FMLClientHandler.instance().pruneOldTextureFX(texturepack, effects); + + for (TextureFX tex : effects) + { + if (tex instanceof ITextureFX) + { + ((ITextureFX)tex).onTexturePackChanged(engine, texturepack, getTextureDimensions(tex)); + } + } + + FMLClientHandler.instance().loadTextures(texturepack); + } + + private HashMap textureDims = new HashMap(); + private IdentityHashMap effectTextures = new IdentityHashMap(); + public void setTextureDimensions(int id, int width, int height, List effects) + { + Dimension dim = new Dimension(width, height); + textureDims.put(id, dim); + + for (TextureFX tex : effects) + { + if (getEffectTexture(tex) == id && tex instanceof ITextureFX) + { + ((ITextureFX)tex).onTextureDimensionsUpdate(width, height); + } + } + } + + public Dimension getTextureDimensions(TextureFX effect) + { + return getTextureDimensions(getEffectTexture(effect)); + } + + public Dimension getTextureDimensions(int id) + { + return textureDims.get(id); + } + + public int getEffectTexture(TextureFX effect) + { + Integer id = effectTextures.get(effect); + if (id != null) + { + return id; + } + + int old = GL11.glGetInteger(GL_TEXTURE_BINDING_2D); + + effect.func_782_a(client.field_6315_n); + + id = GL11.glGetInteger(GL_TEXTURE_BINDING_2D); + + GL11.glBindTexture(GL_TEXTURE_2D, old); + + effectTextures.put(effect, id); + + return id; + } + + public boolean onUpdateTextureEffect(TextureFX effect) + { + Logger log = FMLCommonHandler.instance().getFMLLogger(); + ITextureFX ifx = (effect instanceof ITextureFX ? ((ITextureFX)effect) : null); + + if (ifx != null && ifx.getErrored()) + { + return false; + } + + String name = effect.getClass().getSimpleName(); + Profiler.func_40663_a(name); + + try + { + effect.func_783_a(); + } + catch (Exception e) + { + log.warning(String.format("Texture FX %s has failed to animate. Likely caused by a texture pack change that they did not respond correctly to", name)); + if (ifx != null) + { + ifx.setErrored(true); + } + Profiler.func_40662_b(); + return false; + } + Profiler.func_40662_b(); + + Dimension dim = getTextureDimensions(effect); + int target = ((dim.width >> 4) * (dim.height >> 4)) << 2; + if (effect.field_1127_a.length != target) + { + log.warning(String.format("Detected a texture FX sizing discrepancy in %s (%d, %d)", name, effect.field_1127_a.length, target)); + if (ifx != null) + { + ifx.setErrored(true); + } + return false; + } + return true; + } + + public void onPreRegisterEffect(TextureFX effect) + { + Dimension dim = getTextureDimensions(effect); + if (effect instanceof ITextureFX) + { + ((ITextureFX)effect).onTextureDimensionsUpdate(dim.width, dim.height); + } + } } diff --git a/client/cpw/mods/fml/client/FMLTextureFX.java b/client/cpw/mods/fml/client/FMLTextureFX.java new file mode 100644 index 0000000000..a85fac1a79 --- /dev/null +++ b/client/cpw/mods/fml/client/FMLTextureFX.java @@ -0,0 +1,70 @@ +/* + * The FML Forge Mod Loader suite. + * Copyright (C) 2012 cpw + * + * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free + * Software Foundation; either version 2.1 of the License, or any later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR + * A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 + * Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +package cpw.mods.fml.client; + +import java.awt.Dimension; +import java.util.List; +import java.util.logging.Logger; + +import cpw.mods.fml.common.FMLCommonHandler; + +import net.minecraft.src.RenderEngine; +import net.minecraft.src.TextureFX; +import net.minecraft.src.TexturePackBase; + +public class FMLTextureFX extends TextureFX implements ITextureFX +{ + public int tileSizeBase = 16; + public int tileSizeSquare = 256; + public int tileSizeMask = 15; + public int tileSizeSquareMask = 255; + public boolean errored = false; + protected Logger log = FMLCommonHandler.instance().getFMLLogger(); + + public FMLTextureFX(int icon) + { + super(icon); + } + + @Override public void setErrored(boolean err){ errored = err; } + @Override public boolean getErrored(){ return errored; } + @Override + public void onTexturePackChanged(RenderEngine engine, TexturePackBase texturepack, Dimension dimensions) + { + onTextureDimensionsUpdate(dimensions.width, dimensions.height); + } + @Override + public void onTextureDimensionsUpdate(int width, int height) + { + tileSizeBase = width >> 4; + tileSizeSquare = tileSizeBase * tileSizeBase; + tileSizeMask = tileSizeBase - 1; + tileSizeSquareMask = tileSizeSquare - 1; + System.out.format("(%d,%d) %d %d %d %d\n", width, height, tileSizeBase, tileSizeSquare, tileSizeMask, tileSizeSquareMask); + setErrored(false); + setup(); + } + + protected void setup() + { + field_1127_a = new byte[tileSizeSquare << 2]; + } + + public boolean unregister(RenderEngine engine, List effects) + { + effects.remove(this); + return true; + } +} diff --git a/client/cpw/mods/fml/client/ITextureFX.java b/client/cpw/mods/fml/client/ITextureFX.java new file mode 100644 index 0000000000..b18ea2b7e3 --- /dev/null +++ b/client/cpw/mods/fml/client/ITextureFX.java @@ -0,0 +1,30 @@ +/* + * The FML Forge Mod Loader suite. + * Copyright (C) 2012 cpw + * + * This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free + * Software Foundation; either version 2.1 of the License, or any later version. + * + * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR + * A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 + * Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +package cpw.mods.fml.client; + +import java.awt.Dimension; + +import net.minecraft.src.*; + +public interface ITextureFX +{ + public void onTexturePackChanged(RenderEngine engine, TexturePackBase texturepack, Dimension dimensions); + + public void onTextureDimensionsUpdate(int width, int height); + + public void setErrored(boolean errored); + + public boolean getErrored(); +} diff --git a/client/net/minecraft/src/ModTextureAnimation.java b/client/net/minecraft/src/ModTextureAnimation.java index f962bef777..780a08ff8f 100644 --- a/client/net/minecraft/src/ModTextureAnimation.java +++ b/client/net/minecraft/src/ModTextureAnimation.java @@ -21,6 +21,7 @@ import java.awt.image.ImageObserver; import org.lwjgl.opengl.GL11; import cpw.mods.fml.client.FMLClientHandler; +import cpw.mods.fml.client.FMLTextureFX; import cpw.mods.fml.common.FMLCommonHandler; import static org.lwjgl.opengl.GL11.*; @@ -28,7 +29,7 @@ import static org.lwjgl.opengl.GL11.*; * A texture override for animations, it takes a vertical image of * texture frames and constantly rotates them in the texture. */ -public class ModTextureAnimation extends TextureFX +public class ModTextureAnimation extends FMLTextureFX { private final int tickRate; private final byte[][] images; @@ -77,9 +78,9 @@ public class ModTextureAnimation extends TextureFX { images = new byte[frames][]; - if (tWidth != TextureFX.iconTileSize || tHeight != TextureFX.iconTileSize) + if (tWidth != tileSizeBase || tHeight != tileSizeBase) { - FMLCommonHandler.instance().getFMLLogger().warning(String.format("Animation Override %s is not applied - there is a mismatch between the underlying texture (%s) size %d,%d and the current texture tile size %d", target, tWidth, tHeight, TextureFX.iconTileSize)); + log.warning(String.format("Animation Override %s is not applied - there is a mismatch between the underlying texture (%s) size %d,%d and the current texture tile size %d", target, tWidth, tHeight, tileSizeBase)); errored = true; return; } diff --git a/client/net/minecraft/src/ModTextureStatic.java b/client/net/minecraft/src/ModTextureStatic.java index 432916d98d..15c251196d 100644 --- a/client/net/minecraft/src/ModTextureStatic.java +++ b/client/net/minecraft/src/ModTextureStatic.java @@ -21,10 +21,11 @@ import java.awt.image.ImageObserver; import org.lwjgl.opengl.GL11; import cpw.mods.fml.client.FMLClientHandler; +import cpw.mods.fml.client.FMLTextureFX; import cpw.mods.fml.common.FMLCommonHandler; import static org.lwjgl.opengl.GL11.*; -public class ModTextureStatic extends TextureFX +public class ModTextureStatic extends FMLTextureFX { private boolean oldanaglyph = false; private int[] pixels = null; @@ -59,13 +60,13 @@ public class ModTextureStatic extends TextureFX int tWidth = GL11.glGetTexLevelParameteri(GL_TEXTURE_2D, 0, GL_TEXTURE_WIDTH ) >> 4; int tHeight = GL11.glGetTexLevelParameteri(GL_TEXTURE_2D, 0, GL_TEXTURE_HEIGHT) >> 4; - if (tWidth != TextureFX.iconTileSize || tHeight != TextureFX.iconTileSize) + if (tWidth != tileSizeBase || tHeight != tileSizeBase) { - FMLCommonHandler.instance().getFMLLogger().warning(String.format("Override %s is not applied - there is a mismatch between the underlying texture (%s) size %d,%d and the current texture tile size %d", target, tWidth, tHeight, TextureFX.iconTileSize)); - errored=true; + log.warning(String.format("Override %s is not applied - there is a mismatch between the underlying texture (%s) size %d,%d and the current texture tile size %d", target, tWidth, tHeight, tileSizeBase)); + errored = true; return; } - pixels = new int[TextureFX.tileSizeSquare]; + pixels = new int[tileSizeSquare]; if (tWidth == sWidth && tHeight == sHeight) { diff --git a/patches/minecraft/net/minecraft/src/RenderEngine.java.patch b/patches/minecraft/net/minecraft/src/RenderEngine.java.patch index 6d4b7b46f1..d50ad31ad4 100644 --- a/patches/minecraft/net/minecraft/src/RenderEngine.java.patch +++ b/patches/minecraft/net/minecraft/src/RenderEngine.java.patch @@ -1,15 +1,17 @@ --- ../src-base/minecraft/net/minecraft/src/RenderEngine.java 0000-00-00 00:00:00.000000000 -0000 +++ ../src-work/minecraft/net/minecraft/src/RenderEngine.java 0000-00-00 00:00:00.000000000 -0000 -@@ -1,5 +1,8 @@ +@@ -1,6 +1,10 @@ package net.minecraft.src; +import static org.lwjgl.opengl.GL11.GL_TEXTURE_2D; +import static org.lwjgl.opengl.GL11.GL_TEXTURE_WIDTH; + import java.awt.Color; ++import java.awt.Dimension; import java.awt.Graphics; import java.awt.image.BufferedImage; -@@ -13,9 +16,16 @@ + import java.awt.image.ImageObserver; +@@ -13,9 +17,16 @@ import java.util.Iterator; import java.util.List; import java.util.Map; @@ -26,7 +28,7 @@ public class RenderEngine { public static boolean field_1609_a = false; -@@ -24,7 +34,7 @@ +@@ -24,7 +35,7 @@ private IntHashMap field_1607_c = new IntHashMap(); private IntBuffer field_1606_d = GLAllocation.func_1125_c(1); private ByteBuffer field_1605_e = GLAllocation.func_1127_b(16777216); @@ -35,7 +37,7 @@ private Map field_1603_g = new HashMap(); private GameSettings field_1602_h; public boolean field_4281_i = false; -@@ -32,6 +42,7 @@ +@@ -32,6 +43,7 @@ private TexturePackList field_6527_k; private BufferedImage field_25189_l = new BufferedImage(64, 64, 2); private int field_48512_n = 16; @@ -43,7 +45,7 @@ public RenderEngine(TexturePackList p_i754_1_, GameSettings p_i754_2_) { -@@ -95,8 +106,9 @@ +@@ -95,8 +107,9 @@ this.field_28151_c.put(p_28149_1_, var3); return var3; } @@ -54,45 +56,56 @@ var5.printStackTrace(); int[] var4 = this.func_28148_b(this.field_25189_l); this.field_28151_c.put(p_28149_1_, var4); -@@ -459,8 +471,17 @@ - for (int var2 = 0; var2 < this.field_1604_f.size(); ++var2) +@@ -251,6 +264,7 @@ + + int var3 = p_1068_1_.getWidth(); + int var4 = p_1068_1_.getHeight(); ++ FMLClientHandler.instance().setTextureDimensions(p_1068_2_, var3, var4, (List)field_1604_f); + int[] var5 = new int[var3 * var4]; + byte[] var6 = new byte[var3 * var4 * 4]; + p_1068_1_.getRGB(0, 0, var3, var4, var5, 0, var3); +@@ -448,8 +462,10 @@ + + public void func_1066_a(TextureFX p_1066_1_) + { ++ FMLClientHandler.instance().onPreRegisterEffect(p_1066_1_); + this.field_1604_f.add(p_1066_1_); + p_1066_1_.func_783_a(); ++ + } + + public void func_1067_a() +@@ -460,7 +476,10 @@ { TextureFX var3 = (TextureFX)this.field_1604_f.get(var2); -+ if (var3.errored) continue; var3.field_1131_c = this.field_1602_h.field_1578_g; - var3.func_783_a(); -+ Profiler.func_40663_a(var3.getClass().getSimpleName()); -+ try { -+ var3.func_783_a(); -+ } catch (Exception e) { -+ log.warning(String.format("Texture FX %s has failed to animate. Likely caused by a texture pack change that they did not respond correctly to",var3.getClass().getSimpleName())); -+ var3.errored=true; ++ if (!FMLClientHandler.instance().onUpdateTextureEffect(var3)) ++ { + continue; + } -+ Profiler.func_40662_b(); this.field_1605_e.clear(); this.field_1605_e.put(var3.field_1127_a); this.field_1605_e.position(0).limit(var3.field_1127_a.length); -@@ -470,12 +491,17 @@ - var3.func_782_a(this); +@@ -471,11 +490,16 @@ var1 = var3.field_1126_b; } -+ if (var3.field_1127_a.length!=TextureFX.tileSizeSquare<<2) { -+ log.warning(String.format("Detected a texture FX sizing discrepancy in %s (%d, %d)",var3.getClass().getSimpleName(), var3.field_1127_a.length, var3.tileSizeSquare<<2)); -+ var3.errored=true; -+ continue; -+ } ++ Dimension dim = FMLClientHandler.instance().getTextureDimensions(var3); ++ int tWidth = dim.width / 16; ++ int tHeight = dim.height / 16; for (int var4 = 0; var4 < var3.field_1129_e; ++var4) { ++ int xOffset = var3.field_1126_b % 16 * tWidth + var4 * tWidth; for (int var5 = 0; var5 < var3.field_1129_e; ++var5) { - GL11.glTexSubImage2D(GL11.GL_TEXTURE_2D, 0, var3.field_1126_b % 16 * 16 + var4 * 16, var3.field_1126_b / 16 * 16 + var5 * 16, 16, 16, GL11.GL_RGBA, GL11.GL_UNSIGNED_BYTE, this.field_1605_e); -+ GL11.glTexSubImage2D(GL11.GL_TEXTURE_2D, 0, var3.field_1126_b % 16 * TextureFX.iconTileSize + var4 * TextureFX.iconTileSize, var3.field_1126_b / 16 * TextureFX.iconTileSize + var5 * TextureFX.iconTileSize, TextureFX.iconTileSize, TextureFX.iconTileSize, GL11.GL_RGBA, GL11.GL_UNSIGNED_BYTE, this.field_1605_e); ++ int yOffset = var3.field_1126_b / 16 * tHeight + var5 * tHeight; ++ GL11.glTexSubImage2D(GL11.GL_TEXTURE_2D, 0, xOffset, yOffset, tWidth, tHeight, GL11.GL_RGBA, GL11.GL_UNSIGNED_BYTE, this.field_1605_e); } } } -@@ -577,8 +603,9 @@ +@@ -577,8 +601,9 @@ this.field_4280_j = false; this.field_4281_i = false; } @@ -103,7 +116,7 @@ var7.printStackTrace(); } } -@@ -614,11 +641,30 @@ +@@ -614,11 +639,13 @@ this.field_4280_j = false; this.field_4281_i = false; } @@ -114,24 +127,7 @@ var6.printStackTrace(); } } -+ GL11.glBindTexture(GL11.GL_TEXTURE_2D, func_1070_a("/terrain.png")); -+ int tileSize = GL11.glGetTexLevelParameteri(GL_TEXTURE_2D, 0, GL_TEXTURE_WIDTH ) >> 4; -+ int tileSizeSquare = tileSize*tileSize; -+ int tileSizeMask = tileSize - 1; -+ int tileSizeSquareMask = tileSizeSquare - 1; -+ -+ FMLClientHandler.instance().pruneOldTextureFX(var1, tileSize, tileSizeSquare, tileSizeMask, tileSizeSquareMask); -+ -+ TextureFX.iconTileSize = tileSize; -+ TextureFX.tileSizeSquare = tileSizeSquare; -+ TextureFX.tileSizeMask = tileSizeMask; -+ TextureFX.tileSizeSquareMask = tileSizeSquareMask; -+ -+ for (Object tex : field_1604_f) { -+ ((TextureFX)tex).onTexturePackChange(tileSize, tileSizeSquare, tileSizeMask, tileSizeSquareMask); -+ } -+ -+ FMLClientHandler.instance().loadTextures(var1); ++ FMLClientHandler.instance().onTexturePackChange(this, var1, (List)field_1604_f); } private BufferedImage func_6526_a(InputStream p_6526_1_) throws IOException diff --git a/patches/minecraft/net/minecraft/src/TextureCompassFX.java.patch b/patches/minecraft/net/minecraft/src/TextureCompassFX.java.patch index 653c590068..23cae4d0f2 100644 --- a/patches/minecraft/net/minecraft/src/TextureCompassFX.java.patch +++ b/patches/minecraft/net/minecraft/src/TextureCompassFX.java.patch @@ -1,7 +1,15 @@ --- ../src-base/minecraft/net/minecraft/src/TextureCompassFX.java 0000-00-00 00:00:00.000000000 -0000 +++ ../src-work/minecraft/net/minecraft/src/TextureCompassFX.java 0000-00-00 00:00:00.000000000 -0000 -@@ -8,7 +8,7 @@ - public class TextureCompassFX extends TextureFX +@@ -3,12 +3,14 @@ + import java.awt.image.BufferedImage; + import java.io.IOException; + import javax.imageio.ImageIO; ++ ++import cpw.mods.fml.client.FMLTextureFX; + import net.minecraft.client.Minecraft; + +-public class TextureCompassFX extends TextureFX ++public class TextureCompassFX extends FMLTextureFX { private Minecraft field_4231_g; - private int[] field_4230_h = new int[256]; @@ -9,20 +17,14 @@ private double field_4229_i; private double field_4228_j; -@@ -17,13 +17,26 @@ +@@ -17,13 +19,20 @@ super(Item.field_4025_aO.func_27009_a(0)); this.field_4231_g = p_i617_1_; this.field_1128_f = 1; + setup(); + } -+ -+ @Override -+ public void onTexturePackChange(int newTileSize, int newTileSizeSquare, int newTileSizeMask, int newTileSizeSquareMask) -+ { -+ super.onTexturePackChange(newTileSize, newTileSizeSquare, newTileSizeMask, newTileSizeSquareMask); -+ setup(); -+ } ++ @Override + public void setup() + { + super.setup(); @@ -34,13 +36,13 @@ - int var4 = this.field_1126_b / 16 * 16; - var2.getRGB(var3, var4, 16, 16, this.field_4230_h, 0, 16); + BufferedImage var2 = ImageIO.read(field_4231_g.field_6298_C.field_6534_a.func_6481_a("/gui/items.png")); -+ int var3 = this.field_1126_b % 16 * iconTileSize; -+ int var4 = this.field_1126_b / 16 * iconTileSize; -+ var2.getRGB(var3, var4, iconTileSize, iconTileSize, this.field_4230_h, 0, iconTileSize); ++ int var3 = this.field_1126_b % 16 * tileSizeBase; ++ int var4 = this.field_1126_b / 16 * tileSizeBase; ++ var2.getRGB(var3, var4, tileSizeBase, tileSizeBase, this.field_4230_h, 0, tileSizeBase); } catch (IOException var5) { -@@ -33,7 +46,7 @@ +@@ -33,7 +42,7 @@ public void func_783_a() { @@ -49,35 +51,35 @@ { int var2 = this.field_4230_h[var1] >> 24 & 255; int var3 = this.field_4230_h[var1] >> 16 & 255; -@@ -110,11 +123,11 @@ +@@ -110,11 +119,11 @@ int var19; int var18; - for (var9 = -4; var9 <= 4; ++var9) -+ for (var9 = -(iconTileSize >> 2); var9 <= (iconTileSize >> 2); ++var9) ++ for (var9 = -(tileSizeBase >> 2); var9 <= (tileSizeBase >> 2); ++var9) { - var10 = (int)(8.5D + var26 * (double)var9 * 0.3D); - var11 = (int)(7.5D - var24 * (double)var9 * 0.3D * 0.5D); - var12 = var11 * 16 + var10; -+ var10 = (int)((iconTileSize >> 1) + 0.5D + var26 * (double)var9 * 0.3D); -+ var11 = (int)((iconTileSize >> 1) - 0.5D - var24 * (double)var9 * 0.3D * 0.5D); -+ var12 = var11 * iconTileSize + var10; ++ var10 = (int)((tileSizeBase >> 1) + 0.5D + var26 * (double)var9 * 0.3D); ++ var11 = (int)((tileSizeBase >> 1) - 0.5D - var24 * (double)var9 * 0.3D * 0.5D); ++ var12 = var11 * tileSizeBase + var10; var13 = 100; var14 = 100; var15 = 100; -@@ -136,11 +149,11 @@ +@@ -136,11 +145,11 @@ this.field_1127_a[var12 * 4 + 3] = (byte)var16; } - for (var9 = -8; var9 <= 16; ++var9) -+ for (var9 = -(iconTileSize>>2); var9 <= iconTileSize; ++var9) ++ for (var9 = -(tileSizeBase>>2); var9 <= tileSizeBase; ++var9) { - var10 = (int)(8.5D + var24 * (double)var9 * 0.3D); - var11 = (int)(7.5D + var26 * (double)var9 * 0.3D * 0.5D); - var12 = var11 * 16 + var10; -+ var10 = (int)((iconTileSize >> 1) + 0.5D + var24 * (double)var9 * 0.3D); -+ var11 = (int)((iconTileSize >> 1) - 0.5D + var26 * (double)var9 * 0.3D * 0.5D); -+ var12 = var11 * iconTileSize + var10; ++ var10 = (int)((tileSizeBase >> 1) + 0.5D + var24 * (double)var9 * 0.3D); ++ var11 = (int)((tileSizeBase >> 1) - 0.5D + var26 * (double)var9 * 0.3D * 0.5D); ++ var12 = var11 * tileSizeBase + var10; var13 = var9 >= 0 ? 255 : 100; var14 = var9 >= 0 ? 20 : 100; var15 = var9 >= 0 ? 20 : 100; diff --git a/patches/minecraft/net/minecraft/src/TextureFX.java.patch b/patches/minecraft/net/minecraft/src/TextureFX.java.patch deleted file mode 100644 index c1411d455a..0000000000 --- a/patches/minecraft/net/minecraft/src/TextureFX.java.patch +++ /dev/null @@ -1,44 +0,0 @@ ---- ../src-base/minecraft/net/minecraft/src/TextureFX.java 0000-00-00 00:00:00.000000000 -0000 -+++ ../src-work/minecraft/net/minecraft/src/TextureFX.java 0000-00-00 00:00:00.000000000 -0000 -@@ -4,12 +4,17 @@ - - public class TextureFX - { -- public byte[] field_1127_a = new byte[1024]; -+ public byte[] field_1127_a = new byte[tileSizeSquare << 2]; - public int field_1126_b; - public boolean field_1131_c = false; - public int field_1130_d = 0; - public int field_1129_e = 1; - public int field_1128_f = 0; -+ public static int iconTileSize = 16; -+ public static int tileSizeSquare = 256; -+ public static int tileSizeMask = 15; -+ public static int tileSizeSquareMask = 255; -+ public boolean errored = false; - - public TextureFX(int p_i616_1_) - { -@@ -29,4 +34,22 @@ - GL11.glBindTexture(GL11.GL_TEXTURE_2D, p_782_1_.func_1070_a("/gui/items.png")); - } - } -+ -+ public void onTexturePackChange(int newTileSize, int newTileSizeSquare, int newTileSizeMask, int newTileSizeSquareMask) { -+ errored = false; -+ setup(); -+ } -+ public void setup() { -+ field_1127_a = new byte[tileSizeSquare << 2]; -+ } -+ -+ /** -+ * @return -+ * -+ */ -+ public boolean unregister(RenderEngine engine) -+ { -+ engine.field_1604_f.remove(this); -+ return true; -+ } - } diff --git a/patches/minecraft/net/minecraft/src/TextureFlamesFX.java.patch b/patches/minecraft/net/minecraft/src/TextureFlamesFX.java.patch index ecaf092529..d7fb1ea53c 100644 --- a/patches/minecraft/net/minecraft/src/TextureFlamesFX.java.patch +++ b/patches/minecraft/net/minecraft/src/TextureFlamesFX.java.patch @@ -1,6 +1,12 @@ --- ../src-base/minecraft/net/minecraft/src/TextureFlamesFX.java 0000-00-00 00:00:00.000000000 -0000 +++ ../src-work/minecraft/net/minecraft/src/TextureFlamesFX.java 0000-00-00 00:00:00.000000000 -0000 -@@ -4,10 +4,28 @@ +@@ -1,13 +1,28 @@ + package net.minecraft.src; + +-public class TextureFlamesFX extends TextureFX ++import cpw.mods.fml.client.FMLTextureFX; ++ ++public class TextureFlamesFX extends FMLTextureFX { protected float[] field_1133_g = new float[320]; protected float[] field_1132_h = new float[320]; @@ -14,50 +20,45 @@ + } + + @Override -+ public void onTexturePackChange(int newTileSize, int newTileSizeSquare, int newTileSizeMask, int newTileSizeSquareMask) -+ { -+ super.onTexturePackChange(newTileSize, newTileSizeSquare, newTileSizeMask, newTileSizeSquareMask); -+ setup(); -+ } + public void setup() + { + super.setup(); -+ fireTileSize = iconTileSize + (iconTileSize >> 2); -+ fireGridSize = fireTileSize * iconTileSize; ++ fireTileSize = tileSizeBase + (tileSizeBase >> 2); ++ fireGridSize = fireTileSize * tileSizeBase; + field_1133_g = new float[fireGridSize]; + field_1132_h = new float[fireGridSize]; } public void func_783_a() -@@ -16,31 +34,36 @@ +@@ -16,31 +31,36 @@ float var4; int var6; - for (int var1 = 0; var1 < 16; ++var1) -+ float fireFactor1 = 3.0F + (float)(iconTileSize >> 4); ++ float fireFactor1 = 3.0F + (float)(tileSizeBase >> 4); + -+ float fireFactor2 = 1.07F - (iconTileSize >> 4) *0.01F; ++ float fireFactor2 = 1.01F + (0.8F / tileSizeBase); + -+ for (int var1 = 0; var1 < iconTileSize; ++var1) ++ for (int var1 = 0; var1 < tileSizeBase; ++var1) { - for (int var2 = 0; var2 < 20; ++var2) + for (int var2 = 0; var2 < fireTileSize; ++var2) { - var3 = 18; - var4 = this.field_1133_g[var1 + (var2 + 1) % 20 * 16] * (float)var3; -+ var3 = fireTileSize - 2;//(tileSize >> 3); ++ var3 = fireTileSize - (tileSizeBase >> 3); + -+ var4 = this.field_1133_g[var1 + (var2 + 1) % fireTileSize * iconTileSize] * (float)var3; ++ var4 = this.field_1133_g[var1 + (var2 + 1) % fireTileSize * tileSizeBase] * (float)var3; for (int var5 = var1 - 1; var5 <= var1 + 1; ++var5) { for (var6 = var2; var6 <= var2 + 1; ++var6) { - if (var5 >= 0 && var6 >= 0 && var5 < 16 && var6 < 20) -+ if (var5 >= 0 && var6 >= 0 && var5 < iconTileSize && var6 < fireTileSize) ++ if (var5 >= 0 && var6 >= 0 && var5 < tileSizeBase && var6 < fireTileSize) { - var4 += this.field_1133_g[var5 + var6 * 16]; -+ var4 += this.field_1133_g[var5 + var6 * iconTileSize]; ++ var4 += this.field_1133_g[var5 + var6 * tileSizeBase]; } ++var3; @@ -65,17 +66,17 @@ } - this.field_1132_h[var1 + var2 * 16] = var4 / ((float)var3 * 1.0600001F); -+ this.field_1132_h[var1 + var2 * iconTileSize] = var4 / ((float)var3 * fireFactor2); ++ this.field_1132_h[var1 + var2 * tileSizeBase] = var4 / ((float)var3 * fireFactor2); - if (var2 >= 19) -+ if (var2 >= fireTileSize - (iconTileSize >> 4)) ++ if (var2 >= fireTileSize - (tileSizeBase >> 4)) { - this.field_1132_h[var1 + var2 * 16] = (float)(Math.random() * Math.random() * Math.random() * 4.0D + Math.random() * 0.10000000149011612D + 0.20000000298023224D); -+ this.field_1132_h[var1 + var2 * iconTileSize] = (float)(Math.random() * Math.random() * Math.random() * fireFactor1 + Math.random() * 0.1F + 0.2F); ++ this.field_1132_h[var1 + var2 * tileSizeBase] = (float)(Math.random() * Math.random() * Math.random() * fireFactor1 + Math.random() * 0.1F + 0.2F); } } } -@@ -49,7 +72,7 @@ +@@ -49,7 +69,7 @@ this.field_1132_h = this.field_1133_g; this.field_1133_g = var13; diff --git a/patches/minecraft/net/minecraft/src/TextureLavaFX.java.patch b/patches/minecraft/net/minecraft/src/TextureLavaFX.java.patch index 4837587274..5db5f9c999 100644 --- a/patches/minecraft/net/minecraft/src/TextureLavaFX.java.patch +++ b/patches/minecraft/net/minecraft/src/TextureLavaFX.java.patch @@ -1,8 +1,12 @@ --- ../src-base/minecraft/net/minecraft/src/TextureLavaFX.java 0000-00-00 00:00:00.000000000 -0000 +++ ../src-work/minecraft/net/minecraft/src/TextureLavaFX.java 0000-00-00 00:00:00.000000000 -0000 -@@ -2,14 +2,30 @@ +@@ -1,15 +1,28 @@ + package net.minecraft.src; - public class TextureLavaFX extends TextureFX +-public class TextureLavaFX extends TextureFX ++import cpw.mods.fml.client.FMLTextureFX; ++ ++public class TextureLavaFX extends FMLTextureFX { - protected float[] field_1147_g = new float[256]; - protected float[] field_1146_h = new float[256]; @@ -20,11 +24,6 @@ + } + + @Override -+ public void onTexturePackChange(int newTileSize, int newTileSizeSquare, int newTileSizeMask, int newTileSizeSquareMask) -+ { -+ super.onTexturePackChange(newTileSize, newTileSizeSquare, newTileSizeMask, newTileSizeSquareMask); -+ setup(); -+ } + public void setup() + { + super.setup(); @@ -35,19 +34,19 @@ } public void func_783_a() -@@ -22,9 +38,9 @@ +@@ -22,9 +35,9 @@ int var8; int var9; - for (int var1 = 0; var1 < 16; ++var1) -+ for (int var1 = 0; var1 < iconTileSize; ++var1) ++ for (int var1 = 0; var1 < tileSizeBase; ++var1) { - for (var2 = 0; var2 < 16; ++var2) -+ for (var2 = 0; var2 < iconTileSize; ++var2) ++ for (var2 = 0; var2 < tileSizeBase; ++var2) { var3 = 0.0F; int var4 = (int)(MathHelper.func_1106_a((float)var2 * (float)Math.PI * 2.0F / 16.0F) * 1.2F); -@@ -34,25 +50,25 @@ +@@ -34,25 +47,25 @@ { for (var7 = var2 - 1; var7 <= var2 + 1; ++var7) { @@ -56,33 +55,33 @@ - var3 += this.field_1147_g[var8 + var9 * 16]; + var8 = var6 + var4 & tileSizeMask; + var9 = var7 + var5 & tileSizeMask; -+ var3 += this.field_1147_g[var8 + var9 * iconTileSize]; ++ var3 += this.field_1147_g[var8 + var9 * tileSizeBase]; } } - this.field_1146_h[var1 + var2 * 16] = var3 / 10.0F + (this.field_1145_i[(var1 + 0 & 15) + (var2 + 0 & 15) * 16] + this.field_1145_i[(var1 + 1 & 15) + (var2 + 0 & 15) * 16] + this.field_1145_i[(var1 + 1 & 15) + (var2 + 1 & 15) * 16] + this.field_1145_i[(var1 + 0 & 15) + (var2 + 1 & 15) * 16]) / 4.0F * 0.8F; - this.field_1145_i[var1 + var2 * 16] += this.field_1144_j[var1 + var2 * 16] * 0.01F; -+ this.field_1146_h[var1 + var2 * iconTileSize] = var3 / 10.0F + (this.field_1145_i[(var1 + 0 & 15) + (var2 + 0 & 15) * iconTileSize] + this.field_1145_i[(var1 + 1 & 15) + (var2 + 0 & 15) * iconTileSize] + this.field_1145_i[(var1 + 1 & 15) + (var2 + 1 & 15) * iconTileSize] + this.field_1145_i[(var1 + 0 & 15) + (var2 + 1 & 15) * iconTileSize]) / 4.0F * 0.8F; -+ this.field_1145_i[var1 + var2 * iconTileSize] += this.field_1144_j[var1 + var2 * iconTileSize] * 0.01F; ++ this.field_1146_h[var1 + var2 * tileSizeBase] = var3 / 10.0F + (this.field_1145_i[(var1 + 0 & 15) + (var2 + 0 & 15) * tileSizeBase] + this.field_1145_i[(var1 + 1 & 15) + (var2 + 0 & 15) * tileSizeBase] + this.field_1145_i[(var1 + 1 & 15) + (var2 + 1 & 15) * tileSizeBase] + this.field_1145_i[(var1 + 0 & 15) + (var2 + 1 & 15) * tileSizeBase]) / 4.0F * 0.8F; ++ this.field_1145_i[var1 + var2 * tileSizeBase] += this.field_1144_j[var1 + var2 * tileSizeBase] * 0.01F; - if (this.field_1145_i[var1 + var2 * 16] < 0.0F) -+ if (this.field_1145_i[var1 + var2 * iconTileSize] < 0.0F) ++ if (this.field_1145_i[var1 + var2 * tileSizeBase] < 0.0F) { - this.field_1145_i[var1 + var2 * 16] = 0.0F; -+ this.field_1145_i[var1 + var2 * iconTileSize] = 0.0F; ++ this.field_1145_i[var1 + var2 * tileSizeBase] = 0.0F; } - this.field_1144_j[var1 + var2 * 16] -= 0.06F; -+ this.field_1144_j[var1 + var2 * iconTileSize] -= 0.06F; ++ this.field_1144_j[var1 + var2 * tileSizeBase] -= 0.06F; if (Math.random() < 0.005D) { - this.field_1144_j[var1 + var2 * 16] = 1.5F; -+ this.field_1144_j[var1 + var2 * iconTileSize] = 1.5F; ++ this.field_1144_j[var1 + var2 * tileSizeBase] = 1.5F; } } } -@@ -61,7 +77,7 @@ +@@ -61,7 +74,7 @@ this.field_1146_h = this.field_1147_g; this.field_1147_g = var11; diff --git a/patches/minecraft/net/minecraft/src/TextureLavaFlowFX.java.patch b/patches/minecraft/net/minecraft/src/TextureLavaFlowFX.java.patch index 74a02d1622..4b770ea982 100644 --- a/patches/minecraft/net/minecraft/src/TextureLavaFlowFX.java.patch +++ b/patches/minecraft/net/minecraft/src/TextureLavaFlowFX.java.patch @@ -1,19 +1,23 @@ --- ../src-base/minecraft/net/minecraft/src/TextureLavaFlowFX.java 0000-00-00 00:00:00.000000000 -0000 +++ ../src-work/minecraft/net/minecraft/src/TextureLavaFlowFX.java 0000-00-00 00:00:00.000000000 -0000 -@@ -12,6 +12,24 @@ +@@ -1,6 +1,8 @@ + package net.minecraft.src; + +-public class TextureLavaFlowFX extends TextureFX ++import cpw.mods.fml.client.FMLTextureFX; ++ ++public class TextureLavaFlowFX extends FMLTextureFX + { + protected float[] field_1143_g = new float[256]; + protected float[] field_1142_h = new float[256]; +@@ -12,6 +14,18 @@ { super(Block.field_397_D.field_378_bb + 1); this.field_1129_e = 2; + setup(); + } + -+ @Override -+ public void onTexturePackChange(int newTileSize, int newTileSizeSquare, int newTileSizeMask, int newTileSizeSquareMask) -+ { -+ super.onTexturePackChange(newTileSize, newTileSizeSquare, newTileSizeMask, newTileSizeSquareMask); -+ setup(); -+ } -+ ++ @Override + public void setup() + { + super.setup(); @@ -25,19 +29,19 @@ } public void func_783_a() -@@ -25,9 +43,9 @@ +@@ -25,9 +39,9 @@ int var8; int var9; - for (int var1 = 0; var1 < 16; ++var1) -+ for (int var1 = 0; var1 < iconTileSize; ++var1) ++ for (int var1 = 0; var1 < tileSizeBase; ++var1) { - for (var2 = 0; var2 < 16; ++var2) -+ for (var2 = 0; var2 < iconTileSize; ++var2) ++ for (var2 = 0; var2 < tileSizeBase; ++var2) { var3 = 0.0F; int var4 = (int)(MathHelper.func_1106_a((float)var2 * (float)Math.PI * 2.0F / 16.0F) * 1.2F); -@@ -37,25 +55,25 @@ +@@ -37,25 +51,25 @@ { for (var7 = var2 - 1; var7 <= var2 + 1; ++var7) { @@ -46,33 +50,33 @@ - var3 += this.field_1143_g[var8 + var9 * 16]; + var8 = var6 + var4 & tileSizeMask; + var9 = var7 + var5 & tileSizeMask; -+ var3 += this.field_1143_g[var8 + var9 * iconTileSize]; ++ var3 += this.field_1143_g[var8 + var9 * tileSizeBase]; } } - this.field_1142_h[var1 + var2 * 16] = var3 / 10.0F + (this.field_1141_i[(var1 + 0 & 15) + (var2 + 0 & 15) * 16] + this.field_1141_i[(var1 + 1 & 15) + (var2 + 0 & 15) * 16] + this.field_1141_i[(var1 + 1 & 15) + (var2 + 1 & 15) * 16] + this.field_1141_i[(var1 + 0 & 15) + (var2 + 1 & 15) * 16]) / 4.0F * 0.8F; - this.field_1141_i[var1 + var2 * 16] += this.field_1140_j[var1 + var2 * 16] * 0.01F; -+ this.field_1142_h[var1 + var2 * iconTileSize] = var3 / 10.0F + (this.field_1141_i[(var1 + 0 & tileSizeMask) + (var2 + 0 & tileSizeMask) * iconTileSize] + this.field_1141_i[(var1 + 1 & tileSizeMask) + (var2 + 0 & tileSizeMask) * iconTileSize] + this.field_1141_i[(var1 + 1 & tileSizeMask) + (var2 + 1 & tileSizeMask) * iconTileSize] + this.field_1141_i[(var1 + 0 & tileSizeMask) + (var2 + 1 & tileSizeMask) * iconTileSize]) / 4.0F * 0.8F; -+ this.field_1141_i[var1 + var2 * iconTileSize] += this.field_1140_j[var1 + var2 * iconTileSize] * 0.01F; ++ this.field_1142_h[var1 + var2 * tileSizeBase] = var3 / 10.0F + (this.field_1141_i[(var1 + 0 & tileSizeMask) + (var2 + 0 & tileSizeMask) * tileSizeBase] + this.field_1141_i[(var1 + 1 & tileSizeMask) + (var2 + 0 & tileSizeMask) * tileSizeBase] + this.field_1141_i[(var1 + 1 & tileSizeMask) + (var2 + 1 & tileSizeMask) * tileSizeBase] + this.field_1141_i[(var1 + 0 & tileSizeMask) + (var2 + 1 & tileSizeMask) * tileSizeBase]) / 4.0F * 0.8F; ++ this.field_1141_i[var1 + var2 * tileSizeBase] += this.field_1140_j[var1 + var2 * tileSizeBase] * 0.01F; - if (this.field_1141_i[var1 + var2 * 16] < 0.0F) -+ if (this.field_1141_i[var1 + var2 * iconTileSize] < 0.0F) ++ if (this.field_1141_i[var1 + var2 * tileSizeBase] < 0.0F) { - this.field_1141_i[var1 + var2 * 16] = 0.0F; -+ this.field_1141_i[var1 + var2 * iconTileSize] = 0.0F; ++ this.field_1141_i[var1 + var2 * tileSizeBase] = 0.0F; } - this.field_1140_j[var1 + var2 * 16] -= 0.06F; -+ this.field_1140_j[var1 + var2 * iconTileSize] -= 0.06F; ++ this.field_1140_j[var1 + var2 * tileSizeBase] -= 0.06F; if (Math.random() < 0.005D) { - this.field_1140_j[var1 + var2 * 16] = 1.5F; -+ this.field_1140_j[var1 + var2 * iconTileSize] = 1.5F; ++ this.field_1140_j[var1 + var2 * tileSizeBase] = 1.5F; } } } -@@ -64,9 +82,9 @@ +@@ -64,9 +78,9 @@ this.field_1142_h = this.field_1143_g; this.field_1143_g = var11; @@ -80,7 +84,7 @@ + for (var2 = 0; var2 < tileSizeSquare; ++var2) { - var3 = this.field_1143_g[var2 - this.field_1139_k / 3 * 16 & 255] * 2.0F; -+ var3 = this.field_1143_g[(var2 - this.field_1139_k / 3 * iconTileSize) & tileSizeSquareMask] * 2.0F; ++ var3 = this.field_1143_g[(var2 - this.field_1139_k / 3 * tileSizeBase) & tileSizeSquareMask] * 2.0F; if (var3 > 1.0F) { diff --git a/patches/minecraft/net/minecraft/src/TexturePortalFX.java.patch b/patches/minecraft/net/minecraft/src/TexturePortalFX.java.patch index 72aedf6f9e..ba16529a16 100644 --- a/patches/minecraft/net/minecraft/src/TexturePortalFX.java.patch +++ b/patches/minecraft/net/minecraft/src/TexturePortalFX.java.patch @@ -1,7 +1,13 @@ --- ../src-base/minecraft/net/minecraft/src/TexturePortalFX.java 0000-00-00 00:00:00.000000000 -0000 +++ ../src-work/minecraft/net/minecraft/src/TexturePortalFX.java 0000-00-00 00:00:00.000000000 -0000 -@@ -5,28 +5,35 @@ - public class TexturePortalFX extends TextureFX +@@ -2,31 +2,41 @@ + + import java.util.Random; + +-public class TexturePortalFX extends TextureFX ++import cpw.mods.fml.client.FMLTextureFX; ++ ++public class TexturePortalFX extends FMLTextureFX { private int field_4227_g = 0; - private byte[][] field_4226_h = new byte[32][1024]; @@ -10,10 +16,11 @@ public TexturePortalFX() { super(Block.field_4047_bf.field_378_bb); -+ setupPortalTextures(); ++ setup(); + } + -+ private void setupPortalTextures() ++ @Override ++ public void setup() + { + super.setup(); + field_4226_h = new byte[32][tileSizeSquare << 4]; @@ -22,10 +29,10 @@ for (int var2 = 0; var2 < 32; ++var2) { - for (int var3 = 0; var3 < 16; ++var3) -+ for (int var3 = 0; var3 < iconTileSize; ++var3) ++ for (int var3 = 0; var3 < tileSizeBase; ++var3) { - for (int var4 = 0; var4 < 16; ++var4) -+ for (int var4 = 0; var4 < iconTileSize; ++var4) ++ for (int var4 = 0; var4 < tileSizeBase; ++var4) { float var5 = 0.0F; int var6; @@ -36,38 +43,30 @@ - float var8 = (float)(var6 * 16) * 0.5F; - float var9 = ((float)var3 - var7) / 16.0F * 2.0F; - float var10 = ((float)var4 - var8) / 16.0F * 2.0F; -+ float var7 = (float)(var6 * iconTileSize) * 0.5F; -+ float var8 = (float)(var6 * iconTileSize) * 0.5F; -+ float var9 = ((float)var3 - var7) / (float)iconTileSize * 2.0F; -+ float var10 = ((float)var4 - var8) / (float)iconTileSize * 2.0F; ++ float var7 = (float)(var6 * tileSizeBase) * 0.5F; ++ float var8 = (float)(var6 * tileSizeBase) * 0.5F; ++ float var9 = ((float)var3 - var7) / (float)tileSizeBase * 2.0F; ++ float var10 = ((float)var4 - var8) / (float)tileSizeBase * 2.0F; if (var9 < -1.0F) { -@@ -60,7 +67,7 @@ +@@ -60,7 +70,7 @@ int var13 = (int)(var5 * var5 * 200.0F + 55.0F); int var14 = (int)(var5 * var5 * var5 * var5 * 255.0F); int var15 = (int)(var5 * 100.0F + 155.0F); - int var16 = var4 * 16 + var3; -+ int var16 = var4 * iconTileSize + var3; ++ int var16 = var4 * tileSizeBase + var3; this.field_4226_h[var2][var16 * 4 + 0] = (byte)var13; this.field_4226_h[var2][var16 * 4 + 1] = (byte)var14; this.field_4226_h[var2][var16 * 4 + 2] = (byte)var6; -@@ -68,14 +75,24 @@ +@@ -68,14 +78,15 @@ } } } + field_4227_g = 0; } - -+ /* (non-Javadoc) -+ * @see net.minecraft.src.TextureFX#onTexturePackChange(int, int, int, int) -+ */ -+ @Override -+ public void onTexturePackChange(int newTileSize, int newTileSizeSquare, int newTileSizeMask, int newTileSizeSquareMask) -+ { -+ super.onTexturePackChange(newTileSize, newTileSizeSquare, newTileSizeMask, newTileSizeSquareMask); -+ setupPortalTextures(); -+ } +- ++ public void func_783_a() { ++this.field_4227_g; diff --git a/patches/minecraft/net/minecraft/src/TextureWatchFX.java.patch b/patches/minecraft/net/minecraft/src/TextureWatchFX.java.patch index 9e60690d58..f7e2bc5a62 100644 --- a/patches/minecraft/net/minecraft/src/TextureWatchFX.java.patch +++ b/patches/minecraft/net/minecraft/src/TextureWatchFX.java.patch @@ -1,25 +1,33 @@ --- ../src-base/minecraft/net/minecraft/src/TextureWatchFX.java 0000-00-00 00:00:00.000000000 -0000 +++ ../src-work/minecraft/net/minecraft/src/TextureWatchFX.java 0000-00-00 00:00:00.000000000 -0000 -@@ -2,7 +2,11 @@ +@@ -1,11 +1,18 @@ + package net.minecraft.src; ++import java.awt.Graphics2D; import java.awt.image.BufferedImage; ++import java.awt.image.ImageObserver; import java.io.IOException; +import java.util.logging.Level; + import javax.imageio.ImageIO; + ++import cpw.mods.fml.client.FMLTextureFX; +import cpw.mods.fml.common.FMLCommonHandler; import net.minecraft.client.Minecraft; - public class TextureWatchFX extends TextureFX -@@ -18,22 +22,39 @@ +-public class TextureWatchFX extends TextureFX ++public class TextureWatchFX extends FMLTextureFX + { + private Minecraft field_4225_g; + private int[] field_4224_h = new int[256]; +@@ -18,22 +25,39 @@ super(Item.field_4023_aQ.func_27009_a(0)); this.field_4225_g = p_i364_1_; this.field_1128_f = 1; -- + setup(); + } -+ + ++ @Override + public void setup() + { + super.setup(); @@ -34,34 +42,34 @@ - var2 = ImageIO.read(Minecraft.class.getResource("/misc/dial.png")); - var2.getRGB(0, 0, 16, 16, this.field_4223_i, 0, 16); + BufferedImage var2 = ImageIO.read(field_4225_g.field_6298_C.field_6534_a.func_6481_a("/gui/items.png")); -+ int var3 = this.field_1126_b % 16 * iconTileSize; -+ int var4 = this.field_1126_b / 16 * iconTileSize; -+ var2.getRGB(var3, var4, iconTileSize, iconTileSize, this.field_4224_h, 0, iconTileSize); ++ int var3 = this.field_1126_b % 16 * tileSizeBase; ++ int var4 = this.field_1126_b / 16 * tileSizeBase; ++ var2.getRGB(var3, var4, tileSizeBase, tileSizeBase, this.field_4224_h, 0, tileSizeBase); + var2 = ImageIO.read(field_4225_g.field_6298_C.field_6534_a.func_6481_a("/misc/dial.png")); -+ var2.getRGB(0, 0, iconTileSize, iconTileSize, this.field_4223_i, 0, iconTileSize); ++ if (var2.getWidth() != tileSizeBase) ++ { ++ BufferedImage tmp = new BufferedImage(tileSizeBase, tileSizeBase, 6); ++ Graphics2D gfx = tmp.createGraphics(); ++ gfx.drawImage(var2, 0, 0, tileSizeBase, tileSizeBase, 0, 0, var2.getWidth(), var2.getHeight(), (ImageObserver)null); ++ gfx.dispose(); ++ var2 = tmp; ++ } ++ var2.getRGB(0, 0, tileSizeBase, tileSizeBase, this.field_4223_i, 0, tileSizeBase); } - catch (IOException var5) + catch (Exception var5) { - var5.printStackTrace(); -+ FMLCommonHandler.instance().getFMLLogger().log(Level.WARNING, String.format("A problem occurred with the watch texture: animation will be disabled"), var5); -+ errored = true; ++ log.log(Level.WARNING, String.format("A problem occurred with the watch texture: animation will be disabled"), var5); ++ setErrored(true); } } - -+ @Override -+ public void onTexturePackChange(int newTileSize, int newTileSizeSquare, int newTileSizeMask, int newTileSizeSquareMask) -+ { -+ super.onTexturePackChange(newTileSize, newTileSizeSquare, newTileSizeMask, newTileSizeSquareMask); -+ if (field_4224_h.length!=tileSizeSquare) { -+ setup(); -+ } -+ } +- + public void func_783_a() { double var1 = 0.0D; -@@ -77,7 +98,7 @@ +@@ -77,7 +101,7 @@ double var5 = Math.sin(this.field_4222_j); double var7 = Math.cos(this.field_4222_j); @@ -70,21 +78,21 @@ { int var10 = this.field_4224_h[var9] >> 24 & 255; int var11 = this.field_4224_h[var9] >> 16 & 255; -@@ -86,12 +107,12 @@ +@@ -86,12 +110,12 @@ if (var11 == var13 && var12 == 0 && var13 > 0) { - double var14 = -((double)(var9 % 16) / 15.0D - 0.5D); - double var16 = (double)(var9 / 16) / 15.0D - 0.5D; -+ double var14 = -((double)(var9 % iconTileSize) / tileSizeMask - 0.5D); -+ double var16 = (double)(var9 / iconTileSize) / tileSizeMask - 0.5D; ++ double var14 = -((double)(var9 % tileSizeBase) / tileSizeMask - 0.5D); ++ double var16 = (double)(var9 / tileSizeBase) / tileSizeMask - 0.5D; int var18 = var11; - int var19 = (int)((var14 * var7 + var16 * var5 + 0.5D) * 16.0D); - int var20 = (int)((var16 * var7 - var14 * var5 + 0.5D) * 16.0D); - int var21 = (var19 & 15) + (var20 & 15) * 16; -+ int var19 = (int)((var14 * var7 + var16 * var5 + 0.5D) * iconTileSize); -+ int var20 = (int)((var16 * var7 - var14 * var5 + 0.5D) * iconTileSize); -+ int var21 = (var19 & tileSizeMask) + (var20 & tileSizeMask) * iconTileSize; ++ int var19 = (int)((var14 * var7 + var16 * var5 + 0.5D) * tileSizeBase); ++ int var20 = (int)((var16 * var7 - var14 * var5 + 0.5D) * tileSizeBase); ++ int var21 = (var19 & tileSizeMask) + (var20 & tileSizeMask) * tileSizeBase; var10 = this.field_4223_i[var21] >> 24 & 255; var11 = (this.field_4223_i[var21] >> 16 & 255) * var11 / 255; var12 = (this.field_4223_i[var21] >> 8 & 255) * var18 / 255; diff --git a/patches/minecraft/net/minecraft/src/TextureWaterFX.java.patch b/patches/minecraft/net/minecraft/src/TextureWaterFX.java.patch index c7f2ac6e5e..4e57e9713d 100644 --- a/patches/minecraft/net/minecraft/src/TextureWaterFX.java.patch +++ b/patches/minecraft/net/minecraft/src/TextureWaterFX.java.patch @@ -1,19 +1,23 @@ --- ../src-base/minecraft/net/minecraft/src/TextureWaterFX.java 0000-00-00 00:00:00.000000000 -0000 +++ ../src-work/minecraft/net/minecraft/src/TextureWaterFX.java 0000-00-00 00:00:00.000000000 -0000 -@@ -11,8 +11,26 @@ +@@ -1,6 +1,8 @@ + package net.minecraft.src; + +-public class TextureWaterFX extends TextureFX ++import cpw.mods.fml.client.FMLTextureFX; ++ ++public class TextureWaterFX extends FMLTextureFX + { + protected float[] field_1158_g = new float[256]; + protected float[] field_1157_h = new float[256]; +@@ -11,8 +13,20 @@ public TextureWaterFX() { super(Block.field_401_B.field_378_bb); + setup(); } -+ @Override -+ public void onTexturePackChange(int newTileSize, int newTileSizeSquare, int newTileSizeMask, int newTileSizeSquareMask) -+ { -+ super.onTexturePackChange(newTileSize, newTileSizeSquare, newTileSizeMask, newTileSizeSquareMask); -+ setup(); -+ } -+ ++ @Override + public void setup() + { + super.setup(); @@ -27,15 +31,15 @@ public void func_783_a() { ++this.field_1154_k; -@@ -22,39 +40,39 @@ +@@ -22,39 +36,39 @@ int var5; int var6; - for (var1 = 0; var1 < 16; ++var1) -+ for (var1 = 0; var1 < iconTileSize; ++var1) ++ for (var1 = 0; var1 < tileSizeBase; ++var1) { - for (var2 = 0; var2 < 16; ++var2) -+ for (var2 = 0; var2 < iconTileSize; ++var2) ++ for (var2 = 0; var2 < tileSizeBase; ++var2) { var3 = 0.0F; @@ -46,41 +50,41 @@ - var3 += this.field_1158_g[var5 + var6 * 16]; + var5 = var4 & tileSizeMask; + var6 = var2 & tileSizeMask; -+ var3 += this.field_1158_g[var5 + var6 * iconTileSize]; ++ var3 += this.field_1158_g[var5 + var6 * tileSizeBase]; } - this.field_1157_h[var1 + var2 * 16] = var3 / 3.3F + this.field_1156_i[var1 + var2 * 16] * 0.8F; -+ this.field_1157_h[var1 + var2 * iconTileSize] = var3 / 3.3F + this.field_1156_i[var1 + var2 * iconTileSize] * 0.8F; ++ this.field_1157_h[var1 + var2 * tileSizeBase] = var3 / 3.3F + this.field_1156_i[var1 + var2 * tileSizeBase] * 0.8F; } } - for (var1 = 0; var1 < 16; ++var1) -+ for (var1 = 0; var1 < iconTileSize; ++var1) ++ for (var1 = 0; var1 < tileSizeBase; ++var1) { - for (var2 = 0; var2 < 16; ++var2) -+ for (var2 = 0; var2 < iconTileSize; ++var2) ++ for (var2 = 0; var2 < tileSizeBase; ++var2) { - this.field_1156_i[var1 + var2 * 16] += this.field_1155_j[var1 + var2 * 16] * 0.05F; -+ this.field_1156_i[var1 + var2 * iconTileSize] += this.field_1155_j[var1 + var2 * iconTileSize] * 0.05F; ++ this.field_1156_i[var1 + var2 * tileSizeBase] += this.field_1155_j[var1 + var2 * tileSizeBase] * 0.05F; - if (this.field_1156_i[var1 + var2 * 16] < 0.0F) -+ if (this.field_1156_i[var1 + var2 * iconTileSize] < 0.0F) ++ if (this.field_1156_i[var1 + var2 * tileSizeBase] < 0.0F) { - this.field_1156_i[var1 + var2 * 16] = 0.0F; -+ this.field_1156_i[var1 + var2 * iconTileSize] = 0.0F; ++ this.field_1156_i[var1 + var2 * tileSizeBase] = 0.0F; } - this.field_1155_j[var1 + var2 * 16] -= 0.1F; -+ this.field_1155_j[var1 + var2 * iconTileSize] -= 0.1F; ++ this.field_1155_j[var1 + var2 * tileSizeBase] -= 0.1F; if (Math.random() < 0.05D) { - this.field_1155_j[var1 + var2 * 16] = 0.5F; -+ this.field_1155_j[var1 + var2 * iconTileSize] = 0.5F; ++ this.field_1155_j[var1 + var2 * tileSizeBase] = 0.5F; } } } -@@ -63,7 +81,7 @@ +@@ -63,7 +77,7 @@ this.field_1157_h = this.field_1158_g; this.field_1158_g = var12; diff --git a/patches/minecraft/net/minecraft/src/TextureWaterFlowFX.java.patch b/patches/minecraft/net/minecraft/src/TextureWaterFlowFX.java.patch index ea94fd9b42..48486ffe4f 100644 --- a/patches/minecraft/net/minecraft/src/TextureWaterFlowFX.java.patch +++ b/patches/minecraft/net/minecraft/src/TextureWaterFlowFX.java.patch @@ -1,6 +1,16 @@ --- ../src-base/minecraft/net/minecraft/src/TextureWaterFlowFX.java 0000-00-00 00:00:00.000000000 -0000 +++ ../src-work/minecraft/net/minecraft/src/TextureWaterFlowFX.java 0000-00-00 00:00:00.000000000 -0000 -@@ -12,6 +12,24 @@ +@@ -1,6 +1,8 @@ + package net.minecraft.src; + +-public class TextureWaterFlowFX extends TextureFX ++import cpw.mods.fml.client.FMLTextureFX; ++ ++public class TextureWaterFlowFX extends FMLTextureFX + { + protected float[] field_1138_g = new float[256]; + protected float[] field_1137_h = new float[256]; +@@ -12,6 +14,18 @@ { super(Block.field_401_B.field_378_bb + 1); this.field_1129_e = 2; @@ -8,12 +18,6 @@ + } + + @Override -+ public void onTexturePackChange(int newTileSize, int newTileSizeSquare, int newTileSizeMask, int newTileSizeSquareMask) -+ { -+ super.onTexturePackChange(newTileSize, newTileSizeSquare, newTileSizeMask, newTileSizeSquareMask); -+ setup(); -+ } -+ + public void setup() + { + super.setup(); @@ -25,17 +29,17 @@ } public void func_783_a() -@@ -22,40 +40,40 @@ +@@ -22,40 +36,40 @@ float var3; int var5; int var6; - - for (var1 = 0; var1 < 16; ++var1) + -+ for (var1 = 0; var1 < iconTileSize; ++var1) ++ for (var1 = 0; var1 < tileSizeBase; ++var1) { - for (var2 = 0; var2 < 16; ++var2) -+ for (var2 = 0; var2 < iconTileSize; ++var2) ++ for (var2 = 0; var2 < tileSizeBase; ++var2) { var3 = 0.0F; @@ -46,41 +50,41 @@ - var3 += this.field_1138_g[var5 + var6 * 16]; + var5 = var1 & tileSizeMask; + var6 = var4 & tileSizeMask; -+ var3 += this.field_1138_g[var5 + var6 * iconTileSize]; ++ var3 += this.field_1138_g[var5 + var6 * tileSizeBase]; } - this.field_1137_h[var1 + var2 * 16] = var3 / 3.2F + this.field_1136_i[var1 + var2 * 16] * 0.8F; -+ this.field_1137_h[var1 + var2 * iconTileSize] = var3 / 3.2F + this.field_1136_i[var1 + var2 * iconTileSize] * 0.8F; ++ this.field_1137_h[var1 + var2 * tileSizeBase] = var3 / 3.2F + this.field_1136_i[var1 + var2 * tileSizeBase] * 0.8F; } } - for (var1 = 0; var1 < 16; ++var1) -+ for (var1 = 0; var1 < iconTileSize; ++var1) ++ for (var1 = 0; var1 < tileSizeBase; ++var1) { - for (var2 = 0; var2 < 16; ++var2) -+ for (var2 = 0; var2 < iconTileSize; ++var2) ++ for (var2 = 0; var2 < tileSizeBase; ++var2) { - this.field_1136_i[var1 + var2 * 16] += this.field_1135_j[var1 + var2 * 16] * 0.05F; -+ this.field_1136_i[var1 + var2 * iconTileSize] += this.field_1135_j[var1 + var2 * iconTileSize] * 0.05F; ++ this.field_1136_i[var1 + var2 * tileSizeBase] += this.field_1135_j[var1 + var2 * tileSizeBase] * 0.05F; - if (this.field_1136_i[var1 + var2 * 16] < 0.0F) -+ if (this.field_1136_i[var1 + var2 * iconTileSize] < 0.0F) ++ if (this.field_1136_i[var1 + var2 * tileSizeBase] < 0.0F) { - this.field_1136_i[var1 + var2 * 16] = 0.0F; -+ this.field_1136_i[var1 + var2 * iconTileSize] = 0.0F; ++ this.field_1136_i[var1 + var2 * tileSizeBase] = 0.0F; } - this.field_1135_j[var1 + var2 * 16] -= 0.3F; -+ this.field_1135_j[var1 + var2 * iconTileSize] -= 0.3F; ++ this.field_1135_j[var1 + var2 * tileSizeBase] -= 0.3F; if (Math.random() < 0.2D) { - this.field_1135_j[var1 + var2 * 16] = 0.5F; -+ this.field_1135_j[var1 + var2 * iconTileSize] = 0.5F; ++ this.field_1135_j[var1 + var2 * tileSizeBase] = 0.5F; } } } -@@ -64,9 +82,9 @@ +@@ -64,9 +78,9 @@ this.field_1137_h = this.field_1138_g; this.field_1138_g = var12; @@ -88,7 +92,7 @@ + for (var2 = 0; var2 < tileSizeSquare; ++var2) { - var3 = this.field_1138_g[var2 - this.field_1134_k * 16 & 255]; -+ var3 = this.field_1138_g[var2 - this.field_1134_k * iconTileSize & tileSizeSquareMask]; ++ var3 = this.field_1138_g[var2 - this.field_1134_k * tileSizeBase & tileSizeSquareMask]; if (var3 > 1.0F) { diff --git a/patches/minecraft_server/net/minecraft/src/RConThreadClient.java.patch b/patches/minecraft_server/net/minecraft/src/RConThreadClient.java.patch deleted file mode 100644 index 3f0c5f4649..0000000000 --- a/patches/minecraft_server/net/minecraft/src/RConThreadClient.java.patch +++ /dev/null @@ -1,20 +0,0 @@ ---- ../src-base/minecraft_server/net/minecraft/src/RConThreadClient.java 0000-00-00 00:00:00.000000000 -0000 -+++ ../src-work/minecraft_server/net/minecraft/src/RConThreadClient.java 0000-00-00 00:00:00.000000000 -0000 -@@ -30,7 +30,7 @@ - { - if (!this.field_40419_a) - { -- break; -+ return; - } - - try -@@ -113,7 +113,7 @@ - catch (Exception var19) - { - System.out.println(var19); -- break; -+ return; - } - finally - {