Created
January 10, 2019 05:49
-
-
Save rmmh/78f1cbdcb509a8348262e19dfc85522b to your computer and use it in GitHub Desktop.
Minecraft Mod: Optimine 1.3_01v2 Source Code.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import org.lwjgl.opengl.GL11; | |
public abstract class bb { | |
protected pd b; | |
private ic a = new dx(); | |
private bw e = new bw(); | |
protected float c = 0.0F; | |
protected float d = 1.0F; | |
public abstract void a(om var1, double var2, double var4, double var6, float var8, float var9); | |
protected void a(String var1) { | |
hf var2 = this.b.e; | |
var2.b(var2.a(var1)); | |
} | |
protected boolean a(String var1, String var2) { | |
hf var3 = this.b.e; | |
int var4 = var3.a(var1, var2); | |
if(var4 >= 0) { | |
var3.b(var4); | |
return true; | |
} else { | |
return false; | |
} | |
} | |
private void a(om var1, double var2, double var4, double var6, float var8) { | |
GL11.glDisable(2896); | |
int var9 = qk.ar.bj; | |
int var10 = (var9 & 15) << 4; | |
int var11 = var9 & 240; | |
float var12 = (float)var10 / 256.0F; | |
float var13 = ((float)var10 + 15.99F) / 256.0F; | |
float var14 = (float)var11 / 256.0F; | |
float var15 = ((float)var11 + 15.99F) / 256.0F; | |
GL11.glPushMatrix(); | |
GL11.glTranslatef((float)var2, (float)var4, (float)var6); | |
float var16 = var1.bb * 1.4F; | |
GL11.glScalef(var16, var16, var16); | |
this.a("/terrain.png"); | |
kv var17 = kv.a; | |
float var18 = 1.0F; | |
float var19 = 0.5F; | |
float var20 = 0.0F; | |
float var21 = var1.bc / var1.bb; | |
GL11.glRotatef(-this.b.i, 0.0F, 1.0F, 0.0F); | |
GL11.glTranslatef(0.0F, 0.0F, -0.4F + (float)((int)var21) * 0.02F); | |
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); | |
var17.b(); | |
double shift = 0; | |
while(var21 > 0.0F) { | |
var17.a((double)(var18 - var19), (double)(0.0F - var20), shift, (double)var13, (double)var15); | |
var17.a((double)(0.0F - var19), (double)(0.0F - var20), shift, (double)var12, (double)var15); | |
var17.a((double)(0.0F - var19), (double)(1.4F - var20), shift, (double)var12, (double)var14); | |
var17.a((double)(var18 - var19), (double)(1.4F - var20), shift, (double)var13, (double)var14); | |
--var21; | |
--var20; | |
var18 *= 0.9F; | |
shift -= 0.04; | |
//GL11.glTranslatef(0.0F, 0.0F, -0.04F); | |
} | |
var17.a(); | |
GL11.glPopMatrix(); | |
GL11.glEnable(2896); | |
} | |
private void c(om var1, double var2, double var4, double var6, float var8, float var9) { | |
GL11.glEnable(3042); | |
GL11.glBlendFunc(770, 771); | |
hf var10 = this.b.e; | |
var10.b(var10.a("%clamp%/misc/shadow.png")); | |
dt var11 = this.b(); | |
GL11.glDepthMask(false); | |
float var12 = this.c; | |
double var13 = var1.bh + (var1.aI - var1.bh) * (double)var9; | |
double var15 = var1.bi + (var1.aJ - var1.bi) * (double)var9 + (double)var1.k_(); | |
double var17 = var1.bj + (var1.aK - var1.bj) * (double)var9; | |
int var19 = gq.b(var13 - (double)var12); | |
int var20 = gq.b(var13 + (double)var12); | |
int var21 = gq.b(var15 - (double)var12); | |
int var22 = gq.b(var15); | |
int var23 = gq.b(var17 - (double)var12); | |
int var24 = gq.b(var17 + (double)var12); | |
double var25 = var2 - var13; | |
double var27 = var4 - var15; | |
double var29 = var6 - var17; | |
kv var31 = kv.a; | |
var31.b(); | |
for(int var32 = var19; var32 <= var20; ++var32) { | |
for(int var33 = var21; var33 <= var22; ++var33) { | |
for(int var34 = var23; var34 <= var24; ++var34) { | |
int var35 = var11.a(var32, var33 - 1, var34); | |
if(var35 > 0 && var11.l(var32, var33, var34) > 3) { | |
this.a(qk.m[var35], var2, var4 + (double)var1.k_(), var6, var32, var33, var34, var8, var12, var25, var27 + (double)var1.k_(), var29); | |
} | |
} | |
} | |
} | |
var31.a(); | |
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); | |
GL11.glDisable(3042); | |
GL11.glDepthMask(true); | |
} | |
private dt b() { | |
return this.b.g; | |
} | |
private void a(qk var1, double var2, double var4, double var6, int var8, int var9, int var10, float var11, float var12, double var13, double var15, double var17) { | |
kv var19 = kv.a; | |
if(var1.b()) { | |
double var20 = ((double)var11 - (var4 - ((double)var9 + var15)) / 2.0D) * 0.5D * (double)this.b().c(var8, var9, var10); | |
if(var20 >= 0.0D) { | |
if(var20 > 1.0D) { | |
var20 = 1.0D; | |
} | |
var19.a(1.0F, 1.0F, 1.0F, (float)var20); | |
double var22 = (double)var8 + var1.bn + var13; | |
double var24 = (double)var8 + var1.bq + var13; | |
double var26 = (double)var9 + var1.bo + var15 + 0.015625D; | |
double var28 = (double)var10 + var1.bp + var17; | |
double var30 = (double)var10 + var1.bs + var17; | |
float var32 = (float)((var2 - var22) / 2.0D / (double)var12 + 0.5D); | |
float var33 = (float)((var2 - var24) / 2.0D / (double)var12 + 0.5D); | |
float var34 = (float)((var6 - var28) / 2.0D / (double)var12 + 0.5D); | |
float var35 = (float)((var6 - var30) / 2.0D / (double)var12 + 0.5D); | |
var19.a(var22, var26, var28, (double)var32, (double)var34); | |
var19.a(var22, var26, var30, (double)var32, (double)var35); | |
var19.a(var24, var26, var30, (double)var33, (double)var35); | |
var19.a(var24, var26, var28, (double)var33, (double)var34); | |
} | |
} | |
} | |
public static void a(di var0, double var1, double var3, double var5) { | |
GL11.glDisable(3553); | |
kv var7 = kv.a; | |
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); | |
var7.b(); | |
var7.b(var1, var3, var5); | |
var7.b(0.0F, 0.0F, -1.0F); | |
var7.a(var0.a, var0.e, var0.c); | |
var7.a(var0.d, var0.e, var0.c); | |
var7.a(var0.d, var0.b, var0.c); | |
var7.a(var0.a, var0.b, var0.c); | |
var7.b(0.0F, 0.0F, 1.0F); | |
var7.a(var0.a, var0.b, var0.f); | |
var7.a(var0.d, var0.b, var0.f); | |
var7.a(var0.d, var0.e, var0.f); | |
var7.a(var0.a, var0.e, var0.f); | |
var7.b(0.0F, -1.0F, 0.0F); | |
var7.a(var0.a, var0.b, var0.c); | |
var7.a(var0.d, var0.b, var0.c); | |
var7.a(var0.d, var0.b, var0.f); | |
var7.a(var0.a, var0.b, var0.f); | |
var7.b(0.0F, 1.0F, 0.0F); | |
var7.a(var0.a, var0.e, var0.f); | |
var7.a(var0.d, var0.e, var0.f); | |
var7.a(var0.d, var0.e, var0.c); | |
var7.a(var0.a, var0.e, var0.c); | |
var7.b(-1.0F, 0.0F, 0.0F); | |
var7.a(var0.a, var0.b, var0.f); | |
var7.a(var0.a, var0.e, var0.f); | |
var7.a(var0.a, var0.e, var0.c); | |
var7.a(var0.a, var0.b, var0.c); | |
var7.b(1.0F, 0.0F, 0.0F); | |
var7.a(var0.d, var0.b, var0.c); | |
var7.a(var0.d, var0.e, var0.c); | |
var7.a(var0.d, var0.e, var0.f); | |
var7.a(var0.d, var0.b, var0.f); | |
var7.b(0.0D, 0.0D, 0.0D); | |
var7.a(); | |
GL11.glEnable(3553); | |
} | |
public static void a(di var0) { | |
kv var1 = kv.a; | |
var1.b(); | |
var1.a(var0.a, var0.e, var0.c); | |
var1.a(var0.d, var0.e, var0.c); | |
var1.a(var0.d, var0.b, var0.c); | |
var1.a(var0.a, var0.b, var0.c); | |
var1.a(var0.a, var0.b, var0.f); | |
var1.a(var0.d, var0.b, var0.f); | |
var1.a(var0.d, var0.e, var0.f); | |
var1.a(var0.a, var0.e, var0.f); | |
var1.a(var0.a, var0.b, var0.c); | |
var1.a(var0.d, var0.b, var0.c); | |
var1.a(var0.d, var0.b, var0.f); | |
var1.a(var0.a, var0.b, var0.f); | |
var1.a(var0.a, var0.e, var0.f); | |
var1.a(var0.d, var0.e, var0.f); | |
var1.a(var0.d, var0.e, var0.c); | |
var1.a(var0.a, var0.e, var0.c); | |
var1.a(var0.a, var0.b, var0.f); | |
var1.a(var0.a, var0.e, var0.f); | |
var1.a(var0.a, var0.e, var0.c); | |
var1.a(var0.a, var0.b, var0.c); | |
var1.a(var0.d, var0.b, var0.c); | |
var1.a(var0.d, var0.e, var0.c); | |
var1.a(var0.d, var0.e, var0.f); | |
var1.a(var0.d, var0.b, var0.f); | |
var1.a(); | |
} | |
public void a(pd var1) { | |
this.b = var1; | |
} | |
public void b(om var1, double var2, double var4, double var6, float var8, float var9) { | |
if(this.b.k.i && this.c > 0.0F) { | |
double var10 = this.b.a(var1.aI, var1.aJ, var1.aK); | |
float var12 = (float)((1.0D - var10 / 256.0D) * (double)this.d); | |
if(var12 > 0.0F) { | |
this.c(var1, var2, var4, var6, var12, var9); | |
} | |
} | |
if(var1.ab()) { | |
this.a(var1, var2, var4, var6, var9); | |
} | |
} | |
public oi a() { | |
return this.b.a(); | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.util.ArrayList; | |
import java.util.HashSet; | |
import java.util.List; | |
import org.lwjgl.opengl.GL11; | |
public class ck { | |
public dt a; | |
private int C = -1; | |
private static kv D = kv.a; | |
public static int b = 0; | |
public int c; | |
public int d; | |
public int e; | |
public int f; | |
public int g; | |
public int h; | |
public int i; | |
public int j; | |
public int k; | |
public int l; | |
public int m; | |
public int n; | |
public boolean o = false; | |
public boolean[] p = new boolean[2]; | |
public int q; | |
public int r; | |
public int s; | |
public float t; | |
public boolean u; | |
public di v; | |
public int w; | |
public boolean x = true; | |
public boolean y; | |
public int z; | |
public boolean A; | |
private boolean E = false; | |
public List B = new ArrayList(); | |
private List F; | |
public ck(dt var1, List var2, int var3, int var4, int var5, int var6, int var7) { | |
this.a = var1; | |
this.F = var2; | |
this.f = this.g = this.h = var6; | |
this.t = gq.c((float)(this.f * this.f + this.g * this.g + this.h * this.h)) / 2.0F; | |
this.C = var7; | |
this.c = -999; | |
this.a(var3, var4, var5); | |
this.u = false; | |
} | |
public void a(int var1, int var2, int var3) { | |
if(var1 != this.c || var2 != this.d || var3 != this.e) { | |
this.b(); | |
this.c = var1; | |
this.d = var2; | |
this.e = var3; | |
this.q = var1 + this.f / 2; | |
this.r = var2 + this.g / 2; | |
this.s = var3 + this.h / 2; | |
this.l = var1 & 1023; | |
this.m = var2; | |
this.n = var3 & 1023; | |
this.i = var1 - this.l; | |
this.j = var2 - this.m; | |
this.k = var3 - this.n; | |
float var4 = 6.0F; | |
this.v = di.a((double)((float)var1 - var4), (double)((float)var2 - var4), (double)((float)var3 - var4), (double)((float)(var1 + this.f) + var4), (double)((float)(var2 + this.g) + var4), (double)((float)(var3 + this.h) + var4)); | |
GL11.glNewList(this.C + 2, 4864); | |
al.a(di.b((double)((float)this.l - var4), (double)((float)this.m - var4), (double)((float)this.n - var4), (double)((float)(this.l + this.f) + var4), (double)((float)(this.m + this.g) + var4), (double)((float)(this.n + this.h) + var4))); | |
GL11.glEndList(); | |
this.f(); | |
} | |
} | |
private void g() { | |
GL11.glTranslatef((float)this.l, (float)this.m, (float)this.n); | |
} | |
public void a() { | |
if(this.u) { | |
++b; | |
int var1 = this.c; | |
int var2 = this.d; | |
int var3 = this.e; | |
int var4 = this.c + this.f; | |
int var5 = this.d + this.g; | |
int var6 = this.e + this.h; | |
for(int var7 = 0; var7 < 2; ++var7) { | |
this.p[var7] = true; | |
} | |
it.a = false; | |
HashSet var21 = new HashSet(); | |
var21.addAll(this.B); | |
this.B.clear(); | |
byte var8 = 1; | |
dn var9 = new dn(this.a, var1 - var8, var2 - var8, var3 - var8, var4 + var8, var5 + var8, var6 + var8); | |
bw var10 = new bw(var9); | |
for(int var11 = 0; var11 < 2; ++var11) { | |
boolean var12 = false; | |
boolean var13 = false; | |
boolean madeList = false; | |
for(int var15 = var2; var15 < var5; ++var15) { | |
for(int var16 = var3; var16 < var6; ++var16) { | |
for(int var17 = var1; var17 < var4; ++var17) { | |
int var18 = var9.a(var17, var15, var16); | |
if(var18 > 0) { | |
if(!madeList) { | |
madeList = true; | |
GL11.glNewList(this.C + var11, 4864); | |
//GL11.glPushMatrix(); | |
//this.g(); | |
//float var19 = 1.000001F; | |
//GL11.glTranslatef((float)(-this.h) / 2.0F, (float)(-this.g) / 2.0F, (float)(-this.h) / 2.0F); | |
//GL11.glScalef(var19, var19, var19); | |
//GL11.glTranslatef((float)this.h / 2.0F, (float)this.g / 2.0F, (float)this.h / 2.0F); | |
D.setRenderingChunk(true); | |
D.b(); | |
//D.b((double)(-this.c), (double)(-this.d), (double)(-this.e)); | |
} | |
if(var11 == 0 && qk.p[var18]) { | |
ll var23 = var9.b(var17, var15, var16); | |
if(is.a.a(var23)) { | |
this.B.add(var23); | |
} | |
} | |
qk var24 = qk.m[var18]; | |
int var20 = var24.c(); | |
if(var20 != var11) { | |
var12 = true; | |
} else if(var20 == var11) { | |
var13 |= var10.a(var24, var17, var15, var16); | |
} | |
} | |
} | |
} | |
} | |
if(madeList) { | |
D.a(); | |
//GL11.glPopMatrix(); | |
GL11.glEndList(); | |
D.setRenderingChunk(false); | |
//GL11.glPopMatrix(); | |
//D.b(0.0D, 0.0D, 0.0D); | |
} else { | |
var13 = false; | |
} | |
if(var13) { | |
this.p[var11] = false; | |
} | |
if(!var12) { | |
break; | |
} | |
} | |
HashSet var22 = new HashSet(); | |
var22.addAll(this.B); | |
var22.removeAll(var21); | |
this.F.addAll(var22); | |
var21.removeAll(this.B); | |
this.F.removeAll(var21); | |
this.A = it.a; | |
this.E = true; | |
} | |
} | |
public float a(om var1) { | |
float var2 = (float)(var1.aI - (double)this.q); | |
float var3 = (float)(var1.aJ - (double)this.r); | |
float var4 = (float)(var1.aK - (double)this.s); | |
return var2 * var2 + var3 * var3 + var4 * var4; | |
} | |
public void b() { | |
for(int var1 = 0; var1 < 2; ++var1) { | |
this.p[var1] = true; | |
} | |
this.o = false; | |
this.E = false; | |
} | |
public void c() { | |
this.b(); | |
this.a = null; | |
} | |
public int a(int var1) { | |
return !this.o ? -1 : (!this.p[var1] ? this.C + var1 : -1); | |
} | |
public void a(tl var1) { | |
this.o = var1.a(this.v); | |
} | |
public void d() { | |
GL11.glCallList(this.C + 2); | |
} | |
public boolean e() { | |
return !this.E ? false : this.p[0] && this.p[1]; | |
} | |
public void f() { | |
this.u = true; | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.nio.IntBuffer; | |
import java.util.ArrayList; | |
import java.util.Arrays; | |
import java.util.Collections; | |
import java.util.List; | |
import java.util.Random; | |
import net.minecraft.client.Minecraft; | |
import org.lwjgl.opengl.ARBOcclusionQuery; | |
import org.lwjgl.opengl.GL11; | |
import org.lwjgl.BufferUtils; | |
public class h implements ly { | |
public List a = new ArrayList(); | |
private dt k; | |
private hf l; | |
private List m = new ArrayList(); | |
private ck[] n; | |
private ck[] o; | |
private int p; | |
private int q; | |
private int r; | |
private int s; | |
private Minecraft t; | |
private bw u; | |
private IntBuffer v; | |
private boolean w = false; | |
private int x = 0; | |
private int y; | |
private int z; | |
private int A; | |
private int B; | |
private int C; | |
private int D; | |
private int E; | |
private int F; | |
private int G; | |
private int H = -1; | |
private int I = 2; | |
private int J; | |
private int K; | |
private int L; | |
int[] b = new int['\uc350']; | |
IntBuffer c = er.c(64); | |
private int M; | |
private int N; | |
private int O; | |
private int P; | |
private int Q; | |
private int R; | |
private IntBuffer chunkLists = BufferUtils.createIntBuffer(65536); | |
int d = 0; | |
int e = er.a(1); | |
double f = -9999.0D; | |
double g = -9999.0D; | |
double h = -9999.0D; | |
public float i; | |
int j = 0; | |
public h(Minecraft var1, hf var2) { | |
this.t = var1; | |
this.l = var2; | |
byte var3 = 64; | |
this.s = er.a(var3 * var3 * var3 * 3); | |
this.w = var1.m().a(); | |
if(this.w) { | |
this.c.clear(); | |
this.v = er.c(var3 * var3 * var3); | |
this.v.clear(); | |
this.v.position(0); | |
this.v.limit(var3 * var3 * var3); | |
ARBOcclusionQuery.glGenQueriesARB(this.v); | |
} | |
this.y = er.a(3); | |
GL11.glPushMatrix(); | |
GL11.glNewList(this.y, 4864); | |
this.f(); | |
GL11.glEndList(); | |
GL11.glPopMatrix(); | |
kv var4 = kv.a; | |
this.z = this.y + 1; | |
GL11.glNewList(this.z, 4864); | |
byte var6 = 64; | |
int var7 = 256 / var6 + 2; | |
float var5 = 16.0F; | |
int var8; | |
int var9; | |
for(var8 = -var6 * var7; var8 <= var6 * var7; var8 += var6) { | |
for(var9 = -var6 * var7; var9 <= var6 * var7; var9 += var6) { | |
var4.b(); | |
var4.a((double)(var8 + 0), (double)var5, (double)(var9 + 0)); | |
var4.a((double)(var8 + var6), (double)var5, (double)(var9 + 0)); | |
var4.a((double)(var8 + var6), (double)var5, (double)(var9 + var6)); | |
var4.a((double)(var8 + 0), (double)var5, (double)(var9 + var6)); | |
var4.a(); | |
} | |
} | |
GL11.glEndList(); | |
this.A = this.y + 2; | |
GL11.glNewList(this.A, 4864); | |
var5 = -16.0F; | |
var4.b(); | |
for(var8 = -var6 * var7; var8 <= var6 * var7; var8 += var6) { | |
for(var9 = -var6 * var7; var9 <= var6 * var7; var9 += var6) { | |
var4.a((double)(var8 + var6), (double)var5, (double)(var9 + 0)); | |
var4.a((double)(var8 + 0), (double)var5, (double)(var9 + 0)); | |
var4.a((double)(var8 + 0), (double)var5, (double)(var9 + var6)); | |
var4.a((double)(var8 + var6), (double)var5, (double)(var9 + var6)); | |
} | |
} | |
var4.a(); | |
GL11.glEndList(); | |
} | |
private void f() { | |
Random var1 = new Random(10842L); | |
kv var2 = kv.a; | |
var2.b(); | |
for(int var3 = 0; var3 < 1500; ++var3) { | |
double var4 = (double)(var1.nextFloat() * 2.0F - 1.0F); | |
double var6 = (double)(var1.nextFloat() * 2.0F - 1.0F); | |
double var8 = (double)(var1.nextFloat() * 2.0F - 1.0F); | |
double var10 = (double)(0.25F + var1.nextFloat() * 0.25F); | |
double var12 = var4 * var4 + var6 * var6 + var8 * var8; | |
if(var12 < 1.0D && var12 > 0.01D) { | |
var12 = 1.0D / Math.sqrt(var12); | |
var4 *= var12; | |
var6 *= var12; | |
var8 *= var12; | |
double var14 = var4 * 100.0D; | |
double var16 = var6 * 100.0D; | |
double var18 = var8 * 100.0D; | |
double var20 = Math.atan2(var4, var8); | |
double var22 = Math.sin(var20); | |
double var24 = Math.cos(var20); | |
double var26 = Math.atan2(Math.sqrt(var4 * var4 + var8 * var8), var6); | |
double var28 = Math.sin(var26); | |
double var30 = Math.cos(var26); | |
double var32 = var1.nextDouble() * 3.141592653589793D * 2.0D; | |
double var34 = Math.sin(var32); | |
double var36 = Math.cos(var32); | |
for(int var38 = 0; var38 < 4; ++var38) { | |
double var39 = 0.0D; | |
double var41 = (double)((var38 & 2) - 1) * var10; | |
double var43 = (double)((var38 + 1 & 2) - 1) * var10; | |
double var47 = var41 * var36 - var43 * var34; | |
double var49 = var43 * var36 + var41 * var34; | |
double var53 = var47 * var28 + var39 * var30; | |
double var55 = var39 * var28 - var47 * var30; | |
double var57 = var55 * var22 - var49 * var24; | |
double var61 = var49 * var22 + var55 * var24; | |
var2.a(var14 + var57, var16 + var53, var18 + var61); | |
} | |
} | |
} | |
var2.a(); | |
} | |
public void a(dt var1) { | |
if(this.k != null) { | |
this.k.b((ly)this); | |
} | |
this.f = -9999.0D; | |
this.g = -9999.0D; | |
this.h = -9999.0D; | |
pd.a.a(var1); | |
this.k = var1; | |
this.u = new bw(var1); | |
if(var1 != null) { | |
var1.a((ly)this); | |
this.a(); | |
} | |
} | |
public void a() { | |
qk.K.a(this.t.x.i); | |
this.H = this.t.x.e; | |
int var1; | |
if(this.o != null) { | |
for(var1 = 0; var1 < this.o.length; ++var1) { | |
this.o[var1].c(); | |
} | |
} | |
var1 = 64 << 3 - this.H; | |
if(var1 > 400) { | |
var1 = 400; | |
} | |
this.p = var1 / 16 + 1; | |
this.q = 8; | |
this.r = var1 / 16 + 1; | |
this.o = new ck[this.p * this.q * this.r]; | |
this.n = new ck[this.p * this.q * this.r]; | |
int var2 = 0; | |
int var3 = 0; | |
this.B = 0; | |
this.C = 0; | |
this.D = 0; | |
this.E = this.p; | |
this.F = this.q; | |
this.G = this.r; | |
int var4; | |
for(var4 = 0; var4 < this.m.size(); ++var4) { | |
((ck)this.m.get(var4)).u = false; | |
} | |
this.m.clear(); | |
this.a.clear(); | |
for(var4 = 0; var4 < this.p; ++var4) { | |
for(int var5 = 0; var5 < this.q; ++var5) { | |
for(int var6 = 0; var6 < this.r; ++var6) { | |
this.o[(var6 * this.q + var5) * this.p + var4] = new ck(this.k, this.a, var4 * 16, var5 * 16, var6 * 16, 16, this.s + var2); | |
if(this.w) { | |
this.o[(var6 * this.q + var5) * this.p + var4].z = this.v.get(var3); | |
} | |
this.o[(var6 * this.q + var5) * this.p + var4].y = false; | |
this.o[(var6 * this.q + var5) * this.p + var4].x = true; | |
this.o[(var6 * this.q + var5) * this.p + var4].o = true; | |
this.o[(var6 * this.q + var5) * this.p + var4].w = var3++; | |
this.o[(var6 * this.q + var5) * this.p + var4].f(); | |
this.n[(var6 * this.q + var5) * this.p + var4] = this.o[(var6 * this.q + var5) * this.p + var4]; | |
this.m.add(this.o[(var6 * this.q + var5) * this.p + var4]); | |
var2 += 3; | |
} | |
} | |
} | |
if(this.k != null) { | |
iz var7 = this.t.h; | |
if(var7 != null) { | |
this.b(gq.b(var7.aI), gq.b(var7.aJ), gq.b(var7.aK)); | |
Arrays.sort(this.n, new hk(var7)); | |
} | |
} | |
this.I = 2; | |
} | |
public void a(ay var1, tl var2, float var3) { | |
if(this.I > 0) { | |
--this.I; | |
} else { | |
is.a.a(this.k, this.l, this.t.p, this.t.h, var3); | |
pd.a.a(this.k, this.l, this.t.p, this.t.h, this.t.x, var3); | |
this.J = 0; | |
this.K = 0; | |
this.L = 0; | |
iz var4 = this.t.h; | |
pd.b = var4.bh + (var4.aI - var4.bh) * (double)var3; | |
pd.c = var4.bi + (var4.aJ - var4.bi) * (double)var3; | |
pd.d = var4.bj + (var4.aK - var4.bj) * (double)var3; | |
is.b = var4.bh + (var4.aI - var4.bh) * (double)var3; | |
is.c = var4.bi + (var4.aJ - var4.bi) * (double)var3; | |
is.d = var4.bj + (var4.aK - var4.bj) * (double)var3; | |
List var5 = this.k.m(); | |
this.J = var5.size(); | |
int var6; | |
for(var6 = 0; var6 < var5.size(); ++var6) { | |
om var7 = (om)var5.get(var6); | |
if(var7.a(var1) && var2.a(var7.aS) && (var7 != this.t.h || this.t.x.z || this.t.h.K()) && this.k.h(gq.b(var7.aI), gq.b(var7.aJ), gq.b(var7.aK))) { | |
++this.K; | |
pd.a.a(var7, var3); | |
} | |
} | |
for(var6 = 0; var6 < this.a.size(); ++var6) { | |
is.a.a((ll)this.a.get(var6), var3); | |
} | |
} | |
} | |
public String b() { | |
return "C: " + this.P + "/" + this.M + ". F: " + this.N + ", O: " + this.O + ", E: " + this.Q; | |
} | |
public String c() { | |
return "E: " + this.K + "/" + this.J + ". B: " + this.L + ", I: " + (this.J - this.L - this.K); | |
} | |
private void b(int var1, int var2, int var3) { | |
var1 -= 8; | |
var2 -= 8; | |
var3 -= 8; | |
this.B = Integer.MAX_VALUE; | |
this.C = Integer.MAX_VALUE; | |
this.D = Integer.MAX_VALUE; | |
this.E = Integer.MIN_VALUE; | |
this.F = Integer.MIN_VALUE; | |
this.G = Integer.MIN_VALUE; | |
int var4 = this.p * 16; | |
int var5 = var4 / 2; | |
for(int var6 = 0; var6 < this.p; ++var6) { | |
int var7 = var6 * 16; | |
int var8 = var7 + var5 - var1; | |
if(var8 < 0) { | |
var8 -= var4 - 1; | |
} | |
var8 /= var4; | |
var7 -= var8 * var4; | |
if(var7 < this.B) { | |
this.B = var7; | |
} | |
if(var7 > this.E) { | |
this.E = var7; | |
} | |
for(int var9 = 0; var9 < this.r; ++var9) { | |
int var10 = var9 * 16; | |
int var11 = var10 + var5 - var3; | |
if(var11 < 0) { | |
var11 -= var4 - 1; | |
} | |
var11 /= var4; | |
var10 -= var11 * var4; | |
if(var10 < this.D) { | |
this.D = var10; | |
} | |
if(var10 > this.G) { | |
this.G = var10; | |
} | |
for(int var12 = 0; var12 < this.q; ++var12) { | |
int var13 = var12 * 16; | |
if(var13 < this.C) { | |
this.C = var13; | |
} | |
if(var13 > this.F) { | |
this.F = var13; | |
} | |
ck var14 = this.o[(var9 * this.q + var12) * this.p + var6]; | |
boolean var15 = var14.u; | |
var14.a(var7, var13, var10); | |
if(!var15 && var14.u) { | |
this.m.add(var14); | |
} | |
} | |
} | |
} | |
} | |
public int a(iz var1, int var2, double var3) { | |
for(int var5 = 0; var5 < 10; ++var5) { | |
this.R = (this.R + 1) % this.o.length; | |
ck var6 = this.o[this.R]; | |
if(var6.u && !this.m.contains(var6)) { | |
this.m.add(var6); | |
} | |
} | |
if(this.t.x.e != this.H) { | |
this.a(); | |
} | |
if(var2 == 0) { | |
this.M = 0; | |
this.N = 0; | |
this.O = 0; | |
this.P = 0; | |
this.Q = 0; | |
} | |
double var33 = var1.bh + (var1.aI - var1.bh) * var3; | |
double var7 = var1.bi + (var1.aJ - var1.bi) * var3; | |
double var9 = var1.bj + (var1.aK - var1.bj) * var3; | |
double var11 = var1.aI - this.f; | |
double var13 = var1.aJ - this.g; | |
double var15 = var1.aK - this.h; | |
if(var11 * var11 + var13 * var13 + var15 * var15 > 16.0D) { | |
this.f = var1.aI; | |
this.g = var1.aJ; | |
this.h = var1.aK; | |
this.b(gq.b(var1.aI), gq.b(var1.aJ), gq.b(var1.aK)); | |
Arrays.sort(this.n, new hk(var1)); | |
} | |
byte var17 = 0; | |
int var34; | |
if(this.w && !this.t.x.g && var2 == 0) { | |
byte var18 = 0; | |
int var19 = 16; | |
this.a(var18, var19); | |
for(int var20 = var18; var20 < var19; ++var20) { | |
this.n[var20].x = true; | |
} | |
var34 = var17 + this.a(var18, var19, var2, var3); | |
do { | |
int var35 = var19; | |
var19 *= 2; | |
if(var19 > this.n.length) { | |
var19 = this.n.length; | |
} | |
GL11.glDisable(3553); | |
GL11.glDisable(2896); | |
GL11.glDisable(3008); | |
GL11.glDisable(2912); | |
GL11.glColorMask(false, false, false, false); | |
GL11.glDepthMask(false); | |
this.a(var35, var19); | |
GL11.glPushMatrix(); | |
float var36 = 0.0F; | |
float var21 = 0.0F; | |
float var22 = 0.0F; | |
for(int var23 = var35; var23 < var19; ++var23) { | |
if(this.n[var23].e()) { | |
this.n[var23].o = false; | |
} else { | |
if(!this.n[var23].o) { | |
this.n[var23].x = true; | |
} | |
if(this.n[var23].o && !this.n[var23].y) { | |
float var24 = gq.c(this.n[var23].a((om)var1)); | |
int var25 = (int)(1.0F + var24 / 128.0F); | |
if(this.x % var25 == var23 % var25) { | |
ck var26 = this.n[var23]; | |
float var27 = (float)((double)var26.i - var33); | |
float var28 = (float)((double)var26.j - var7); | |
float var29 = (float)((double)var26.k - var9); | |
float var30 = var27 - var36; | |
float var31 = var28 - var21; | |
float var32 = var29 - var22; | |
if(var30 != 0.0F || var31 != 0.0F || var32 != 0.0F) { | |
GL11.glTranslatef(var30, var31, var32); | |
var36 += var30; | |
var21 += var31; | |
var22 += var32; | |
} | |
ARBOcclusionQuery.glBeginQueryARB('\u8914', this.n[var23].z); | |
this.n[var23].d(); | |
ARBOcclusionQuery.glEndQueryARB('\u8914'); | |
this.n[var23].y = true; | |
} | |
} | |
} | |
} | |
GL11.glPopMatrix(); | |
GL11.glColorMask(true, true, true, true); | |
GL11.glDepthMask(true); | |
GL11.glEnable(3553); | |
GL11.glEnable(3008); | |
GL11.glEnable(2912); | |
var34 += this.a(var35, var19, var2, var3); | |
} while(var19 < this.n.length); | |
} else { | |
var34 = var17 + this.a(0, this.n.length, var2, var3); | |
} | |
return var34; | |
} | |
private void a(int var1, int var2) { | |
for(int var3 = var1; var3 < var2; ++var3) { | |
if(this.n[var3].y) { | |
this.c.clear(); | |
ARBOcclusionQuery.glGetQueryObjectuARB(this.n[var3].z, '\u8867', this.c); | |
if(this.c.get(0) != 0) { | |
this.n[var3].y = false; | |
this.c.clear(); | |
ARBOcclusionQuery.glGetQueryObjectuARB(this.n[var3].z, '\u8866', this.c); | |
this.n[var3].x = this.c.get(0) != 0; | |
} | |
} | |
} | |
} | |
private int a(int firstChunk, int lastChunk, int passNumber, double var4) { | |
int nRendered = 0; | |
chunkLists.clear(); | |
for(int i = firstChunk; i < lastChunk; ++i) { | |
if(passNumber == 0) { | |
++this.M; | |
if(this.n[i].p[passNumber]) { | |
++this.Q; | |
} else if(!this.n[i].o) { | |
++this.N; | |
} else if(this.w && !this.n[i].x) { | |
++this.O; | |
} else { | |
++this.P; | |
} | |
} | |
if(!this.n[i].p[passNumber] && this.n[i].o && this.n[i].x) { | |
int listN = this.n[i].a(passNumber); | |
if(listN >= 0) { | |
chunkLists.put(listN); | |
++nRendered; | |
} | |
} | |
} | |
chunkLists.flip(); | |
iz var19 = this.t.h; | |
double var20 = var19.bh + (var19.aI - var19.bh) * var4; | |
double var10 = var19.bi + (var19.aJ - var19.bi) * var4; | |
double var12 = var19.bj + (var19.aK - var19.bj) * var4; | |
GL11.glTranslatef((float)-var20, (float)-var10, (float)-var12); | |
GL11.glCallLists(chunkLists); | |
GL11.glTranslatef((float)var20, (float)var10, (float)var12); | |
return nRendered; | |
} | |
public void d() { | |
++this.x; | |
} | |
public void a(float var1) { | |
if(!this.t.e.m.c) { | |
GL11.glDisable(3553); | |
ay var2 = this.k.a(this.t.h, var1); | |
float var3 = (float)var2.a; | |
float var4 = (float)var2.b; | |
float var5 = (float)var2.c; | |
float var7; | |
float var8; | |
if(this.t.x.g) { | |
float var6 = (var3 * 30.0F + var4 * 59.0F + var5 * 11.0F) / 100.0F; | |
var7 = (var3 * 30.0F + var4 * 70.0F) / 100.0F; | |
var8 = (var3 * 30.0F + var5 * 70.0F) / 100.0F; | |
var3 = var6; | |
var4 = var7; | |
var5 = var8; | |
} | |
GL11.glColor3f(var3, var4, var5); | |
kv var14 = kv.a; | |
GL11.glDepthMask(false); | |
GL11.glEnable(2912); | |
GL11.glColor3f(var3, var4, var5); | |
GL11.glCallList(this.z); | |
GL11.glDisable(2912); | |
GL11.glDisable(3008); | |
GL11.glEnable(3042); | |
GL11.glBlendFunc(770, 771); | |
float[] var15 = this.k.m.b(this.k.b(var1), var1); | |
float var11; | |
if(var15 != null) { | |
GL11.glDisable(3553); | |
GL11.glShadeModel(7425); | |
GL11.glPushMatrix(); | |
GL11.glRotatef(90.0F, 1.0F, 0.0F, 0.0F); | |
var8 = this.k.b(var1); | |
GL11.glRotatef(var8 > 0.5F ? 180.0F : 0.0F, 0.0F, 0.0F, 1.0F); | |
var14.a(6); | |
var14.a(var15[0], var15[1], var15[2], var15[3]); | |
var14.a(0.0D, 100.0D, 0.0D); | |
byte var9 = 16; | |
var14.a(var15[0], var15[1], var15[2], 0.0F); | |
for(int var10 = 0; var10 <= var9; ++var10) { | |
var11 = (float)var10 * 3.1415927F * 2.0F / (float)var9; | |
float var12 = gq.a(var11); | |
float var13 = gq.b(var11); | |
var14.a((double)(var12 * 120.0F), (double)(var13 * 120.0F), (double)(-var13 * 40.0F * var15[3])); | |
} | |
var14.a(); | |
GL11.glPopMatrix(); | |
GL11.glShadeModel(7424); | |
} | |
GL11.glEnable(3553); | |
GL11.glBlendFunc(1, 1); | |
GL11.glPushMatrix(); | |
var7 = 0.0F; | |
var8 = 0.0F; | |
float var16 = 0.0F; | |
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); | |
GL11.glTranslatef(var7, var8, var16); | |
GL11.glRotatef(0.0F, 0.0F, 0.0F, 1.0F); | |
GL11.glRotatef(this.k.b(var1) * 360.0F, 1.0F, 0.0F, 0.0F); | |
float var17 = 30.0F; | |
GL11.glBindTexture(3553, this.l.a("/terrain/sun.png")); | |
var14.b(); | |
var14.a((double)(-var17), 100.0D, (double)(-var17), 0.0D, 0.0D); | |
var14.a((double)var17, 100.0D, (double)(-var17), 1.0D, 0.0D); | |
var14.a((double)var17, 100.0D, (double)var17, 1.0D, 1.0D); | |
var14.a((double)(-var17), 100.0D, (double)var17, 0.0D, 1.0D); | |
var14.a(); | |
var17 = 20.0F; | |
GL11.glBindTexture(3553, this.l.a("/terrain/moon.png")); | |
var14.b(); | |
var14.a((double)(-var17), -100.0D, (double)var17, 1.0D, 1.0D); | |
var14.a((double)var17, -100.0D, (double)var17, 0.0D, 1.0D); | |
var14.a((double)var17, -100.0D, (double)(-var17), 0.0D, 0.0D); | |
var14.a((double)(-var17), -100.0D, (double)(-var17), 1.0D, 0.0D); | |
var14.a(); | |
GL11.glDisable(3553); | |
var11 = this.k.e(var1); | |
if(var11 > 0.0F) { | |
GL11.glColor4f(var11, var11, var11, var11); | |
GL11.glCallList(this.y); | |
} | |
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); | |
GL11.glDisable(3042); | |
GL11.glEnable(3008); | |
GL11.glEnable(2912); | |
GL11.glPopMatrix(); | |
GL11.glColor3f(var3 * 0.2F + 0.04F, var4 * 0.2F + 0.04F, var5 * 0.6F + 0.1F); | |
GL11.glDisable(3553); | |
GL11.glCallList(this.A); | |
GL11.glEnable(3553); | |
GL11.glDepthMask(true); | |
} | |
} | |
public void b(float var1) { | |
if(!this.t.e.m.c) { | |
if(this.t.x.i) { | |
this.c(var1); | |
} else { | |
GL11.glDisable(2884); | |
float var2 = (float)(this.t.h.bi + (this.t.h.aJ - this.t.h.bi) * (double)var1); | |
byte var3 = 32; | |
int var4 = 256 / var3; | |
kv var5 = kv.a; | |
GL11.glBindTexture(3553, this.l.a("/environment/clouds.png")); | |
GL11.glEnable(3042); | |
GL11.glBlendFunc(770, 771); | |
ay var6 = this.k.c(var1); | |
float var7 = (float)var6.a; | |
float var8 = (float)var6.b; | |
float var9 = (float)var6.c; | |
float var10; | |
if(this.t.x.g) { | |
var10 = (var7 * 30.0F + var8 * 59.0F + var9 * 11.0F) / 100.0F; | |
float var11 = (var7 * 30.0F + var8 * 70.0F) / 100.0F; | |
float var12 = (var7 * 30.0F + var9 * 70.0F) / 100.0F; | |
var7 = var10; | |
var8 = var11; | |
var9 = var12; | |
} | |
var10 = 4.8828125E-4F; | |
double var22 = this.t.h.aF + (this.t.h.aI - this.t.h.aF) * (double)var1 + (double)(((float)this.x + var1) * 0.03F); | |
double var13 = this.t.h.aH + (this.t.h.aK - this.t.h.aH) * (double)var1; | |
int var15 = gq.b(var22 / 2048.0D); | |
int var16 = gq.b(var13 / 2048.0D); | |
var22 -= (double)(var15 * 2048); | |
var13 -= (double)(var16 * 2048); | |
float var17 = 120.0F - var2 + 0.33F; | |
float var18 = (float)(var22 * (double)var10); | |
float var19 = (float)(var13 * (double)var10); | |
var5.b(); | |
var5.a(var7, var8, var9, 0.8F); | |
for(int var20 = -var3 * var4; var20 < var3 * var4; var20 += var3) { | |
for(int var21 = -var3 * var4; var21 < var3 * var4; var21 += var3) { | |
var5.a((double)(var20 + 0), (double)var17, (double)(var21 + var3), (double)((float)(var20 + 0) * var10 + var18), (double)((float)(var21 + var3) * var10 + var19)); | |
var5.a((double)(var20 + var3), (double)var17, (double)(var21 + var3), (double)((float)(var20 + var3) * var10 + var18), (double)((float)(var21 + var3) * var10 + var19)); | |
var5.a((double)(var20 + var3), (double)var17, (double)(var21 + 0), (double)((float)(var20 + var3) * var10 + var18), (double)((float)(var21 + 0) * var10 + var19)); | |
var5.a((double)(var20 + 0), (double)var17, (double)(var21 + 0), (double)((float)(var20 + 0) * var10 + var18), (double)((float)(var21 + 0) * var10 + var19)); | |
} | |
} | |
var5.a(); | |
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); | |
GL11.glDisable(3042); | |
GL11.glEnable(2884); | |
} | |
} | |
} | |
public void c(float var1) { | |
GL11.glDisable(2884); | |
float var2 = (float)(this.t.h.bi + (this.t.h.aJ - this.t.h.bi) * (double)var1); | |
kv var3 = kv.a; | |
float var4 = 12.0F; | |
float var5 = 4.0F; | |
double var6 = (this.t.h.aF + (this.t.h.aI - this.t.h.aF) * (double)var1 + (double)(((float)this.x + var1) * 0.03F)) / (double)var4; | |
double var8 = (this.t.h.aH + (this.t.h.aK - this.t.h.aH) * (double)var1) / (double)var4 + 0.33000001311302185D; | |
float var10 = 108.0F - var2 + 0.33F; | |
int var11 = gq.b(var6 / 2048.0D); | |
int var12 = gq.b(var8 / 2048.0D); | |
var6 -= (double)(var11 * 2048); | |
var8 -= (double)(var12 * 2048); | |
GL11.glBindTexture(3553, this.l.a("/environment/clouds.png")); | |
GL11.glEnable(3042); | |
GL11.glBlendFunc(770, 771); | |
ay var13 = this.k.c(var1); | |
float var14 = (float)var13.a; | |
float var15 = (float)var13.b; | |
float var16 = (float)var13.c; | |
float var17; | |
float var19; | |
float var18; | |
if(this.t.x.g) { | |
var17 = (var14 * 30.0F + var15 * 59.0F + var16 * 11.0F) / 100.0F; | |
var18 = (var14 * 30.0F + var15 * 70.0F) / 100.0F; | |
var19 = (var14 * 30.0F + var16 * 70.0F) / 100.0F; | |
var14 = var17; | |
var15 = var18; | |
var16 = var19; | |
} | |
var17 = (float)(var6 * 0.0D); | |
var18 = (float)(var8 * 0.0D); | |
var19 = 0.00390625F; | |
var17 = (float)gq.b(var6) * var19; | |
var18 = (float)gq.b(var8) * var19; | |
float var20 = (float)(var6 - (double)gq.b(var6)); | |
float var21 = (float)(var8 - (double)gq.b(var8)); | |
byte var22 = 8; | |
byte var23 = 3; | |
float var24 = 9.765625E-4F; | |
GL11.glScalef(var4, 1.0F, var4); | |
for(int var25 = 0; var25 < 2; ++var25) { | |
if(var25 == 0) { | |
GL11.glColorMask(false, false, false, false); | |
} else { | |
GL11.glColorMask(true, true, true, true); | |
} | |
for(int var26 = -var23 + 1; var26 <= var23; ++var26) { | |
for(int var27 = -var23 + 1; var27 <= var23; ++var27) { | |
var3.b(); | |
float var28 = (float)(var26 * var22); | |
float var29 = (float)(var27 * var22); | |
float var30 = var28 - var20; | |
float var31 = var29 - var21; | |
if(var10 > -var5 - 1.0F) { | |
var3.a(var14 * 0.7F, var15 * 0.7F, var16 * 0.7F, 0.8F); | |
var3.b(0.0F, -1.0F, 0.0F); | |
var3.a((double)(var30 + 0.0F), (double)(var10 + 0.0F), (double)(var31 + (float)var22), (double)((var28 + 0.0F) * var19 + var17), (double)((var29 + (float)var22) * var19 + var18)); | |
var3.a((double)(var30 + (float)var22), (double)(var10 + 0.0F), (double)(var31 + (float)var22), (double)((var28 + (float)var22) * var19 + var17), (double)((var29 + (float)var22) * var19 + var18)); | |
var3.a((double)(var30 + (float)var22), (double)(var10 + 0.0F), (double)(var31 + 0.0F), (double)((var28 + (float)var22) * var19 + var17), (double)((var29 + 0.0F) * var19 + var18)); | |
var3.a((double)(var30 + 0.0F), (double)(var10 + 0.0F), (double)(var31 + 0.0F), (double)((var28 + 0.0F) * var19 + var17), (double)((var29 + 0.0F) * var19 + var18)); | |
} | |
if(var10 <= var5 + 1.0F) { | |
var3.a(var14, var15, var16, 0.8F); | |
var3.b(0.0F, 1.0F, 0.0F); | |
var3.a((double)(var30 + 0.0F), (double)(var10 + var5 - var24), (double)(var31 + (float)var22), (double)((var28 + 0.0F) * var19 + var17), (double)((var29 + (float)var22) * var19 + var18)); | |
var3.a((double)(var30 + (float)var22), (double)(var10 + var5 - var24), (double)(var31 + (float)var22), (double)((var28 + (float)var22) * var19 + var17), (double)((var29 + (float)var22) * var19 + var18)); | |
var3.a((double)(var30 + (float)var22), (double)(var10 + var5 - var24), (double)(var31 + 0.0F), (double)((var28 + (float)var22) * var19 + var17), (double)((var29 + 0.0F) * var19 + var18)); | |
var3.a((double)(var30 + 0.0F), (double)(var10 + var5 - var24), (double)(var31 + 0.0F), (double)((var28 + 0.0F) * var19 + var17), (double)((var29 + 0.0F) * var19 + var18)); | |
} | |
var3.a(var14 * 0.9F, var15 * 0.9F, var16 * 0.9F, 0.8F); | |
int var32; | |
if(var26 > -1) { | |
var3.b(-1.0F, 0.0F, 0.0F); | |
for(var32 = 0; var32 < var22; ++var32) { | |
var3.a((double)(var30 + (float)var32 + 0.0F), (double)(var10 + 0.0F), (double)(var31 + (float)var22), (double)((var28 + (float)var32 + 0.5F) * var19 + var17), (double)((var29 + (float)var22) * var19 + var18)); | |
var3.a((double)(var30 + (float)var32 + 0.0F), (double)(var10 + var5), (double)(var31 + (float)var22), (double)((var28 + (float)var32 + 0.5F) * var19 + var17), (double)((var29 + (float)var22) * var19 + var18)); | |
var3.a((double)(var30 + (float)var32 + 0.0F), (double)(var10 + var5), (double)(var31 + 0.0F), (double)((var28 + (float)var32 + 0.5F) * var19 + var17), (double)((var29 + 0.0F) * var19 + var18)); | |
var3.a((double)(var30 + (float)var32 + 0.0F), (double)(var10 + 0.0F), (double)(var31 + 0.0F), (double)((var28 + (float)var32 + 0.5F) * var19 + var17), (double)((var29 + 0.0F) * var19 + var18)); | |
} | |
} | |
if(var26 <= 1) { | |
var3.b(1.0F, 0.0F, 0.0F); | |
for(var32 = 0; var32 < var22; ++var32) { | |
var3.a((double)(var30 + (float)var32 + 1.0F - var24), (double)(var10 + 0.0F), (double)(var31 + (float)var22), (double)((var28 + (float)var32 + 0.5F) * var19 + var17), (double)((var29 + (float)var22) * var19 + var18)); | |
var3.a((double)(var30 + (float)var32 + 1.0F - var24), (double)(var10 + var5), (double)(var31 + (float)var22), (double)((var28 + (float)var32 + 0.5F) * var19 + var17), (double)((var29 + (float)var22) * var19 + var18)); | |
var3.a((double)(var30 + (float)var32 + 1.0F - var24), (double)(var10 + var5), (double)(var31 + 0.0F), (double)((var28 + (float)var32 + 0.5F) * var19 + var17), (double)((var29 + 0.0F) * var19 + var18)); | |
var3.a((double)(var30 + (float)var32 + 1.0F - var24), (double)(var10 + 0.0F), (double)(var31 + 0.0F), (double)((var28 + (float)var32 + 0.5F) * var19 + var17), (double)((var29 + 0.0F) * var19 + var18)); | |
} | |
} | |
var3.a(var14 * 0.8F, var15 * 0.8F, var16 * 0.8F, 0.8F); | |
if(var27 > -1) { | |
var3.b(0.0F, 0.0F, -1.0F); | |
for(var32 = 0; var32 < var22; ++var32) { | |
var3.a((double)(var30 + 0.0F), (double)(var10 + var5), (double)(var31 + (float)var32 + 0.0F), (double)((var28 + 0.0F) * var19 + var17), (double)((var29 + (float)var32 + 0.5F) * var19 + var18)); | |
var3.a((double)(var30 + (float)var22), (double)(var10 + var5), (double)(var31 + (float)var32 + 0.0F), (double)((var28 + (float)var22) * var19 + var17), (double)((var29 + (float)var32 + 0.5F) * var19 + var18)); | |
var3.a((double)(var30 + (float)var22), (double)(var10 + 0.0F), (double)(var31 + (float)var32 + 0.0F), (double)((var28 + (float)var22) * var19 + var17), (double)((var29 + (float)var32 + 0.5F) * var19 + var18)); | |
var3.a((double)(var30 + 0.0F), (double)(var10 + 0.0F), (double)(var31 + (float)var32 + 0.0F), (double)((var28 + 0.0F) * var19 + var17), (double)((var29 + (float)var32 + 0.5F) * var19 + var18)); | |
} | |
} | |
if(var27 <= 1) { | |
var3.b(0.0F, 0.0F, 1.0F); | |
for(var32 = 0; var32 < var22; ++var32) { | |
var3.a((double)(var30 + 0.0F), (double)(var10 + var5), (double)(var31 + (float)var32 + 1.0F - var24), (double)((var28 + 0.0F) * var19 + var17), (double)((var29 + (float)var32 + 0.5F) * var19 + var18)); | |
var3.a((double)(var30 + (float)var22), (double)(var10 + var5), (double)(var31 + (float)var32 + 1.0F - var24), (double)((var28 + (float)var22) * var19 + var17), (double)((var29 + (float)var32 + 0.5F) * var19 + var18)); | |
var3.a((double)(var30 + (float)var22), (double)(var10 + 0.0F), (double)(var31 + (float)var32 + 1.0F - var24), (double)((var28 + (float)var22) * var19 + var17), (double)((var29 + (float)var32 + 0.5F) * var19 + var18)); | |
var3.a((double)(var30 + 0.0F), (double)(var10 + 0.0F), (double)(var31 + (float)var32 + 1.0F - var24), (double)((var28 + 0.0F) * var19 + var17), (double)((var29 + (float)var32 + 0.5F) * var19 + var18)); | |
} | |
} | |
var3.a(); | |
} | |
} | |
} | |
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); | |
GL11.glDisable(3042); | |
GL11.glEnable(2884); | |
} | |
public boolean a(iz var1, boolean var2) { | |
/*boolean var3 = false; | |
if(var3) { | |
Collections.sort(this.m, new jj(var1)); | |
int var14 = this.m.size() - 1; | |
int var15 = this.m.size(); | |
for(int var17 = 0; var17 < var15; ++var17) { | |
ck var16 = (ck)this.m.get(var14 - var17); | |
if(!var2) { | |
if(var16.a((om)var1) > 1024.0F) { | |
if(var16.o) { | |
if(var17 >= 3) { | |
return false; | |
} | |
} else if(var17 >= 1) { | |
return false; | |
} | |
} | |
} else if(!var16.o) { | |
continue; | |
} | |
var16.a(); | |
this.m.remove(var16); | |
var16.u = false; | |
} | |
return this.m.size() == 0; | |
} else*/ { | |
jj var4 = new jj(var1); | |
ck[] var5 = new ck[3]; | |
ArrayList var6 = null; | |
int var7 = this.m.size(); | |
int var8 = 0; | |
int var9; | |
ck var10; | |
int var11; | |
int var12; | |
label159: | |
for(var9 = 0; var9 < var7; ++var9) { | |
var10 = (ck)this.m.get(var9); | |
if(!var2) { | |
if(var10.a((om)var1) > 1024.0F) { | |
for(var11 = 0; var11 < 3 && (var5[var11] == null || var4.a(var5[var11], var10) <= 0); ++var11) { | |
; | |
} | |
--var11; | |
if(var11 > 0) { | |
var12 = var11; | |
while(true) { | |
--var12; | |
if(var12 == 0) { | |
var5[var11] = var10; | |
continue label159; | |
} | |
var5[var12 - 1] = var5[var12]; | |
} | |
} | |
continue; | |
} | |
} else if(!var10.o) { | |
continue; | |
} | |
if(var6 == null) { | |
var6 = new ArrayList(); | |
} | |
++var8; | |
var6.add(var10); | |
this.m.set(var9, (Object)null); | |
} | |
if(var6 != null) { | |
if(var6.size() > 1) { | |
Collections.sort(var6, var4); | |
} | |
for(var9 = var6.size() - 1; var9 >= 0; --var9) { | |
var10 = (ck)var6.get(var9); | |
var10.a(); | |
var10.u = false; | |
} | |
} | |
var9 = 0; | |
int var18; | |
for(var18 = 2; var18 >= 0; --var18) { | |
ck var19 = var5[var18]; | |
if(var19 != null) { | |
if(!var19.o && var18 != 2) { | |
var5[var18] = null; | |
var5[0] = null; | |
break; | |
} | |
var5[var18].a(); | |
var5[var18].u = false; | |
++var9; | |
} | |
} | |
var18 = 0; | |
var11 = 0; | |
for(var12 = this.m.size(); var18 != var12; ++var18) { | |
ck var13 = (ck)this.m.get(var18); | |
if(var13 != null && var13 != var5[0] && var13 != var5[1] && var13 != var5[2]) { | |
if(var11 != var18) { | |
this.m.set(var11, var13); | |
} | |
++var11; | |
} | |
} | |
while(true) { | |
--var18; | |
if(var18 < var11) { | |
return var7 == var8 + var9; | |
} | |
this.m.remove(var18); | |
} | |
} | |
} | |
public void a(fd var1, qu var2, int var3, gz var4, float var5) { | |
kv var6 = kv.a; | |
GL11.glEnable(3042); | |
GL11.glEnable(3008); | |
GL11.glBlendFunc(770, 1); | |
GL11.glColor4f(1.0F, 1.0F, 1.0F, (gq.a((float)System.currentTimeMillis() / 100.0F) * 0.2F + 0.4F) * 0.5F); | |
int var8; | |
if(var3 == 0) { | |
if(this.i > 0.0F) { | |
GL11.glBlendFunc(774, 768); | |
int var7 = this.l.a("/terrain.png"); | |
GL11.glBindTexture(3553, var7); | |
GL11.glColor4f(1.0F, 1.0F, 1.0F, 0.5F); | |
GL11.glPushMatrix(); | |
var8 = this.k.a(var2.b, var2.c, var2.d); | |
qk var9 = var8 > 0 ? qk.m[var8] : null; | |
GL11.glDisable(3008); | |
GL11.glPolygonOffset(-3.0F, -3.0F); | |
GL11.glEnable('\u8037'); | |
var6.b(); | |
double var10 = var1.bh + (var1.aI - var1.bh) * (double)var5; | |
double var12 = var1.bi + (var1.aJ - var1.bi) * (double)var5; | |
double var14 = var1.bj + (var1.aK - var1.bj) * (double)var5; | |
var6.b(-var10, -var12, -var14); | |
var6.c(); | |
if(var9 == null) { | |
var9 = qk.t; | |
} | |
this.u.a(var9, var2.b, var2.c, var2.d, 240 + (int)(this.i * 10.0F)); | |
var6.a(); | |
var6.b(0.0D, 0.0D, 0.0D); | |
GL11.glPolygonOffset(0.0F, 0.0F); | |
GL11.glDisable('\u8037'); | |
GL11.glEnable(3008); | |
GL11.glDepthMask(true); | |
GL11.glPopMatrix(); | |
} | |
} else if(var4 != null) { | |
GL11.glBlendFunc(770, 771); | |
float var16 = gq.a((float)System.currentTimeMillis() / 100.0F) * 0.2F + 0.8F; | |
GL11.glColor4f(var16, var16, var16, gq.a((float)System.currentTimeMillis() / 200.0F) * 0.2F + 0.5F); | |
var8 = this.l.a("/terrain.png"); | |
GL11.glBindTexture(3553, var8); | |
int var17 = var2.b; | |
int var18 = var2.c; | |
int var11 = var2.d; | |
if(var2.e == 0) { | |
--var18; | |
} | |
if(var2.e == 1) { | |
++var18; | |
} | |
if(var2.e == 2) { | |
--var11; | |
} | |
if(var2.e == 3) { | |
++var11; | |
} | |
if(var2.e == 4) { | |
--var17; | |
} | |
if(var2.e == 5) { | |
++var17; | |
} | |
} | |
GL11.glDisable(3042); | |
GL11.glDisable(3008); | |
} | |
public void b(fd var1, qu var2, int var3, gz var4, float var5) { | |
if(var3 == 0 && var2.a == hd.a) { | |
GL11.glEnable(3042); | |
GL11.glBlendFunc(770, 771); | |
GL11.glColor4f(0.0F, 0.0F, 0.0F, 0.4F); | |
GL11.glLineWidth(2.0F); | |
GL11.glDisable(3553); | |
GL11.glDepthMask(false); | |
float var6 = 0.0020F; | |
int var7 = this.k.a(var2.b, var2.c, var2.d); | |
if(var7 > 0) { | |
qk.m[var7].a((so)this.k, var2.b, var2.c, var2.d); | |
double var8 = var1.bh + (var1.aI - var1.bh) * (double)var5; | |
double var10 = var1.bi + (var1.aJ - var1.bi) * (double)var5; | |
double var12 = var1.bj + (var1.aK - var1.bj) * (double)var5; | |
this.a(qk.m[var7].f(this.k, var2.b, var2.c, var2.d).b((double)var6, (double)var6, (double)var6).c(-var8, -var10, -var12)); | |
} | |
GL11.glDepthMask(true); | |
GL11.glEnable(3553); | |
GL11.glDisable(3042); | |
} | |
} | |
private void a(di var1) { | |
kv var2 = kv.a; | |
var2.a(3); | |
var2.a(var1.a, var1.b, var1.c); | |
var2.a(var1.d, var1.b, var1.c); | |
var2.a(var1.d, var1.b, var1.f); | |
var2.a(var1.a, var1.b, var1.f); | |
var2.a(var1.a, var1.b, var1.c); | |
var2.a(); | |
var2.a(3); | |
var2.a(var1.a, var1.e, var1.c); | |
var2.a(var1.d, var1.e, var1.c); | |
var2.a(var1.d, var1.e, var1.f); | |
var2.a(var1.a, var1.e, var1.f); | |
var2.a(var1.a, var1.e, var1.c); | |
var2.a(); | |
var2.a(1); | |
var2.a(var1.a, var1.b, var1.c); | |
var2.a(var1.a, var1.e, var1.c); | |
var2.a(var1.d, var1.b, var1.c); | |
var2.a(var1.d, var1.e, var1.c); | |
var2.a(var1.d, var1.b, var1.f); | |
var2.a(var1.d, var1.e, var1.f); | |
var2.a(var1.a, var1.b, var1.f); | |
var2.a(var1.a, var1.e, var1.f); | |
var2.a(); | |
} | |
public void a(int var1, int var2, int var3, int var4, int var5, int var6) { | |
int var7 = gq.a(var1, 16); | |
int var8 = gq.a(var2, 16); | |
int var9 = gq.a(var3, 16); | |
int var10 = gq.a(var4, 16); | |
int var11 = gq.a(var5, 16); | |
int var12 = gq.a(var6, 16); | |
for(int var13 = var7; var13 <= var10; ++var13) { | |
int var14 = var13 % this.p; | |
if(var14 < 0) { | |
var14 += this.p; | |
} | |
for(int var15 = var8; var15 <= var11; ++var15) { | |
int var16 = var15 % this.q; | |
if(var16 < 0) { | |
var16 += this.q; | |
} | |
for(int var17 = var9; var17 <= var12; ++var17) { | |
int var18 = var17 % this.r; | |
if(var18 < 0) { | |
var18 += this.r; | |
} | |
int var19 = (var18 * this.q + var16) * this.p + var14; | |
ck var20 = this.o[var19]; | |
if(!var20.u) { | |
this.m.add(var20); | |
var20.f(); | |
} | |
} | |
} | |
} | |
} | |
public void a(int var1, int var2, int var3) { | |
this.a(var1 - 1, var2 - 1, var3 - 1, var1 + 1, var2 + 1, var3 + 1); | |
} | |
public void b(int var1, int var2, int var3, int var4, int var5, int var6) { | |
this.a(var1 - 1, var2 - 1, var3 - 1, var4 + 1, var5 + 1, var6 + 1); | |
} | |
public void a(tl var1, float var2) { | |
for(int var3 = 0; var3 < this.o.length; ++var3) { | |
if(!this.o[var3].e() && (!this.o[var3].o || (var3 + this.j & 15) == 0)) { | |
this.o[var3].a(var1); | |
} | |
} | |
++this.j; | |
} | |
public void a(String var1, int var2, int var3, int var4) { | |
if(var1 != null) { | |
this.t.t.b("C418 - " + var1); | |
} | |
this.t.z.a(var1, (float)var2, (float)var3, (float)var4, 1.0F, 1.0F); | |
} | |
public void a(String var1, double var2, double var4, double var6, float var8, float var9) { | |
float var10 = 16.0F; | |
if(var8 > 1.0F) { | |
var10 *= var8; | |
} | |
if(this.t.h.e(var2, var4, var6) < (double)(var10 * var10)) { | |
this.t.z.b(var1, (float)var2, (float)var4, (float)var6, var8, var9); | |
} | |
} | |
public void a(String var1, double var2, double var4, double var6, double var8, double var10, double var12) { | |
double var14 = this.t.h.aI - var2; | |
double var16 = this.t.h.aJ - var4; | |
double var18 = this.t.h.aK - var6; | |
double var20 = 16.0D; | |
if(var14 * var14 + var16 * var16 + var18 * var18 <= var20 * var20) { | |
if(var1 == "bubble") { | |
this.t.i.a((sv)(new bs(this.k, var2, var4, var6, var8, var10, var12))); | |
} else if(var1 == "smoke") { | |
this.t.i.a((sv)(new sm(this.k, var2, var4, var6, var8, var10, var12))); | |
} else if(var1 == "note") { | |
this.t.i.a((sv)(new w(this.k, var2, var4, var6, var8, var10, var12))); | |
} else if(var1 == "portal") { | |
this.t.i.a((sv)(new lh(this.k, var2, var4, var6, var8, var10, var12))); | |
} else if(var1 == "explode") { | |
this.t.i.a((sv)(new fh(this.k, var2, var4, var6, var8, var10, var12))); | |
} else if(var1 == "flame") { | |
this.t.i.a((sv)(new mx(this.k, var2, var4, var6, var8, var10, var12))); | |
} else if(var1 == "lava") { | |
this.t.i.a((sv)(new dw(this.k, var2, var4, var6))); | |
} else if(var1 == "splash") { | |
this.t.i.a((sv)(new ov(this.k, var2, var4, var6, var8, var10, var12))); | |
} else if(var1 == "largesmoke") { | |
this.t.i.a((sv)(new sm(this.k, var2, var4, var6, var8, var10, var12, 2.5F))); | |
} else if(var1 == "reddust") { | |
this.t.i.a((sv)(new gp(this.k, var2, var4, var6, (float)var8, (float)var10, (float)var12))); | |
} else if(var1 == "snowballpoof") { | |
this.t.i.a((sv)(new lr(this.k, var2, var4, var6, ex.aB))); | |
} else if(var1 == "slime") { | |
this.t.i.a((sv)(new lr(this.k, var2, var4, var6, ex.aK))); | |
} | |
} | |
} | |
public void a(om var1) { | |
var1.w(); | |
if(var1.bx != null) { | |
this.l.a(var1.bx, (ke)(new ns())); | |
} | |
if(var1.by != null) { | |
this.l.a(var1.by, (ke)(new ns())); | |
} | |
} | |
public void b(om var1) { | |
if(var1.bx != null) { | |
this.l.b(var1.bx); | |
} | |
if(var1.by != null) { | |
this.l.b(var1.by); | |
} | |
} | |
public void e() { | |
for(int var1 = 0; var1 < this.o.length; ++var1) { | |
if(this.o[var1].A && !this.o[var1].u) { | |
this.m.add(this.o[var1]); | |
this.o[var1].f(); | |
} | |
} | |
} | |
public void a(int var1, int var2, int var3, ll var4) {} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.nio.ByteBuffer; | |
import java.nio.ByteOrder; | |
import java.nio.FloatBuffer; | |
import java.nio.IntBuffer; | |
import org.lwjgl.opengl.ARBVertexBufferObject; | |
import org.lwjgl.opengl.GL11; | |
import org.lwjgl.opengl.GLContext; | |
import org.lwjgl.opengl.Util; | |
public class kv { | |
private static boolean b = true; | |
private static boolean c = false; | |
private ByteBuffer d; | |
private IntBuffer e; | |
private FloatBuffer f; | |
private int h = 0; | |
private double i; | |
private double j; | |
private int k; | |
private boolean l = false; | |
private boolean m = false; | |
private boolean n = false; | |
private int o = 0; | |
private int p = 0; | |
private boolean q = false; | |
private int r; | |
private double s; | |
private double t; | |
private double u; | |
private int v; | |
public static final kv a = new kv(2097152); | |
private boolean w = false; | |
private boolean x = false; | |
private IntBuffer y; | |
private int z = 0; | |
private int A = 10; | |
private int B; | |
private static boolean chunk = false; | |
private kv(int size) { | |
this.B = size; | |
this.d = er.b(size * 4); | |
this.e = this.d.asIntBuffer(); | |
this.f = this.d.asFloatBuffer(); | |
this.x = c && GLContext.getCapabilities().GL_ARB_vertex_buffer_object; | |
if(this.x) { | |
this.y = er.c(this.A); | |
ARBVertexBufferObject.glGenBuffersARB(this.y); | |
} | |
} | |
public void a() { | |
if(!this.w) { | |
throw new IllegalStateException("Not tesselating!"); | |
} else { | |
this.w = false; | |
if (!chunk) { | |
GL11.glEnd(); | |
e(); | |
} else if(this.h > 0) { | |
//this.e.clear(); | |
//this.e.put(this.g, 0, this.o); | |
this.d.position(0); | |
this.d.limit(this.o * 4); | |
//System.out.println((this.o * 4 / 1024.0)); | |
GL11.glEnableClientState(GL11.GL_TEXTURE_COORD_ARRAY); | |
GL11.glEnableClientState(GL11.GL_COLOR_ARRAY); | |
GL11.glEnableClientState(GL11.GL_VERTEX_ARRAY); | |
if(this.x) { | |
this.z = (this.z + 1) % this.A; | |
ARBVertexBufferObject.glBindBufferARB(ARBVertexBufferObject.GL_STATIC_DRAW_ARB, this.y.get(this.z)); | |
ARBVertexBufferObject.glBufferDataARB(ARBVertexBufferObject.GL_STATIC_DRAW_ARB, this.d, '\u88e0'); | |
GL11.glTexCoordPointer(2, 5126, 32, 12L); | |
GL11.glColorPointer(4, 5121, 32, 20L); | |
GL11.glVertexPointer(3, 5126, 32, 0L); | |
} else { | |
this.f.position(3); | |
GL11.glTexCoordPointer(2, 32, this.f); | |
this.d.position(20); | |
GL11.glColorPointer(4, true, 32, this.d); | |
this.f.position(0); | |
GL11.glVertexPointer(3, 32, this.f); | |
} | |
if(this.r == 7 && b) { | |
GL11.glDrawArrays(4, 0, this.h); | |
} else { | |
GL11.glDrawArrays(this.r, 0, this.h); | |
} | |
GL11.glDisableClientState(GL11.GL_TEXTURE_COORD_ARRAY); | |
GL11.glDisableClientState(GL11.GL_COLOR_ARRAY); | |
GL11.glDisableClientState(GL11.GL_VERTEX_ARRAY); | |
} | |
this.d(); | |
} | |
} | |
private void d() { | |
this.h = 0; | |
this.d.clear(); | |
this.e.clear(); | |
this.o = 0; | |
this.p = 0; | |
} | |
public void b() { | |
this.a(7); | |
} | |
public void a(int mode) { | |
if(this.w) { | |
throw new IllegalStateException("Already tesselating!"); | |
} else { | |
if (!chunk) | |
GL11.glBegin(mode); | |
this.w = true; | |
this.d(); | |
this.r = mode; | |
this.n = false; | |
this.l = false; | |
this.m = false; | |
this.q = false; | |
} | |
} | |
public void a(double x, double y) { | |
this.m = true; | |
this.i = x; | |
this.j = y; | |
if (!chunk) | |
GL11.glTexCoord2f((float)x, (float)y); | |
} | |
public void a(float r, float g, float b) { | |
this.a((int)(r * 255.0F), (int)(g * 255.0F), (int)(b * 255.0F)); | |
} | |
public void a(float r, float g, float b, float a) { | |
this.a((int)(r * 255.0F), (int)(g * 255.0F), (int)(b * 255.0F), (int)(a * 255.0F)); | |
} | |
public void a(int r, int g, int b) { | |
this.a(r, g, b, 255); | |
} | |
public void a(int r, int g, int b, int a) { | |
if(!this.q) { | |
if(r > 255) { | |
r = 255; | |
} | |
if(g > 255) { | |
g = 255; | |
} | |
if(b > 255) { | |
b = 255; | |
} | |
if(a > 255) { | |
a = 255; | |
} | |
if(r < 0) { | |
r = 0; | |
} | |
if(g < 0) { | |
g = 0; | |
} | |
if(b < 0) { | |
b = 0; | |
} | |
if(a < 0) { | |
a = 0; | |
} | |
this.l = true; | |
if (!chunk) | |
GL11.glColor4ub((byte)r, (byte)g, (byte)b, (byte)a); | |
else if(ByteOrder.nativeOrder() == ByteOrder.LITTLE_ENDIAN) { | |
this.k = a << 24 | b << 16 | g << 8 | r; | |
} else { | |
this.k = r << 24 | g << 16 | b << 8 | a; | |
} | |
} | |
} | |
public void a(double var1, double var3, double var5, double var7, double var9) { | |
this.a(var7, var9); | |
this.a(var1, var3, var5); | |
} | |
public void a(double x, double y, double z) { | |
if (!chunk) { | |
GL11.glVertex3f((float)(x + s), (float)(y + t), (float)(z + u)); | |
return; | |
} | |
++this.p; | |
if(this.r == 7 && b && this.p % 4 == 0) { | |
for(int prevVert = 0; prevVert < 2; ++prevVert) { | |
int var8 = 8 * (3 - prevVert); | |
this.e.put(this.e.get(this.o - var8 + 0)); | |
this.e.put(this.e.get(this.o - var8 + 1)); | |
this.e.put(this.e.get(this.o - var8 + 2)); | |
this.e.put(this.e.get(this.o - var8 + 3)); | |
this.e.put(this.e.get(this.o - var8 + 4)); | |
this.e.put(this.e.get(this.o - var8 + 5)); | |
this.e.put(0); | |
this.e.put(0); | |
++this.h; | |
this.o += 8; | |
} | |
} | |
this.e.put(Float.floatToRawIntBits((float)(x + this.s))); | |
this.e.put(Float.floatToRawIntBits((float)(y + this.t))); | |
this.e.put(Float.floatToRawIntBits((float)(z + this.u))); | |
this.e.put(Float.floatToRawIntBits((float)this.i)); | |
this.e.put(Float.floatToRawIntBits((float)this.j)); | |
this.e.put(this.k); | |
this.e.put(0); | |
this.e.put(0); | |
this.o += 8; | |
++this.h; | |
if(chunk && this.h % 4 == 0 && this.o >= this.B - 32) { | |
this.a(); | |
this.w = true; | |
} | |
} | |
public void b(int var1) { | |
int var2 = var1 >> 16 & 255; | |
int var3 = var1 >> 8 & 255; | |
int var4 = var1 & 255; | |
this.a(var2, var3, var4); | |
} | |
public void a(int var1, int var2) { | |
int var3 = var1 >> 16 & 255; | |
int var4 = var1 >> 8 & 255; | |
int var5 = var1 & 255; | |
this.a(var3, var4, var5, var2); | |
} | |
public void c() { | |
this.q = true; | |
} | |
public void b(float var1, float var2, float var3) { | |
if(!this.w) { | |
System.out.println("But.."); | |
} | |
this.n = true; | |
byte nx = (byte)((int)(var1 * 128.0F)); | |
byte ny = (byte)((int)(var2 * 127.0F)); | |
byte nz = (byte)((int)(var3 * 127.0F)); | |
if (!chunk) | |
GL11.glNormal3b(nx, ny, nz); | |
else { | |
System.out.println("ERROR ERROR NORMALS IN CHUNK MODE"); | |
// this.v = nx | ny << 8 | nz << 16; | |
} | |
} | |
public void b(double var1, double var3, double var5) { | |
this.s = var1; | |
this.t = var3; | |
this.u = var5; | |
} | |
public void c(float var1, float var2, float var3) { | |
this.s += (double)var1; | |
this.t += (double)var2; | |
this.u += (double)var3; | |
} | |
public void setRenderingChunk(boolean state) { | |
chunk = state; | |
} | |
private void e() { | |
int errno = GL11.glGetError(); | |
if (errno != 0) { | |
System.out.println(errno + ": " + Util.translateGLErrorString(errno)); | |
StackTraceElement[] es = Thread.currentThread().getStackTrace(); | |
for ( int i=0; i<es.length; i++ ) | |
{ | |
StackTraceElement e = es[i]; | |
System.out.println( " in class:" + e.getClassName() | |
+ " in source file:" + e.getFileName() | |
+ " in method:" + e.getMethodName() | |
+ " at line:" + e.getLineNumber() | |
+ " " + ( e.isNativeMethod() ? "native" : "" ) ); | |
} | |
} | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.nio.FloatBuffer; | |
import java.util.List; | |
import java.util.Random; | |
import net.minecraft.client.Minecraft; | |
import org.lwjgl.input.Mouse; | |
import org.lwjgl.opengl.Display; | |
import org.lwjgl.opengl.GL11; | |
import org.lwjgl.opengl.GLContext; | |
import org.lwjgl.util.glu.GLU; | |
public class mh { | |
private Minecraft h; | |
private float i = 0.0F; | |
public nd a; | |
private int j; | |
private om k = null; | |
private bt l = new bt(); | |
private bt m = new bt(); | |
private bt n = new bt(); | |
private bt o = new bt(); | |
private bt p_ = new bt(); | |
private bt q = new bt(); | |
private float r_ = 4.0F; | |
private float s = 4.0F; | |
private float t = 0.0F; | |
private float u = 0.0F; | |
private float v = 0.0F; | |
private float w = 0.0F; | |
private float x = 0.0F; | |
private float y = 0.0F; | |
private float z = 0.0F; | |
private float A = 0.0F; | |
private double B = 1.0D; | |
private double C = 0.0D; | |
private double D = 0.0D; | |
private long E = System.currentTimeMillis(); | |
private Random F = new Random(); | |
volatile int b = 0; | |
volatile int c = 0; | |
FloatBuffer d = er.d(16); | |
float e; | |
float f; | |
float g; | |
private float G; | |
private float H; | |
public mh(Minecraft var1) { | |
this.h = var1; | |
this.a = new nd(var1); | |
} | |
public void a() { | |
this.G = this.H; | |
this.s = this.r_; | |
this.u = this.t; | |
this.w = this.v; | |
this.y = this.x; | |
this.A = this.z; | |
if(this.h.h == null) { | |
this.h.h = this.h.g; | |
} | |
float var1 = this.h.e.c(gq.b(this.h.h.aI), gq.b(this.h.h.aJ), gq.b(this.h.h.aK)); | |
float var2 = (float)(3 - this.h.x.e) / 3.0F; | |
float var3 = var1 * (1.0F - var2) + var2; | |
this.H += (var3 - this.H) * 0.1F; | |
++this.j; | |
this.a.a(); | |
if(this.h.K) { | |
this.d(); | |
} | |
} | |
public void a(float var1) { | |
if(this.h.h != null) { | |
if(this.h.e != null) { | |
double var2 = (double)this.h.b.b(); | |
this.h.w = this.h.h.a(var2, var1); | |
double var4 = var2; | |
ay var6 = this.h.h.e(var1); | |
if(this.h.w != null) { | |
var4 = this.h.w.f.c(var6); | |
} | |
if(this.h.b instanceof lw) { | |
var2 = 32.0D; | |
var4 = 32.0D; | |
} else { | |
if(var4 > 3.0D) { | |
var4 = 3.0D; | |
} | |
var2 = var4; | |
} | |
ay var7 = this.h.h.f(var1); | |
ay var8 = var6.c(var7.a * var2, var7.b * var2, var7.c * var2); | |
this.k = null; | |
float var9 = 1.0F; | |
List var10 = this.h.e.b((om)this.h.h, this.h.h.aS.a(var7.a * var2, var7.b * var2, var7.c * var2).b((double)var9, (double)var9, (double)var9)); | |
double var11 = 0.0D; | |
for(int var13 = 0; var13 < var10.size(); ++var13) { | |
om var14 = (om)var10.get(var13); | |
if(var14.f_()) { | |
float var15 = var14.e(); | |
di var16 = var14.aS.b((double)var15, (double)var15, (double)var15); | |
qu var17 = var16.a(var6, var8); | |
if(var16.a(var6)) { | |
if(0.0D < var11 || var11 == 0.0D) { | |
this.k = var14; | |
var11 = 0.0D; | |
} | |
} else if(var17 != null) { | |
double var18 = var6.c(var17.f); | |
if(var18 < var11 || var11 == 0.0D) { | |
this.k = var14; | |
var11 = var18; | |
} | |
} | |
} | |
} | |
if(this.k != null && !(this.h.b instanceof lw)) { | |
this.h.w = new qu(this.k); | |
} | |
} | |
} | |
} | |
private float d(float var1) { | |
iz var2 = this.h.h; | |
float var3 = 70.0F; | |
if(var2.a(iu.f)) { | |
var3 = 60.0F; | |
} | |
if(var2.V <= 0) { | |
float var4 = (float)var2.aa + var1; | |
var3 /= (1.0F - 500.0F / (var4 + 500.0F)) * 2.0F + 1.0F; | |
} | |
return var3 + this.y + (this.x - this.y) * var1; | |
} | |
private void e(float var1) { | |
iz var2 = this.h.h; | |
float var3 = (float)var2.X - var1; | |
float var4; | |
if(var2.V <= 0) { | |
var4 = (float)var2.aa + var1; | |
GL11.glRotatef(40.0F - 8000.0F / (var4 + 200.0F), 0.0F, 0.0F, 1.0F); | |
} | |
if(var3 >= 0.0F) { | |
var3 /= (float)var2.Y; | |
var3 = gq.a(var3 * var3 * var3 * var3 * 3.1415927F); | |
var4 = var2.Z; | |
GL11.glRotatef(-var4, 0.0F, 1.0F, 0.0F); | |
GL11.glRotatef(-var3 * 14.0F, 0.0F, 0.0F, 1.0F); | |
GL11.glRotatef(var4, 0.0F, 1.0F, 0.0F); | |
} | |
} | |
private void f(float var1) { | |
if(this.h.h instanceof fd) { | |
fd var2 = (fd)this.h.h; | |
float var3 = var2.be - var2.bd; | |
float var4 = -(var2.be + var3 * var1); | |
float var5 = var2.k + (var2.l - var2.k) * var1; | |
float var6 = var2.ac + (var2.ad - var2.ac) * var1; | |
GL11.glTranslatef(gq.a(var4 * 3.1415927F) * var5 * 0.5F, -Math.abs(gq.b(var4 * 3.1415927F) * var5), 0.0F); | |
GL11.glRotatef(gq.a(var4 * 3.1415927F) * var5 * 3.0F, 0.0F, 0.0F, 1.0F); | |
GL11.glRotatef(Math.abs(gq.b(var4 * 3.1415927F - 0.2F) * var5) * 5.0F, 1.0F, 0.0F, 0.0F); | |
GL11.glRotatef(var6, 1.0F, 0.0F, 0.0F); | |
} | |
} | |
private void g(float var1) { | |
iz var2 = this.h.h; | |
float var3 = var2.ba - 1.62F; | |
double var4 = var2.aF + (var2.aI - var2.aF) * (double)var1; | |
double var6 = var2.aG + (var2.aJ - var2.aG) * (double)var1 - (double)var3; | |
double var8 = var2.aH + (var2.aK - var2.aH) * (double)var1; | |
GL11.glRotatef(this.A + (this.z - this.A) * var1, 0.0F, 0.0F, 1.0F); | |
if(var2.K()) { | |
var3 = (float)((double)var3 + 1.0D); | |
GL11.glTranslatef(0.0F, 0.3F, 0.0F); | |
if(!this.h.x.E) { | |
int var10 = this.h.e.a(gq.b(var2.aI), gq.b(var2.aJ), gq.b(var2.aK)); | |
if(var10 == qk.S.bk) { | |
int var11 = this.h.e.e(gq.b(var2.aI), gq.b(var2.aJ), gq.b(var2.aK)); | |
int var12 = var11 & 3; | |
GL11.glRotatef((float)(var12 * 90), 0.0F, 1.0F, 0.0F); | |
} | |
GL11.glRotatef(var2.aQ + (var2.aO - var2.aQ) * var1 + 180.0F, 0.0F, -1.0F, 0.0F); | |
GL11.glRotatef(var2.aR + (var2.aP - var2.aR) * var1, -1.0F, 0.0F, 0.0F); | |
} | |
} else if(this.h.x.z) { | |
double var27 = (double)(this.s + (this.r_ - this.s) * var1); | |
float var13; | |
float var28; | |
if(this.h.x.E) { | |
var28 = this.u + (this.t - this.u) * var1; | |
var13 = this.w + (this.v - this.w) * var1; | |
GL11.glTranslatef(0.0F, 0.0F, (float)(-var27)); | |
GL11.glRotatef(var13, 1.0F, 0.0F, 0.0F); | |
GL11.glRotatef(var28, 0.0F, 1.0F, 0.0F); | |
} else { | |
var28 = var2.aO; | |
var13 = var2.aP; | |
double var14 = (double)(-gq.a(var28 / 180.0F * 3.1415927F) * gq.b(var13 / 180.0F * 3.1415927F)) * var27; | |
double var16 = (double)(gq.b(var28 / 180.0F * 3.1415927F) * gq.b(var13 / 180.0F * 3.1415927F)) * var27; | |
double var18 = (double)(-gq.a(var13 / 180.0F * 3.1415927F)) * var27; | |
for(int var20 = 0; var20 < 8; ++var20) { | |
float var21 = (float)((var20 & 1) * 2 - 1); | |
float var22 = (float)((var20 >> 1 & 1) * 2 - 1); | |
float var23 = (float)((var20 >> 2 & 1) * 2 - 1); | |
var21 *= 0.1F; | |
var22 *= 0.1F; | |
var23 *= 0.1F; | |
qu var24 = this.h.e.a(ay.b(var4 + (double)var21, var6 + (double)var22, var8 + (double)var23), ay.b(var4 - var14 + (double)var21 + (double)var23, var6 - var18 + (double)var22, var8 - var16 + (double)var23)); | |
if(var24 != null) { | |
double var25 = var24.f.c(ay.b(var4, var6, var8)); | |
if(var25 < var27) { | |
var27 = var25; | |
} | |
} | |
} | |
GL11.glRotatef(var2.aP - var13, 1.0F, 0.0F, 0.0F); | |
GL11.glRotatef(var2.aO - var28, 0.0F, 1.0F, 0.0F); | |
GL11.glTranslatef(0.0F, 0.0F, (float)(-var27)); | |
GL11.glRotatef(var28 - var2.aO, 0.0F, 1.0F, 0.0F); | |
GL11.glRotatef(var13 - var2.aP, 1.0F, 0.0F, 0.0F); | |
} | |
} else { | |
GL11.glTranslatef(0.0F, 0.0F, -0.1F); | |
} | |
if(!this.h.x.E) { | |
GL11.glRotatef(var2.aR + (var2.aP - var2.aR) * var1, 1.0F, 0.0F, 0.0F); | |
GL11.glRotatef(var2.aQ + (var2.aO - var2.aQ) * var1 + 180.0F, 0.0F, 1.0F, 0.0F); | |
} | |
GL11.glTranslatef(0.0F, var3, 0.0F); | |
} | |
public void a(double var1, double var3, double var5) { | |
this.B = var1; | |
this.C = var3; | |
this.D = var5; | |
} | |
public void b() { | |
this.B = 1.0D; | |
} | |
private void a(float var1, int var2) { | |
this.i = (float)(256 >> this.h.x.e); | |
GL11.glMatrixMode(5889); | |
GL11.glLoadIdentity(); | |
float var3 = 0.07F; | |
if(this.h.x.g) { | |
GL11.glTranslatef((float)(-(var2 * 2 - 1)) * var3, 0.0F, 0.0F); | |
} | |
if(this.B != 1.0D) { | |
GL11.glTranslatef((float)this.C, (float)(-this.D), 0.0F); | |
GL11.glScaled(this.B, this.B, 1.0D); | |
GLU.gluPerspective(this.d(var1), (float)this.h.c / (float)this.h.d, 0.05F, this.i); | |
} else { | |
GLU.gluPerspective(this.d(var1), (float)this.h.c / (float)this.h.d, 0.05F, this.i); | |
} | |
GL11.glMatrixMode(5888); | |
GL11.glLoadIdentity(); | |
if(this.h.x.g) { | |
GL11.glTranslatef((float)(var2 * 2 - 1) * 0.1F, 0.0F, 0.0F); | |
} | |
this.e(var1); | |
if(this.h.x.f) { | |
this.f(var1); | |
} | |
float var4 = this.h.g.e + (this.h.g.d - this.h.g.e) * var1; | |
if(var4 > 0.0F) { | |
float var5 = 5.0F / (var4 * var4 + 5.0F) - var4 * 0.04F; | |
var5 *= var5; | |
GL11.glRotatef(var4 * var4 * 1500.0F, 0.0F, 1.0F, 1.0F); | |
GL11.glScalef(1.0F / var5, 1.0F, 1.0F); | |
GL11.glRotatef(-var4 * var4 * 1500.0F, 0.0F, 1.0F, 1.0F); | |
} | |
this.g(var1); | |
} | |
private void b(float var1, int var2) { | |
GL11.glLoadIdentity(); | |
if(this.h.x.g) { | |
GL11.glTranslatef((float)(var2 * 2 - 1) * 0.1F, 0.0F, 0.0F); | |
} | |
GL11.glPushMatrix(); | |
this.e(var1); | |
if(this.h.x.f) { | |
this.f(var1); | |
} | |
if(!this.h.x.z && !this.h.h.K() && !this.h.x.y) { | |
this.a.a(var1); | |
} | |
GL11.glPopMatrix(); | |
if(!this.h.x.z && !this.h.h.K()) { | |
this.a.b(var1); | |
this.e(var1); | |
} | |
if(this.h.x.f) { | |
this.f(var1); | |
} | |
} | |
public void b(float var1) { | |
if(!Display.isActive()) { | |
if(System.currentTimeMillis() - this.E > 500L) { | |
this.h.h(); | |
} | |
} else { | |
this.E = System.currentTimeMillis(); | |
} | |
if(this.h.J) { | |
this.h.A.c(); | |
float var2 = this.h.x.c * 0.6F + 0.2F; | |
float var3 = var2 * var2 * var2 * 8.0F; | |
float var4 = (float)this.h.A.a * var3; | |
float var5 = (float)this.h.A.b * var3; | |
byte var6 = 1; | |
if(this.h.x.d) { | |
var6 = -1; | |
} | |
if(this.h.x.D) { | |
var4 = this.l.a(var4, 0.05F * var3); | |
var5 = this.m.a(var5, 0.05F * var3); | |
} | |
this.h.g.d(var4, var5 * (float)var6); | |
} | |
if(!this.h.u) { | |
mt var7 = new mt(this.h.c, this.h.d); | |
int var8 = var7.a(); | |
int var9 = var7.b(); | |
int var10 = Mouse.getX() * var8 / this.h.c; | |
int var11 = var9 - Mouse.getY() * var9 / this.h.d - 1; | |
if(this.h.e != null) { | |
this.c(var1); | |
if(!this.h.x.y || this.h.q != null) { | |
this.h.t.a(var1, this.h.q != null, var10, var11); | |
} | |
} else { | |
GL11.glViewport(0, 0, this.h.c, this.h.d); | |
GL11.glMatrixMode(5889); | |
GL11.glLoadIdentity(); | |
GL11.glMatrixMode(5888); | |
GL11.glLoadIdentity(); | |
this.c(); | |
} | |
if(this.h.q != null) { | |
GL11.glClear(256); | |
this.h.q.a(var10, var11, var1); | |
} | |
} | |
} | |
public void c(float var1) { | |
if(this.h.h == null) { | |
this.h.h = this.h.g; | |
} | |
this.a(var1); | |
iz var2 = this.h.h; | |
h var3 = this.h.f; | |
cn var4 = this.h.i; | |
double var5 = var2.bh + (var2.aI - var2.bh) * (double)var1; | |
double var7 = var2.bi + (var2.aJ - var2.bi) * (double)var1; | |
double var9 = var2.bj + (var2.aK - var2.bj) * (double)var1; | |
bo var11 = this.h.e.u(); | |
int var14; | |
if(var11 instanceof ih) { | |
ih var12 = (ih)var11; | |
int var13 = gq.d((float)((int)var5)) >> 4; | |
var14 = gq.d((float)((int)var9)) >> 4; | |
var12.c(var13, var14); | |
} | |
for(int var15 = 0; var15 < 2; ++var15) { | |
if(this.h.x.g) { | |
if(var15 == 0) { | |
GL11.glColorMask(false, true, true, false); | |
} else { | |
GL11.glColorMask(true, false, false, false); | |
} | |
} | |
GL11.glViewport(0, 0, this.h.c, this.h.d); | |
this.h(var1); | |
GL11.glClear(16640); | |
GL11.glEnable(2884); | |
this.a(var1, var15); | |
r.a(); | |
if(this.h.x.e < 2) { | |
this.a(-1); | |
var3.a(var1); | |
} | |
GL11.glEnable(2912); | |
this.a(1); | |
if(this.h.x.j) { | |
GL11.glShadeModel(7425); | |
} | |
oq var16 = new oq(); | |
var16.a(var5, var7, var9); | |
this.h.f.a(var16, var1); | |
this.h.f.a(var2, false); | |
this.a(0); | |
GL11.glEnable(2912); | |
GL11.glBindTexture(3553, this.h.o.a("/terrain.png")); | |
p.a(); | |
var3.a(var2, 0, (double)var1); | |
GL11.glShadeModel(7424); | |
p.b(); | |
var3.a(var2.e(var1), var16, var1); | |
var4.b(var2, var1); | |
p.a(); | |
this.a(0); | |
var4.a(var2, var1); | |
fd var17; | |
if(this.h.w != null && var2.a(iu.f) && var2 instanceof fd) { | |
var17 = (fd)var2; | |
GL11.glDisable(3008); | |
var3.a(var17, this.h.w, 0, var17.f.b(), var1); | |
var3.b(var17, this.h.w, 0, var17.f.b(), var1); | |
GL11.glEnable(3008); | |
} | |
GL11.glBlendFunc(770, 771); | |
this.a(0); | |
GL11.glEnable(3042); | |
GL11.glDisable(2884); | |
GL11.glBindTexture(3553, this.h.o.a("/terrain.png")); | |
if(this.h.x.i) { | |
if(this.h.x.g) { | |
if(var15 == 0) { | |
GL11.glColorMask(false, true, true, false); | |
} else { | |
GL11.glColorMask(true, false, false, false); | |
} | |
} | |
var14 = var3.a(var2, 1, (double)var1); | |
} else { | |
var3.a(var2, 1, (double)var1); | |
} | |
GL11.glDepthMask(true); | |
GL11.glEnable(2884); | |
GL11.glDisable(3042); | |
if(this.B == 1.0D && var2 instanceof fd && this.h.w != null && !var2.a(iu.f)) { | |
var17 = (fd)var2; | |
GL11.glDisable(3008); | |
var3.a(var17, this.h.w, 0, var17.f.b(), var1); | |
var3.b(var17, this.h.w, 0, var17.f.b(), var1); | |
GL11.glEnable(3008); | |
} | |
GL11.glDisable(2912); | |
if(this.k != null) { | |
; | |
} | |
this.a(0); | |
GL11.glEnable(2912); | |
var3.b(var1); | |
GL11.glDisable(2912); | |
this.a(1); | |
if(this.B == 1.0D) { | |
GL11.glClear(256); | |
this.b(var1, var15); | |
} | |
if(!this.h.x.g) { | |
return; | |
} | |
} | |
GL11.glColorMask(true, true, true, false); | |
} | |
private void d() { | |
if(this.h.x.i) { | |
iz var1 = this.h.h; | |
dt var2 = this.h.e; | |
int var3 = gq.b(var1.aI); | |
int var4 = gq.b(var1.aJ); | |
int var5 = gq.b(var1.aK); | |
byte var6 = 16; | |
for(int var7 = 0; var7 < 150; ++var7) { | |
int var8 = var3 + this.F.nextInt(var6) - this.F.nextInt(var6); | |
int var9 = var5 + this.F.nextInt(var6) - this.F.nextInt(var6); | |
int var10 = var2.f(var8, var9); | |
int var11 = var2.a(var8, var10 - 1, var9); | |
if(var10 <= var4 + var6 && var10 >= var4 - var6) { | |
float var12 = this.F.nextFloat(); | |
float var13 = this.F.nextFloat(); | |
if(var11 > 0) { | |
this.h.i.a((sv)(new sg(var2, (double)((float)var8 + var12), (double)((float)var10 + 0.1F) - qk.m[var11].bo, (double)((float)var9 + var13)))); | |
} | |
} | |
} | |
} | |
} | |
public void c() { | |
mt var1 = new mt(this.h.c, this.h.d); | |
int var2 = var1.a(); | |
int var3 = var1.b(); | |
GL11.glClear(256); | |
GL11.glMatrixMode(5889); | |
GL11.glLoadIdentity(); | |
GL11.glOrtho(0.0D, (double)var2, (double)var3, 0.0D, 1000.0D, 3000.0D); | |
GL11.glMatrixMode(5888); | |
GL11.glLoadIdentity(); | |
GL11.glTranslatef(0.0F, 0.0F, -2000.0F); | |
} | |
private void h(float var1) { | |
dt var2 = this.h.e; | |
iz var3 = this.h.h; | |
float var4 = 1.0F / (float)(4 - this.h.x.e); | |
var4 = 1.0F - (float)Math.pow((double)var4, 0.25D); | |
ay var5 = var2.a(this.h.h, var1); | |
float var6 = (float)var5.a; | |
float var7 = (float)var5.b; | |
float var8 = (float)var5.c; | |
ay var9 = var2.d(var1); | |
this.e = (float)var9.a; | |
this.f = (float)var9.b; | |
this.g = (float)var9.c; | |
this.e += (var6 - this.e) * var4; | |
this.f += (var7 - this.f) * var4; | |
this.g += (var8 - this.g) * var4; | |
if(var3.a(iu.f)) { | |
this.e = 0.02F; | |
this.f = 0.02F; | |
this.g = 0.2F; | |
} else if(var3.a(iu.g)) { | |
this.e = 0.6F; | |
this.f = 0.1F; | |
this.g = 0.0F; | |
} | |
float var10 = this.G + (this.H - this.G) * var1; | |
this.e *= var10; | |
this.f *= var10; | |
this.g *= var10; | |
if(this.h.x.g) { | |
float var11 = (this.e * 30.0F + this.f * 59.0F + this.g * 11.0F) / 100.0F; | |
float var12 = (this.e * 30.0F + this.f * 70.0F) / 100.0F; | |
float var13 = (this.e * 30.0F + this.g * 70.0F) / 100.0F; | |
this.e = var11; | |
this.f = var12; | |
this.g = var13; | |
} | |
GL11.glClearColor(this.e, this.f, this.g, 0.0F); | |
} | |
private void a(int var1) { | |
iz var2 = this.h.h; | |
GL11.glFog(2918, this.a(this.e, this.f, this.g, 1.0F)); | |
GL11.glNormal3f(0.0F, -1.0F, 0.0F); | |
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); | |
float var3; | |
float var4; | |
float var5; | |
float var6; | |
float var7; | |
float var8; | |
if(var2.a(iu.f)) { | |
GL11.glFogi(2917, 2048); | |
GL11.glFogf(2914, 0.1F); | |
var3 = 0.4F; | |
var4 = 0.4F; | |
var5 = 0.9F; | |
if(this.h.x.g) { | |
var6 = (var3 * 30.0F + var4 * 59.0F + var5 * 11.0F) / 100.0F; | |
var7 = (var3 * 30.0F + var4 * 70.0F) / 100.0F; | |
var8 = (var3 * 30.0F + var5 * 70.0F) / 100.0F; | |
} | |
} else if(var2.a(iu.g)) { | |
GL11.glFogi(2917, 2048); | |
GL11.glFogf(2914, 2.0F); | |
var3 = 0.4F; | |
var4 = 0.3F; | |
var5 = 0.3F; | |
if(this.h.x.g) { | |
var6 = (var3 * 30.0F + var4 * 59.0F + var5 * 11.0F) / 100.0F; | |
var7 = (var3 * 30.0F + var4 * 70.0F) / 100.0F; | |
var8 = (var3 * 30.0F + var5 * 70.0F) / 100.0F; | |
} | |
} else { | |
GL11.glFogi(2917, 9729); | |
GL11.glFogf(2915, this.i * 0.25F); | |
GL11.glFogf(2916, this.i); | |
if(var1 < 0) { | |
GL11.glFogf(2915, 0.0F); | |
GL11.glFogf(2916, this.i * 0.8F); | |
} | |
if(GLContext.getCapabilities().GL_NV_fog_distance) { | |
GL11.glFogi('\u855a', '\u855b'); | |
} | |
if(this.h.e.m.c) { | |
GL11.glFogf(2915, 0.0F); | |
} | |
} | |
GL11.glEnable(2903); | |
GL11.glColorMaterial(1028, 4608); | |
} | |
private FloatBuffer a(float var1, float var2, float var3, float var4) { | |
this.d.clear(); | |
this.d.put(var1).put(var2).put(var3).put(var4); | |
this.d.flip(); | |
return this.d; | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.awt.image.BufferedImage; | |
import java.io.IOException; | |
import java.io.InputStream; | |
import java.lang.StringBuilder; | |
import java.util.Formatter; | |
import java.util.Random; | |
import javax.imageio.ImageIO; | |
import org.lwjgl.opengl.GL11; | |
import java.lang.reflect.Method; | |
public class oi { | |
private int[] colors = new int[32]; // RGB colors for formatting | |
private byte[] basicWidth = new byte[256]; // width of normal characters | |
private byte[] unicodeWidth = new byte[65536]; // (leftborder<<4 | rightborder) (width) of unicode characters | |
private final int unicodeTexID[] = new int[256]; // texture IDs for glyph pages | |
private final int basicTexID; // texture ID for normal characters | |
private int lastBoundTexID; | |
private hf tex; | |
private float xPos; | |
private float yPos; | |
public oi(ig var1, String fileName, hf tex) { | |
BufferedImage image; | |
this.tex = tex; | |
//ModLoader.RegisterAllTextureOverrides(paramgs); | |
try { | |
Class<?> modloader = Class.forName("ModLoader"); | |
if (modloader != null) | |
{ | |
Method runMethod = modloader.getDeclaredMethod("RegisterAllTextureOverrides", hf.class); | |
runMethod.invoke(null, tex); | |
} | |
} catch (Throwable e) { | |
} | |
try { | |
image = ImageIO.read(gs.class.getResourceAsStream(fileName)); | |
InputStream uniWidthFile = gs.class.getResourceAsStream("/font/glyph_sizes.bin"); | |
if (uniWidthFile != null) | |
uniWidthFile.read(unicodeWidth); | |
} catch (IOException e) { | |
throw new RuntimeException(e); | |
} | |
int width = image.getWidth(); | |
int height = image.getHeight(); | |
int[] imageARGB = new int[width * height]; | |
image.getRGB(0, 0, width, height, imageARGB, 0, width); | |
for (int n = 0; n < 256; n++) { | |
int col = n % 16; | |
int row = n / 16; | |
int glyphWidth = 7; | |
// calculate the width of the glyph | |
while (true) { | |
if(glyphWidth >= 0) { | |
int xOff = col * 8 + glyphWidth; | |
boolean emptyRow = true; | |
for(int y = 0; y < 8 && emptyRow; ++y) { | |
int pixel = imageARGB[xOff + (row * 8 + y) * width] & 255; | |
if(pixel > 0) { | |
emptyRow = false; | |
} | |
} | |
if(emptyRow) { | |
--glyphWidth; | |
continue; | |
} | |
} | |
if(n == 32) { | |
glyphWidth = 2; | |
} | |
this.basicWidth[n] = (byte)(glyphWidth + 2); | |
break; | |
} | |
} | |
this.basicTexID = tex.a((BufferedImage)image); | |
// calculate colors | |
for(int colorN = 0; colorN < 32; ++colorN) { | |
int var10 = (colorN >> 3 & 1) * 85; | |
int red = (colorN >> 2 & 1) * 170 + var10; | |
int green = (colorN >> 1 & 1) * 170 + var10; | |
int blue = (colorN >> 0 & 1) * 170 + var10; | |
if(colorN == 6) { | |
red += 85; | |
} | |
if(var1.g) { | |
int tmpRed = (red * 30 + green * 59 + blue * 11) / 100; | |
int tmpGreen = (red * 30 + green * 70) / 100; | |
int tmpBlue = (red * 30 + blue * 70) / 100; | |
red = tmpRed; | |
green = tmpGreen; | |
blue = tmpBlue; | |
} | |
if (colorN >= 16) { | |
red /= 4; | |
green /= 4; | |
blue /= 4; | |
} | |
colors[colorN] = (red&255)<<16 | (green&255)<<8 | (blue&255); | |
} | |
} | |
private void renderBasicCharacter(int id) { | |
float xOff = id % 16 * 8; | |
float yOff = id / 16 * 8; | |
if (lastBoundTexID != basicTexID) { | |
GL11.glBindTexture(GL11.GL_TEXTURE_2D, this.basicTexID); | |
lastBoundTexID = basicTexID; | |
} | |
float width = this.basicWidth[id] - .01f; | |
GL11.glBegin(GL11.GL_TRIANGLE_STRIP); | |
GL11.glTexCoord2f(xOff / 128.0F, yOff / 128.0F); | |
GL11.glVertex3f(xPos, yPos, 0.0f); | |
GL11.glTexCoord2f(xOff / 128.0F, (yOff + 7.99f) / 128.0F); | |
GL11.glVertex3f(xPos, yPos + 7.99f, 0.0f); | |
GL11.glTexCoord2f((xOff + width) / 128.0F, yOff / 128.0F); | |
GL11.glVertex3f(xPos + width, yPos, 0.0f); | |
GL11.glTexCoord2f((xOff + width) / 128.0F, (yOff + 7.99f) / 128.0F); | |
GL11.glVertex3f(xPos + width, yPos + 7.99f, 0.0f); | |
GL11.glEnd(); | |
xPos += this.basicWidth[id]; | |
} | |
private void loadUnicodePage(int page) { | |
BufferedImage image; | |
StringBuilder fileName = new StringBuilder(); | |
new Formatter(fileName).format("/font/glyph_%02X.png", page); | |
try { | |
image = ImageIO.read(ge.class.getResourceAsStream(fileName.toString())); | |
} catch (IOException e) { | |
throw new RuntimeException(e); | |
} | |
unicodeTexID[page] = tex.a(image); | |
lastBoundTexID = unicodeTexID[page]; | |
} | |
private Random r = new Random(); | |
// Generates random Unicode strings for testing the text renderer | |
private String randomString(int len) { | |
char[] text = new char[len]; | |
while (len-- != 0) { | |
int rand = r.nextInt() & 15; | |
if (rand == 0) | |
text[len] = 167; | |
else | |
text[len] = (char)(48 + rand); | |
} | |
return new String(text); | |
} | |
private void renderUnicodeCharacter(char c) { | |
if (unicodeWidth[c] == 0) | |
return; | |
int page = c / 256; | |
if (unicodeTexID[page] == 0) | |
loadUnicodePage(page); | |
if (lastBoundTexID != unicodeTexID[page]) { | |
GL11.glBindTexture(GL11.GL_TEXTURE_2D, unicodeTexID[page]); | |
lastBoundTexID = unicodeTexID[page]; | |
} | |
int firstLeft = unicodeWidth[c] >> 4; // first column with non-trans pixels | |
int firstRight = unicodeWidth[c] & 0xF; // last column with non-trans pixels | |
float left; | |
float right; | |
if (firstRight > 7) { // monospace double-width characters | |
right = 16.0f; | |
left = 0.0f; | |
} else { // space single-width characters proportionally | |
right = firstRight + 1; | |
left = firstLeft; | |
} | |
float xOff = c % 16 * 16 + left; | |
float yOff = (c&0xFF) / 16 * 16; | |
float width = right - left - .02f; | |
GL11.glBegin(GL11.GL_TRIANGLE_STRIP); | |
GL11.glTexCoord2f(xOff / 256.0F, yOff / 256.0F); | |
GL11.glVertex3f(xPos, yPos, 0.0f); | |
GL11.glTexCoord2f(xOff / 256.0F, (yOff + 15.98f) / 256.0F); | |
GL11.glVertex3f(xPos, yPos + 7.99f, 0.0f); | |
GL11.glTexCoord2f((xOff + width) / 256.0F, yOff / 256.0F); | |
GL11.glVertex3f(xPos + width / 2, yPos, 0.0f); | |
GL11.glTexCoord2f((xOff + width) / 256.0F, (yOff + 15.98f) / 256.0F); | |
GL11.glVertex3f(xPos + width / 2, yPos + 7.99f, 0.0f); | |
GL11.glEnd(); | |
xPos += (right - left) / 2 + 1; | |
} | |
private void renderString(String str, boolean dropShadow) { | |
for(int i = 0; i < str.length(); ++i) { | |
char c = str.charAt(i); | |
if (c == 167 && i + 1 < str.length()) { | |
int colorN = "0123456789abcdef".indexOf(str.toLowerCase().charAt(i + 1)); | |
if(colorN < 0 || colorN > 15) | |
colorN = 15; | |
if (dropShadow) | |
colorN += 16; | |
int color = colors[colorN]; | |
GL11.glColor3f((color>>16) / 255.0F, ((color>>8)&255)/255.0F, (color&255)/255.0F); | |
i += 1; | |
continue; | |
} | |
int index = ee.a.indexOf(c); | |
if (c == ' ') | |
xPos += 4.0f; | |
else if (index > 0) | |
renderBasicCharacter(index + 32); | |
else | |
renderUnicodeCharacter(c); | |
} | |
} | |
private void renderString(String str, int x, int y, int color, boolean dropShadow) { | |
if(str != null) { | |
lastBoundTexID = 0; | |
if ((color & 0xFF000000) == 0) | |
color |= 0xFF000000; // force alpha if not set | |
if (dropShadow) // divide RGB by 4, preserve alpha | |
color = (color & 0xfcfcfc) >> 2 | (color & (-1<<24)); | |
GL11.glColor4f((color>>16&255)/255F, | |
(color>>8&255)/255F, | |
(color&255)/255F, | |
(color>>24&255)/255F); | |
xPos = x; | |
yPos = y; | |
renderString(str, dropShadow); | |
} | |
} | |
public void a(String str, int x, int y, int color) { | |
this.renderString(str, x + 1, y + 1, color, true); | |
this.renderString(str, x, y, color, false); | |
} | |
public void b(String str, int x, int y, int color) { | |
this.renderString(str, x, y, color, false); | |
} | |
public int a(String str) { | |
// getWidth | |
if (str == null) { | |
return 0; | |
} | |
int len = 0; | |
for (int i = 0; i < str.length(); ++i) { | |
char c = str.charAt(i); | |
if (c == 167) { | |
++i; | |
} else { | |
int charindex = ee.a.indexOf(c); | |
if(charindex >= 0) { | |
len += this.basicWidth[charindex + 32]; | |
} else if (unicodeWidth[c] != 0) { | |
int left = unicodeWidth[c] >> 4; | |
int right = unicodeWidth[c] & 0xF; | |
if (right > 7) { | |
right = 15; | |
left = 0; | |
} | |
right += 1; | |
len += (right - left) / 2 + 1; | |
} | |
} | |
} | |
return len; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment