public final void run() {
		this.running = true;

		String folder = "mcraft/client";
		String home = System.getProperty("user.home", ".");
		String osName = System.getProperty("os.name").toLowerCase();
		File minecraftFolder;
		switch(OperatingSystemLookup.lookup[
				(osName.contains("win") ? Minecraft$OS.windows : (osName.contains("mac")
						? Minecraft$OS.macos : (osName.contains("solaris")
						? Minecraft$OS.solaris : (osName.contains("sunos")
						? Minecraft$OS.solaris : (osName.contains("linux")
						? Minecraft$OS.linux : (osName.contains("unix") ? Minecraft$OS.linux : Minecraft$OS.unknown)))))).ordinal()])
		{
			case 1:
				System.out.println("UNKNOWN OS!!!");

				return;
			case 2:
				minecraftFolder = new File(home, '.' + folder + '/');
				break;
			case 3:
				String appData = System.getenv("APPDATA");

				if(appData != null)
				{
					minecraftFolder = new File(appData, "." + folder + '/');
				} else {
					minecraftFolder = new File(home, '.' + folder + '/');
				}
				break;
			case 4:
				minecraftFolder = new File(home, "Library/Application Support/" + folder);
				break;
			default:
				minecraftFolder = new File(home, folder + '/');
		}

		if(!minecraftFolder.exists() && !minecraftFolder.mkdirs())
		{
			throw new RuntimeException("The working directory could not be created: " + minecraftFolder);
		}

		mcDir = minecraftFolder;

		try {
			Minecraft var1 = this;

			if(minecraftFolder.exists())
			{
			} else {
				JOptionPane.showMessageDialog(null,
						"Welcome to the MCraft Client Alpha 1!" +
								"\nPleave give MCraft some time to download required files." +
								"\nTHIS CAN TAKE A LONG TIME DEPENDING ON YOUR INTERNET SPEED.",
						"Welcome to MCraft Client",
						JOptionPane.INFORMATION_MESSAGE);
			}

			var1.resourceThread = new ResourceDownloadThread(mcDir, var1);
			var1.resourceThread.run();

			System.setProperty("org.lwjgl.librarypath", mcDir + "/native/windows");
			System.setProperty("net.java.games.input.librarypath", mcDir + "/native/windows");

			if(this.canvas != null) {
				Display.setParent(this.canvas);
			} else if(this.fullscreen) {
				Display.setFullscreen(true);
				this.width = Display.getDisplayMode().getWidth();
				this.height = Display.getDisplayMode().getHeight();
			} else {
				Display.setDisplayMode(new DisplayMode(this.width, this.height));
			}

			Display.setTitle("Minecraft 0.30");

			try {
				Display.create();
				//Display.create(new PixelFormat(8, 16, 0, 16));
			} catch (LWJGLException var57) {
				var57.printStackTrace();

				try {
					Thread.sleep(1000L);
				} catch (InterruptedException var56) {
					;
				}

				Display.create();
			}

			Keyboard.create();
			Mouse.create();

			try {
				Controllers.create();
			} catch (Exception var55) {
				var55.printStackTrace();
			}

			checkGLError("Pre startup");
			GL11.glEnable(3553);
			GL11.glShadeModel(7425);
			GL11.glClearDepth(1.0D);
			GL11.glEnable(2929);
			GL11.glDepthFunc(515);
			GL11.glEnable(3008);
			GL11.glAlphaFunc(516, 0.0F);
			GL11.glCullFace(1029);
			GL11.glMatrixMode(5889);
			GL11.glLoadIdentity();
			GL11.glMatrixMode(5888);
			checkGLError("Startup");
			//
			this.settings = new GameSettings(this, minecraftFolder);
			this.textureManager = new TextureManager(this.settings);
			this.textureManager.registerAnimation(new TextureLavaFX());
			this.textureManager.registerAnimation(new TextureWaterFX());
			this.fontRenderer = new FontRenderer(this.settings, "/default.png", this.textureManager);
			IntBuffer var9;
			(var9 = BufferUtils.createIntBuffer(256)).clear().limit(256);
			this.levelRenderer = new LevelRenderer(this, this.textureManager);
			Item.initModels();
			Mob.modelCache = new ModelManager();
			GL11.glViewport(0, 0, this.width, this.height);
			if(this.server != null && this.session != null) {
				Level var85;
				(var85 = new Level()).setData(8, 8, 8, new byte[512]);
				this.setLevel(var85);
			} else {
				boolean var10 = false;

				try {
					if(var1.levelName != null) {
						var1.loadOnlineLevel(var1.levelName, var1.levelId);
					} else if(!var1.levelLoaded) {
						Level var11 = null;
						if(gamemode instanceof CreativeGameMode)
						{
							if((var11 = var1.levelIo.load((InputStream)(new FileInputStream(new File(mcDir, "levelc.dat"))))) != null) {
								var1.setLevel(var11);
							}
						} else if(gamemode instanceof SurvivalGameMode) {
							if((var11 = var1.levelIo.load((InputStream)(new FileInputStream(new File(mcDir, "levels.dat"))))) != null) {
								var1.setLevel(var11);
							}
						}
					}
				} catch (Exception var54) {
					var54.printStackTrace();
				}

				if(this.level == null) {
					this.generateLevel(1);
				}
			}

			this.particleManager = new ParticleManager(this.level, this.textureManager);
			if(this.levelLoaded) {
				try {
					var1.cursor = new Cursor(16, 16, 0, 0, 1, var9, (IntBuffer)null);
				} catch (LWJGLException var53) {
					var53.printStackTrace();
				}
			}

			try {
				var1.soundPlayer = new SoundPlayer(var1.settings);
				SoundPlayer var4 = var1.soundPlayer;

				try {
					AudioFormat var67 = new AudioFormat(44100.0F, 16, 2, true, true);
					var4.dataLine = AudioSystem.getSourceDataLine(var67);
					var4.dataLine.open(var67, 4410);
					var4.dataLine.start();
					var4.running = true;
					Thread var72;
					(var72 = new Thread(var4)).setDaemon(true);
					var72.setPriority(10);
					var72.start();
				} catch (Exception var51) {
					var51.printStackTrace();
					var4.running = false;
				}

				//var1.resourceThread = new ResourceDownloadThread(mcDir, var1);
				//var1.resourceThread.start();
			} catch (Exception var52) {
				;
			}

			checkGLError("Post startup");
			this.hud = new HUDScreen(this, this.width, this.height);
			(new SkinDownloadThread(this)).start();
			if(this.server != null && this.session != null) {
				this.networkManager = new NetworkManager(this, this.server, this.port, this.session.username, this.session.mppass);
			}
		} catch (Exception var62) {
			var62.printStackTrace();
			JOptionPane.showMessageDialog((Component)null, var62.toString(), "Failed to start Minecraft", 0);
			return;
		}

		long var13 = System.currentTimeMillis();
		int var15 = 0;

		try {
			while(this.running) {
				if(this.waiting) {
					Thread.sleep(100L);
				} else {
					if(this.canvas == null && Display.isCloseRequested()) {
						this.running = false;
					}

					if(!Display.isFullscreen()
							&& (canvas.getWidth() != Display.getDisplayMode().getWidth()
							|| canvas.getHeight() != Display.getDisplayMode().getHeight()))
					{
						DisplayMode displayMode = new DisplayMode(canvas.getWidth(), canvas.getHeight());
						try {
							Display.setDisplayMode(displayMode);
						} catch (LWJGLException e) {
							e.printStackTrace();
						}

						resize();
					}

					try {
						Timer var63 = this.timer;
						long var16;
						long var18 = (var16 = System.currentTimeMillis()) - var63.lastSysClock;
						long var20 = System.nanoTime() / 1000000L;
						double var24;
						if(var18 > 1000L) {
							long var22 = var20 - var63.lastHRClock;
							var24 = (double)var18 / (double)var22;
							var63.adjustment += (var24 - var63.adjustment) * 0.20000000298023224D;
							var63.lastSysClock = var16;
							var63.lastHRClock = var20;
						}

						if(var18 < 0L) {
							var63.lastSysClock = var16;
							var63.lastHRClock = var20;
						}

						double var95;
						var24 = ((var95 = (double)var20 / 1000.0D) - var63.lastHR) * var63.adjustment;
						var63.lastHR = var95;
						if(var24 < 0.0D) {
							var24 = 0.0D;
						}

						if(var24 > 1.0D) {
							var24 = 1.0D;
						}

						var63.elapsedDelta = (float)((double)var63.elapsedDelta + var24 * (double)var63.speed * (double)var63.tps);
						var63.elapsedTicks = (int)var63.elapsedDelta;
						if(var63.elapsedTicks > 100) {
							var63.elapsedTicks = 100;
						}

						var63.elapsedDelta -= (float)var63.elapsedTicks;
						var63.delta = var63.elapsedDelta;

						for(int var64 = 0; var64 < this.timer.elapsedTicks; ++var64) {
							++this.ticks;
							this.tick();
						}

						checkGLError("Pre render");
						GL11.glEnable(3553);
						if(!this.online) {
							this.gamemode.applyCracks(this.timer.delta);
							float var65 = this.timer.delta;
							com.mojang.minecraft.render.Renderer var66 = this.renderer;
							if(this.renderer.displayActive && !Display.isActive()) {
								var66.minecraft.pause();
							}

							var66.displayActive = Display.isActive();
							int var68;
							int var70;
							int var86;
							int var81;
							if(var66.minecraft.hasMouse) {
								var81 = 0;
								var86 = 0;
								if(var66.minecraft.levelLoaded) {
									if(var66.minecraft.canvas != null) {
										Point var90;
										var70 = (var90 = var66.minecraft.canvas.getLocationOnScreen()).x + var66.minecraft.width / 2;
										var68 = var90.y + var66.minecraft.height / 2;
										Point var75;
										var81 = (var75 = MouseInfo.getPointerInfo().getLocation()).x - var70;
										var86 = -(var75.y - var68);
										var66.minecraft.robot.mouseMove(var70, var68);
									} else {
										Mouse.setCursorPosition(var66.minecraft.width / 2, var66.minecraft.height / 2);
									}
								} else {
									var81 = Mouse.getDX();
									var86 = Mouse.getDY();
								}

								byte var91 = 1;
								if(var66.minecraft.settings.invertMouse) {
									var91 = -1;
								}

								var66.minecraft.player.turn((float)var81, (float)(var86 * var91));
							}

							if(!var66.minecraft.online) {
								var81 = var66.minecraft.width * 240 / var66.minecraft.height;
								var86 = var66.minecraft.height * 240 / var66.minecraft.height;
								int var94 = Mouse.getX() * var81 / var66.minecraft.width;
								var70 = var86 - Mouse.getY() * var86 / var66.minecraft.height - 1;
								if(var66.minecraft.level != null) {
									float var80 = var65;
									com.mojang.minecraft.render.Renderer var82 = var66;
									com.mojang.minecraft.render.Renderer var27 = var66;
									Player var28;
									float var29 = (var28 = var66.minecraft.player).xRotO + (var28.xRot - var28.xRotO) * var65;
									float var30 = var28.yRotO + (var28.yRot - var28.yRotO) * var65;
									Vec3D var31 = var66.getPlayerVector(var65);
									float var32 = MathHelper.cos(-var30 * 0.017453292F - 3.1415927F);
									float var69 = MathHelper.sin(-var30 * 0.017453292F - 3.1415927F);
									float var74 = MathHelper.cos(-var29 * 0.017453292F);
									float var33 = MathHelper.sin(-var29 * 0.017453292F);
									float var34 = var69 * var74;
									float var87 = var32 * var74;
									float var36 = var66.minecraft.gamemode.getReachDistance();
									Vec3D var71 = var31.add(var34 * var36, var33 * var36, var87 * var36);
									var66.minecraft.selected = var66.minecraft.level.clip(var31, var71);
									var74 = var36;
									if(var66.minecraft.selected != null) {
										var74 = var66.minecraft.selected.vec.distance(var66.getPlayerVector(var65));
									}

									var31 = var66.getPlayerVector(var65);
									if(var66.minecraft.gamemode instanceof CreativeGameMode) {
										var36 = 32.0F;
									} else {
										var36 = var74;
									}

									var71 = var31.add(var34 * var36, var33 * var36, var87 * var36);
									var66.entity = null;
									List var37 = var66.minecraft.level.blockMap.getEntities(var28, var28.bb.expand(var34 * var36, var33 * var36, var87 * var36));
									float var35 = 0.0F;

									for(var81 = 0; var81 < var37.size(); ++var81) {
										Entity var88;
										if((var88 = (Entity)var37.get(var81)).isPickable()) {
											var74 = 0.1F;
											MovingObjectPosition var78;
											if((var78 = var88.bb.grow(var74, var74, var74).clip(var31, var71)) != null && ((var74 = var31.distance(var78.vec)) < var35 || var35 == 0.0F)) {
												var27.entity = var88;
												var35 = var74;
											}
										}
									}

									if(var27.entity != null && !(var27.minecraft.gamemode instanceof CreativeGameMode)) {
										var27.minecraft.selected = new MovingObjectPosition(var27.entity);
									}

									int var77 = 0;

									while(true) {
										if(var77 >= 2) {
											GL11.glColorMask(true, true, true, false);
											break;
										}

										if(var82.minecraft.settings.anaglyph) {
											if(var77 == 0) {
												GL11.glColorMask(false, true, true, false);
											} else {
												GL11.glColorMask(true, false, false, false);
											}
										}

										Player var126 = var82.minecraft.player;
										Level var119 = var82.minecraft.level;
										LevelRenderer var89 = var82.minecraft.levelRenderer;
										ParticleManager var93 = var82.minecraft.particleManager;
										GL11.glViewport(0, 0, var82.minecraft.width, var82.minecraft.height);
										Level var26 = var82.minecraft.level;
										var28 = var82.minecraft.player;
										var29 = 1.0F / (float)(4 - var82.minecraft.settings.viewDistance);
										var29 = 1.0F - (float)Math.pow((double)var29, 0.25D);
										var30 = (float)(var26.skyColor >> 16 & 255) / 255.0F;
										float var117 = (float)(var26.skyColor >> 8 & 255) / 255.0F;
										var32 = (float)(var26.skyColor & 255) / 255.0F;
										var82.fogRed = (float)(var26.fogColor >> 16 & 255) / 255.0F;
										var82.fogBlue = (float)(var26.fogColor >> 8 & 255) / 255.0F;
										var82.fogGreen = (float)(var26.fogColor & 255) / 255.0F;
										var82.fogRed += (var30 - var82.fogRed) * var29;
										var82.fogBlue += (var117 - var82.fogBlue) * var29;
										var82.fogGreen += (var32 - var82.fogGreen) * var29;
										var82.fogRed *= var82.fogColorMultiplier;
										var82.fogBlue *= var82.fogColorMultiplier;
										var82.fogGreen *= var82.fogColorMultiplier;
										Block var73;
										if((var73 = Block.blocks[var26.getTile((int)var28.x, (int)(var28.y + 0.12F), (int)var28.z)]) != null && var73.getLiquidType() != LiquidType.NOT_LIQUID) {
											LiquidType var79;
											if((var79 = var73.getLiquidType()) == LiquidType.WATER) {
												var82.fogRed = 0.02F;
												var82.fogBlue = 0.02F;
												var82.fogGreen = 0.2F;
											} else if(var79 == LiquidType.LAVA) {
												var82.fogRed = 0.6F;
												var82.fogBlue = 0.1F;
												var82.fogGreen = 0.0F;
											}
										}

										if(var82.minecraft.settings.anaglyph) {
											var74 = (var82.fogRed * 30.0F + var82.fogBlue * 59.0F + var82.fogGreen * 11.0F) / 100.0F;
											var33 = (var82.fogRed * 30.0F + var82.fogBlue * 70.0F) / 100.0F;
											var34 = (var82.fogRed * 30.0F + var82.fogGreen * 70.0F) / 100.0F;
											var82.fogRed = var74;
											var82.fogBlue = var33;
											var82.fogGreen = var34;
										}

										GL11.glClearColor(var82.fogRed, var82.fogBlue, var82.fogGreen, 0.0F);
										GL11.glClear(16640);
										var82.fogColorMultiplier = 1.0F;
										GL11.glEnable(2884);
										var82.fogEnd = (float)(512 >> (var82.minecraft.settings.viewDistance << 1));
										GL11.glMatrixMode(5889);
										GL11.glLoadIdentity();
										var29 = 0.07F;
										if(var82.minecraft.settings.anaglyph) {
											GL11.glTranslatef((float)(-((var77 << 1) - 1)) * var29, 0.0F, 0.0F);
										}

										Player var116 = var82.minecraft.player;
										var69 = 70.0F;
										if(var116.health <= 0) {
											var74 = (float)var116.deathTime + var80;
											var69 /= (1.0F - 500.0F / (var74 + 500.0F)) * 2.0F + 1.0F;
										}

										GLU.gluPerspective(var69, (float)var82.minecraft.width / (float)var82.minecraft.height, 0.05F, var82.fogEnd);
										GL11.glMatrixMode(5888);
										GL11.glLoadIdentity();
										if(var82.minecraft.settings.anaglyph) {
											GL11.glTranslatef((float)((var77 << 1) - 1) * 0.1F, 0.0F, 0.0F);
										}

										var82.hurtEffect(var80);
										if(var82.minecraft.settings.viewBobbing) {
											var82.applyBobbing(var80);
										}

										var116 = var82.minecraft.player;
										GL11.glTranslatef(0.0F, 0.0F, -0.1F);
										GL11.glRotatef(var116.xRotO + (var116.xRot - var116.xRotO) * var80, 1.0F, 0.0F, 0.0F);
										GL11.glRotatef(var116.yRotO + (var116.yRot - var116.yRotO) * var80, 0.0F, 1.0F, 0.0F);
										var69 = var116.xo + (var116.x - var116.xo) * var80;
										var74 = var116.yo + (var116.y - var116.yo) * var80;
										var33 = var116.zo + (var116.z - var116.zo) * var80;
										GL11.glTranslatef(-var69, -var74, -var33);
										Frustrum var76 = FrustrumImpl.update();
										Frustrum var100 = var76;
										LevelRenderer var101 = var82.minecraft.levelRenderer;

										int var98;
										for(var98 = 0; var98 < var101.chunkCache.length; ++var98) {
											var101.chunkCache[var98].clip(var100);
										}

										var101 = var82.minecraft.levelRenderer;
										Collections.sort(var82.minecraft.levelRenderer.chunks, new ChunkDirtyDistanceComparator(var126));
										var98 = var101.chunks.size() - 1;
										int var105;
										if((var105 = var101.chunks.size()) > 3) {
											var105 = 3;
										}

										int var104;
										for(var104 = 0; var104 < var105; ++var104) {
											Chunk var118;
											(var118 = (Chunk)var101.chunks.remove(var98 - var104)).update();
											var118.loaded = false;
										}

										var82.updateFog();
										GL11.glEnable(2912);
										var89.sortChunks(var126, 0);
										int var83;
										int var110;
										ShapeRenderer var115;
										int var114;
										int var125;
										int var122;
										int var120;
										if(var119.isSolid(var126.x, var126.y, var126.z, 0.1F)) {
											var120 = (int)var126.x;
											var83 = (int)var126.y;
											var110 = (int)var126.z;

											for(var122 = var120 - 1; var122 <= var120 + 1; ++var122) {
												for(var125 = var83 - 1; var125 <= var83 + 1; ++var125) {
													for(int var38 = var110 - 1; var38 <= var110 + 1; ++var38) {
														var105 = var38;
														var98 = var125;
														int var99 = var122;
														if((var104 = var89.level.getTile(var122, var125, var38)) != 0 && Block.blocks[var104].isSolid()) {
															GL11.glColor4f(0.2F, 0.2F, 0.2F, 1.0F);
															GL11.glDepthFunc(513);
															var115 = ShapeRenderer.instance;
															ShapeRenderer.instance.begin();

															for(var114 = 0; var114 < 6; ++var114) {
																Block.blocks[var104].renderInside(var115, var99, var98, var105, var114);
															}

															var115.end();
															GL11.glCullFace(1028);
															var115.begin();

															for(var114 = 0; var114 < 6; ++var114) {
																Block.blocks[var104].renderInside(var115, var99, var98, var105, var114);
															}

															var115.end();
															GL11.glCullFace(1029);
															GL11.glDepthFunc(515);
														}
													}
												}
											}
										}

										var82.setLighting(true);
										Vec3D var103 = var82.getPlayerVector(var80);
										var89.level.blockMap.render(var103, var76, var89.textureManager, var80);
										var82.setLighting(false);
										var82.updateFog();
										float var107 = var80;
										ParticleManager var96 = var93;
										var29 = -MathHelper.cos(var126.yRot * 3.1415927F / 180.0F);
										var117 = -(var30 = -MathHelper.sin(var126.yRot * 3.1415927F / 180.0F)) * MathHelper.sin(var126.xRot * 3.1415927F / 180.0F);
										var32 = var29 * MathHelper.sin(var126.xRot * 3.1415927F / 180.0F);
										var69 = MathHelper.cos(var126.xRot * 3.1415927F / 180.0F);

										for(var83 = 0; var83 < 2; ++var83) {
											if(var96.particles[var83].size() != 0) {
												var110 = 0;
												if(var83 == 0) {
													var110 = var96.textureManager.load("/particles.png");
												}

												if(var83 == 1) {
													var110 = var96.textureManager.load("/terrain.png");
												}

												GL11.glBindTexture(3553, var110);
												ShapeRenderer var121 = ShapeRenderer.instance;
												ShapeRenderer.instance.begin();

												for(var120 = 0; var120 < var96.particles[var83].size(); ++var120) {
													((Particle)var96.particles[var83].get(var120)).render(var121, var107, var29, var69, var30, var117, var32);
												}

												var121.end();
											}
										}

										GL11.glBindTexture(3553, var89.textureManager.load("/rock.png"));
										GL11.glEnable(3553);
										GL11.glCallList(var89.listId);
										var82.updateFog();
										var101 = var89;
										GL11.glBindTexture(3553, var89.textureManager.load("/clouds.png"));
										GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
										var107 = (float)(var89.level.cloudColor >> 16 & 255) / 255.0F;
										var29 = (float)(var89.level.cloudColor >> 8 & 255) / 255.0F;
										var30 = (float)(var89.level.cloudColor & 255) / 255.0F;
										if(var89.minecraft.settings.anaglyph) {
											var117 = (var107 * 30.0F + var29 * 59.0F + var30 * 11.0F) / 100.0F;
											var32 = (var107 * 30.0F + var29 * 70.0F) / 100.0F;
											var69 = (var107 * 30.0F + var30 * 70.0F) / 100.0F;
											var107 = var117;
											var29 = var32;
											var30 = var69;
										}

										var115 = ShapeRenderer.instance;
										var74 = 0.0F;
										var33 = 4.8828125E-4F;
										var74 = (float)(var89.level.depth + 2);
										var34 = ((float)var89.ticks + var80) * var33 * 0.03F;
										var35 = 0.0F;
										var115.begin();
										var115.color(var107, var29, var30);

										for(var86 = -2048; var86 < var101.level.width + 2048; var86 += 512) {
											for(var125 = -2048; var125 < var101.level.height + 2048; var125 += 512) {
												var115.vertexUV((float)var86, var74, (float)(var125 + 512), (float)var86 * var33 + var34, (float)(var125 + 512) * var33);
												var115.vertexUV((float)(var86 + 512), var74, (float)(var125 + 512), (float)(var86 + 512) * var33 + var34, (float)(var125 + 512) * var33);
												var115.vertexUV((float)(var86 + 512), var74, (float)var125, (float)(var86 + 512) * var33 + var34, (float)var125 * var33);
												var115.vertexUV((float)var86, var74, (float)var125, (float)var86 * var33 + var34, (float)var125 * var33);
												var115.vertexUV((float)var86, var74, (float)var125, (float)var86 * var33 + var34, (float)var125 * var33);
												var115.vertexUV((float)(var86 + 512), var74, (float)var125, (float)(var86 + 512) * var33 + var34, (float)var125 * var33);
												var115.vertexUV((float)(var86 + 512), var74, (float)(var125 + 512), (float)(var86 + 512) * var33 + var34, (float)(var125 + 512) * var33);
												var115.vertexUV((float)var86, var74, (float)(var125 + 512), (float)var86 * var33 + var34, (float)(var125 + 512) * var33);
											}
										}

										var115.end();
										GL11.glDisable(3553);
										var115.begin();
										var34 = (float)(var101.level.skyColor >> 16 & 255) / 255.0F;
										var35 = (float)(var101.level.skyColor >> 8 & 255) / 255.0F;
										var87 = (float)(var101.level.skyColor & 255) / 255.0F;
										if(var101.minecraft.settings.anaglyph) {
											var36 = (var34 * 30.0F + var35 * 59.0F + var87 * 11.0F) / 100.0F;
											var69 = (var34 * 30.0F + var35 * 70.0F) / 100.0F;
											var74 = (var34 * 30.0F + var87 * 70.0F) / 100.0F;
											var34 = var36;
											var35 = var69;
											var87 = var74;
										}

										var115.color(var34, var35, var87);
										var74 = (float)(var101.level.depth + 10);

										for(var125 = -2048; var125 < var101.level.width + 2048; var125 += 512) {
											for(var68 = -2048; var68 < var101.level.height + 2048; var68 += 512) {
												var115.vertex((float)var125, var74, (float)var68);
												var115.vertex((float)(var125 + 512), var74, (float)var68);
												var115.vertex((float)(var125 + 512), var74, (float)(var68 + 512));
												var115.vertex((float)var125, var74, (float)(var68 + 512));
											}
										}

										var115.end();
										GL11.glEnable(3553);
										var82.updateFog();
										int var108;
										if(var82.minecraft.selected != null) {
											GL11.glDisable(3008);
											MovingObjectPosition var10001 = var82.minecraft.selected;
											var105 = var126.inventory.getSelected();
											boolean var106 = false;
											MovingObjectPosition var102 = var10001;
											var101 = var89;
											ShapeRenderer var113 = ShapeRenderer.instance;
											GL11.glEnable(3042);
											GL11.glEnable(3008);
											GL11.glBlendFunc(770, 1);
											GL11.glColor4f(1.0F, 1.0F, 1.0F, (MathHelper.sin((float)System.currentTimeMillis() / 100.0F) * 0.2F + 0.4F) * 0.5F);
											if(var89.cracks > 0.0F) {
												GL11.glBlendFunc(774, 768);
												var108 = var89.textureManager.load("/terrain.png");
												GL11.glBindTexture(3553, var108);
												GL11.glColor4f(1.0F, 1.0F, 1.0F, 0.5F);
												GL11.glPushMatrix();
												Block var10000 = (var114 = var89.level.getTile(var102.x, var102.y, var102.z)) > 0?Block.blocks[var114]:null;
												var73 = var10000;
												var74 = (var10000.x1 + var73.x2) / 2.0F;
												var33 = (var73.y1 + var73.y2) / 2.0F;
												var34 = (var73.z1 + var73.z2) / 2.0F;
												GL11.glTranslatef((float)var102.x + var74, (float)var102.y + var33, (float)var102.z + var34);
												var35 = 1.01F;
												GL11.glScalef(1.01F, var35, var35);
												GL11.glTranslatef(-((float)var102.x + var74), -((float)var102.y + var33), -((float)var102.z + var34));
												var113.begin();
												var113.noColor();
												GL11.glDepthMask(false);
												if(var73 == null) {
													var73 = Block.STONE;
												}

												for(var86 = 0; var86 < 6; ++var86) {
													var73.renderSide(var113, var102.x, var102.y, var102.z, var86, 240 + (int)(var101.cracks * 10.0F));
												}

												var113.end();
												GL11.glDepthMask(true);
												GL11.glPopMatrix();
											}

											GL11.glDisable(3042);
											GL11.glDisable(3008);
											var10001 = var82.minecraft.selected;
											var126.inventory.getSelected();
											var106 = false;
											var102 = var10001;
											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);
											var29 = 0.002F;
											if((var104 = var89.level.getTile(var102.x, var102.y, var102.z)) > 0) {
												AABB var111 = Block.blocks[var104].getSelectionBox(var102.x, var102.y, var102.z).grow(var29, var29, var29);
												GL11.glBegin(3);
												GL11.glVertex3f(var111.x0, var111.y0, var111.z0);
												GL11.glVertex3f(var111.x1, var111.y0, var111.z0);
												GL11.glVertex3f(var111.x1, var111.y0, var111.z1);
												GL11.glVertex3f(var111.x0, var111.y0, var111.z1);
												GL11.glVertex3f(var111.x0, var111.y0, var111.z0);
												GL11.glEnd();
												GL11.glBegin(3);
												GL11.glVertex3f(var111.x0, var111.y1, var111.z0);
												GL11.glVertex3f(var111.x1, var111.y1, var111.z0);
												GL11.glVertex3f(var111.x1, var111.y1, var111.z1);
												GL11.glVertex3f(var111.x0, var111.y1, var111.z1);
												GL11.glVertex3f(var111.x0, var111.y1, var111.z0);
												GL11.glEnd();
												GL11.glBegin(1);
												GL11.glVertex3f(var111.x0, var111.y0, var111.z0);
												GL11.glVertex3f(var111.x0, var111.y1, var111.z0);
												GL11.glVertex3f(var111.x1, var111.y0, var111.z0);
												GL11.glVertex3f(var111.x1, var111.y1, var111.z0);
												GL11.glVertex3f(var111.x1, var111.y0, var111.z1);
												GL11.glVertex3f(var111.x1, var111.y1, var111.z1);
												GL11.glVertex3f(var111.x0, var111.y0, var111.z1);
												GL11.glVertex3f(var111.x0, var111.y1, var111.z1);
												GL11.glEnd();
											}

											GL11.glDepthMask(true);
											GL11.glEnable(3553);
											GL11.glDisable(3042);
											GL11.glEnable(3008);
										}

										GL11.glBlendFunc(770, 771);
										var82.updateFog();
										GL11.glEnable(3553);
										GL11.glEnable(3042);
										GL11.glBindTexture(3553, var89.textureManager.load("/water.png"));
										GL11.glCallList(var89.listId + 1);
										GL11.glDisable(3042);
										GL11.glEnable(3042);
										GL11.glColorMask(false, false, false, false);
										var120 = var89.sortChunks(var126, 1);
										GL11.glColorMask(true, true, true, true);
										if(var82.minecraft.settings.anaglyph) {
											if(var77 == 0) {
												GL11.glColorMask(false, true, true, false);
											} else {
												GL11.glColorMask(true, false, false, false);
											}
										}

										if(var120 > 0) {
											GL11.glBindTexture(3553, var89.textureManager.load("/terrain.png"));
											GL11.glCallLists(var89.buffer);
										}

										GL11.glDepthMask(true);
										GL11.glDisable(3042);
										GL11.glDisable(2912);
										if(var82.minecraft.raining) {
											float var97 = var80;
											var27 = var82;
											var28 = var82.minecraft.player;
											Level var109 = var82.minecraft.level;
											var104 = (int)var28.x;
											var108 = (int)var28.y;
											var114 = (int)var28.z;
											ShapeRenderer var84 = ShapeRenderer.instance;
											GL11.glDisable(2884);
											GL11.glNormal3f(0.0F, 1.0F, 0.0F);
											GL11.glEnable(3042);
											GL11.glBlendFunc(770, 771);
											GL11.glBindTexture(3553, var82.minecraft.textureManager.load("/rain.png"));

											for(var110 = var104 - 5; var110 <= var104 + 5; ++var110) {
												for(var122 = var114 - 5; var122 <= var114 + 5; ++var122) {
													var120 = var109.getHighestTile(var110, var122);
													var86 = var108 - 5;
													var125 = var108 + 5;
													if(var86 < var120) {
														var86 = var120;
													}

													if(var125 < var120) {
														var125 = var120;
													}

													if(var86 != var125) {
														var74 = ((float)((var27.levelTicks + var110 * 3121 + var122 * 418711) % 32) + var97) / 32.0F;
														float var124 = (float)var110 + 0.5F - var28.x;
														var35 = (float)var122 + 0.5F - var28.z;
														float var92 = MathHelper.sqrt(var124 * var124 + var35 * var35) / (float)5;
														GL11.glColor4f(1.0F, 1.0F, 1.0F, (1.0F - var92 * var92) * 0.7F);
														var84.begin();
														var84.vertexUV((float)var110, (float)var86, (float)var122, 0.0F, (float)var86 * 2.0F / 8.0F + var74 * 2.0F);
														var84.vertexUV((float)(var110 + 1), (float)var86, (float)(var122 + 1), 2.0F, (float)var86 * 2.0F / 8.0F + var74 * 2.0F);
														var84.vertexUV((float)(var110 + 1), (float)var125, (float)(var122 + 1), 2.0F, (float)var125 * 2.0F / 8.0F + var74 * 2.0F);
														var84.vertexUV((float)var110, (float)var125, (float)var122, 0.0F, (float)var125 * 2.0F / 8.0F + var74 * 2.0F);
														var84.vertexUV((float)var110, (float)var86, (float)(var122 + 1), 0.0F, (float)var86 * 2.0F / 8.0F + var74 * 2.0F);
														var84.vertexUV((float)(var110 + 1), (float)var86, (float)var122, 2.0F, (float)var86 * 2.0F / 8.0F + var74 * 2.0F);
														var84.vertexUV((float)(var110 + 1), (float)var125, (float)var122, 2.0F, (float)var125 * 2.0F / 8.0F + var74 * 2.0F);
														var84.vertexUV((float)var110, (float)var125, (float)(var122 + 1), 0.0F, (float)var125 * 2.0F / 8.0F + var74 * 2.0F);
														var84.end();
													}
												}
											}

											GL11.glEnable(2884);
											GL11.glDisable(3042);
										}

										if(var82.entity != null) {
											var82.entity.renderHover(var82.minecraft.textureManager, var80);
										}

										GL11.glClear(256);
										GL11.glLoadIdentity();
										if(var82.minecraft.settings.anaglyph) {
											GL11.glTranslatef((float)((var77 << 1) - 1) * 0.1F, 0.0F, 0.0F);
										}

										var82.hurtEffect(var80);
										if(var82.minecraft.settings.viewBobbing) {
											var82.applyBobbing(var80);
										}

										HeldBlock var112 = var82.heldBlock;
										var117 = var82.heldBlock.lastPos + (var112.pos - var112.lastPos) * var80;
										var116 = var112.minecraft.player;
										GL11.glPushMatrix();
										GL11.glRotatef(var116.xRotO + (var116.xRot - var116.xRotO) * var80, 1.0F, 0.0F, 0.0F);
										GL11.glRotatef(var116.yRotO + (var116.yRot - var116.yRotO) * var80, 0.0F, 1.0F, 0.0F);
										var112.minecraft.renderer.setLighting(true);
										GL11.glPopMatrix();
										GL11.glPushMatrix();
										var69 = 0.8F;
										if(var112.moving) {
											var33 = MathHelper.sin((var74 = ((float)var112.offset + var80) / 7.0F) * 3.1415927F);
											GL11.glTranslatef(-MathHelper.sin(MathHelper.sqrt(var74) * 3.1415927F) * 0.4F, MathHelper.sin(MathHelper.sqrt(var74) * 3.1415927F * 2.0F) * 0.2F, -var33 * 0.2F);
										}

										GL11.glTranslatef(0.7F * var69, -0.65F * var69 - (1.0F - var117) * 0.6F, -0.9F * var69);
										GL11.glRotatef(45.0F, 0.0F, 1.0F, 0.0F);
										GL11.glEnable(2977);
										if(var112.moving) {
											var33 = MathHelper.sin((var74 = ((float)var112.offset + var80) / 7.0F) * var74 * 3.1415927F);
											GL11.glRotatef(MathHelper.sin(MathHelper.sqrt(var74) * 3.1415927F) * 80.0F, 0.0F, 1.0F, 0.0F);
											GL11.glRotatef(-var33 * 20.0F, 1.0F, 0.0F, 0.0F);
										}

										GL11.glColor4f(var74 = var112.minecraft.level.getBrightness((int)var116.x, (int)var116.y, (int)var116.z), var74, var74, 1.0F);
										ShapeRenderer var123 = ShapeRenderer.instance;
										if(var112.block != null) {
											var34 = 0.4F;
											GL11.glScalef(0.4F, var34, var34);
											GL11.glTranslatef(-0.5F, -0.5F, -0.5F);
											GL11.glBindTexture(3553, var112.minecraft.textureManager.load("/terrain.png"));
											var112.block.renderPreview(var123);
										} else {
											var116.bindTexture(var112.minecraft.textureManager);
											GL11.glScalef(1.0F, -1.0F, -1.0F);
											GL11.glTranslatef(0.0F, 0.2F, 0.0F);
											GL11.glRotatef(-120.0F, 0.0F, 0.0F, 1.0F);
											GL11.glScalef(1.0F, 1.0F, 1.0F);
											var34 = 0.0625F;
											ModelPart var127;
											if(!(var127 = var112.minecraft.player.getModel().leftArm).hasList) {
												var127.generateList(var34);
											}

											GL11.glCallList(var127.list);
										}

										GL11.glDisable(2977);
										GL11.glPopMatrix();
										var112.minecraft.renderer.setLighting(false);
										if(!var82.minecraft.settings.anaglyph) {
											break;
										}

										++var77;
									}

									var66.minecraft.hud.render(var65, var66.minecraft.currentScreen != null, var94, var70);
								} else {
									GL11.glViewport(0, 0, var66.minecraft.width, var66.minecraft.height);
									GL11.glClearColor(0.0F, 0.0F, 0.0F, 0.0F);
									GL11.glClear(16640);
									GL11.glMatrixMode(5889);
									GL11.glLoadIdentity();
									GL11.glMatrixMode(5888);
									GL11.glLoadIdentity();
									var66.enableGuiMode();
								}

								if(var66.minecraft.currentScreen != null) {
									var66.minecraft.currentScreen.render(var94, var70);
								}

								Thread.yield();
								Display.update();
							}
						}

						if(this.settings.limitFramerate) {
							Thread.sleep(5L);
						}

						checkGLError("Post render");
						++var15;
					} catch (Exception var58) {
						this.setCurrentScreen(new ErrorScreen("Client error", "The game broke! [" + var58 + "]"));
						var58.printStackTrace();
					}

					while(System.currentTimeMillis() >= var13 + 1000L) {
						this.debug = var15 + " fps, " + Chunk.chunkUpdates + " chunk updates";
						Chunk.chunkUpdates = 0;
						var13 += 1000L;
						var15 = 0;
					}
				}
			}

			return;
		} catch (StopGameException var59) {
			;
		} catch (Exception var60) {
			var60.printStackTrace();
			return;
		} finally {
			this.shutdown();
		}

	}