 +import java.awt.event.ActionListener;
 +import java.awt.event.WindowAdapter;
 +import java.awt.event.WindowEvent;
- import java.awt.image.BufferedImage;
++import java.awt.image.BufferedImage;
 +import java.io.BufferedReader;
- import java.io.File;
++import java.io.File;
 +import java.io.FileReader;
 +import java.io.FileWriter;
- import java.io.IOException;
- import java.io.InputStream;
++import java.io.IOException;
++import java.io.InputStream;
 +import java.io.PrintWriter;
- import java.net.Proxy;
- import java.net.SocketAddress;
++import java.net.Proxy;
++import java.net.SocketAddress;
 +import java.net.URI;
- import java.nio.ByteBuffer;
- import java.nio.ByteOrder;
- import java.text.DecimalFormat;
-@@ -32,10 +37,14 @@ import java.util.List;
- import java.util.Map;
- import java.util.Queue;
- import java.util.UUID;
++import java.nio.ByteBuffer;
++import java.nio.ByteOrder;
++import java.text.DecimalFormat;
++import java.text.SimpleDateFormat;
++import java.util.ArrayList;
++import java.util.Collections;
++import java.util.Date;
++import java.util.HashMap;
++import java.util.HashSet;
++import java.util.Iterator;
++import java.util.List;
++import java.util.Map;
++import java.util.Queue;
++import java.util.UUID;
 +import java.util.Map.Entry;
- import java.util.concurrent.Callable;
- import java.util.concurrent.Executors;
- import java.util.concurrent.FutureTask;
-+
- import javax.imageio.ImageIO;
++import java.util.concurrent.Callable;
++import java.util.concurrent.Executors;
++import java.util.concurrent.FutureTask;
++
++import javax.imageio.ImageIO;
 +import javax.swing.*;
 +
