diff --git a/resources/glsl/core.glsl b/resources/glsl/core.glsl index a320299..9f11465 100644 --- a/resources/glsl/core.glsl +++ b/resources/glsl/core.glsl @@ -23,10 +23,14 @@ in vec4 a_color; #ifdef CC_a_normal in vec4 a_normal; #endif - -#ifdef CC_fog -out vec4 v_position; +#ifdef CC_a_texture1 +in vec2 a_texture1; #endif + +#ifdef CC_TEX_GEN_STRQ +out vec4 v_object_pos; +#endif +out vec4 v_position; #ifdef CC_a_color out vec4 v_color; #endif @@ -36,11 +40,20 @@ out vec4 v_normal; #ifdef CC_a_texture0 out vec2 v_texture0; #endif +#ifdef CC_a_texture1 +out vec2 v_texture1; +#endif + +#endif + + +#ifdef CC_VERT void main(){ vec4 pos = matrix_m * vec4(a_position, 1.0); -#ifdef CC_fog v_position = pos; +#ifdef CC_TEX_GEN_STRQ + v_object_pos = vec4(a_position, 1.0); #endif #ifdef CC_a_color v_color = a_color; @@ -50,6 +63,9 @@ void main(){ #endif #ifdef CC_a_texture0 v_texture0 = a_texture0; +#endif +#ifdef CC_a_texture1 + v_texture1 = a_texture1; #endif gl_Position = matrix_p * pos; } @@ -58,12 +74,10 @@ void main(){ #ifdef CC_FRAG -#ifdef CC_unit0 uniform sampler2D tex0; -#ifndef CC_a_texture0 +uniform sampler2D tex1; uniform vec2 texCoordV0; -#endif -#endif +uniform vec2 texCoordV1; #ifdef CC_lighting uniform vec3 light0Pos; uniform vec3 light1Pos; @@ -71,20 +85,35 @@ uniform vec3 normalUniform; #endif #ifdef CC_fog uniform vec4 fogColor; -uniform int fogMode; -uniform float fogStart; -uniform float fogEnd; -uniform float fogDensity; -uniform float fogPremultiply; +//X = uniform float fogMode; +//Y = uniform float fogStart; +//Z = uniform float fogEnd - fogStart; +//W = uniform float fogDensity; +uniform vec4 fogParam; #endif uniform vec4 colorUniform; #ifdef CC_alphatest uniform float alphaTestF; #endif - -#ifdef CC_fog -in vec4 v_position; +#ifdef CC_TEX_GEN_STRQ +//uniform int textureGenS_M; +//uniform int textureGenT_M; +//uniform int textureGenR_M; +//uniform int textureGenQ_M; +uniform ivec4 textureGen_M; +uniform vec4 textureGenS_V; +uniform vec4 textureGenT_V; +uniform vec4 textureGenR_V; +uniform vec4 textureGenQ_V; #endif +#ifdef CC_patch_anisotropic +uniform vec2 anisotropic_fix; +#endif + +#ifdef CC_TEX_GEN_STRQ +in vec4 v_object_pos; +#endif +in vec4 v_position; #ifdef CC_a_color in vec4 v_color; #endif @@ -94,10 +123,14 @@ in vec4 v_normal; #ifdef CC_a_texture0 in vec2 v_texture0; #endif +#ifdef CC_a_texture1 +in vec2 v_texture1; +#endif out vec4 fragColor; #define TEX_MAT3x2(mat4In) mat3x2(mat4In[0].xy,mat4In[1].xy,mat4In[3].xy) +#define TEX_MAT4x3(mat4In) mat4x3(mat4In[0].xyw,mat4In[1].xyw,mat4In[2].xyw,mat4In[3].xyw) void main(){ #ifdef CC_a_color @@ -106,12 +139,48 @@ void main(){ vec4 color = colorUniform; #endif +#ifdef CC_TEX_GEN_STRQ + vec4 texSrc[2]; + texSrc[0] = v_object_pos; + texSrc[1] = v_position; + + vec4 texPos; + texPos.x = dot(texSrc[textureGen_M.x], textureGenS_V); + texPos.y = dot(texSrc[textureGen_M.y], textureGenT_V); + texPos.z = dot(texSrc[textureGen_M.z], textureGenR_V); + texPos.w = dot(texSrc[textureGen_M.w], textureGenQ_V); + texPos.xyz = TEX_MAT4x3(matrix_t) * texPos; + color *= texture(tex0, texPos.xy / texPos.z).bgra; +#ifdef CC_alphatest + if(color.a < alphaTestF){ + discard; + } +#endif +#else #ifdef CC_unit0 #ifdef CC_a_texture0 - color *= texture(tex0, (TEX_MAT3x2(matrix_t) * vec3(v_texture0, 1.0)).xy).rgba; + +#ifdef CC_patch_anisotropic + vec2 uv = TEX_MAT3x2(matrix_t) * vec3(v_texture0, 1.0); + + /* https://bugs.chromium.org/p/angleproject/issues/detail?id=4994 */ + uv = ((uv * anisotropic_fix) - fract(uv * anisotropic_fix) + 0.5) / anisotropic_fix; + + vec4 texColor = texture(tex0, uv); #else - color *= texture(tex0, (TEX_MAT3x2(matrix_t) * vec3(texCoordV0, 1.0)).xy).rgba; + vec4 texColor = texture(tex0, TEX_MAT3x2(matrix_t) * vec3(v_texture0, 1.0)); #endif + +#else + vec4 texColor = texture(tex0, TEX_MAT3x2(matrix_t) * vec3(texCoordV0, 1.0)); +#endif + +#ifdef CC_swap_rb + color *= texColor.rgba; +#else + color *= texColor.bgra; +#endif + #endif #ifdef CC_alphatest @@ -120,6 +189,15 @@ void main(){ } #endif +#ifdef CC_unit1 +#ifdef CC_a_texture1 + color.rgb *= texture(tex1, (v_texture1 + 8.0) * 0.00390625).bgr; +#else + color.rgb *= texture(tex1, (texCoordV1 + 8.0) * 0.00390625).bgr; +#endif +#endif +#endif + #ifdef CC_lighting #ifdef CC_a_normal vec3 normal = ((v_normal.xyz - 0.5) * 2.0); @@ -133,11 +211,12 @@ void main(){ #ifdef CC_fog float dist = sqrt(dot(v_position, v_position)); - float i = (fogMode == 1) ? clamp((dist - fogStart) / (fogEnd - fogStart), 0.0, 1.0) : clamp(1.0 - exp(-(fogDensity * dist)), 0.0, 1.0); - color.rgb = mix(color.rgb, fogColor.xyz, i * fogColor.a); + float i = fogParam.x == 1.0 ? (dist - fogParam.y) / fogParam.z : 1.0 - exp(-fogParam.w * dist); + color.rgb = mix(color.rgb, fogColor.xyz, clamp(i, 0.0, 1.0) * fogColor.a); #endif fragColor = color; } -#endif \ No newline at end of file +#endif + diff --git a/resources/sprite_sheet/clock.png b/resources/sprite_sheet/clock.png new file mode 100644 index 0000000..5bbcf5e Binary files /dev/null and b/resources/sprite_sheet/clock.png differ diff --git a/resources/sprite_sheet/compass.png b/resources/sprite_sheet/compass.png new file mode 100644 index 0000000..d4c4d22 Binary files /dev/null and b/resources/sprite_sheet/compass.png differ diff --git a/resources/sprite_sheet/fire_0.png b/resources/sprite_sheet/fire_0.png new file mode 100644 index 0000000..a7f0626 Binary files /dev/null and b/resources/sprite_sheet/fire_0.png differ diff --git a/resources/sprite_sheet/fire_1.png b/resources/sprite_sheet/fire_1.png new file mode 100644 index 0000000..183f263 Binary files /dev/null and b/resources/sprite_sheet/fire_1.png differ diff --git a/resources/sprite_sheet/fire_1.txt b/resources/sprite_sheet/fire_1.txt new file mode 100644 index 0000000..0cd6d4b --- /dev/null +++ b/resources/sprite_sheet/fire_1.txt @@ -0,0 +1 @@ +8,9,10,11,12,13,14,15,0,1,2,3,4,5,6,7 \ No newline at end of file diff --git a/resources/sprite_sheet/lava.png b/resources/sprite_sheet/lava.png new file mode 100644 index 0000000..6230b53 Binary files /dev/null and b/resources/sprite_sheet/lava.png differ diff --git a/resources/sprite_sheet/lava.txt b/resources/sprite_sheet/lava.txt new file mode 100644 index 0000000..82afa8d --- /dev/null +++ b/resources/sprite_sheet/lava.txt @@ -0,0 +1 @@ +0*2,1*2,2*2,3*2,4*2,5*2,6*2,7*2,8*2,9*2,10*2,11*2,12*2,13*2,14*2,15*2,16*2,17*2,18*2,19*2,18*2,17*2,16*2,15*2,14*2,13*2,12*2,11*2,10*2,9*2,8*2,7*2,6*2,5*2,4*2,3*2,2*2,1*2 \ No newline at end of file diff --git a/resources/sprite_sheet/lava_flow.png b/resources/sprite_sheet/lava_flow.png new file mode 100644 index 0000000..78ca3c2 Binary files /dev/null and b/resources/sprite_sheet/lava_flow.png differ diff --git a/resources/sprite_sheet/lava_flow.txt b/resources/sprite_sheet/lava_flow.txt new file mode 100644 index 0000000..af85f2f --- /dev/null +++ b/resources/sprite_sheet/lava_flow.txt @@ -0,0 +1 @@ +0*3,1*3,2*3,3*3,4*3,5*3,6*3,7*3,8*3,9*3,10*3,11*3,12*3,13*3,14*3,15*3 \ No newline at end of file diff --git a/resources/sprite_sheet/portal.png b/resources/sprite_sheet/portal.png new file mode 100644 index 0000000..93651ec Binary files /dev/null and b/resources/sprite_sheet/portal.png differ diff --git a/resources/sprite_sheet/water.png b/resources/sprite_sheet/water.png new file mode 100644 index 0000000..7775802 Binary files /dev/null and b/resources/sprite_sheet/water.png differ diff --git a/resources/sprite_sheet/water.txt b/resources/sprite_sheet/water.txt new file mode 100644 index 0000000..fc9eecf --- /dev/null +++ b/resources/sprite_sheet/water.txt @@ -0,0 +1 @@ +0*2,1*2,2*2,3*2,4*2,5*2,6*2,7*2,8*2,9*2,10*2,11*2,12*2,13*2,14*2,15*2,16*2,17*2,18*2,19*2,20*2,21*2,22*2,23*2,24*2,25*2,26*2,27*2,28*2,29*2,30*2,31*2 \ No newline at end of file diff --git a/resources/sprite_sheet/water_flow.png b/resources/sprite_sheet/water_flow.png new file mode 100644 index 0000000..317e6cb Binary files /dev/null and b/resources/sprite_sheet/water_flow.png differ diff --git a/src/net/lax1dude/eaglercraft/SpriteSheetTexture.java b/src/net/lax1dude/eaglercraft/SpriteSheetTexture.java new file mode 100644 index 0000000..991ef20 --- /dev/null +++ b/src/net/lax1dude/eaglercraft/SpriteSheetTexture.java @@ -0,0 +1,156 @@ +package net.lax1dude.eaglercraft; + +import java.nio.IntBuffer; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; + +import org.lwjgl.opengl.GL11; + +import net.PeytonPlayz585.awt.image.BufferedImage; +import net.minecraft.src.GLAllocation; + +public class SpriteSheetTexture { + + public final String name; + public final int iconIndex; + public final int iconTileSize; + private IntBuffer buffer = null; + private int dataFrameCount = 0; + private int[] frameSet = null; + public int ticks = 0; + + private int[] mipmapOffsets = new int[5]; + + public SpriteSheetTexture(String name, int iconIndex, int iconTileSize) { + this.name = name; + this.iconIndex = iconIndex; + this.iconTileSize = iconTileSize; + reloadData(); + } + + public void update() { + ticks = (ticks + 1) % frameSet.length; + } + + public IntBuffer grabFrame(int lvl) { + int offWidth = 16 >> lvl; + int step = offWidth * offWidth * iconTileSize * iconTileSize; + int startIndex = mipmapOffsets[lvl] + step * frameSet[ticks]; + buffer.limit(startIndex + step); + buffer.position(startIndex); + return buffer; + } + + public void reloadData() { + ticks = 0; + buffer = null; + frameSet = null; + + byte[] imgBytes = GL11.EaglerAdapterImpl2.loadResourceBytes("/sprite_sheet/" + name + ".png"); + if(imgBytes == null) { + return; + } + + int dim = iconTileSize * iconTileSize * 256; + BufferedImage img = GL11.EaglerAdapterImpl2.loadPNG(imgBytes); + dataFrameCount = img.getData().length / dim; + + ArrayList loadedFrameSet = new ArrayList(); + byte[] metaBytes = GL11.EaglerAdapterImpl2.loadResourceBytes("/sprite_sheet/" + name + ".txt"); + + if(metaBytes == null) { + for(int i = 0; i < dataFrameCount; ++i) { + loadedFrameSet.add(i); + } + }else { + String str = new String(metaBytes, StandardCharsets.UTF_8); + String[] splitted = str.split("\\s*,\\s*"); + for(int i = 0; i < splitted.length; ++i) { + String idxStr = splitted[i]; + int z = idxStr.indexOf('*'); + if(z != -1) { + int idx = Integer.parseInt(idxStr.substring(0, z)); + int c = Integer.parseInt(idxStr.substring(z + 1)); + for(int j = 0; j < c; ++j) { + loadedFrameSet.add(idx); + } + }else { + loadedFrameSet.add(Integer.parseInt(idxStr)); + } + } + } + + frameSet = new int[loadedFrameSet.size()]; + for(int i = 0; i < frameSet.length; ++i) { + frameSet[i] = loadedFrameSet.get(i).intValue(); + } + + buffer = GLAllocation.createDirectIntBuffer( + 16 * 16 * dataFrameCount * iconTileSize * iconTileSize + + 8 * 8 * dataFrameCount * iconTileSize * iconTileSize + + 4 * 4 * dataFrameCount * iconTileSize * iconTileSize + + 2 * 2 * dataFrameCount * iconTileSize * iconTileSize + + dataFrameCount * iconTileSize * iconTileSize + ); + + int[] texData = swapRB(img.getData()); + mipmapOffsets[0] = 0; + buffer.put(texData); + mipmapOffsets[1] = buffer.position(); + texData = downscale(texData, 16 * iconTileSize, 16 * iconTileSize * dataFrameCount); + buffer.put(texData); + mipmapOffsets[2] = buffer.position(); + texData = downscale(texData, 8 * iconTileSize, 8 * iconTileSize * dataFrameCount); + buffer.put(texData); + mipmapOffsets[3] = buffer.position(); + texData = downscale(texData, 4 * iconTileSize, 4 * iconTileSize * dataFrameCount); + buffer.put(texData); + mipmapOffsets[4] = buffer.position(); + texData = downscale(texData, 2 * iconTileSize, 2 * iconTileSize * dataFrameCount); + buffer.put(texData); + + } + + private static int[] downscale(int[] in, int sw, int sh) { + int dw = sw / 2; + int dh = sh / 2; + int[] ret = new int[dw * dh]; + for(int y = 0; y < dh; ++y) { + for(int x = 0; x < dw; ++x) { + int a = in[((x * 2) + (y * 2) * sw)]; + int b = in[((x * 2 + 1) + (y * 2) * sw)]; + int c = in[((x * 2 + 1) + (y * 2 + 1) * sw)]; + int d = in[((x * 2) + (y * 2 + 1) * sw)]; + int b1= (((a >> 26) & 0x3F)) + + (((b >> 26) & 0x3F)) + + (((c >> 26) & 0x3F)) + + (((d >> 26) & 0x3F)); + int b2= (((a >> 18) & 0x3F)) + + (((b >> 18) & 0x3F)) + + (((c >> 18) & 0x3F)) + + (((d >> 18) & 0x3F)); + int b3= (((a >> 10) & 0x3F)) + + (((b >> 10) & 0x3F)) + + (((c >> 10) & 0x3F)) + + (((d >> 10) & 0x3F)); + int b4= (((a >> 2) & 0x3F)) + + (((b >> 2) & 0x3F)) + + (((c >> 2) & 0x3F)) + + (((d >> 2) & 0x3F)); + ret[y * dw + x] = (b1 << 24) | (b2 << 16) | (b3 << 8) | b4; + } + } + return ret; + } + + private static int[] swapRB(int[] in) { + int[] out = new int[in.length]; + for(int i = 0; i < in.length; ++i) { + int r = (in[i] >> 16) & 0xFF; + int b = in[i] & 0xFF; + out[i] = (in[i] & 0xFF00FF00) | (b << 16) | r; + } + return out; + } + +} \ No newline at end of file diff --git a/src/net/lax1dude/eaglercraft/TextureNewClockFX.java b/src/net/lax1dude/eaglercraft/TextureNewClockFX.java new file mode 100644 index 0000000..ef4bab7 --- /dev/null +++ b/src/net/lax1dude/eaglercraft/TextureNewClockFX.java @@ -0,0 +1,72 @@ +package net.lax1dude.eaglercraft; + +import org.lwjgl.opengl.GL11; + +import net.minecraft.client.Minecraft; +import net.minecraft.src.Item; +import net.minecraft.src.TextureFX; + +public class TextureNewClockFX extends TextureFX { + + private final int[] clockSpriteSheet; + private final int clockSpriteSheetLength; + private float field_94239_h; + private float field_94240_i; + + public TextureNewClockFX() { + super(Item.pocketSundial.getIconFromDamage(0)); + tileImage = 1; + this.clockSpriteSheet = GL11.EaglerAdapterImpl2.loadPNG(GL11.EaglerAdapterImpl2.loadResourceBytes("/sprite_sheet/clock.png")).getData(); + this.clockSpriteSheetLength = clockSpriteSheet.length / 256; + } + + public void onTick() { + Minecraft var1 = Minecraft.getMinecraft(); + double var2 = 0.0D; + + if (var1.theWorld != null && var1.thePlayer != null) { + float var4 = var1.theWorld.getCelestialAngle(1.0F); + var2 = (double) var4; + + if (var1.theWorld.worldProvider.isNether) { + var2 = Math.random(); + } + } + + double var7; + + for (var7 = var2 - this.field_94239_h; var7 < -0.5D; ++var7) { + ; + } + + while (var7 >= 0.5D) { + --var7; + } + + if (var7 < -1.0D) { + var7 = -1.0D; + } + + if (var7 > 1.0D) { + var7 = 1.0D; + } + + this.field_94240_i += var7 * 0.1D; + this.field_94240_i *= 0.8D; + this.field_94239_h += this.field_94240_i; + int var6; + + for (var6 = (int) ((this.field_94239_h + 1.0D) * (double) clockSpriteSheetLength) % clockSpriteSheetLength; var6 < 0; var6 = (var6 + clockSpriteSheetLength) % clockSpriteSheetLength) { + ; + } + + int offset = var6 * 256; + for(int i = 0; i < 256; ++i) { + this.imageData[i * 4] = (byte)((clockSpriteSheet[offset + i] >> 16) & 0xFF); + this.imageData[i * 4 + 1] = (byte)((clockSpriteSheet[offset + i] >> 8) & 0xFF); + this.imageData[i * 4 + 2] = (byte)(clockSpriteSheet[offset + i] & 0xFF); + this.imageData[i * 4 + 3] = (byte)((clockSpriteSheet[offset + i] >> 24) & 0xFF); + } + } + +} \ No newline at end of file diff --git a/src/net/lax1dude/eaglercraft/TextureNewCompassFX.java b/src/net/lax1dude/eaglercraft/TextureNewCompassFX.java new file mode 100644 index 0000000..b0621ba --- /dev/null +++ b/src/net/lax1dude/eaglercraft/TextureNewCompassFX.java @@ -0,0 +1,96 @@ +package net.lax1dude.eaglercraft; + +import org.lwjgl.opengl.GL11; + +import net.minecraft.client.Minecraft; +import net.minecraft.src.ChunkCoordinates; +import net.minecraft.src.Item; +import net.minecraft.src.TextureFX; +import net.minecraft.src.World; + +public class TextureNewCompassFX extends TextureFX { + + private final int[] compassSpriteSheet; + private final int compassSpriteSheetLength; + private float angleDelta = 0.0f; + private float currentAngle = 0.0f; + + public TextureNewCompassFX() { + super(Item.compass.getIconFromDamage(0)); + tileImage = 1; + this.compassSpriteSheet = GL11.EaglerAdapterImpl2.loadPNG(GL11.EaglerAdapterImpl2.loadResourceBytes("/sprite_sheet/compass.png")).getData(); + this.compassSpriteSheetLength = compassSpriteSheet.length / 256; + } + + public void onTick() { + Minecraft var1 = Minecraft.getMinecraft(); + + if (var1.theWorld != null && var1.thePlayer != null) { + this.updateCompass(var1.theWorld, var1.thePlayer.posX, var1.thePlayer.posZ, (double) var1.thePlayer.rotationYaw, false, false); + } else { + this.updateCompass((World) null, 0.0D, 0.0D, 0.0D, true, false); + } + } + + public void updateCompass(World par1World, double par2, double par4, double par6, boolean par8, boolean par9) { + double var10 = 0.0D; + + if (par1World != null && !par8) { + ChunkCoordinates var12 = par1World.getSpawnPoint(); + double var13 = (double) var12.x - par2; + double var15 = (double) var12.z - par4; + par6 %= 360.0D; + var10 = -((par6 - 90.0D) * Math.PI / 180.0D - Math.atan2(var15, var13)); + + if (par1World.worldProvider.isNether) { + var10 = Math.random() * Math.PI * 2.0D; + } + } + + if (par9) { + this.currentAngle = (float) var10; + } else { + double var17; + + for (var17 = var10 - this.currentAngle; var17 < -Math.PI; var17 += (Math.PI * 2D)) { + ; + } + + while (var17 >= Math.PI) { + var17 -= (Math.PI * 2D); + } + + if (var17 < -1.0D) { + var17 = -1.0D; + } + + if (var17 > 1.0D) { + var17 = 1.0D; + } + + this.angleDelta += var17 * 0.1D; + this.angleDelta *= 0.8D; + this.currentAngle += this.angleDelta; + } + + int var18; + + for (var18 = (int) ((this.currentAngle / (Math.PI * 2D) + 1.0D) * (double) compassSpriteSheetLength) % compassSpriteSheetLength; var18 < 0; var18 = (var18 + compassSpriteSheetLength) % compassSpriteSheetLength) { + ; + } + + int offset = var18 * 256; + for(int i = 0; i < 256; ++i) { + this.imageData[i * 4] = (byte)((compassSpriteSheet[offset + i] >> 16) & 0xFF); + this.imageData[i * 4 + 1] = (byte)((compassSpriteSheet[offset + i] >> 8) & 0xFF); + this.imageData[i * 4 + 2] = (byte)((compassSpriteSheet[offset + i]) & 0xFF); + this.imageData[i * 4 + 3] = (byte)((compassSpriteSheet[offset + i] >> 24) & 0xFF); + } + + //if (var18 != this.frameCounter) { + // this.frameCounter = var18; + // this.textureSheet.func_104062_b(this.originX, this.originY, (Texture) this.textureList.get(this.frameCounter)); + //} + } + +} \ No newline at end of file diff --git a/src/net/minecraft/client/Minecraft.java b/src/net/minecraft/client/Minecraft.java index e5e9ae8..7c880d7 100644 --- a/src/net/minecraft/client/Minecraft.java +++ b/src/net/minecraft/client/Minecraft.java @@ -5,6 +5,8 @@ import org.lwjgl.input.Mouse; import org.lwjgl.opengl.Display; import org.lwjgl.opengl.GL11; +import net.lax1dude.eaglercraft.TextureNewClockFX; +import net.lax1dude.eaglercraft.TextureNewCompassFX; import net.minecraft.src.AchievementList; import net.minecraft.src.AxisAlignedBB; import net.minecraft.src.Block; @@ -66,14 +68,6 @@ import net.minecraft.src.StatList; import net.minecraft.src.StatStringFormatKeyInv; import net.minecraft.src.Teleporter; import net.minecraft.src.Tessellator; -import net.minecraft.src.TextureCompassFX; -import net.minecraft.src.TextureFlamesFX; -import net.minecraft.src.TextureLavaFX; -import net.minecraft.src.TextureLavaFlowFX; -import net.minecraft.src.TexturePortalFX; -import net.minecraft.src.TextureWatchFX; -import net.minecraft.src.TextureWaterFX; -import net.minecraft.src.TextureWaterFlowFX; import net.minecraft.src.Timer; import net.minecraft.src.UnexpectedThrowable; import net.minecraft.src.Vec3D; @@ -121,8 +115,6 @@ public class Minecraft implements Runnable { public StatFileWriter statFileWriter; private String serverName; private int serverPort; - private TextureWaterFX textureWaterFX = new TextureWaterFX(); - private TextureLavaFX textureLavaFX = new TextureLavaFX(); private static String minecraftDir = "minecraft"; public volatile boolean running = true; public String debug = ""; @@ -183,15 +175,15 @@ public class Minecraft implements Runnable { GL11.glMatrixMode(GL11.GL_MODELVIEW); this.checkGLError("Startup"); this.sndManager.loadSoundSettings(this.gameSettings); - this.renderEngine.registerTextureFX(this.textureLavaFX); - this.renderEngine.registerTextureFX(this.textureWaterFX); - this.renderEngine.registerTextureFX(new TexturePortalFX()); - this.renderEngine.registerTextureFX(new TextureCompassFX(this)); - this.renderEngine.registerTextureFX(new TextureWatchFX(this)); - this.renderEngine.registerTextureFX(new TextureWaterFlowFX()); - this.renderEngine.registerTextureFX(new TextureLavaFlowFX()); - this.renderEngine.registerTextureFX(new TextureFlamesFX(0)); - this.renderEngine.registerTextureFX(new TextureFlamesFX(1)); + renderEngine.registerTextureFX(new TextureNewCompassFX()); + renderEngine.registerTextureFX(new TextureNewClockFX()); + renderEngine.registerSpriteSheet("portal", Block.portal.blockIndexInTexture, 1); + renderEngine.registerSpriteSheet("water", Block.waterStill.blockIndexInTexture, 1); + renderEngine.registerSpriteSheet("water_flow", Block.waterMoving.blockIndexInTexture + 1, 2); + renderEngine.registerSpriteSheet("lava", Block.lavaStill.blockIndexInTexture, 1); + renderEngine.registerSpriteSheet("lava_flow", Block.lavaMoving.blockIndexInTexture + 1, 2); + renderEngine.registerSpriteSheet("fire_0", Block.fire.blockIndexInTexture, 1); + renderEngine.registerSpriteSheet("fire_1", Block.fire.blockIndexInTexture + 16, 1); this.renderGlobal = new RenderGlobal(this, this.renderEngine); GL11.glViewport(0, 0, this.displayWidth, this.displayHeight); this.effectRenderer = new EffectRenderer(this.theWorld, this.renderEngine); diff --git a/src/net/minecraft/src/RenderEngine.java b/src/net/minecraft/src/RenderEngine.java index ba00c32..8af793b 100644 --- a/src/net/minecraft/src/RenderEngine.java +++ b/src/net/minecraft/src/RenderEngine.java @@ -13,6 +13,7 @@ import java.util.Map; import org.lwjgl.opengl.GL11; import net.PeytonPlayz585.awt.image.BufferedImage; +import net.lax1dude.eaglercraft.SpriteSheetTexture; public class RenderEngine { public static boolean useMipmaps = false; @@ -25,6 +26,7 @@ public class RenderEngine { private GameSettings options; private boolean clampTexture = false; private boolean blurTexture = false; + private List textureSpriteList = new ArrayList(); private BufferedImage missingTextureImage; @@ -284,18 +286,51 @@ public class RenderEngine { var1.onTick(); } +// public void updateDynamicTextures() { +// for (int i = 0; i < textureList.size(); i++) { +// TextureFX texturefx = (TextureFX) textureList.get(i); +// texturefx.anaglyphEnabled = this.options.anaglyph; +// texturefx.onTick(); +// texturefx.bindImage(this); +// int tileSize = 16 * 16 * 4; +// imageData.clear(); +// imageData.put(texturefx.imageData); +// imageData.position(0).limit(tileSize); +// GL11.glTexSubImage2D(3553, 0, (texturefx.iconIndex % 16) * 16, (texturefx.iconIndex / 16) * 16, 16, 16, 6408, 5121, imageData); +// } +// } + public void updateDynamicTextures() { + for (int i = 0; i < textureList.size(); i++) { TextureFX texturefx = (TextureFX) textureList.get(i); - texturefx.anaglyphEnabled = this.options.anaglyph; + texturefx.anaglyphEnabled = options.anaglyph; texturefx.onTick(); - texturefx.bindImage(this); int tileSize = 16 * 16 * 4; imageData.clear(); imageData.put(texturefx.imageData); imageData.position(0).limit(tileSize); - GL11.glTexSubImage2D(3553, 0, (texturefx.iconIndex % 16) * 16, (texturefx.iconIndex / 16) * 16, 16, 16, 6408, 5121, imageData); + texturefx.bindImage(this); + GL11.glTexSubImage2D(3553 /* GL_TEXTURE_2D */, 0, (texturefx.iconIndex % 16) * 16, (texturefx.iconIndex / 16) * 16, 16, 16, + 6408 /* GL_RGBA */, 5121 /* GL_UNSIGNED_BYTE */, imageData); } + + GL11.glBindTexture(GL11.GL_TEXTURE_2D, getTexture("/terrain.png")); + for(int i = 0, l = textureSpriteList.size(); i < l; ++i) { + SpriteSheetTexture sp = textureSpriteList.get(i); + sp.update(); + int w = 16; + for(int j = 0; j < 5; ++j) { + GL11.glTexSubImage2D(3553 /* GL_TEXTURE_2D */, j, (sp.iconIndex % 16) * w, (sp.iconIndex / 16) * w, w * sp.iconTileSize, w * sp.iconTileSize, + 6408 /* GL_RGBA */, 5121 /* GL_UNSIGNED_BYTE */, sp.grabFrame(j)); + w /= 2; + } + } + + } + + public void registerSpriteSheet(String name, int iconIndex, int iconTileSize) { + textureSpriteList.add(new SpriteSheetTexture(name, iconIndex, iconTileSize)); } private int averageColor(int var1, int var2) { @@ -385,6 +420,10 @@ public class RenderEngine { var6.printStackTrace(); } } + + for(int j = 0, l = textureSpriteList.size(); j < l; ++j) { + textureSpriteList.get(j).reloadData(); + } } diff --git a/src/net/minecraft/src/TextureCompassFX.java b/src/net/minecraft/src/TextureCompassFX.java deleted file mode 100644 index d8b4a3f..0000000 --- a/src/net/minecraft/src/TextureCompassFX.java +++ /dev/null @@ -1,145 +0,0 @@ -package net.minecraft.src; - -import java.io.IOException; - -import org.lwjgl.opengl.GL11; - -import net.PeytonPlayz585.awt.image.BufferedImage; -import net.PeytonPlayz585.awt.image.ImageIO; -import net.minecraft.client.Minecraft; - -public class TextureCompassFX extends TextureFX { - private Minecraft mc; - private int[] compassIconImageData = new int[256]; - private double field_4229_i; - private double field_4228_j; - - public TextureCompassFX(Minecraft var1) { - super(Item.compass.getIconFromDamage(0)); - this.mc = var1; - this.tileImage = 1; - - try { - BufferedImage var2 = ImageIO.read(GL11.getResource("/gui/items.png")); - int var3 = this.iconIndex % 16 * 16; - int var4 = this.iconIndex / 16 * 16; - var2.getRGB(var3, var4, 16, 16, this.compassIconImageData, 0, 16); - } catch (Exception var5) { - var5.printStackTrace(); - } - - } - - public void onTick() { - for(int var1 = 0; var1 < 256; ++var1) { - int var2 = this.compassIconImageData[var1] >> 24 & 255; - int var3 = this.compassIconImageData[var1] >> 16 & 255; - int var4 = this.compassIconImageData[var1] >> 8 & 255; - int var5 = this.compassIconImageData[var1] >> 0 & 255; - if(this.anaglyphEnabled) { - int var6 = (var3 * 30 + var4 * 59 + var5 * 11) / 100; - int var7 = (var3 * 30 + var4 * 70) / 100; - int var8 = (var3 * 30 + var5 * 70) / 100; - var3 = var6; - var4 = var7; - var5 = var8; - } - - this.imageData[var1 * 4 + 0] = (byte)var3; - this.imageData[var1 * 4 + 1] = (byte)var4; - this.imageData[var1 * 4 + 2] = (byte)var5; - this.imageData[var1 * 4 + 3] = (byte)var2; - } - - double var20 = 0.0D; - if(this.mc.theWorld != null && this.mc.thePlayer != null) { - ChunkCoordinates var21 = this.mc.theWorld.getSpawnPoint(); - double var23 = (double)var21.x - this.mc.thePlayer.posX; - double var25 = (double)var21.z - this.mc.thePlayer.posZ; - var20 = (double)(this.mc.thePlayer.rotationYaw - 90.0F) * Math.PI / 180.0D - Math.atan2(var25, var23); - if(this.mc.theWorld.worldProvider.isNether) { - var20 = Math.random() * (double)((float)Math.PI) * 2.0D; - } - } - - double var22; - for(var22 = var20 - this.field_4229_i; var22 < -Math.PI; var22 += Math.PI * 2.0D) { - } - - while(var22 >= Math.PI) { - var22 -= Math.PI * 2.0D; - } - - if(var22 < -1.0D) { - var22 = -1.0D; - } - - if(var22 > 1.0D) { - var22 = 1.0D; - } - - this.field_4228_j += var22 * 0.1D; - this.field_4228_j *= 0.8D; - this.field_4229_i += this.field_4228_j; - double var24 = Math.sin(this.field_4229_i); - double var26 = Math.cos(this.field_4229_i); - - int var9; - int var10; - int var11; - int var12; - int var13; - int var14; - int var15; - short var16; - int var17; - int var18; - int var19; - for(var9 = -4; var9 <= 4; ++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; - var13 = 100; - var14 = 100; - var15 = 100; - var16 = 255; - if(this.anaglyphEnabled) { - var17 = (var13 * 30 + var14 * 59 + var15 * 11) / 100; - var18 = (var13 * 30 + var14 * 70) / 100; - var19 = (var13 * 30 + var15 * 70) / 100; - var13 = var17; - var14 = var18; - var15 = var19; - } - - this.imageData[var12 * 4 + 0] = (byte)var13; - this.imageData[var12 * 4 + 1] = (byte)var14; - this.imageData[var12 * 4 + 2] = (byte)var15; - this.imageData[var12 * 4 + 3] = (byte)var16; - } - - for(var9 = -8; var9 <= 16; ++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; - var13 = var9 >= 0 ? 255 : 100; - var14 = var9 >= 0 ? 20 : 100; - var15 = var9 >= 0 ? 20 : 100; - var16 = 255; - if(this.anaglyphEnabled) { - var17 = (var13 * 30 + var14 * 59 + var15 * 11) / 100; - var18 = (var13 * 30 + var14 * 70) / 100; - var19 = (var13 * 30 + var15 * 70) / 100; - var13 = var17; - var14 = var18; - var15 = var19; - } - - this.imageData[var12 * 4 + 0] = (byte)var13; - this.imageData[var12 * 4 + 1] = (byte)var14; - this.imageData[var12 * 4 + 2] = (byte)var15; - this.imageData[var12 * 4 + 3] = (byte)var16; - } - - } -} diff --git a/src/net/minecraft/src/TextureFlamesFX.java b/src/net/minecraft/src/TextureFlamesFX.java deleted file mode 100644 index 0f68081..0000000 --- a/src/net/minecraft/src/TextureFlamesFX.java +++ /dev/null @@ -1,77 +0,0 @@ -package net.minecraft.src; - -public class TextureFlamesFX extends TextureFX { - protected float[] field_1133_g = new float[320]; - protected float[] field_1132_h = new float[320]; - - public TextureFlamesFX(int var1) { - super(Block.fire.blockIndexInTexture + var1 * 16); - } - - public void onTick() { - int var2; - float var4; - int var5; - int var6; - for(int var1 = 0; var1 < 16; ++var1) { - for(var2 = 0; var2 < 20; ++var2) { - int var3 = 18; - var4 = this.field_1133_g[var1 + (var2 + 1) % 20 * 16] * (float)var3; - - for(var5 = var1 - 1; var5 <= var1 + 1; ++var5) { - for(var6 = var2; var6 <= var2 + 1; ++var6) { - if(var5 >= 0 && var6 >= 0 && var5 < 16 && var6 < 20) { - var4 += this.field_1133_g[var5 + var6 * 16]; - } - - ++var3; - } - } - - this.field_1132_h[var1 + var2 * 16] = var4 / ((float)var3 * 1.06F); - if(var2 >= 19) { - this.field_1132_h[var1 + var2 * 16] = (float)(Math.random() * Math.random() * Math.random() * 4.0D + Math.random() * (double)0.1F + (double)0.2F); - } - } - } - - float[] var12 = this.field_1132_h; - this.field_1132_h = this.field_1133_g; - this.field_1133_g = var12; - - for(var2 = 0; var2 < 256; ++var2) { - float var13 = this.field_1133_g[var2] * 1.8F; - if(var13 > 1.0F) { - var13 = 1.0F; - } - - if(var13 < 0.0F) { - var13 = 0.0F; - } - - var5 = (int)(var13 * 155.0F + 100.0F); - var6 = (int)(var13 * var13 * 255.0F); - int var7 = (int)(var13 * var13 * var13 * var13 * var13 * var13 * var13 * var13 * var13 * var13 * 255.0F); - short var8 = 255; - if(var13 < 0.5F) { - var8 = 0; - } - - var4 = (var13 - 0.5F) * 2.0F; - if(this.anaglyphEnabled) { - int var9 = (var5 * 30 + var6 * 59 + var7 * 11) / 100; - int var10 = (var5 * 30 + var6 * 70) / 100; - int var11 = (var5 * 30 + var7 * 70) / 100; - var5 = var9; - var6 = var10; - var7 = var11; - } - - this.imageData[var2 * 4 + 0] = (byte)var5; - this.imageData[var2 * 4 + 1] = (byte)var6; - this.imageData[var2 * 4 + 2] = (byte)var7; - this.imageData[var2 * 4 + 3] = (byte)var8; - } - - } -} diff --git a/src/net/minecraft/src/TextureLavaFX.java b/src/net/minecraft/src/TextureLavaFX.java deleted file mode 100644 index 001d971..0000000 --- a/src/net/minecraft/src/TextureLavaFX.java +++ /dev/null @@ -1,81 +0,0 @@ -package net.minecraft.src; - -public class TextureLavaFX extends TextureFX { - protected float[] field_1147_g = new float[256]; - protected float[] field_1146_h = new float[256]; - protected float[] field_1145_i = new float[256]; - protected float[] field_1144_j = new float[256]; - - public TextureLavaFX() { - super(Block.lavaMoving.blockIndexInTexture); - } - - public void onTick() { - int var2; - float var3; - int var5; - int var6; - int var7; - int var8; - int var9; - for(int var1 = 0; var1 < 16; ++var1) { - for(var2 = 0; var2 < 16; ++var2) { - var3 = 0.0F; - int var4 = (int)(MathHelper.sin((float)var2 * (float)Math.PI * 2.0F / 16.0F) * 1.2F); - var5 = (int)(MathHelper.sin((float)var1 * (float)Math.PI * 2.0F / 16.0F) * 1.2F); - - for(var6 = var1 - 1; var6 <= var1 + 1; ++var6) { - for(var7 = var2 - 1; var7 <= var2 + 1; ++var7) { - var8 = var6 + var4 & 15; - var9 = var7 + var5 & 15; - var3 += this.field_1147_g[var8 + var9 * 16]; - } - } - - 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; - if(this.field_1145_i[var1 + var2 * 16] < 0.0F) { - this.field_1145_i[var1 + var2 * 16] = 0.0F; - } - - this.field_1144_j[var1 + var2 * 16] -= 0.06F; - if(Math.random() < 0.005D) { - this.field_1144_j[var1 + var2 * 16] = 1.5F; - } - } - } - - float[] var11 = this.field_1146_h; - this.field_1146_h = this.field_1147_g; - this.field_1147_g = var11; - - for(var2 = 0; var2 < 256; ++var2) { - var3 = this.field_1147_g[var2] * 2.0F; - if(var3 > 1.0F) { - var3 = 1.0F; - } - - if(var3 < 0.0F) { - var3 = 0.0F; - } - - var5 = (int)(var3 * 100.0F + 155.0F); - var6 = (int)(var3 * var3 * 255.0F); - var7 = (int)(var3 * var3 * var3 * var3 * 128.0F); - if(this.anaglyphEnabled) { - var8 = (var5 * 30 + var6 * 59 + var7 * 11) / 100; - var9 = (var5 * 30 + var6 * 70) / 100; - int var10 = (var5 * 30 + var7 * 70) / 100; - var5 = var8; - var6 = var9; - var7 = var10; - } - - this.imageData[var2 * 4 + 0] = (byte)var5; - this.imageData[var2 * 4 + 1] = (byte)var6; - this.imageData[var2 * 4 + 2] = (byte)var7; - this.imageData[var2 * 4 + 3] = -1; - } - - } -} diff --git a/src/net/minecraft/src/TextureLavaFlowFX.java b/src/net/minecraft/src/TextureLavaFlowFX.java deleted file mode 100644 index a678260..0000000 --- a/src/net/minecraft/src/TextureLavaFlowFX.java +++ /dev/null @@ -1,85 +0,0 @@ -package net.minecraft.src; - -public class TextureLavaFlowFX extends TextureFX { - protected float[] field_1143_g = new float[256]; - protected float[] field_1142_h = new float[256]; - protected float[] field_1141_i = new float[256]; - protected float[] field_1140_j = new float[256]; - int field_1139_k = 0; - - public TextureLavaFlowFX() { - super(Block.lavaMoving.blockIndexInTexture + 1); - this.tileSize = 2; - } - - public void onTick() { - ++this.field_1139_k; - - int var2; - float var3; - int var5; - int var6; - int var7; - int var8; - int var9; - for(int var1 = 0; var1 < 16; ++var1) { - for(var2 = 0; var2 < 16; ++var2) { - var3 = 0.0F; - int var4 = (int)(MathHelper.sin((float)var2 * (float)Math.PI * 2.0F / 16.0F) * 1.2F); - var5 = (int)(MathHelper.sin((float)var1 * (float)Math.PI * 2.0F / 16.0F) * 1.2F); - - for(var6 = var1 - 1; var6 <= var1 + 1; ++var6) { - for(var7 = var2 - 1; var7 <= var2 + 1; ++var7) { - var8 = var6 + var4 & 15; - var9 = var7 + var5 & 15; - var3 += this.field_1143_g[var8 + var9 * 16]; - } - } - - 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; - if(this.field_1141_i[var1 + var2 * 16] < 0.0F) { - this.field_1141_i[var1 + var2 * 16] = 0.0F; - } - - this.field_1140_j[var1 + var2 * 16] -= 0.06F; - if(Math.random() < 0.005D) { - this.field_1140_j[var1 + var2 * 16] = 1.5F; - } - } - } - - float[] var11 = this.field_1142_h; - this.field_1142_h = this.field_1143_g; - this.field_1143_g = var11; - - for(var2 = 0; var2 < 256; ++var2) { - var3 = this.field_1143_g[var2 - this.field_1139_k / 3 * 16 & 255] * 2.0F; - if(var3 > 1.0F) { - var3 = 1.0F; - } - - if(var3 < 0.0F) { - var3 = 0.0F; - } - - var5 = (int)(var3 * 100.0F + 155.0F); - var6 = (int)(var3 * var3 * 255.0F); - var7 = (int)(var3 * var3 * var3 * var3 * 128.0F); - if(this.anaglyphEnabled) { - var8 = (var5 * 30 + var6 * 59 + var7 * 11) / 100; - var9 = (var5 * 30 + var6 * 70) / 100; - int var10 = (var5 * 30 + var7 * 70) / 100; - var5 = var8; - var6 = var9; - var7 = var10; - } - - this.imageData[var2 * 4 + 0] = (byte)var5; - this.imageData[var2 * 4 + 1] = (byte)var6; - this.imageData[var2 * 4 + 2] = (byte)var7; - this.imageData[var2 * 4 + 3] = -1; - } - - } -} diff --git a/src/net/minecraft/src/TexturePortalFX.java b/src/net/minecraft/src/TexturePortalFX.java deleted file mode 100644 index f525dc4..0000000 --- a/src/net/minecraft/src/TexturePortalFX.java +++ /dev/null @@ -1,86 +0,0 @@ -package net.minecraft.src; - -public class TexturePortalFX extends TextureFX { - private int portalTickCounter = 0; - private byte[][] portalTextureData = new byte[32][1024]; - - public TexturePortalFX() { - super(Block.portal.blockIndexInTexture); - Random var1 = new Random(100L); - - for(int var2 = 0; var2 < 32; ++var2) { - for(int var3 = 0; var3 < 16; ++var3) { - for(int var4 = 0; var4 < 16; ++var4) { - float var5 = 0.0F; - - int var6; - for(var6 = 0; var6 < 2; ++var6) { - float var7 = (float)(var6 * 8); - float var8 = (float)(var6 * 8); - float var9 = ((float)var3 - var7) / 16.0F * 2.0F; - float var10 = ((float)var4 - var8) / 16.0F * 2.0F; - if(var9 < -1.0F) { - var9 += 2.0F; - } - - if(var9 >= 1.0F) { - var9 -= 2.0F; - } - - if(var10 < -1.0F) { - var10 += 2.0F; - } - - if(var10 >= 1.0F) { - var10 -= 2.0F; - } - - float var11 = var9 * var9 + var10 * var10; - float var12 = (float)Math.atan2((double)var10, (double)var9) + ((float)var2 / 32.0F * (float)Math.PI * 2.0F - var11 * 10.0F + (float)(var6 * 2)) * (float)(var6 * 2 - 1); - var12 = (MathHelper.sin(var12) + 1.0F) / 2.0F; - var12 /= var11 + 1.0F; - var5 += var12 * 0.5F; - } - - var5 += var1.nextFloat() * 0.1F; - var6 = (int)(var5 * 100.0F + 155.0F); - 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; - this.portalTextureData[var2][var16 * 4 + 0] = (byte)var13; - this.portalTextureData[var2][var16 * 4 + 1] = (byte)var14; - this.portalTextureData[var2][var16 * 4 + 2] = (byte)var6; - this.portalTextureData[var2][var16 * 4 + 3] = (byte)var15; - } - } - } - - } - - public void onTick() { - ++this.portalTickCounter; - byte[] var1 = this.portalTextureData[this.portalTickCounter & 31]; - - for(int var2 = 0; var2 < 256; ++var2) { - int var3 = var1[var2 * 4 + 0] & 255; - int var4 = var1[var2 * 4 + 1] & 255; - int var5 = var1[var2 * 4 + 2] & 255; - int var6 = var1[var2 * 4 + 3] & 255; - if(this.anaglyphEnabled) { - int var7 = (var3 * 30 + var4 * 59 + var5 * 11) / 100; - int var8 = (var3 * 30 + var4 * 70) / 100; - int var9 = (var3 * 30 + var5 * 70) / 100; - var3 = var7; - var4 = var8; - var5 = var9; - } - - this.imageData[var2 * 4 + 0] = (byte)var3; - this.imageData[var2 * 4 + 1] = (byte)var4; - this.imageData[var2 * 4 + 2] = (byte)var5; - this.imageData[var2 * 4 + 3] = (byte)var6; - } - - } -} diff --git a/src/net/minecraft/src/TextureWatchFX.java b/src/net/minecraft/src/TextureWatchFX.java deleted file mode 100644 index 09720bc..0000000 --- a/src/net/minecraft/src/TextureWatchFX.java +++ /dev/null @@ -1,100 +0,0 @@ -package net.minecraft.src; - -import org.lwjgl.opengl.GL11; - -import net.lax1dude.eaglercraft.BufferedImage; -import net.lax1dude.eaglercraft.ImageIO; -import net.minecraft.client.Minecraft; - -public class TextureWatchFX extends TextureFX { - private Minecraft mc; - private int[] watchIconImageData = new int[256]; - private int[] dialImageData = new int[256]; - private double field_4222_j; - private double field_4221_k; - - public TextureWatchFX(Minecraft var1) { - super(Item.pocketSundial.getIconFromDamage(0)); - this.mc = var1; - this.tileImage = 1; - - try { - BufferedImage var2 = ImageIO.read(GL11.getResource("/gui/items.png")); - int var3 = this.iconIndex % 16 * 16; - int var4 = this.iconIndex / 16 * 16; - var2.getRGB(var3, var4, 16, 16, this.watchIconImageData, 0, 16); - var2 = ImageIO.read(GL11.getResource("/misc/dial.png")); - var2.getRGB(0, 0, 16, 16, this.dialImageData, 0, 16); - } catch (Exception var5) { - var5.printStackTrace(); - } - - } - - public void onTick() { - double var1 = 0.0D; - if(this.mc.theWorld != null && this.mc.thePlayer != null) { - float var3 = this.mc.theWorld.getCelestialAngle(1.0F); - var1 = (double)(-var3 * (float)Math.PI * 2.0F); - if(this.mc.theWorld.worldProvider.isNether) { - var1 = Math.random() * (double)((float)Math.PI) * 2.0D; - } - } - - double var22; - for(var22 = var1 - this.field_4222_j; var22 < -Math.PI; var22 += Math.PI * 2.0D) { - } - - while(var22 >= Math.PI) { - var22 -= Math.PI * 2.0D; - } - - if(var22 < -1.0D) { - var22 = -1.0D; - } - - if(var22 > 1.0D) { - var22 = 1.0D; - } - - this.field_4221_k += var22 * 0.1D; - this.field_4221_k *= 0.8D; - this.field_4222_j += this.field_4221_k; - double var5 = Math.sin(this.field_4222_j); - double var7 = Math.cos(this.field_4222_j); - - for(int var9 = 0; var9 < 256; ++var9) { - int var10 = this.watchIconImageData[var9] >> 24 & 255; - int var11 = this.watchIconImageData[var9] >> 16 & 255; - int var12 = this.watchIconImageData[var9] >> 8 & 255; - int var13 = this.watchIconImageData[var9] >> 0 & 255; - 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; - 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; - var10 = this.dialImageData[var21] >> 24 & 255; - var11 = (this.dialImageData[var21] >> 16 & 255) * var11 / 255; - var12 = (this.dialImageData[var21] >> 8 & 255) * var18 / 255; - var13 = (this.dialImageData[var21] >> 0 & 255) * var18 / 255; - } - - if(this.anaglyphEnabled) { - int var23 = (var11 * 30 + var12 * 59 + var13 * 11) / 100; - int var15 = (var11 * 30 + var12 * 70) / 100; - int var24 = (var11 * 30 + var13 * 70) / 100; - var11 = var23; - var12 = var15; - var13 = var24; - } - - this.imageData[var9 * 4 + 0] = (byte)var11; - this.imageData[var9 * 4 + 1] = (byte)var12; - this.imageData[var9 * 4 + 2] = (byte)var13; - this.imageData[var9 * 4 + 3] = (byte)var10; - } - - } -} diff --git a/src/net/minecraft/src/TextureWaterFX.java b/src/net/minecraft/src/TextureWaterFX.java deleted file mode 100644 index 5548bf0..0000000 --- a/src/net/minecraft/src/TextureWaterFX.java +++ /dev/null @@ -1,85 +0,0 @@ -package net.minecraft.src; - -public class TextureWaterFX extends TextureFX { - protected float[] field_1158_g = new float[256]; - protected float[] field_1157_h = new float[256]; - protected float[] field_1156_i = new float[256]; - protected float[] field_1155_j = new float[256]; - private int tickCounter = 0; - - public TextureWaterFX() { - super(Block.waterMoving.blockIndexInTexture); - } - - public void onTick() { - ++this.tickCounter; - - int var1; - int var2; - float var3; - int var5; - int var6; - for(var1 = 0; var1 < 16; ++var1) { - for(var2 = 0; var2 < 16; ++var2) { - var3 = 0.0F; - - for(int var4 = var1 - 1; var4 <= var1 + 1; ++var4) { - var5 = var4 & 15; - var6 = var2 & 15; - var3 += this.field_1158_g[var5 + var6 * 16]; - } - - this.field_1157_h[var1 + var2 * 16] = var3 / 3.3F + this.field_1156_i[var1 + var2 * 16] * 0.8F; - } - } - - for(var1 = 0; var1 < 16; ++var1) { - for(var2 = 0; var2 < 16; ++var2) { - this.field_1156_i[var1 + var2 * 16] += this.field_1155_j[var1 + var2 * 16] * 0.05F; - if(this.field_1156_i[var1 + var2 * 16] < 0.0F) { - this.field_1156_i[var1 + var2 * 16] = 0.0F; - } - - this.field_1155_j[var1 + var2 * 16] -= 0.1F; - if(Math.random() < 0.05D) { - this.field_1155_j[var1 + var2 * 16] = 0.5F; - } - } - } - - float[] var12 = this.field_1157_h; - this.field_1157_h = this.field_1158_g; - this.field_1158_g = var12; - - for(var2 = 0; var2 < 256; ++var2) { - var3 = this.field_1158_g[var2]; - if(var3 > 1.0F) { - var3 = 1.0F; - } - - if(var3 < 0.0F) { - var3 = 0.0F; - } - - float var13 = var3 * var3; - var5 = (int)(32.0F + var13 * 32.0F); - var6 = (int)(50.0F + var13 * 64.0F); - int var7 = 255; - int var8 = (int)(146.0F + var13 * 50.0F); - if(this.anaglyphEnabled) { - int var9 = (var5 * 30 + var6 * 59 + var7 * 11) / 100; - int var10 = (var5 * 30 + var6 * 70) / 100; - int var11 = (var5 * 30 + var7 * 70) / 100; - var5 = var9; - var6 = var10; - var7 = var11; - } - - this.imageData[var2 * 4 + 0] = (byte)var5; - this.imageData[var2 * 4 + 1] = (byte)var6; - this.imageData[var2 * 4 + 2] = (byte)var7; - this.imageData[var2 * 4 + 3] = (byte)var8; - } - - } -} diff --git a/src/net/minecraft/src/TextureWaterFlowFX.java b/src/net/minecraft/src/TextureWaterFlowFX.java deleted file mode 100644 index 88b8d16..0000000 --- a/src/net/minecraft/src/TextureWaterFlowFX.java +++ /dev/null @@ -1,86 +0,0 @@ -package net.minecraft.src; - -public class TextureWaterFlowFX extends TextureFX { - protected float[] field_1138_g = new float[256]; - protected float[] field_1137_h = new float[256]; - protected float[] field_1136_i = new float[256]; - protected float[] field_1135_j = new float[256]; - private int field_1134_k = 0; - - public TextureWaterFlowFX() { - super(Block.waterMoving.blockIndexInTexture + 1); - this.tileSize = 2; - } - - public void onTick() { - ++this.field_1134_k; - - int var1; - int var2; - float var3; - int var5; - int var6; - for(var1 = 0; var1 < 16; ++var1) { - for(var2 = 0; var2 < 16; ++var2) { - var3 = 0.0F; - - for(int var4 = var2 - 2; var4 <= var2; ++var4) { - var5 = var1 & 15; - var6 = var4 & 15; - var3 += this.field_1138_g[var5 + var6 * 16]; - } - - this.field_1137_h[var1 + var2 * 16] = var3 / 3.2F + this.field_1136_i[var1 + var2 * 16] * 0.8F; - } - } - - for(var1 = 0; var1 < 16; ++var1) { - for(var2 = 0; var2 < 16; ++var2) { - this.field_1136_i[var1 + var2 * 16] += this.field_1135_j[var1 + var2 * 16] * 0.05F; - if(this.field_1136_i[var1 + var2 * 16] < 0.0F) { - this.field_1136_i[var1 + var2 * 16] = 0.0F; - } - - this.field_1135_j[var1 + var2 * 16] -= 0.3F; - if(Math.random() < 0.2D) { - this.field_1135_j[var1 + var2 * 16] = 0.5F; - } - } - } - - float[] var12 = this.field_1137_h; - this.field_1137_h = this.field_1138_g; - this.field_1138_g = var12; - - for(var2 = 0; var2 < 256; ++var2) { - var3 = this.field_1138_g[var2 - this.field_1134_k * 16 & 255]; - if(var3 > 1.0F) { - var3 = 1.0F; - } - - if(var3 < 0.0F) { - var3 = 0.0F; - } - - float var13 = var3 * var3; - var5 = (int)(32.0F + var13 * 32.0F); - var6 = (int)(50.0F + var13 * 64.0F); - int var7 = 255; - int var8 = (int)(146.0F + var13 * 50.0F); - if(this.anaglyphEnabled) { - int var9 = (var5 * 30 + var6 * 59 + var7 * 11) / 100; - int var10 = (var5 * 30 + var6 * 70) / 100; - int var11 = (var5 * 30 + var7 * 70) / 100; - var5 = var9; - var6 = var10; - var7 = var11; - } - - this.imageData[var2 * 4 + 0] = (byte)var5; - this.imageData[var2 * 4 + 1] = (byte)var6; - this.imageData[var2 * 4 + 2] = (byte)var7; - this.imageData[var2 * 4 + 3] = (byte)var8; - } - - } -}