/
alexmakov
/
Minecraft_Java
Обзор
Документация
Войти
/
alexmakov
/
Minecraft_Java
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/main/java/com/mojang/minecraft/Minecraft.java
1 800 строк
85 KB
Oliver Yasuna
Fixed walking on water. Close #2.
04 окт 2012, 00:19
04 окт 2012, 00:19
17a47fc
Код
Авторство
О чём код?
package com.mojang.minecraft; import com.mojang.minecraft.gamemode.CreativeGameMode; import com.mojang.minecraft.gamemode.GameMode; import com.mojang.minecraft.gamemode.SurvivalGameMode; import com.mojang.minecraft.gui.*; import com.mojang.minecraft.item.Arrow; import com.mojang.minecraft.item.Item; import com.mojang.minecraft.level.Level; import com.mojang.minecraft.level.LevelIO; import com.mojang.minecraft.level.generator.LevelGenerator; import com.mojang.minecraft.level.liquid.LiquidType; import com.mojang.minecraft.level.tile.Block; import com.mojang.minecraft.mob.Mob; import com.mojang.minecraft.model.HumanoidModel; import com.mojang.minecraft.model.ModelManager; import com.mojang.minecraft.model.ModelPart; import com.mojang.minecraft.model.Vec3D; import com.mojang.minecraft.net.NetworkManager; import com.mojang.minecraft.net.NetworkPlayer; import com.mojang.minecraft.net.PacketType; import com.mojang.minecraft.particle.Particle; import com.mojang.minecraft.particle.ParticleManager; import com.mojang.minecraft.particle.WaterDropParticle; import com.mojang.minecraft.phys.AABB; import com.mojang.minecraft.player.InputHandlerImpl; import com.mojang.minecraft.player.Player; import com.mojang.minecraft.render.*; import com.mojang.minecraft.render.Renderer; import com.mojang.minecraft.render.texture.TextureFX; import com.mojang.minecraft.render.texture.TextureLavaFX; import com.mojang.minecraft.render.texture.TextureWaterFX; import com.mojang.minecraft.sound.SoundManager; import com.mojang.minecraft.sound.SoundPlayer; import com.mojang.net.NetworkHandler; import com.mojang.util.MathHelper; import org.lwjgl.BufferUtils; import org.lwjgl.LWJGLException; import org.lwjgl.input.Controllers; import org.lwjgl.input.Cursor; import org.lwjgl.input.Keyboard; import org.lwjgl.input.Mouse; import org.lwjgl.opengl.Display; import org.lwjgl.opengl.DisplayMode; import org.lwjgl.opengl.GL11; import org.lwjgl.util.glu.GLU; import javax.sound.sampled.AudioFormat; import javax.sound.sampled.AudioSystem; import javax.swing.*; import java.awt.*; import java.io.*; import java.nio.IntBuffer; import java.util.Collections; import java.util.List; public final class Minecraft implements Runnable { public GameMode gamemode = new SurvivalGameMode(this); private boolean fullscreen = false; public int width; public int height; private Timer timer = new Timer(20.0F); public Level level; public LevelRenderer levelRenderer; public Player player; public ParticleManager particleManager; public SessionData session = null; public String host; public Canvas canvas; public boolean levelLoaded = false; public volatile boolean waiting = false; private Cursor cursor; public TextureManager textureManager; public FontRenderer fontRenderer; public GuiScreen currentScreen = null; public ProgressBarDisplay progressBar = new ProgressBarDisplay(this); public Renderer renderer = new Renderer(this); public LevelIO levelIo; public SoundManager sound; private ResourceDownloadThread resourceThread; private int ticks; private int blockHitTime; public String levelName; public int levelId; public Robot robot; public HUDScreen hud; public boolean online; public NetworkManager networkManager; public SoundPlayer soundPlayer; public MovingObjectPosition selected; public GameSettings settings; private MinecraftApplet applet; String server; int port; volatile boolean running; public String debug; public boolean hasMouse; private int lastClick; public boolean raining; public Minecraft(Canvas var1, MinecraftApplet var2, int var3, int var4, boolean var5) { this.levelIo = new LevelIO(this.progressBar); this.sound = new SoundManager(); this.ticks = 0; this.blockHitTime = 0; this.levelName = null; this.levelId = 0; this.online = false; new HumanoidModel(0.0F); this.selected = null; this.server = null; this.port = 0; this.running = false; this.debug = ""; this.hasMouse = false; this.lastClick = 0; this.raining = false; try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (Exception var7) { var7.printStackTrace(); } this.applet = var2; new SleepForeverThread(this); this.canvas = var1; this.width = var3; this.height = var4; this.fullscreen = var5; if(var1 != null) { try { this.robot = new Robot(); return; } catch (AWTException var8) { var8.printStackTrace(); } } } public final void setCurrentScreen(GuiScreen var1) { if(!(this.currentScreen instanceof ErrorScreen)) { if(this.currentScreen != null) { this.currentScreen.onClose(); } if(var1 == null && this.player.health <= 0) { var1 = new GameOverScreen(); } this.currentScreen = (GuiScreen)var1; if(var1 != null) { if(this.hasMouse) { this.player.releaseAllKeys(); this.hasMouse = false; if(this.levelLoaded) { try { Mouse.setNativeCursor((Cursor)null); } catch (LWJGLException var4) { var4.printStackTrace(); } } else { Mouse.setGrabbed(false); } } int var2 = this.width * 240 / this.height; int var3 = this.height * 240 / this.height; ((GuiScreen)var1).open(this, var2, var3); this.online = false; } else { this.grabMouse(); } } } private static void checkGLError(String var0) { int var1; if((var1 = GL11.glGetError()) != 0) { String var2 = GLU.gluErrorString(var1); System.out.println("########## GL ERROR ##########"); System.out.println("@ " + var0); System.out.println(var1 + ": " + var2); System.exit(0); } } public final void shutdown() { try { if(this.soundPlayer != null) { SoundPlayer var1 = this.soundPlayer; this.soundPlayer.running = false; } if(this.resourceThread != null) { ResourceDownloadThread var4 = this.resourceThread; this.resourceThread.running = true; } } catch (Exception var3) { ; } Minecraft var5 = this; if(!this.levelLoaded) { try { LevelIO.save(var5.level, (OutputStream)(new FileOutputStream(new File("level.dat")))); } catch (Exception var2) { var2.printStackTrace(); } } Mouse.destroy(); Keyboard.destroy(); Display.destroy(); } public final void run() { this.running = true; try { Minecraft var1 = this; 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(); } 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"); String var3 = "minecraftclassicforever"; String var5 = System.getProperty("user.home", "."); String var6; File var7; switch(OperatingSystemLookup.lookup[((var6 = System.getProperty("os.name").toLowerCase()).contains("win")?Minecraft$OS.windows:(var6.contains("mac")?Minecraft$OS.macos:(var6.contains("solaris")?Minecraft$OS.solaris:(var6.contains("sunos")?Minecraft$OS.solaris:(var6.contains("linux")?Minecraft$OS.linux:(var6.contains("unix")?Minecraft$OS.linux:Minecraft$OS.unknown)))))).ordinal()]) { case 1: case 2: var7 = new File(var5, '.' + var3 + '/'); break; case 3: String var8; if((var8 = System.getenv("APPDATA")) != null) { var7 = new File(var8, "." + var3 + '/'); } else { var7 = new File(var5, '.' + var3 + '/'); } break; case 4: var7 = new File(var5, "Library/Application Support/" + var3); break; default: var7 = new File(var5, var3 + '/'); } if(!var7.exists() && !var7.mkdirs()) { throw new RuntimeException("The working directory could not be created: " + var7); } File var2 = var7; this.settings = new GameSettings(this, var7); 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((var11 = var1.levelIo.load((InputStream)(new FileInputStream(new File("level.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(var2, 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; } 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; 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; Renderer var82 = var66; 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(); } } public final void grabMouse() { if(!this.hasMouse) { this.hasMouse = true; if(this.levelLoaded) { try { Mouse.setNativeCursor(this.cursor); Mouse.setCursorPosition(this.width / 2, this.height / 2); } catch (LWJGLException var2) { var2.printStackTrace(); } if(this.canvas == null) { this.canvas.requestFocus(); } } else { Mouse.setGrabbed(true); } this.setCurrentScreen((GuiScreen)null); this.lastClick = this.ticks + 10000; } } public final void pause() { if(this.currentScreen == null) { this.setCurrentScreen(new PauseScreen()); } } private void onMouseClick(int var1) { if(var1 != 0 || this.blockHitTime <= 0) { HeldBlock var2; if(var1 == 0) { var2 = this.renderer.heldBlock; this.renderer.heldBlock.offset = -1; var2.moving = true; } int var3; if(var1 == 1 && (var3 = this.player.inventory.getSelected()) > 0 && this.gamemode.useItem(this.player, var3)) { var2 = this.renderer.heldBlock; this.renderer.heldBlock.pos = 0.0F; } else if(this.selected == null) { if(var1 == 0 && !(this.gamemode instanceof CreativeGameMode)) { this.blockHitTime = 10; } } else { if(this.selected.entityPos == 1) { if(var1 == 0) { this.selected.entity.hurt(this.player, 4); return; } } else if(this.selected.entityPos == 0) { var3 = this.selected.x; int var4 = this.selected.y; int var5 = this.selected.z; if(var1 != 0) { if(this.selected.face == 0) { --var4; } if(this.selected.face == 1) { ++var4; } if(this.selected.face == 2) { --var5; } if(this.selected.face == 3) { ++var5; } if(this.selected.face == 4) { --var3; } if(this.selected.face == 5) { ++var3; } } Block var6 = Block.blocks[this.level.getTile(var3, var4, var5)]; if(var1 == 0) { if(var6 != Block.BEDROCK || this.player.userType >= 100) { this.gamemode.hitBlock(var3, var4, var5); return; } } else { int var10; if((var10 = this.player.inventory.getSelected()) <= 0) { return; } Block var8; AABB var9; if(((var8 = Block.blocks[this.level.getTile(var3, var4, var5)]) == null || var8 == Block.WATER || var8 == Block.STATIONARY_WATER || var8 == Block.LAVA || var8 == Block.STATIONARY_LAVA) && ((var9 = Block.blocks[var10].getCollisionBox(var3, var4, var5)) == null || (this.player.bb.intersects(var9)?false:this.level.isFree(var9)))) { if(!this.gamemode.canPlace(var10)) { return; } if(this.isOnline()) { this.networkManager.sendBlockChange(var3, var4, var5, var1, var10); } this.level.netSetTile(var3, var4, var5, var10); var2 = this.renderer.heldBlock; this.renderer.heldBlock.pos = 0.0F; Block.blocks[var10].onPlace(this.level, var3, var4, var5); } } } } } } private void tick() { if(this.soundPlayer != null) { SoundPlayer var1 = this.soundPlayer; SoundManager var2 = this.sound; if(System.currentTimeMillis() > var2.lastMusic && var2.playMusic(var1, "calm")) { var2.lastMusic = System.currentTimeMillis() + (long)var2.random.nextInt(900000) + 300000L; } } this.gamemode.spawnMob(); HUDScreen var17 = this.hud; ++this.hud.ticks; int var16; for(var16 = 0; var16 < var17.chat.size(); ++var16) { ++((ChatLine)var17.chat.get(var16)).time; } GL11.glBindTexture(3553, this.textureManager.load("/terrain.png")); TextureManager var19 = this.textureManager; for(var16 = 0; var16 < var19.animations.size(); ++var16) { TextureFX var3; (var3 = (TextureFX)var19.animations.get(var16)).anaglyph = var19.settings.anaglyph; var3.animate(); var19.textureBuffer.clear(); var19.textureBuffer.put(var3.textureData); var19.textureBuffer.position(0).limit(var3.textureData.length); GL11.glTexSubImage2D(3553, 0, var3.textureId % 16 << 4, var3.textureId / 16 << 4, 16, 16, 6408, 5121, var19.textureBuffer); } int var4; int var8; int var40; int var46; int var45; if(this.networkManager != null && !(this.currentScreen instanceof ErrorScreen)) { if(!this.networkManager.isConnected()) { this.progressBar.setTitle("Connecting.."); this.progressBar.setProgress(0); } else { NetworkManager var20 = this.networkManager; if(this.networkManager.successful) { NetworkHandler var18 = var20.netHandler; if(var20.netHandler.connected) { try { NetworkHandler var22 = var20.netHandler; var20.netHandler.channel.read(var22.in); var4 = 0; while(var22.in.position() > 0 && var4++ != 100) { var22.in.flip(); byte var5 = var22.in.get(0); PacketType var6; if((var6 = PacketType.packets[var5]) == null) { throw new IOException("Bad command: " + var5); } if(var22.in.remaining() < var6.length + 1) { var22.in.compact(); break; } var22.in.get(); Object[] var7 = new Object[var6.params.length]; for(var8 = 0; var8 < var7.length; ++var8) { var7[var8] = var22.readObject(var6.params[var8]); } NetworkManager var42 = var22.netManager; if(var22.netManager.successful) { if(var6 == PacketType.IDENTIFICATION) { var42.minecraft.progressBar.setTitle(var7[1].toString()); var42.minecraft.progressBar.setText(var7[2].toString()); var42.minecraft.player.userType = ((Byte)var7[3]).byteValue(); } else if(var6 == PacketType.LEVEL_INIT) { var42.minecraft.setLevel((Level)null); var42.levelData = new ByteArrayOutputStream(); } else if(var6 == PacketType.LEVEL_DATA) { short var11 = ((Short)var7[0]).shortValue(); byte[] var12 = (byte[])((byte[])var7[1]); byte var13 = ((Byte)var7[2]).byteValue(); var42.minecraft.progressBar.setProgress(var13); var42.levelData.write(var12, 0, var11); } else if(var6 == PacketType.LEVEL_FINALIZE) { try { var42.levelData.close(); } catch (IOException var14) { var14.printStackTrace(); } byte[] var51 = LevelIO.decompress(new ByteArrayInputStream(var42.levelData.toByteArray())); var42.levelData = null; short var55 = ((Short)var7[0]).shortValue(); short var63 = ((Short)var7[1]).shortValue(); short var21 = ((Short)var7[2]).shortValue(); Level var30; (var30 = new Level()).setNetworkMode(true); var30.setData(var55, var63, var21, var51); var42.minecraft.setLevel(var30); var42.minecraft.online = false; var42.levelLoaded = true; } else if(var6 == PacketType.BLOCK_CHANGE) { if(var42.minecraft.level != null) { var42.minecraft.level.netSetTile(((Short)var7[0]).shortValue(), ((Short)var7[1]).shortValue(), ((Short)var7[2]).shortValue(), ((Byte)var7[3]).byteValue()); } } else { byte var9; String var34; NetworkPlayer var33; short var36; short var10004; byte var10001; short var47; short var10003; if(var6 == PacketType.SPAWN_PLAYER) { var10001 = ((Byte)var7[0]).byteValue(); String var10002 = (String)var7[1]; var10003 = ((Short)var7[2]).shortValue(); var10004 = ((Short)var7[3]).shortValue(); short var10005 = ((Short)var7[4]).shortValue(); byte var10006 = ((Byte)var7[5]).byteValue(); byte var58 = ((Byte)var7[6]).byteValue(); var9 = var10006; short var10 = var10005; var47 = var10004; var36 = var10003; var34 = var10002; var5 = var10001; if(var5 >= 0) { var9 = (byte)(var9 + 128); var47 = (short)(var47 - 22); var33 = new NetworkPlayer(var42.minecraft, var5, var34, var36, var47, var10, (float)(var9 * 360) / 256.0F, (float)(var58 * 360) / 256.0F); var42.players.put(Byte.valueOf(var5), var33); var42.minecraft.level.addEntity(var33); } else { var42.minecraft.level.setSpawnPos(var36 / 32, var47 / 32, var10 / 32, (float)(var9 * 320 / 256)); var42.minecraft.player.moveTo((float)var36 / 32.0F, (float)var47 / 32.0F, (float)var10 / 32.0F, (float)(var9 * 360) / 256.0F, (float)(var58 * 360) / 256.0F); } } else { byte var53; NetworkPlayer var61; byte var69; if(var6 == PacketType.POSITION_ROTATION) { var10001 = ((Byte)var7[0]).byteValue(); short var66 = ((Short)var7[1]).shortValue(); var10003 = ((Short)var7[2]).shortValue(); var10004 = ((Short)var7[3]).shortValue(); var69 = ((Byte)var7[4]).byteValue(); var9 = ((Byte)var7[5]).byteValue(); var53 = var69; var47 = var10004; var36 = var10003; short var38 = var66; var5 = var10001; if(var5 < 0) { var42.minecraft.player.moveTo((float)var38 / 32.0F, (float)var36 / 32.0F, (float)var47 / 32.0F, (float)(var53 * 360) / 256.0F, (float)(var9 * 360) / 256.0F); } else { var53 = (byte)(var53 + 128); var36 = (short)(var36 - 22); if((var61 = (NetworkPlayer)var42.players.get(Byte.valueOf(var5))) != null) { var61.teleport(var38, var36, var47, (float)(var53 * 360) / 256.0F, (float)(var9 * 360) / 256.0F); } } } else { byte var37; byte var44; byte var49; byte var65; byte var67; if(var6 == PacketType.POSITION_ROTATION_UPDATE) { var10001 = ((Byte)var7[0]).byteValue(); var67 = ((Byte)var7[1]).byteValue(); var65 = ((Byte)var7[2]).byteValue(); byte var64 = ((Byte)var7[3]).byteValue(); var69 = ((Byte)var7[4]).byteValue(); var9 = ((Byte)var7[5]).byteValue(); var53 = var69; var49 = var64; var44 = var65; var37 = var67; var5 = var10001; if(var5 >= 0) { var53 = (byte)(var53 + 128); if((var61 = (NetworkPlayer)var42.players.get(Byte.valueOf(var5))) != null) { var61.queue(var37, var44, var49, (float)(var53 * 360) / 256.0F, (float)(var9 * 360) / 256.0F); } } } else if(var6 == PacketType.ROTATION_UPDATE) { var10001 = ((Byte)var7[0]).byteValue(); var67 = ((Byte)var7[1]).byteValue(); var44 = ((Byte)var7[2]).byteValue(); var37 = var67; var5 = var10001; if(var5 >= 0) { var37 = (byte)(var37 + 128); NetworkPlayer var54; if((var54 = (NetworkPlayer)var42.players.get(Byte.valueOf(var5))) != null) { var54.queue((float)(var37 * 360) / 256.0F, (float)(var44 * 360) / 256.0F); } } } else if(var6 == PacketType.POSITION_UPDATE) { var10001 = ((Byte)var7[0]).byteValue(); var67 = ((Byte)var7[1]).byteValue(); var65 = ((Byte)var7[2]).byteValue(); var49 = ((Byte)var7[3]).byteValue(); var44 = var65; var37 = var67; var5 = var10001; NetworkPlayer var59; if(var5 >= 0 && (var59 = (NetworkPlayer)var42.players.get(Byte.valueOf(var5))) != null) { var59.queue(var37, var44, var49); } } else if(var6 == PacketType.DESPAWN_PLAYER) { var5 = ((Byte)var7[0]).byteValue(); if(var5 >= 0 && (var33 = (NetworkPlayer)var42.players.remove(Byte.valueOf(var5))) != null) { var33.clear(); var42.minecraft.level.removeEntity(var33); } } else if(var6 == PacketType.CHAT_MESSAGE) { var10001 = ((Byte)var7[0]).byteValue(); var34 = (String)var7[1]; var5 = var10001; if(var5 < 0) { var42.minecraft.hud.addChat("&e" + var34); } else { var42.players.get(Byte.valueOf(var5)); var42.minecraft.hud.addChat(var34); } } else if(var6 == PacketType.DISCONNECT) { var42.netHandler.close(); var42.minecraft.setCurrentScreen(new ErrorScreen("Connection lost", (String)var7[0])); } else if(var6 == PacketType.UPDATE_PLAYER_TYPE) { var42.minecraft.player.userType = ((Byte)var7[0]).byteValue(); } } } } } if(!var22.connected) { break; } var22.in.compact(); } if(var22.out.position() > 0) { var22.out.flip(); var22.channel.write(var22.out); var22.out.compact(); } } catch (Exception var15) { var20.minecraft.setCurrentScreen(new ErrorScreen("Disconnected!", "You\'ve lost connection to the server")); var20.minecraft.online = false; var15.printStackTrace(); var20.netHandler.close(); var20.minecraft.networkManager = null; } } } Player var28 = this.player; var20 = this.networkManager; if(this.networkManager.levelLoaded) { int var24 = (int)(var28.x * 32.0F); var4 = (int)(var28.y * 32.0F); var40 = (int)(var28.z * 32.0F); var46 = (int)(var28.yRot * 256.0F / 360.0F) & 255; var45 = (int)(var28.xRot * 256.0F / 360.0F) & 255; var20.netHandler.send(PacketType.POSITION_ROTATION, new Object[]{Integer.valueOf(-1), Integer.valueOf(var24), Integer.valueOf(var4), Integer.valueOf(var40), Integer.valueOf(var46), Integer.valueOf(var45)}); } } } if(this.currentScreen == null && this.player != null && this.player.health <= 0) { this.setCurrentScreen((GuiScreen)null); } if(this.currentScreen == null || this.currentScreen.grabsMouse) { int var25; while(Mouse.next()) { if((var25 = Mouse.getEventDWheel()) != 0) { this.player.inventory.swapPaint(var25); } if(this.currentScreen == null) { if(!this.hasMouse && Mouse.getEventButtonState()) { this.grabMouse(); } else { if(Mouse.getEventButton() == 0 && Mouse.getEventButtonState()) { this.onMouseClick(0); this.lastClick = this.ticks; } if(Mouse.getEventButton() == 1 && Mouse.getEventButtonState()) { this.onMouseClick(1); this.lastClick = this.ticks; } if(Mouse.getEventButton() == 2 && Mouse.getEventButtonState() && this.selected != null) { if((var16 = this.level.getTile(this.selected.x, this.selected.y, this.selected.z)) == Block.GRASS.id) { var16 = Block.DIRT.id; } if(var16 == Block.DOUBLE_SLAB.id) { var16 = Block.SLAB.id; } if(var16 == Block.BEDROCK.id) { var16 = Block.STONE.id; } this.player.inventory.grabTexture(var16, this.gamemode instanceof CreativeGameMode); } } } if(this.currentScreen != null) { this.currentScreen.mouseEvent(); } } if(this.blockHitTime > 0) { --this.blockHitTime; } while(Keyboard.next()) { this.player.setKey(Keyboard.getEventKey(), Keyboard.getEventKeyState()); if(Keyboard.getEventKeyState()) { if(this.currentScreen != null) { this.currentScreen.keyboardEvent(); } if(this.currentScreen == null) { if(Keyboard.getEventKey() == 1) { this.pause(); } if(this.gamemode instanceof CreativeGameMode) { if(Keyboard.getEventKey() == this.settings.loadLocationKey.key) { this.player.resetPos(); } if(Keyboard.getEventKey() == this.settings.saveLocationKey.key) { this.level.setSpawnPos((int)this.player.x, (int)this.player.y, (int)this.player.z, this.player.yRot); this.player.resetPos(); } } Keyboard.getEventKey(); if(Keyboard.getEventKey() == 63) { this.raining = !this.raining; } if(Keyboard.getEventKey() == 15 && this.gamemode instanceof SurvivalGameMode && this.player.arrows > 0) { this.level.addEntity(new Arrow(this.level, this.player, this.player.x, this.player.y, this.player.z, this.player.yRot, this.player.xRot, 1.2F)); --this.player.arrows; } if(Keyboard.getEventKey() == this.settings.buildKey.key) { this.gamemode.openInventory(); } if(Keyboard.getEventKey() == this.settings.chatKey.key && this.networkManager != null && this.networkManager.isConnected()) { this.player.releaseAllKeys(); this.setCurrentScreen(new ChatInputScreen()); } } for(var25 = 0; var25 < 9; ++var25) { if(Keyboard.getEventKey() == var25 + 2) { this.player.inventory.selected = var25; } } if(Keyboard.getEventKey() == this.settings.toggleFogKey.key) { this.settings.toggleSetting(4, !Keyboard.isKeyDown(42) && !Keyboard.isKeyDown(54)?1:-1); } } } if(this.currentScreen == null) { if(Mouse.isButtonDown(0) && (float)(this.ticks - this.lastClick) >= this.timer.tps / 4.0F && this.hasMouse) { this.onMouseClick(0); this.lastClick = this.ticks; } if(Mouse.isButtonDown(1) && (float)(this.ticks - this.lastClick) >= this.timer.tps / 4.0F && this.hasMouse) { this.onMouseClick(1); this.lastClick = this.ticks; } } boolean var26 = this.currentScreen == null && Mouse.isButtonDown(0) && this.hasMouse; boolean var35 = false; if(!this.gamemode.instantBreak && this.blockHitTime <= 0) { if(var26 && this.selected != null && this.selected.entityPos == 0) { var4 = this.selected.x; var40 = this.selected.y; var46 = this.selected.z; this.gamemode.hitBlock(var4, var40, var46, this.selected.face); } else { this.gamemode.resetHits(); } } } if(this.currentScreen != null) { this.lastClick = this.ticks + 10000; } if(this.currentScreen != null) { this.currentScreen.doInput(); if(this.currentScreen != null) { this.currentScreen.tick(); } } if(this.level != null) { Renderer var29 = this.renderer; ++this.renderer.levelTicks; HeldBlock var41 = var29.heldBlock; var29.heldBlock.lastPos = var41.pos; if(var41.moving) { ++var41.offset; if(var41.offset == 7) { var41.offset = 0; var41.moving = false; } } Player var27 = var41.minecraft.player; var4 = var41.minecraft.player.inventory.getSelected(); Block var43 = null; if(var4 > 0) { var43 = Block.blocks[var4]; } float var48 = 0.4F; float var50; if((var50 = (var43 == var41.block?1.0F:0.0F) - var41.pos) < -var48) { var50 = -var48; } if(var50 > var48) { var50 = var48; } var41.pos += var50; if(var41.pos < 0.1F) { var41.block = var43; } if(var29.minecraft.raining) { Renderer var39 = var29; var27 = var29.minecraft.player; Level var32 = var29.minecraft.level; var40 = (int)var27.x; var46 = (int)var27.y; var45 = (int)var27.z; for(var8 = 0; var8 < 50; ++var8) { int var60 = var40 + var39.random.nextInt(9) - 4; int var52 = var45 + var39.random.nextInt(9) - 4; int var57; if((var57 = var32.getHighestTile(var60, var52)) <= var46 + 4 && var57 >= var46 - 4) { float var56 = var39.random.nextFloat(); float var62 = var39.random.nextFloat(); var39.minecraft.particleManager.spawnParticle(new WaterDropParticle(var32, (float)var60 + var56, (float)var57 + 0.1F, (float)var52 + var62)); } } } LevelRenderer var31 = this.levelRenderer; ++this.levelRenderer.ticks; this.level.tickEntities(); if(!this.isOnline()) { this.level.tick(); } this.particleManager.tick(); } } public final boolean isOnline() { return this.networkManager != null; } public final void generateLevel(int var1) { String var2 = this.session != null?this.session.username:"anonymous"; Level var4 = (new LevelGenerator(this.progressBar)).generate(var2, 128 << var1, 128 << var1, 64); this.gamemode.prepareLevel(var4); this.setLevel(var4); } public final boolean loadOnlineLevel(String var1, int var2) { Level var3; if((var3 = this.levelIo.loadOnline(this.host, var1, var2)) == null) { return false; } else { this.setLevel(var3); return true; } } public final void setLevel(Level var1) { if(this.applet == null || !this.applet.getDocumentBase().getHost().equalsIgnoreCase("minecraft.net") && !this.applet.getDocumentBase().getHost().equalsIgnoreCase("www.minecraft.net") || !this.applet.getCodeBase().getHost().equalsIgnoreCase("minecraft.net") && !this.applet.getCodeBase().getHost().equalsIgnoreCase("www.minecraft.net")) { var1 = null; } this.level = var1; if(var1 != null) { var1.initTransient(); this.gamemode.apply(var1); var1.font = this.fontRenderer; var1.rendererContext$5cd64a7f = this; if(!this.isOnline()) { this.player = (Player)var1.findSubclassOf(Player.class); } else if(this.player != null) { this.player.resetPos(); this.gamemode.preparePlayer(this.player); if(var1 != null) { var1.player = this.player; var1.addEntity(this.player); } } } if(this.player == null) { this.player = new Player(var1); this.player.resetPos(); this.gamemode.preparePlayer(this.player); if(var1 != null) { var1.player = this.player; } } if(this.player != null) { this.player.input = new InputHandlerImpl(this.settings); this.gamemode.apply(this.player); } if(this.levelRenderer != null) { LevelRenderer var3 = this.levelRenderer; if(this.levelRenderer.level != null) { var3.level.removeListener(var3); } var3.level = var1; if(var1 != null) { var1.addListener(var3); var3.refresh(); } } if(this.particleManager != null) { ParticleManager var5 = this.particleManager; if(var1 != null) { var1.particleEngine = var5; } for(int var4 = 0; var4 < 2; ++var4) { var5.particles[var4].clear(); } } System.gc(); } }