- import net.minecraft.block.Block;
- import net.minecraft.block.material.Material;
- import net.minecraft.client.audio.MusicTicker;
-@@ -166,6 +175,7 @@ import net.minecraft.world.chunk.storage.AnvilSaveConverter;
- import net.minecraft.world.storage.ISaveFormat;
- import net.minecraft.world.storage.ISaveHandler;
- import net.minecraft.world.storage.WorldInfo;
-+
- import org.apache.commons.io.IOUtils;
- import org.apache.commons.lang3.Validate;
- import org.apache.logging.log4j.LogManager;
-@@ -184,10 +194,30 @@ import org.lwjgl.opengl.OpenGLException;
- import org.lwjgl.opengl.PixelFormat;
- import org.lwjgl.util.glu.GLU;
- 
++import net.minecraft.block.Block;
++import net.minecraft.block.material.Material;
++import net.minecraft.client.audio.MusicTicker;
++import net.minecraft.client.audio.SoundHandler;
++import net.minecraft.client.entity.EntityPlayerSP;
++import net.minecraft.client.gui.FontRenderer;
++import net.minecraft.client.gui.GuiChat;
++import net.minecraft.client.gui.GuiControls;
++import net.minecraft.client.gui.GuiGameOver;
++import net.minecraft.client.gui.GuiIngame;
++import net.minecraft.client.gui.GuiIngameMenu;
++import net.minecraft.client.gui.GuiMainMenu;
++import net.minecraft.client.gui.GuiMemoryErrorScreen;
++import net.minecraft.client.gui.GuiScreen;
++import net.minecraft.client.gui.GuiSleepMP;
++import net.minecraft.client.gui.GuiWinGame;
++import net.minecraft.client.gui.GuiYesNo;
++import net.minecraft.client.gui.GuiYesNoCallback;
++import net.minecraft.client.gui.ScaledResolution;
++import net.minecraft.client.gui.achievement.GuiAchievement;
++import net.minecraft.client.gui.inventory.GuiInventory;
++import net.minecraft.client.gui.stream.GuiStreamUnavailable;
++import net.minecraft.client.main.GameConfiguration;
++import net.minecraft.client.multiplayer.GuiConnecting;
++import net.minecraft.client.multiplayer.PlayerControllerMP;
++import net.minecraft.client.multiplayer.ServerData;
++import net.minecraft.client.multiplayer.WorldClient;
++import net.minecraft.client.network.NetHandlerLoginClient;
++import net.minecraft.client.network.NetHandlerPlayClient;
++import net.minecraft.client.particle.EffectRenderer;
++import net.minecraft.client.renderer.BlockRendererDispatcher;
++import net.minecraft.client.renderer.EntityRenderer;
++import net.minecraft.client.renderer.GlStateManager;
++import net.minecraft.client.renderer.ItemRenderer;
++import net.minecraft.client.renderer.OpenGlHelper;
++import net.minecraft.client.renderer.RenderGlobal;
++import net.minecraft.client.renderer.Tessellator;
++import net.minecraft.client.renderer.WorldRenderer;
++import net.minecraft.client.renderer.chunk.RenderChunk;
++import net.minecraft.client.renderer.entity.RenderItem;
++import net.minecraft.client.renderer.entity.RenderManager;
++import net.minecraft.client.renderer.texture.DynamicTexture;
++import net.minecraft.client.renderer.texture.TextureManager;
++import net.minecraft.client.renderer.texture.TextureMap;
++import net.minecraft.client.resources.DefaultResourcePack;
++import net.minecraft.client.resources.FoliageColorReloadListener;
++import net.minecraft.client.resources.GrassColorReloadListener;
++import net.minecraft.client.resources.I18n;
++import net.minecraft.client.resources.IReloadableResourceManager;
++import net.minecraft.client.resources.IResourceManager;
++import net.minecraft.client.resources.LanguageManager;
++import net.minecraft.client.resources.ResourceIndex;
++import net.minecraft.client.resources.ResourcePackRepository;
++import net.minecraft.client.resources.SimpleReloadableResourceManager;
++import net.minecraft.client.resources.SkinManager;
++import net.minecraft.client.resources.data.AnimationMetadataSection;
++import net.minecraft.client.resources.data.AnimationMetadataSectionSerializer;
++import net.minecraft.client.resources.data.FontMetadataSection;
++import net.minecraft.client.resources.data.FontMetadataSectionSerializer;
++import net.minecraft.client.resources.data.IMetadataSerializer;
++import net.minecraft.client.resources.data.LanguageMetadataSection;
++import net.minecraft.client.resources.data.LanguageMetadataSectionSerializer;
++import net.minecraft.client.resources.data.PackMetadataSection;
++import net.minecraft.client.resources.data.PackMetadataSectionSerializer;
++import net.minecraft.client.resources.data.TextureMetadataSection;
++import net.minecraft.client.resources.data.TextureMetadataSectionSerializer;
++import net.minecraft.client.resources.model.ModelManager;
++import net.minecraft.client.settings.GameSettings;
++import net.minecraft.client.settings.KeyBinding;
++import net.minecraft.client.shader.Framebuffer;
++import net.minecraft.client.stream.IStream;
++import net.minecraft.client.stream.NullStream;
++import net.minecraft.client.stream.TwitchStream;
++import net.minecraft.crash.CrashReport;
++import net.minecraft.crash.CrashReportCategory;
++import net.minecraft.entity.Entity;
++import net.minecraft.entity.EntityLeashKnot;
++import net.minecraft.entity.EntityList;
++import net.minecraft.entity.boss.BossStatus;
++import net.minecraft.entity.item.EntityArmorStand;
++import net.minecraft.entity.item.EntityBoat;
++import net.minecraft.entity.item.EntityItemFrame;
++import net.minecraft.entity.item.EntityMinecart;
++import net.minecraft.entity.item.EntityPainting;
++import net.minecraft.entity.player.EntityPlayer;
++import net.minecraft.entity.player.InventoryPlayer;
++import net.minecraft.init.Bootstrap;
++import net.minecraft.init.Items;
++import net.minecraft.item.Item;
++import net.minecraft.item.ItemBlock;
++import net.minecraft.item.ItemStack;
++import net.minecraft.nbt.NBTTagCompound;
++import net.minecraft.nbt.NBTTagList;
++import net.minecraft.nbt.NBTTagString;
++import net.minecraft.network.EnumConnectionState;
++import net.minecraft.network.NetworkManager;
++import net.minecraft.network.handshake.client.C00Handshake;
++import net.minecraft.network.login.client.C00PacketLoginStart;
++import net.minecraft.network.play.client.C16PacketClientStatus;
++import net.minecraft.profiler.IPlayerUsage;
++import net.minecraft.profiler.PlayerUsageSnooper;
++import net.minecraft.profiler.Profiler;
++import net.minecraft.server.MinecraftServer;
++import net.minecraft.server.integrated.IntegratedServer;
++import net.minecraft.stats.AchievementList;
++import net.minecraft.stats.IStatStringFormat;
++import net.minecraft.stats.StatFileWriter;
++import net.minecraft.tileentity.TileEntity;
++import net.minecraft.util.BlockPos;
++import net.minecraft.util.ChatComponentText;
++import net.minecraft.util.IThreadListener;
++import net.minecraft.util.MathHelper;
++import net.minecraft.util.MinecraftError;
++import net.minecraft.util.MouseHelper;
++import net.minecraft.util.MovementInputFromOptions;
++import net.minecraft.util.MovingObjectPosition;
++import net.minecraft.util.ReportedException;
++import net.minecraft.util.ResourceLocation;
++import net.minecraft.util.ScreenShotHelper;
++import net.minecraft.util.Session;
++import net.minecraft.util.Timer;
++import net.minecraft.util.Util;
++import net.minecraft.world.EnumDifficulty;
++import net.minecraft.world.WorldProviderEnd;
++import net.minecraft.world.WorldProviderHell;
++import net.minecraft.world.WorldSettings;
++import net.minecraft.world.chunk.storage.AnvilSaveConverter;
++import net.minecraft.world.storage.ISaveFormat;
++import net.minecraft.world.storage.ISaveHandler;
++import net.minecraft.world.storage.WorldInfo;
++
++import org.apache.commons.io.IOUtils;
++import org.apache.commons.lang3.Validate;
++import org.apache.logging.log4j.LogManager;
++import org.apache.logging.log4j.Logger;
++import org.lwjgl.LWJGLException;
++import org.lwjgl.Sys;
++import org.lwjgl.input.Keyboard;
++import org.lwjgl.input.Mouse;
++import org.lwjgl.opengl.ContextCapabilities;
++import org.lwjgl.opengl.Display;
++import org.lwjgl.opengl.DisplayMode;
++import org.lwjgl.opengl.GL11;
++import org.lwjgl.opengl.GL20;
++import org.lwjgl.opengl.GLContext;
++import org.lwjgl.opengl.OpenGLException;
++import org.lwjgl.opengl.PixelFormat;
++import org.lwjgl.util.glu.GLU;
++
 +import tk.wurst_client.Client;
 +import tk.wurst_client.font.Fonts;
 +import tk.wurst_client.module.Module;

