Rewrote how HD Texture support worked, to make it easier for Optifine to integrate.

Fixed TextureFlamesFX for extramly large texture sizes.
Fixed the texture size sceme to allow for different sizes of textures in the same pack.
This commit is contained in:
LexManos 2012-05-24 01:35:37 -07:00
parent 1727ce69ed
commit a9b317c941
16 changed files with 478 additions and 343 deletions

View File

@ -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<TextureFX> effects)
{
ListIterator<TextureFX> 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<TextureFX> 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<Integer, Dimension> textureDims = new HashMap<Integer, Dimension>();
private IdentityHashMap<TextureFX, Integer> effectTextures = new IdentityHashMap<TextureFX, Integer>();
public void setTextureDimensions(int id, int width, int height, List<TextureFX> 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);
}
}
}

View File

@ -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<TextureFX> effects)
{
effects.remove(this);
return true;
}
}

View File

@ -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();
}

View File

@ -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;
}

View File

@ -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)
{

View File

@ -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<TextureFX>)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<TextureFX>)field_1604_f);
}
private BufferedImage func_6526_a(InputStream p_6526_1_) throws IOException

View File

@ -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;

View File

@ -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;
+ }
}

View File

@ -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;

View File

@ -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;

View File

@ -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)
{

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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)
{

View File

@ -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
{