Skip to content

Instantly share code, notes, and snippets.

@rmmh
Created January 10, 2019 05:49
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rmmh/78f1cbdcb509a8348262e19dfc85522b to your computer and use it in GitHub Desktop.
Save rmmh/78f1cbdcb509a8348262e19dfc85522b to your computer and use it in GitHub Desktop.
Minecraft Mod: Optimine 1.3_01v2 Source Code.
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();
}
}
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;
}
}
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) {}
}
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" : "" ) );
}
}
}
}
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;
}
}
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