From 8385b9822fb97b2f7c263315741f483751de7776 Mon Sep 17 00:00:00 2001
From: Alexander01998 <contact.wurstimperium@gmail.com>
Date: Mon, 2 Mar 2015 15:49:15 +0100
Subject: [PATCH] Wurst

---
 src/net/minecraft/block/Block.java                 |  18 +-
 src/net/minecraft/block/BlockLiquid.java           |  14 +-
 src/net/minecraft/block/BlockSlab.java             |   8 +-
 src/net/minecraft/block/BlockSoulSand.java         |   4 +
 .../minecraft/client/LoadingScreenRenderer.java    |  10 +-
 src/net/minecraft/client/Minecraft.java            | 427 ++++++++--
 .../client/entity/AbstractClientPlayer.java        |  17 +-
 .../minecraft/client/entity/EntityPlayerSP.java    |  85 +-
 src/net/minecraft/client/gui/FontRenderer.java     |  40 +-
 src/net/minecraft/client/gui/Gui.java              |   8 +-
 src/net/minecraft/client/gui/GuiButton.java        | 252 +++---
 .../minecraft/client/gui/GuiButtonLanguage.java    |   1 +
 .../minecraft/client/gui/GuiButtonRealmsProxy.java |   1 +
 src/net/minecraft/client/gui/GuiChat.java          |   2 +-
 src/net/minecraft/client/gui/GuiCommandBlock.java  |   4 +
 .../minecraft/client/gui/GuiConfirmOpenLink.java   |   2 +
 src/net/minecraft/client/gui/GuiControls.java      |   2 +
 .../minecraft/client/gui/GuiCreateFlatWorld.java   |   4 +-
 src/net/minecraft/client/gui/GuiCreateWorld.java   |   3 +
 src/net/minecraft/client/gui/GuiCustomizeSkin.java |   2 +
 .../client/gui/GuiCustomizeWorldScreen.java        |   5 +-
 src/net/minecraft/client/gui/GuiDisconnected.java  |  58 +-
 src/net/minecraft/client/gui/GuiEnchantment.java   |   2 +-
 src/net/minecraft/client/gui/GuiErrorScreen.java   |   2 +
 src/net/minecraft/client/gui/GuiFlatPresets.java   |   6 +-
 src/net/minecraft/client/gui/GuiGameOver.java      |   9 +
 src/net/minecraft/client/gui/GuiIngame.java        | 115 ++-
 src/net/minecraft/client/gui/GuiIngameMenu.java    |  47 +
 .../minecraft/client/gui/GuiKeyBindingList.java    |   3 +
 src/net/minecraft/client/gui/GuiLanguage.java      |   3 +
 src/net/minecraft/client/gui/GuiListButton.java    |   1 +
 .../minecraft/client/gui/GuiLockIconButton.java    |   1 +
 src/net/minecraft/client/gui/GuiMainMenu.java      | 245 +++++-
 .../minecraft/client/gui/GuiMemoryErrorScreen.java |   2 +
 src/net/minecraft/client/gui/GuiMerchant.java      |   4 +
 src/net/minecraft/client/gui/GuiMultiplayer.java   | 197 ++++-
 src/net/minecraft/client/gui/GuiNewChat.java       |  42 +-
 src/net/minecraft/client/gui/GuiOptionButton.java  |   1 +
 src/net/minecraft/client/gui/GuiOptionSlider.java  |   1 +
 src/net/minecraft/client/gui/GuiOptions.java       |   2 +
 .../minecraft/client/gui/GuiOptionsRowList.java    |   3 +
 src/net/minecraft/client/gui/GuiOverlayDebug.java  |   8 +-
 .../minecraft/client/gui/GuiPageButtonList.java    |   3 +
 .../minecraft/client/gui/GuiPlayerTabOverlay.java  |  32 +-
 src/net/minecraft/client/gui/GuiRenameWorld.java   |   3 +
 src/net/minecraft/client/gui/GuiScreen.java        |  12 +-
 .../minecraft/client/gui/GuiScreenAddServer.java   |   3 +
 src/net/minecraft/client/gui/GuiScreenBook.java    |   5 +
 .../client/gui/GuiScreenCustomizePresets.java      |   4 +
 src/net/minecraft/client/gui/GuiScreenDemo.java    |   3 +
 .../client/gui/GuiScreenOptionsSounds.java         |   2 +
 .../minecraft/client/gui/GuiScreenRealmsProxy.java |   5 +-
 .../client/gui/GuiScreenResourcePacks.java         |   4 +
 .../minecraft/client/gui/GuiScreenServerList.java  |  11 +
 src/net/minecraft/client/gui/GuiSelectWorld.java   |   3 +
 src/net/minecraft/client/gui/GuiShareToLan.java    |   5 +
 .../gui/GuiSimpleScrolledSelectionListProxy.java   |   6 +-
 src/net/minecraft/client/gui/GuiSleepMP.java       |   2 +
 src/net/minecraft/client/gui/GuiSlider.java        |   1 +
 src/net/minecraft/client/gui/GuiSlot.java          |  26 +-
 src/net/minecraft/client/gui/GuiSnooper.java       |   3 +
 src/net/minecraft/client/gui/GuiSpectator.java     |   4 +-
 src/net/minecraft/client/gui/GuiTextField.java     |   6 +-
 src/net/minecraft/client/gui/GuiVideoSettings.java |   2 +
 src/net/minecraft/client/gui/GuiWinGame.java       |  12 +-
 src/net/minecraft/client/gui/GuiYesNo.java         |   3 +
 .../minecraft/client/gui/ScreenChatOptions.java    |   2 +
 .../minecraft/client/gui/ServerSelectionList.java  |  13 +-
 .../client/gui/achievement/GuiAchievements.java    |   6 +-
 .../minecraft/client/gui/achievement/GuiStats.java |   9 +-
 .../minecraft/client/gui/inventory/GuiBeacon.java  |   3 +
 .../minecraft/client/gui/inventory/GuiChest.java   | 162 +++-
 .../client/gui/inventory/GuiContainer.java         |  40 +-
 .../client/gui/inventory/GuiContainerCreative.java |   9 +-
 .../client/gui/inventory/GuiEditSign.java          |  16 +
 .../client/gui/inventory/GuiInventory.java         |   1 +
 .../gui/spectator/categories/TeleportToPlayer.java |   6 +-
 .../gui/spectator/categories/TeleportToTeam.java   |   4 +-
 .../client/gui/stream/GuiIngestServers.java        |   1 +
 .../client/gui/stream/GuiStreamOptions.java        |   1 +
 .../client/gui/stream/GuiStreamUnavailable.java    |   4 +
 .../client/gui/stream/GuiTwitchUserMode.java       |   2 +
 src/net/minecraft/client/main/Main.java            |  19 +-
 .../client/multiplayer/GuiConnecting.java          |   2 +
 .../client/multiplayer/PlayerControllerMP.java     |  59 +-
 .../minecraft/client/multiplayer/ServerList.java   |  16 +-
 .../minecraft/client/multiplayer/WorldClient.java  |   2 +
 .../client/network/NetHandlerLoginClient.java      |   5 +
 .../client/network/NetHandlerPlayClient.java       |  20 +-
 .../client/network/NetworkPlayerInfo.java          |  53 +-
 .../minecraft/client/network/OldServerPinger.java  |   4 +
 src/net/minecraft/client/particle/Barrier.java     |   2 +-
 .../minecraft/client/particle/EffectRenderer.java  |   2 +
 .../client/particle/EntityBreakingFX.java          |   2 +-
 .../minecraft/client/particle/EntityDiggingFX.java |   2 +-
 src/net/minecraft/client/particle/EntityFX.java    |   2 +-
 .../client/particle/EntityFireworkOverlayFX.java   |   2 +-
 .../client/particle/EntityFootStepFX.java          |   2 +-
 .../client/particle/EntityLargeExplodeFX.java      |   2 +-
 .../client/renderer/BlockFluidRenderer.java        |   6 +-
 .../client/renderer/BlockModelRenderer.java        |   1 +
 .../minecraft/client/renderer/EntityRenderer.java  |  63 +-
 .../client/renderer/InventoryEffectRenderer.java   |   4 +-
 .../minecraft/client/renderer/ItemRenderer.java    |   2 +-
 .../minecraft/client/renderer/RenderGlobal.java    |  32 +-
 src/net/minecraft/client/renderer/Tessellator.java |   2 +
 .../client/renderer/ThreadDownloadImageData.java   |  40 +-
 .../minecraft/client/renderer/WorldRenderer.java   |  90 +-
 .../client/renderer/chunk/ChunkRenderWorker.java   |   3 +
 .../minecraft/client/renderer/entity/Render.java   |  34 +-
 .../client/renderer/entity/RenderDragon.java       |   4 +-
 .../client/renderer/entity/RenderFallingBlock.java |   5 +-
 .../client/renderer/entity/RenderFish.java         |   2 +-
 .../client/renderer/entity/RenderGuardian.java     |   2 +-
 .../client/renderer/entity/RenderItem.java         |  44 +-
 .../renderer/entity/RenderLightningBolt.java       |   2 +-
 .../client/renderer/entity/RenderLiving.java       |   8 +-
 .../client/renderer/entity/RenderManager.java      |  21 +-
 .../client/renderer/entity/RenderPlayer.java       |   5 +-
 .../client/renderer/entity/RenderXPOrb.java        |   2 +-
 .../renderer/entity/RendererLivingEntity.java      |  13 +-
 .../entity/layers/LayerEnderDragonDeath.java       |   4 +-
 .../renderer/texture/TextureAtlasSprite.java       |   2 +
 .../client/renderer/texture/TextureManager.java    |   3 +
 .../client/renderer/texture/TextureMap.java        |   3 +
 .../renderer/tileentity/RenderItemFrame.java       |   2 +-
 .../tileentity/TileEntityBeaconRenderer.java       |   4 +-
 .../tileentity/TileEntityEndPortalRenderer.java    |   2 +-
 .../tileentity/TileEntityPistonRenderer.java       |   2 +-
 .../tileentity/TileEntityRendererDispatcher.java   |   2 +
 .../tileentity/TileEntitySkullRenderer.java        |   4 +-
 .../client/resources/DefaultPlayerSkin.java        |  21 +-
 .../client/resources/DefaultResourcePack.java      |   6 +-
 .../client/resources/FallbackResourceManager.java  |   7 +-
 .../client/resources/ResourcePackListEntry.java    |   4 +-
 .../client/resources/ResourcePackRepository.java   |   6 +-
 .../minecraft/client/resources/SkinManager.java    |  41 +-
 .../minecraft/client/settings/GameSettings.java    |   3 +-
 src/net/minecraft/client/settings/KeyBinding.java  |   8 +-
 src/net/minecraft/client/shader/Framebuffer.java   |   2 +-
 src/net/minecraft/client/shader/Shader.java        |   2 +-
 .../client/stream/BroadcastController.java         |   4 +
 src/net/minecraft/command/IEntitySelector.java     |   2 +-
 .../command/server/CommandBlockLogic.java          |   2 +
 src/net/minecraft/crash/CrashReport.java           |  19 +-
 src/net/minecraft/crash/CrashReportCategory.java   |   3 +
 src/net/minecraft/entity/DataWatcher.java          |  12 +-
 src/net/minecraft/entity/Entity.java               |  42 +-
 src/net/minecraft/entity/EntityLivingBase.java     |  14 +-
 src/net/minecraft/entity/EntityTracker.java        |   3 +
 src/net/minecraft/entity/boss/EntityDragon.java    |   2 +-
 .../minecraft/entity/item/EntityArmorStand.java    |   2 +-
 src/net/minecraft/entity/item/EntityXPOrb.java     |   2 +-
 src/net/minecraft/entity/player/EntityPlayer.java  |  33 +-
 .../minecraft/entity/player/EntityPlayerMP.java    |  12 +-
 .../minecraft/entity/player/InventoryPlayer.java   |   1 +
 .../minecraft/entity/projectile/EntityArrow.java   |   2 +-
 .../entity/projectile/EntitySmallFireball.java     |   2 +-
 .../entity/projectile/EntityThrowable.java         |   2 +-
 src/net/minecraft/inventory/ContainerPlayer.java   |   2 +-
 src/net/minecraft/inventory/Slot.java              |   7 +-
 src/net/minecraft/item/ItemBoat.java               |   2 +-
 src/net/minecraft/item/ItemBucket.java             |   8 +-
 src/net/minecraft/item/ItemEnderEye.java           |   2 +-
 src/net/minecraft/item/ItemGlassBottle.java        |   4 +-
 src/net/minecraft/item/ItemLilyPad.java            |   4 +-
 src/net/minecraft/item/ItemMonsterPlacer.java      |   4 +-
 src/net/minecraft/nbt/CompressedStreamTools.java   |   1 +
 src/net/minecraft/nbt/NBTTagCompound.java          |   3 +
 .../minecraft/network/NetHandlerPlayServer.java    |  17 +-
 src/net/minecraft/network/NetworkManager.java      | 946 ++++++++++-----------
 src/net/minecraft/network/NetworkSystem.java       |   5 +
 src/net/minecraft/network/PacketBuffer.java        |   6 +-
 src/net/minecraft/realms/RealmsConnect.java        |   2 +
 src/net/minecraft/realms/RealmsScreen.java         |   2 +-
 .../minecraft/realms/RealmsServerStatusPinger.java |   3 +
 src/net/minecraft/realms/Tezzelator.java           |  14 +-
 src/net/minecraft/server/MinecraftServer.java      |   5 +
 .../server/integrated/IntegratedServer.java        |   3 +
 .../server/management/LowerStringMap.java          |   4 +-
 .../server/management/PlayerProfileCache.java      |   4 +-
 .../management/ServerConfigurationManager.java     |   4 +
 .../server/network/NetHandlerLoginServer.java      |  12 +-
 src/net/minecraft/tileentity/TileEntityChest.java  |   4 +-
 src/net/minecraft/tileentity/TileEntitySign.java   |   3 +-
 src/net/minecraft/util/CryptManager.java           |  30 +-
 src/net/minecraft/util/JsonSerializableSet.java    |   6 +-
 src/net/minecraft/util/MessageDeserializer.java    |   3 +
 src/net/minecraft/util/MessageDeserializer2.java   |   6 +-
 src/net/minecraft/util/MessageSerializer.java      |   6 +-
 src/net/minecraft/util/MovingObjectPosition.java   |  20 +-
 src/net/minecraft/util/Timer.java                  |   6 +
 src/net/minecraft/village/VillageSiege.java        |   2 +-
 src/net/minecraft/world/SpawnerAnimals.java        |  31 +-
 src/net/minecraft/world/World.java                 |   2 +
 src/net/minecraft/world/WorldServer.java           |   7 +-
 .../minecraft/world/biome/WorldChunkManager.java   |   2 +
 src/net/minecraft/world/chunk/Chunk.java           |   3 +
 .../minecraft/world/chunk/storage/RegionFile.java  |   6 +-
 .../minecraft/world/gen/ChunkProviderServer.java   |   3 +
 src/net/minecraft/world/gen/layer/GenLayer.java    |   1 +
 .../world/gen/structure/MapGenStructure.java       |   2 +
 202 files changed, 2902 insertions(+), 1273 deletions(-)

diff --git a/src/net/minecraft/block/Block.java b/src/net/minecraft/block/Block.java
index 5c07aa4..c8adf19 100644

+import com.mojang.authlib.properties.PropertyMap;
+import com.mojang.authlib.yggdrasil.YggdrasilAuthenticationService;
+
+public class Minecraft implements IThreadListener, IPlayerUsage
+{
+    private static final Logger logger = LogManager.getLogger();
+    //TODO: Client
+    private static final ResourceLocation locationMojangPng = new ResourceLocation("wurst/wurst_loading.png");
+    public static final boolean isRunningOnMac = Util.getOSType() == Util.EnumOS.OSX;
+
+    /** A 10MiB preallocation to ensure the heap is reasonably sized. */
+    public static byte[] memoryReserve = new byte[10485760];
+    private static final List macDisplayModes = Lists.newArrayList(new DisplayMode[] {new DisplayMode(2560, 1600), new DisplayMode(2880, 1800)});
+    private final File fileResourcepacks;
+    private final PropertyMap twitchDetails;
+    private ServerData currentServerData;
+
+    /** The RenderEngine instance used by Minecraft */
+    private TextureManager renderEngine;
+
+    /**
+     * Set to 'this' in Minecraft constructor; used by some settings get methods
+     */
+    private static Minecraft theMinecraft;
+    public PlayerControllerMP playerController;
+    private boolean fullscreen;
+    private boolean field_175619_R = true;
+    private boolean hasCrashed;
+
+    /** Instance of CrashReport. */
+    private CrashReport crashReporter;
+    public int displayWidth;
+    public int displayHeight;
+    private Timer timer = new Timer(20.0F);
+
+    /** Instance of PlayerUsageSnooper. */
+    private PlayerUsageSnooper usageSnooper = new PlayerUsageSnooper("client", this, MinecraftServer.getCurrentTimeMillis());
+    public WorldClient theWorld;
+    public RenderGlobal renderGlobal;
+    private RenderManager renderManager;
+    private RenderItem renderItem;
+    private ItemRenderer itemRenderer;
+    public EntityPlayerSP thePlayer;
+    private Entity field_175622_Z;
+    public Entity pointedEntity;
+    public EffectRenderer effectRenderer;
+    //TODO: Client
+    public Session session;
+    private boolean isGamePaused;
+
+    /** The font renderer used for displaying and measuring text */
+    public FontRenderer fontRendererObj;
+    public FontRenderer standardGalacticFontRenderer;
+
+    /** The GuiScreen that's being displayed at the moment. */
+    public GuiScreen currentScreen;
+    public LoadingScreenRenderer loadingScreen;
+    public EntityRenderer entityRenderer;
+
+    /** Mouse left click counter */
+    private int leftClickCounter;
+
+    /** Display width */
+    private int tempDisplayWidth;
+
+    /** Display height */
+    private int tempDisplayHeight;
+
+    /** Instance of IntegratedServer. */
+    private IntegratedServer theIntegratedServer;
+
+    /** Gui achievement */
+    public GuiAchievement guiAchievement;
+    public GuiIngame ingameGUI;
+
+    /** Skip render world */
+    public boolean skipRenderWorld;
+
+    /** The ray trace hit that the mouse is over. */
+    public MovingObjectPosition objectMouseOver;
+
+    /** The game settings that currently hold effect. */
+    public GameSettings gameSettings;
+
+    /** Mouse helper instance. */
+    public MouseHelper mouseHelper;
+    public final File mcDataDir;
+    private final File fileAssets;
+    private final String launchedVersion;
+    private final Proxy proxy;
+    private ISaveFormat saveLoader;
+
+    /**
+     * This is set to fpsCounter every debug screen update, and is shown on the debug screen. It's also sent as part of
+     * the usage snooping.
+     */
+    private static int debugFPS;
+
+    /**
+     * When you place a block, it's set to 6, decremented once per tick, when it's 0, you can place another block.
+     */
+    //TODO: Client
+    public int rightClickDelayTimer;
+    private String serverName;
+    private int serverPort;
+
+    /**
+     * Does the actual gameplay have focus. If so then mouse and keys will effect the player instead of menus.
+     */
+    public boolean inGameHasFocus;
+    long systemTime = getSystemTime();
+
+    /** Join player counter */
+    private int joinPlayerCounter;
+    private final boolean jvm64bit;
+    private final boolean isDemo;
+    private NetworkManager myNetworkManager;
+    private boolean integratedServerIsRunning;
+
+    /** The profiler instance */
+    public final Profiler mcProfiler = new Profiler();
+
+    /**
+     * Keeps track of how long the debug crash keycombo (F3+C) has been pressed for, in order to crash after 10 seconds.
+     */
+    private long debugCrashKeyPressTime = -1L;
+    private IReloadableResourceManager mcResourceManager;
+    private final IMetadataSerializer metadataSerializer_ = new IMetadataSerializer();
+    private final List defaultResourcePacks = Lists.newArrayList();
+    private final DefaultResourcePack mcDefaultResourcePack;
+    private ResourcePackRepository mcResourcePackRepository;
+    private LanguageManager mcLanguageManager;
+    private IStream stream;
+    private Framebuffer framebufferMc;
+    private TextureMap textureMapBlocks;
+    private SoundHandler mcSoundHandler;
+    private MusicTicker mcMusicTicker;
+    private ResourceLocation mojangLogo;
+    private final MinecraftSessionService sessionService;
+    private SkinManager skinManager;
+    private final Queue scheduledTasks = Queues.newArrayDeque();
+    private long field_175615_aJ = 0L;
+    private final Thread mcThread = Thread.currentThread();
+    private ModelManager modelManager;
+    private BlockRendererDispatcher field_175618_aM;
+
+    /**
+     * Set to true to keep the game loop running. Set to false by shutdown() to allow the game loop to exit cleanly.
+     */
+    volatile boolean running = true;
+
+    /** String that shows the debug information */
+    public String debug = "";
+    public boolean field_175613_B = false;
+    public boolean field_175614_C = false;
+    public boolean field_175611_D = false;
+    public boolean field_175612_E = true;
+
+    /** Approximate time (in ms) of last update to debug string */
+    long debugUpdateTime = getSystemTime();
+
+    /** holds the current fps */
+    int fpsCounter;
+    long prevFrameTime = -1L;
+
+    /** Profiler currently displayed in the debug screen pie chart */
+    private String debugProfilerName = "root";
+    //TODO: Client
+	private JFrame frame;
+	
+    private static final String __OBFID = "CL_00000631";
+
+    public Minecraft(GameConfiguration p_i45547_1_)
+    {
+        theMinecraft = this;
+        this.mcDataDir = p_i45547_1_.field_178744_c.field_178760_a;
+        this.fileAssets = p_i45547_1_.field_178744_c.field_178759_c;
+        this.fileResourcepacks = p_i45547_1_.field_178744_c.field_178758_b;
+        this.launchedVersion = p_i45547_1_.field_178741_d.field_178755_b;
+        this.twitchDetails = p_i45547_1_.field_178745_a.field_178750_b;
+        this.mcDefaultResourcePack = new DefaultResourcePack((new ResourceIndex(p_i45547_1_.field_178744_c.field_178759_c, p_i45547_1_.field_178744_c.field_178757_d)).func_152782_a());
+        this.proxy = p_i45547_1_.field_178745_a.field_178751_c == null ? Proxy.NO_PROXY : p_i45547_1_.field_178745_a.field_178751_c;
+        this.sessionService = (new YggdrasilAuthenticationService(p_i45547_1_.field_178745_a.field_178751_c, UUID.randomUUID().toString())).createMinecraftSessionService();
+        this.session = p_i45547_1_.field_178745_a.field_178752_a;
+        logger.info("Setting user: " + this.session.getUsername());
+        logger.info("(Session ID is " + this.session.getSessionID() + ")");
+        this.isDemo = p_i45547_1_.field_178741_d.field_178756_a;
+        this.displayWidth = p_i45547_1_.field_178743_b.field_178764_a > 0 ? p_i45547_1_.field_178743_b.field_178764_a : 1;
+        this.displayHeight = p_i45547_1_.field_178743_b.field_178762_b > 0 ? p_i45547_1_.field_178743_b.field_178762_b : 1;
+        this.tempDisplayWidth = p_i45547_1_.field_178743_b.field_178764_a;
+        this.tempDisplayHeight = p_i45547_1_.field_178743_b.field_178762_b;
+        this.fullscreen = p_i45547_1_.field_178743_b.field_178763_c;
+        this.jvm64bit = isJvm64bit();
+        this.theIntegratedServer = new IntegratedServer(this);
+
+        if (p_i45547_1_.field_178742_e.field_178754_a != null)
+        {
+            this.serverName = p_i45547_1_.field_178742_e.field_178754_a;
+            this.serverPort = p_i45547_1_.field_178742_e.field_178753_b;
+        }
+
+        ImageIO.setUseCache(false);
+        Bootstrap.register();
+    }
+
+    public void run()
+    {
+    	//TODO: Client
+		if(System.getProperty("java.version").startsWith("1.6")
+			|| System.getProperty("java.version").startsWith("1.7"))
