diff --git a/src/main/java/com/b100/utils/FileUtils.java b/src/main/java/com/b100/utils/FileUtils.java
index 1f8f5eeda..a73a689f3 100644
--- a/src/main/java/com/b100/utils/FileUtils.java
+++ b/src/main/java/com/b100/utils/FileUtils.java
@@ -3,8 +3,6 @@ package com.b100.utils;
 import java.io.BufferedInputStream;
 import java.io.BufferedOutputStream;
 import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
diff --git a/src/main/java/com/b100/utils/ImageUtils.java b/src/main/java/com/b100/utils/ImageUtils.java
index f506ce526..6a436f00f 100644
--- a/src/main/java/com/b100/utils/ImageUtils.java
+++ b/src/main/java/com/b100/utils/ImageUtils.java
@@ -9,7 +9,6 @@ import java.awt.datatransfer.Transferable;
 import java.awt.datatransfer.UnsupportedFlavorException;
 import java.awt.image.BufferedImage;
 import java.io.File;
-import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.nio.file.Files;
diff --git a/src/main/java/com/b100/utils/ReflectUtils.java b/src/main/java/com/b100/utils/ReflectUtils.java
index 49874eb98..b0b7a0e5a 100644
--- a/src/main/java/com/b100/utils/ReflectUtils.java
+++ b/src/main/java/com/b100/utils/ReflectUtils.java
@@ -1,7 +1,5 @@
 package com.b100.utils;
 
-import net.minecraft.core.Global;
-
 import static com.b100.utils.Utils.*;
 
 import java.lang.reflect.Field;
diff --git a/src/main/java/com/b100/utils/StringUtils.java b/src/main/java/com/b100/utils/StringUtils.java
index d7a0bc78a..f128246e5 100644
--- a/src/main/java/com/b100/utils/StringUtils.java
+++ b/src/main/java/com/b100/utils/StringUtils.java
@@ -2,7 +2,6 @@ package com.b100.utils;
 
 import java.io.BufferedReader;
 import java.io.File;
-import java.io.FileInputStream;
 import java.io.FileWriter;
 import java.io.InputStream;
 import java.io.InputStreamReader;
diff --git a/src/main/java/net/betterthanadventure/sound/LibraryLWJGL3OpenAL.java b/src/main/java/net/betterthanadventure/sound/LibraryLWJGL3OpenAL.java
index 25930af32..e9a1d6cfe 100644
--- a/src/main/java/net/betterthanadventure/sound/LibraryLWJGL3OpenAL.java
+++ b/src/main/java/net/betterthanadventure/sound/LibraryLWJGL3OpenAL.java
@@ -1,7 +1,6 @@
 package net.betterthanadventure.sound;
 
 import org.lwjgl.BufferUtils;
-import org.lwjgl.LWJGLException;
 import org.lwjgl.openal.*;
 import paulscode.sound.*;
 
@@ -11,6 +10,7 @@ import java.nio.FloatBuffer;
 import java.nio.IntBuffer;
 import java.util.HashMap;
 import java.util.Iterator;
+import java.util.Map;
 import java.util.Set;
 
 public class LibraryLWJGL3OpenAL extends Library {
@@ -22,11 +22,11 @@ public class LibraryLWJGL3OpenAL extends Library {
     private FloatBuffer listenerPositionAL = null;
     private FloatBuffer listenerOrientation = null;
     private FloatBuffer listenerVelocity = null;
-    private HashMap ALBufferMap = null;
+    private Map<String, IntBuffer> ALBufferMap = null;
     private static boolean alPitchSupported = true;
 
     public LibraryLWJGL3OpenAL() {
-        this.ALBufferMap = new HashMap();
+        this.ALBufferMap = new HashMap<>();
     }
 
     private void create() {
@@ -119,8 +119,7 @@ public class LibraryLWJGL3OpenAL extends Library {
         if (AL10.alGetError() != 0) {
             return null;
         } else {
-            ChannelLWJGL3OpenAL var2 = new ChannelLWJGL3OpenAL(var1, var3);
-            return var2;
+            return new ChannelLWJGL3OpenAL(var1, var3);
         }
     }
 
@@ -154,7 +153,7 @@ public class LibraryLWJGL3OpenAL extends Library {
         }
 
         if (this.ALBufferMap == null) {
-            this.ALBufferMap = new HashMap();
+            this.ALBufferMap = new HashMap<>();
             this.importantMessage("Open AL Buffer Map was null in method'loadSound'");
         }
 
diff --git a/src/main/java/net/minecraft/client/Minecraft.java b/src/main/java/net/minecraft/client/Minecraft.java
index 70bd167ab..66e343920 100644
--- a/src/main/java/net/minecraft/client/Minecraft.java
+++ b/src/main/java/net/minecraft/client/Minecraft.java
@@ -8,10 +8,6 @@ import java.awt.event.MouseAdapter;
 import java.awt.event.MouseEvent;
 import java.io.File;
 import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Comparator;
-import java.util.Random;
 import java.net.HttpURLConnection;
 import java.net.URL;
 import java.util.*;
@@ -27,11 +23,12 @@ import net.minecraft.client.gui.chat.ScreenSleepMP;
 import net.minecraft.client.gui.toasts.GuiElementToastsHud;
 import net.minecraft.client.holiday.Holidays;
 import net.minecraft.client.net.handler.PacketHandlerClient;
-import net.minecraft.client.sound.SoundEvent;
 import net.minecraft.client.world.WorldClient;
 import net.minecraft.client.world.chunk.provider.ChunkProviderStatic;
 import net.minecraft.core.achievement.Achievements;
 import net.minecraft.core.block.BlockLeavesBase;
+import net.minecraft.core.block.entity.TileEntityDispatcher;
+import net.minecraft.core.entity.EntityDispatcher;
 import net.minecraft.core.net.command.util.CommandHelper;
 import net.minecraft.core.util.helper.DyeColor;
 import net.minecraft.core.util.helper.LoggedPrintStream;
@@ -157,26 +154,6 @@ import org.slf4j.Logger;
 
 
 import static net.minecraft.core.Global.CURRENT_SAVE_VERSION;
-import static org.lwjgl.opengl.GL11.GL_ALPHA_TEST;
-import static org.lwjgl.opengl.GL11.GL_TEXTURE_2D;
-import static org.lwjgl.opengl.GL11.glAlphaFunc;
-import static org.lwjgl.opengl.GL11.glClear;
-import static org.lwjgl.opengl.GL11.glClearColor;
-import static org.lwjgl.opengl.GL11.glClearDepth;
-import static org.lwjgl.opengl.GL11.glColor4f;
-import static org.lwjgl.opengl.GL11.glCullFace;
-import static org.lwjgl.opengl.GL11.glDepthFunc;
-import static org.lwjgl.opengl.GL11.glDisable;
-import static org.lwjgl.opengl.GL11.glEnable;
-import static org.lwjgl.opengl.GL11.glLoadIdentity;
-import static org.lwjgl.opengl.GL11.glMatrixMode;
-import static org.lwjgl.opengl.GL11.glOrtho;
-import static org.lwjgl.opengl.GL11.glShadeModel;
-import static org.lwjgl.opengl.GL11.glTranslatef;
-import static org.lwjgl.opengl.GL11.glViewport;
-
-// Referenced classes of package net.minecraft.client:
-//            MinecraftApplet
 
 public class Minecraft
     implements MinecraftAccessor
@@ -417,6 +394,8 @@ public class Minecraft
         Blocks.init();
         Items.init();
         Dimension.init();
+        EntityDispatcher.init();
+        TileEntityDispatcher.init();
         CommandHelper.init();
 
 		gameSettings = new GameSettings(this, mcDataDir);
@@ -2401,7 +2380,6 @@ public class Minecraft
 
         loadingScreen.progressStage("Simulating world for a bit...");
         loadingScreen.progressStop();
-        j = 2000;
         currentWorld.dropOldChunks();
     }
 
diff --git a/src/main/java/net/minecraft/client/entity/particle/ParticleBlockBreaking.java b/src/main/java/net/minecraft/client/entity/particle/ParticleBlockBreaking.java
index 319dd11bd..f7e7f5869 100644
--- a/src/main/java/net/minecraft/client/entity/particle/ParticleBlockBreaking.java
+++ b/src/main/java/net/minecraft/client/entity/particle/ParticleBlockBreaking.java
@@ -1,10 +1,6 @@
 package net.minecraft.client.entity.particle;
 
 import net.minecraft.client.render.LightmapHelper;
-
-// Referenced classes of package net.minecraft.src:
-//            EntityFX, Block, Tessellator, World
-
 import net.minecraft.client.render.ParticleEngine;
 import net.minecraft.client.render.block.color.BlockColorDispatcher;
 import net.minecraft.client.render.block.model.BlockModel;
diff --git a/src/main/java/net/minecraft/client/entity/particle/ParticleItemBreaking.java b/src/main/java/net/minecraft/client/entity/particle/ParticleItemBreaking.java
index cfa1b42ad..fd40b7392 100644
--- a/src/main/java/net/minecraft/client/entity/particle/ParticleItemBreaking.java
+++ b/src/main/java/net/minecraft/client/entity/particle/ParticleItemBreaking.java
@@ -1,11 +1,6 @@
 package net.minecraft.client.entity.particle;
 
 import net.minecraft.client.render.LightmapHelper;
-
-// Referenced classes of package net.minecraft.src:
-//            EntityFX, Item, Block, Tessellator,
-//            World
-
 import net.minecraft.client.render.ParticleEngine;
 import net.minecraft.client.render.item.model.ItemModelDispatcher;
 import net.minecraft.client.render.tessellator.Tessellator;
diff --git a/src/main/java/net/minecraft/client/entity/particle/ParticleLeaf.java b/src/main/java/net/minecraft/client/entity/particle/ParticleLeaf.java
index fc8b9bbaf..2981c08c6 100644
--- a/src/main/java/net/minecraft/client/entity/particle/ParticleLeaf.java
+++ b/src/main/java/net/minecraft/client/entity/particle/ParticleLeaf.java
@@ -1,10 +1,6 @@
 package net.minecraft.client.entity.particle;
 
 import net.minecraft.client.render.LightmapHelper;
-
-// Referenced classes of package net.minecraft.src:
-//            EntityFX, Block, Tessellator, World
-
 import net.minecraft.client.render.ParticleEngine;
 import net.minecraft.client.render.block.color.BlockColorDispatcher;
 import net.minecraft.client.render.texture.stitcher.TextureRegistry;
diff --git a/src/main/java/net/minecraft/client/entity/particle/ParticleSlimeChunk.java b/src/main/java/net/minecraft/client/entity/particle/ParticleSlimeChunk.java
index 5b549aa24..1188dc1f9 100644
--- a/src/main/java/net/minecraft/client/entity/particle/ParticleSlimeChunk.java
+++ b/src/main/java/net/minecraft/client/entity/particle/ParticleSlimeChunk.java
@@ -1,11 +1,6 @@
 package net.minecraft.client.entity.particle;
 
 import net.minecraft.client.render.LightmapHelper;
-
-// Referenced classes of package net.minecraft.src:
-//            EntityFX, Item, Block, Tessellator,
-//            World
-
 import net.minecraft.client.render.ParticleEngine;
 import net.minecraft.client.render.item.model.ItemModelDispatcher;
 import net.minecraft.client.render.tessellator.Tessellator;
diff --git a/src/main/java/net/minecraft/client/entity/player/PlayerRemote.java b/src/main/java/net/minecraft/client/entity/player/PlayerRemote.java
index 99c4cfb16..0b184bcee 100644
--- a/src/main/java/net/minecraft/client/entity/player/PlayerRemote.java
+++ b/src/main/java/net/minecraft/client/entity/player/PlayerRemote.java
@@ -1,10 +1,5 @@
 package net.minecraft.client.entity.player;
 
-
-// Referenced classes of package net.minecraft.src:
-//            Player, MathHelper, ItemStack, InventoryPlayer,
-//            World, Entity
-
 import net.minecraft.core.entity.Entity;
 import net.minecraft.core.entity.player.Player;
 import net.minecraft.core.item.ItemStack;
diff --git a/src/main/java/net/minecraft/client/gui/ButtonElement.java b/src/main/java/net/minecraft/client/gui/ButtonElement.java
index 5093cec2a..2776c44ff 100644
--- a/src/main/java/net/minecraft/client/gui/ButtonElement.java
+++ b/src/main/java/net/minecraft/client/gui/ButtonElement.java
@@ -9,9 +9,6 @@ import org.lwjgl.opengl.GL11;
 import net.minecraft.client.Minecraft;
 import net.minecraft.core.util.helper.Listener;
 
-// Referenced classes of package net.minecraft.src:
-//            Gui, RenderEngine
-
 public class ButtonElement extends Gui implements GuiElement
 {
     public static final int STATE_DISABLED = 0;
diff --git a/src/main/java/net/minecraft/client/gui/ScreenAddServer.java b/src/main/java/net/minecraft/client/gui/ScreenAddServer.java
index e56cba8b3..359bd1fdc 100644
--- a/src/main/java/net/minecraft/client/gui/ScreenAddServer.java
+++ b/src/main/java/net/minecraft/client/gui/ScreenAddServer.java
@@ -5,10 +5,6 @@ import net.minecraft.core.net.SavedServerList;
 import net.minecraft.core.lang.I18n;
 import org.lwjgl.input.Keyboard;
 
-// Referenced classes of package net.minecraft.src:
-//            GuiScreen, GuiTextField, StringTranslate, GuiButton, 
-//            gGameSettings, GuiConnecting
-
 public class ScreenAddServer extends Screen
 {
     private ButtonElement buttonSave;
diff --git a/src/main/java/net/minecraft/client/gui/ScreenBadJavaArch.java b/src/main/java/net/minecraft/client/gui/ScreenBadJavaArch.java
index 9075df622..bc7442303 100644
--- a/src/main/java/net/minecraft/client/gui/ScreenBadJavaArch.java
+++ b/src/main/java/net/minecraft/client/gui/ScreenBadJavaArch.java
@@ -1,8 +1,5 @@
 package net.minecraft.client.gui;
 
-// Referenced classes of package net.minecraft.src:
-//            GuiScreen, GuiButton, GuiMainMenu
-
 import com.mojang.logging.LogUtils;
 import net.minecraft.core.lang.I18n;
 import org.slf4j.Logger;
diff --git a/src/main/java/net/minecraft/client/gui/ScreenConflictWarning.java b/src/main/java/net/minecraft/client/gui/ScreenConflictWarning.java
index 0b1f4b829..ca305d79e 100644
--- a/src/main/java/net/minecraft/client/gui/ScreenConflictWarning.java
+++ b/src/main/java/net/minecraft/client/gui/ScreenConflictWarning.java
@@ -1,8 +1,5 @@
 package net.minecraft.client.gui;
 
-// Referenced classes of package net.minecraft.src:
-//            GuiScreen, GuiButton, GuiMainMenu
-
 import net.minecraft.core.lang.I18n;
 
 public class ScreenConflictWarning extends Screen
diff --git a/src/main/java/net/minecraft/client/gui/ScreenConnectFailed.java b/src/main/java/net/minecraft/client/gui/ScreenConnectFailed.java
index 1cbcfc991..58242abb8 100644
--- a/src/main/java/net/minecraft/client/gui/ScreenConnectFailed.java
+++ b/src/main/java/net/minecraft/client/gui/ScreenConnectFailed.java
@@ -1,10 +1,6 @@
 package net.minecraft.client.gui;
 
 import net.minecraft.client.Minecraft;
-
-// Referenced classes of package net.minecraft.src:
-//            GuiScreen, StringTranslate, GuiButton, GuiMainMenu
-
 import net.minecraft.core.lang.I18n;
 
 public class ScreenConnectFailed extends Screen
diff --git a/src/main/java/net/minecraft/client/gui/ScreenConnectToIp.java b/src/main/java/net/minecraft/client/gui/ScreenConnectToIp.java
index 4fbf1411b..935d1ddd2 100644
--- a/src/main/java/net/minecraft/client/gui/ScreenConnectToIp.java
+++ b/src/main/java/net/minecraft/client/gui/ScreenConnectToIp.java
@@ -4,10 +4,6 @@ import net.minecraft.core.lang.I18n;
 import net.minecraft.core.net.ServerAddress;
 import org.lwjgl.input.Keyboard;
 
-// Referenced classes of package net.minecraft.src:
-//            GuiScreen, GuiTextField, StringTranslate, GuiButton, 
-//            gGameSettings, GuiConnecting
-
 public class ScreenConnectToIp extends Screen
 {
 
diff --git a/src/main/java/net/minecraft/client/gui/ScreenConnecting.java b/src/main/java/net/minecraft/client/gui/ScreenConnecting.java
index d9f1e7c5b..2a5f3399b 100644
--- a/src/main/java/net/minecraft/client/gui/ScreenConnecting.java
+++ b/src/main/java/net/minecraft/client/gui/ScreenConnecting.java
@@ -10,10 +10,6 @@ import org.slf4j.Logger;
 import java.net.ConnectException;
 import java.net.UnknownHostException;
 
-// Referenced classes of package net.minecraft.src:
-//            GuiScreen, ThreadConnectToServer, PacketHandlerClient, StringTranslate,
-//            GuiButton, GuiMainMenu
-
 public class ScreenConnecting extends Screen
 {
     private static final Logger LOGGER = LogUtils.getLogger();
diff --git a/src/main/java/net/minecraft/client/gui/ScreenDownloadTerrain.java b/src/main/java/net/minecraft/client/gui/ScreenDownloadTerrain.java
index ce95f0bdd..03be6e8fa 100644
--- a/src/main/java/net/minecraft/client/gui/ScreenDownloadTerrain.java
+++ b/src/main/java/net/minecraft/client/gui/ScreenDownloadTerrain.java
@@ -1,9 +1,5 @@
 package net.minecraft.client.gui;
 
-// Referenced classes of package net.minecraft.src:
-//            GuiScreen, KeepAlivePacket, PacketHandlerClient, StringTranslate,
-//            GuiButton
-
 import net.minecraft.client.net.handler.PacketHandlerClient;
 import net.minecraft.core.net.packet.KeepAlivePacket;
 import net.minecraft.core.lang.I18n;
diff --git a/src/main/java/net/minecraft/client/gui/ScreenGameOver.java b/src/main/java/net/minecraft/client/gui/ScreenGameOver.java
index 317c7110f..eb0c99ed2 100644
--- a/src/main/java/net/minecraft/client/gui/ScreenGameOver.java
+++ b/src/main/java/net/minecraft/client/gui/ScreenGameOver.java
@@ -8,9 +8,6 @@ import org.lwjgl.opengl.GL11;
 
 import net.minecraft.core.net.command.TextFormatting;
 
-// Referenced classes of package net.minecraft.src:
-//            GuiScreen, GuiButton, PlayerLocal, GuiMainMenu
-
 public class ScreenGameOver extends Screen
 {
     protected int tickCount = 0;
diff --git a/src/main/java/net/minecraft/client/gui/ScreenLabelEditor.java b/src/main/java/net/minecraft/client/gui/ScreenLabelEditor.java
index c928bc18d..c015c5720 100644
--- a/src/main/java/net/minecraft/client/gui/ScreenLabelEditor.java
+++ b/src/main/java/net/minecraft/client/gui/ScreenLabelEditor.java
@@ -8,11 +8,6 @@ import net.minecraft.core.util.helper.ChatAllowedCharacters;
 import org.lwjgl.input.Keyboard;
 import org.lwjgl.opengl.GL11;
 
-// Referenced classes of package net.minecraft.src:
-//            GuiScreen, GuiButton, World, SignUpdatePacket,
-//            TileEntitySign, PacketHandlerClient, Block, TileEntityRenderer,
-//            ChatAllowedCharacters
-
 public class ScreenLabelEditor extends Screen
 {
     private static final String allowedCharacters;
diff --git a/src/main/java/net/minecraft/client/gui/ScreenMobPicker.java b/src/main/java/net/minecraft/client/gui/ScreenMobPicker.java
index 197fde605..af589e346 100644
--- a/src/main/java/net/minecraft/client/gui/ScreenMobPicker.java
+++ b/src/main/java/net/minecraft/client/gui/ScreenMobPicker.java
@@ -8,6 +8,7 @@ import net.minecraft.core.entity.EntityDispatcher;
 import net.minecraft.core.entity.Mob;
 import net.minecraft.core.entity.animal.MobFireflyCluster;
 import net.minecraft.core.net.packet.SetMobSpawnerPacket;
+import net.minecraft.core.util.collection.NamespaceID;
 
 import java.lang.reflect.Modifier;
 import java.util.ArrayList;
@@ -32,18 +33,18 @@ public class ScreenMobPicker
 
     @Override
     public void init() {
-        List<String> monsters = new ArrayList<>();
-        for (Class<? extends Entity> clazz : EntityDispatcher.classToKeyMap.keySet()) {
+        List<NamespaceID> monsters = new ArrayList<>();
+        for (Class<? extends Entity> clazz : EntityDispatcher.classToIdMap.keySet()) {
             if (clazz == MobFireflyCluster.class) continue;
             if (Mob.class.isAssignableFrom(clazz) && !Modifier.isAbstract(clazz.getModifiers())) {
-                monsters.add(EntityDispatcher.classToKeyMap.get(clazz));
+                monsters.add(EntityDispatcher.classToIdMap.get(clazz));
             }
         }
         Collections.sort(monsters);
         List<String> prettyMonsters = new ArrayList<>();
-        for (String monster : monsters) {
+        for (NamespaceID monster : monsters) {
             StringBuilder sb = new StringBuilder();
-            for (char c : monster.toCharArray()) {
+            for (char c : monster.value.toCharArray()) {
                 if (Character.isUpperCase(c)) {
                     sb.append(' ');
                 }
@@ -59,7 +60,7 @@ public class ScreenMobPicker
             .closeOnClickOut(0)
             .withOnCloseListener((statusCode, results) -> {
                 if (statusCode == 1) {
-                    mobId = monsters.get((Integer) results.get("list"));
+                    mobId = monsters.get((Integer) results.get("list")).toString();
                     if (!mc.currentWorld.isClientSide) {
                         TileEntityMobSpawner spawner = (TileEntityMobSpawner) mc.currentWorld.getBlockEntity(x, y, z);
                         if (spawner == null) {
@@ -67,7 +68,7 @@ public class ScreenMobPicker
                         }
                         spawner.setMobId(mobId);
                     } else {
-                        mc.getSendQueue().addToSendQueue(new SetMobSpawnerPacket(x, y, z, mobId));
+                        mc.getSendQueue().addToSendQueue(new SetMobSpawnerPacket(x, y, z, EntityDispatcher.classForId(mobId)));
                     }
                 }
                 shouldClose = true;
diff --git a/src/main/java/net/minecraft/client/gui/ScreenOutOfMemory.java b/src/main/java/net/minecraft/client/gui/ScreenOutOfMemory.java
index f422d8c63..a6792eb7b 100644
--- a/src/main/java/net/minecraft/client/gui/ScreenOutOfMemory.java
+++ b/src/main/java/net/minecraft/client/gui/ScreenOutOfMemory.java
@@ -1,9 +1,5 @@
 package net.minecraft.client.gui;
 
-
-// Referenced classes of package net.minecraft.src:
-//            GuiScreen, GuiButton
-
 import net.minecraft.core.lang.I18n;
 
 public class ScreenOutOfMemory extends Screen
diff --git a/src/main/java/net/minecraft/client/gui/ScreenPaintingPicker.java b/src/main/java/net/minecraft/client/gui/ScreenPaintingPicker.java
index 1360bdb33..ac2d487a4 100644
--- a/src/main/java/net/minecraft/client/gui/ScreenPaintingPicker.java
+++ b/src/main/java/net/minecraft/client/gui/ScreenPaintingPicker.java
@@ -12,7 +12,6 @@ import java.util.ArrayList;
 import java.util.List;
 
 import static org.lwjgl.opengl.GL11.*;
-import static org.lwjgl.opengl.GL11.GL_BLEND;
 
 public class ScreenPaintingPicker
     extends Screen
diff --git a/src/main/java/net/minecraft/client/gui/ScreenPause.java b/src/main/java/net/minecraft/client/gui/ScreenPause.java
index fa3b0380b..ea24a774d 100644
--- a/src/main/java/net/minecraft/client/gui/ScreenPause.java
+++ b/src/main/java/net/minecraft/client/gui/ScreenPause.java
@@ -14,11 +14,6 @@ import net.minecraft.core.lang.I18n;
 import net.minecraft.core.net.command.TextFormatting;
 import net.minecraft.client.input.InputType;
 
-// Referenced classes of package net.minecraft.src:
-//            GuiScreen, GuiButton, StatCollector, GuiOptions, 
-//            StatList, StatFileWriter, World, GuiMainMenu, 
-//            GuiAchievements, GuiStats, MathHelper
-
 public class ScreenPause extends Screen
 {
 
diff --git a/src/main/java/net/minecraft/client/gui/ScreenWandMobPicker.java b/src/main/java/net/minecraft/client/gui/ScreenWandMobPicker.java
index 648a958f7..4006dac6b 100644
--- a/src/main/java/net/minecraft/client/gui/ScreenWandMobPicker.java
+++ b/src/main/java/net/minecraft/client/gui/ScreenWandMobPicker.java
@@ -7,6 +7,7 @@ import net.minecraft.core.entity.EntityDispatcher;
 import net.minecraft.core.entity.Mob;
 import net.minecraft.core.item.ItemStack;
 import net.minecraft.core.net.packet.CustomPayloadPacket;
+import net.minecraft.core.util.collection.NamespaceID;
 
 import java.lang.reflect.Modifier;
 import java.nio.charset.StandardCharsets;
@@ -27,17 +28,17 @@ public class ScreenWandMobPicker extends Screen {
 
     @Override
     public void init() {
-        List<String> monsters = new ArrayList<>();
-        for (Class<? extends Entity> clazz : EntityDispatcher.classToKeyMap.keySet()) {
+        List<NamespaceID> monsters = new ArrayList<>();
+        for (Class<? extends Entity> clazz : EntityDispatcher.classToIdMap.keySet()) {
             if (Mob.class.isAssignableFrom(clazz) && !Modifier.isAbstract(clazz.getModifiers())) {
-                monsters.add(EntityDispatcher.classToKeyMap.get(clazz));
+                monsters.add(EntityDispatcher.classToIdMap.get(clazz));
             }
         }
         Collections.sort(monsters);
         List<String> prettyMonsters = new ArrayList<>();
-        for (String monster : monsters) {
+        for (NamespaceID monster : monsters) {
             StringBuilder sb = new StringBuilder();
-            for (char c : monster.toCharArray()) {
+            for (char c : monster.value.toCharArray()) {
                 if (Character.isUpperCase(c)) {
                     sb.append(' ');
                 }
@@ -53,7 +54,7 @@ public class ScreenWandMobPicker extends Screen {
                 .closeOnClickOut(0)
                 .withOnCloseListener((statusCode, results) -> {
                     if (statusCode == 1) {
-                        mobId = monsters.get((Integer) results.get("list"));
+                        mobId = monsters.get((Integer) results.get("list")).toString();
                         if (!mc.currentWorld.isClientSide) {
                             wand.getData().putString("monster", mobId);
                         } else {
diff --git a/src/main/java/net/minecraft/client/gui/TooltipElement.java b/src/main/java/net/minecraft/client/gui/TooltipElement.java
index 410701219..a6e2035c4 100644
--- a/src/main/java/net/minecraft/client/gui/TooltipElement.java
+++ b/src/main/java/net/minecraft/client/gui/TooltipElement.java
@@ -76,13 +76,13 @@ public class TooltipElement extends Gui
         return BASE_PADDING + paddingExtra;
     }
     public int[] drawBackground(int x, int y, int offsetX, int offsetY, int width, int height){
-        int targetOffset = 0;
+//        int targetOffset = 0;
         // Flip tooltip X if it goes offscreen to the right
         if(x + offsetX + width + BASE_PADDING * 2 > mc.resolution.getScaledWidthScreenCoords())
         {
-            int _offsetX = offsetX;
+//            int _offsetX = offsetX;
             offsetX = -offsetX - width;
-            targetOffset = offsetX - _offsetX;
+//            targetOffset = offsetX - _offsetX;
         }
 
         // Move tooltip up when it goes offscreen to the bottom
diff --git a/src/main/java/net/minecraft/client/gui/achievements/pages/AchievementPageNether.java b/src/main/java/net/minecraft/client/gui/achievements/pages/AchievementPageNether.java
index 58d99ad0a..996695ea3 100644
--- a/src/main/java/net/minecraft/client/gui/achievements/pages/AchievementPageNether.java
+++ b/src/main/java/net/minecraft/client/gui/achievements/pages/AchievementPageNether.java
@@ -63,7 +63,7 @@ public class AchievementPageNether extends AchievementPage {
     @Override
     public void postProcessBackground(ScreenAchievements screen, Random random, ScreenAchievements.BGLayer layerCache, int orgX, int orgY) {
         if (layerCache.id == 0) {
-            int lastY = 0;
+            int lastY;
             int cave = -1;
             for (int _x = -100; _x <= 100; _x++) {
                 if (random.nextInt(20) == 0 && cave <= 0) {
diff --git a/src/main/java/net/minecraft/client/gui/chat/GuiElementChatSuggestions.java b/src/main/java/net/minecraft/client/gui/chat/GuiElementChatSuggestions.java
index f5b571bcf..08beed35b 100644
--- a/src/main/java/net/minecraft/client/gui/chat/GuiElementChatSuggestions.java
+++ b/src/main/java/net/minecraft/client/gui/chat/GuiElementChatSuggestions.java
@@ -21,7 +21,6 @@ import net.minecraft.client.gui.text.ITextField;
 import net.minecraft.client.gui.text.TextFieldEditor;
 import net.minecraft.client.net.command.ClientCommandSource;
 import net.minecraft.client.render.Font;
-import net.minecraft.core.net.command.TextFormatting;
 import net.minecraft.core.net.command.*;
 import net.minecraft.core.net.command.util.CommandHelper;
 import net.minecraft.core.net.packet.RequestCommandManagerPacket;
diff --git a/src/main/java/net/minecraft/client/gui/container/ScreenContainer.java b/src/main/java/net/minecraft/client/gui/container/ScreenContainer.java
index 2f28a2123..9a32dbd57 100644
--- a/src/main/java/net/minecraft/client/gui/container/ScreenContainer.java
+++ b/src/main/java/net/minecraft/client/gui/container/ScreenContainer.java
@@ -4,10 +4,6 @@ import net.minecraft.core.player.inventory.menu.MenuContainer;
 import net.minecraft.core.player.inventory.container.Container;
 import org.lwjgl.opengl.GL11;
 
-// Referenced classes of package net.minecraft.src:
-//            GuiContainer, ContainerChest, IInventory, FontRenderer, 
-//            RenderEngine
-
 public class ScreenContainer extends ScreenContainerAbstract
 {
 
diff --git a/src/main/java/net/minecraft/client/gui/container/ScreenContainerAbstract.java b/src/main/java/net/minecraft/client/gui/container/ScreenContainerAbstract.java
index 12e9c86a0..addd56cb0 100644
--- a/src/main/java/net/minecraft/client/gui/container/ScreenContainerAbstract.java
+++ b/src/main/java/net/minecraft/client/gui/container/ScreenContainerAbstract.java
@@ -31,12 +31,6 @@ import net.minecraft.core.player.inventory.slot.SlotCreative;
 import org.lwjgl.input.Keyboard;
 import org.lwjgl.opengl.GL11;
 
-// Referenced classes of package net.minecraft.src:
-//            GuiScreen, PlayerLocal, RenderHelper, Container,
-//            Slot, InventoryPlayer, RenderItem, StringTranslate,
-//            ItemStack, FontRenderer, RenderEngine, PlayerController,
-//            GameSettings, KeyBinding
-
 public abstract class ScreenContainerAbstract extends Screen
 {
 	public int xSize;
diff --git a/src/main/java/net/minecraft/client/gui/container/ScreenInventory.java b/src/main/java/net/minecraft/client/gui/container/ScreenInventory.java
index d06441057..5c9d87f51 100644
--- a/src/main/java/net/minecraft/client/gui/container/ScreenInventory.java
+++ b/src/main/java/net/minecraft/client/gui/container/ScreenInventory.java
@@ -28,11 +28,6 @@ import net.minecraft.core.util.helper.DamageType;
 import net.minecraft.client.option.OptionBoolean;
 import org.lwjgl.opengl.GL12;
 
-// Referenced classes of package net.minecraft.src:
-//            GuiContainer, Player, Achievements, FontRenderer,
-//            RenderEngine, PlayerLocal, RenderHelper, RenderManager,
-//            GuiButton, GuiAchievements, GuiStats
-
 public class ScreenInventory extends ScreenContainerAbstract
 {
 	
diff --git a/src/main/java/net/minecraft/client/gui/container/ScreenTrommel.java b/src/main/java/net/minecraft/client/gui/container/ScreenTrommel.java
index 788f6b4d9..e2a109edb 100644
--- a/src/main/java/net/minecraft/client/gui/container/ScreenTrommel.java
+++ b/src/main/java/net/minecraft/client/gui/container/ScreenTrommel.java
@@ -6,10 +6,6 @@ import net.minecraft.core.player.inventory.container.ContainerInventory;
 import net.minecraft.core.player.inventory.menu.MenuTrommel;
 import org.lwjgl.opengl.GL11;
 
-// Referenced classes of package net.minecraft.src:
-//            GuiContainer, ContainerFurnace, FontRenderer, RenderEngine,
-//            TileEntityFurnace, InventoryPlayer
-
 public class ScreenTrommel extends ScreenContainerAbstract
 {
 
diff --git a/src/main/java/net/minecraft/client/gui/createworld/CreateWorldPageRegistry.java b/src/main/java/net/minecraft/client/gui/createworld/CreateWorldPageRegistry.java
index 0465ce016..14e163597 100644
--- a/src/main/java/net/minecraft/client/gui/createworld/CreateWorldPageRegistry.java
+++ b/src/main/java/net/minecraft/client/gui/createworld/CreateWorldPageRegistry.java
@@ -2,7 +2,6 @@ package net.minecraft.client.gui.createworld;
 
 import net.minecraft.client.gui.paged.Page;
 import net.minecraft.client.gui.paged.PageRegistry;
-import net.minecraft.core.item.Item;
 import net.minecraft.core.item.Items;
 import net.minecraft.core.item.ItemStack;
 
diff --git a/src/main/java/net/minecraft/client/gui/createworld/TextFieldComponent.java b/src/main/java/net/minecraft/client/gui/createworld/TextFieldComponent.java
index eaad53240..17e9b65d4 100644
--- a/src/main/java/net/minecraft/client/gui/createworld/TextFieldComponent.java
+++ b/src/main/java/net/minecraft/client/gui/createworld/TextFieldComponent.java
@@ -11,7 +11,6 @@ import org.lwjgl.input.Keyboard;
 import org.lwjgl.opengl.GL11;
 
 import static org.lwjgl.opengl.GL11.*;
-import static org.lwjgl.opengl.GL11.GL_BLEND;
 
 public class TextFieldComponent
     implements CallbackComponent<String> {
diff --git a/src/main/java/net/minecraft/client/gui/guidebook/mobs/GuidebookPageMob.java b/src/main/java/net/minecraft/client/gui/guidebook/mobs/GuidebookPageMob.java
index a9dcc739f..c805c8b50 100644
--- a/src/main/java/net/minecraft/client/gui/guidebook/mobs/GuidebookPageMob.java
+++ b/src/main/java/net/minecraft/client/gui/guidebook/mobs/GuidebookPageMob.java
@@ -67,7 +67,7 @@ public class GuidebookPageMob
             }
         }
 
-        discovered = mc.statsCounter.readStat(StatList.mobEncounterStats.get(EntityDispatcher.classToKeyMap.get(mobClass))) > 0;
+        discovered = mc.statsCounter.readStat(StatList.mobEncounterStats.get(EntityDispatcher.idForClass(mobClass))) > 0;
     }
 
     private static String[] createDescLines(Font fr, String languageKey) {
@@ -106,7 +106,7 @@ public class GuidebookPageMob
 
     @Override
     protected void renderForeground(TextureManager re, Font fr, int x, int y, int mouseX, int mouseY, float partialTicks) {
-        discovered = mc.statsCounter.readStat(StatList.mobEncounterStats.get(EntityDispatcher.classToKeyMap.get(mobClass))) > 0;
+        discovered = mc.statsCounter.readStat(StatList.mobEncounterStats.get(EntityDispatcher.idForClass(mobClass))) > 0;
         if (mc.thePlayer.getGamemode() == Gamemode.creative || !mc.gameSettings.hideUndiscoveredItems.value) discovered = true;
 
         Lighting.disable();
diff --git a/src/main/java/net/minecraft/client/gui/guidebook/mobs/GuidebookSectionMob.java b/src/main/java/net/minecraft/client/gui/guidebook/mobs/GuidebookSectionMob.java
index 4d0680a64..7b21e39ee 100644
--- a/src/main/java/net/minecraft/client/gui/guidebook/mobs/GuidebookSectionMob.java
+++ b/src/main/java/net/minecraft/client/gui/guidebook/mobs/GuidebookSectionMob.java
@@ -88,7 +88,7 @@ public class GuidebookSectionMob
         @Override
         public String getName() {
         	Minecraft mc = Minecraft.getMinecraft(this);
-            boolean discovered = mc.statsCounter.readStat(StatList.mobEncounterStats.get(EntityDispatcher.classToKeyMap.get(mobInfo.getEntityClass()))) > 0;
+            boolean discovered = mc.statsCounter.readStat(StatList.mobEncounterStats.get(EntityDispatcher.idForClass(mobInfo.getEntityClass()))) > 0;
             if (mc.thePlayer.getGamemode() == Gamemode.creative) discovered = true;
 
             if (discovered) {
diff --git a/src/main/java/net/minecraft/client/gui/guidebook/mobs/MobInfoRegistry.java b/src/main/java/net/minecraft/client/gui/guidebook/mobs/MobInfoRegistry.java
index cc72b3683..4d8c02cea 100644
--- a/src/main/java/net/minecraft/client/gui/guidebook/mobs/MobInfoRegistry.java
+++ b/src/main/java/net/minecraft/client/gui/guidebook/mobs/MobInfoRegistry.java
@@ -192,7 +192,7 @@ public abstract class MobInfoRegistry {
             this.drops = drops;
         }
 
-        public Class<?> getEntityClass() {
+        public Class<? extends Entity> getEntityClass() {
             return entityClass;
         }
 
diff --git a/src/main/java/net/minecraft/client/gui/hud/component/HudComponentHealthBar.java b/src/main/java/net/minecraft/client/gui/hud/component/HudComponentHealthBar.java
index cf78683eb..20f798e1b 100644
--- a/src/main/java/net/minecraft/client/gui/hud/component/HudComponentHealthBar.java
+++ b/src/main/java/net/minecraft/client/gui/hud/component/HudComponentHealthBar.java
@@ -83,7 +83,7 @@ public class HudComponentHealthBar
             }
             if (mc.thePlayer.inventory.getCurrentItem() != null && (mc.thePlayer.inventory.getCurrentItem().getItem() instanceof ItemFood || mc.thePlayer.inventory.getCurrentItem().getItem() instanceof ItemBucketIceCream) && mc.gameSettings.foodHealthRegenOverlay.value)
             {
-                int healing = 0;
+                int healing;
                 if (mc.thePlayer.inventory.getCurrentItem().getItem() instanceof ItemFood)
                 {
                     healing = ((ItemFood) mc.thePlayer.inventory.getCurrentItem().getItem()).getHealAmount();
diff --git a/src/main/java/net/minecraft/client/gui/modelviewer/categories/ViewerCategoryEntity.java b/src/main/java/net/minecraft/client/gui/modelviewer/categories/ViewerCategoryEntity.java
index 3f18f69c2..a5240fb41 100644
--- a/src/main/java/net/minecraft/client/gui/modelviewer/categories/ViewerCategoryEntity.java
+++ b/src/main/java/net/minecraft/client/gui/modelviewer/categories/ViewerCategoryEntity.java
@@ -24,6 +24,7 @@ import net.minecraft.core.entity.Mob;
 import net.minecraft.core.entity.monster.MobHuman;
 import net.minecraft.core.entity.monster.MobZombie;
 import net.minecraft.core.lang.I18n;
+import net.minecraft.core.util.collection.NamespaceID;
 import net.minecraft.core.util.helper.MathHelper;
 
 import java.util.ArrayList;
@@ -42,9 +43,9 @@ public class ViewerCategoryEntity extends ModelViewerCategory{
         createEntries();
     }
     public void createEntries(){
-        for (String s : EntityDispatcher.classToKeyMap.values()){
+        for (NamespaceID id : EntityDispatcher.idToClassMap.keySet()){
             try{
-                addEntry(new EntityEntryDispatcher(s));
+                addEntry(new EntityEntryDispatcher(id));
             } catch (Exception ignore){}
         }
         addEntry(new EntityEntryItem());
@@ -81,7 +82,7 @@ public class ViewerCategoryEntity extends ModelViewerCategory{
     public String getCurrentDisplayInfo(I18n translator) {
         String title = "None";
         if (displayEntity != null){
-            title = Entity.getNameFromEntity(displayEntity, false);
+            title = EntityDispatcher.idForClass(displayEntity.getClass()).toString();
         }
         return translator.translateKeyAndFormat("model.category.entity.info", title);
     }
diff --git a/src/main/java/net/minecraft/client/gui/modelviewer/categories/entries/block/BlockEntryMobSpawner.java b/src/main/java/net/minecraft/client/gui/modelviewer/categories/entries/block/BlockEntryMobSpawner.java
index a660f5543..c9c7209e7 100644
--- a/src/main/java/net/minecraft/client/gui/modelviewer/categories/entries/block/BlockEntryMobSpawner.java
+++ b/src/main/java/net/minecraft/client/gui/modelviewer/categories/entries/block/BlockEntryMobSpawner.java
@@ -8,6 +8,7 @@ import net.minecraft.core.block.Blocks;
 import net.minecraft.core.block.entity.TileEntityMobSpawner;
 import net.minecraft.core.entity.EntityDispatcher;
 import net.minecraft.core.lang.I18n;
+import net.minecraft.core.util.collection.NamespaceID;
 import net.minecraft.core.world.World;
 import net.minecraft.core.world.chunk.DisplayChunk;
 
@@ -37,9 +38,11 @@ public class BlockEntryMobSpawner extends BlockEntry{
 
     @Override
     public List<ButtonElement> getEntryButtons(Minecraft mc, Screen parentScreen, World world, int meta) {
-        List<String> ids = new ArrayList<>(EntityDispatcher.keyToClassMap.keySet());
-        ids.remove("mob");
-        ListSelectorButtonElement<String> dispatcherIds = new ListSelectorButtonElement<String>(-1, -120, 0, 120, 20, I18n.getInstance().translateKey("model.category.block.spawner.button.id"), ids, "Pig") {
+        List<String> ids = new ArrayList<>();
+        for (NamespaceID id : EntityDispatcher.idToClassMap.keySet()) {
+            ids.add(id.toString());
+        }
+        ListSelectorButtonElement<String> dispatcherIds = new ListSelectorButtonElement<String>(-1, -120, 0, 120, 20, I18n.getInstance().translateKey("model.category.block.spawner.button.id"), ids, "minecraft:pig") {
             @Override
             public String getNameFromElement(String element) {
                 return element;
diff --git a/src/main/java/net/minecraft/client/gui/modelviewer/categories/entries/entity/EntityEntryDispatcher.java b/src/main/java/net/minecraft/client/gui/modelviewer/categories/entries/entity/EntityEntryDispatcher.java
index 1e2815803..8449297ee 100644
--- a/src/main/java/net/minecraft/client/gui/modelviewer/categories/entries/entity/EntityEntryDispatcher.java
+++ b/src/main/java/net/minecraft/client/gui/modelviewer/categories/entries/entity/EntityEntryDispatcher.java
@@ -5,13 +5,14 @@ import net.minecraft.client.gui.ButtonElement;
 import net.minecraft.client.gui.Screen;
 import net.minecraft.core.entity.Entity;
 import net.minecraft.core.entity.EntityDispatcher;
+import net.minecraft.core.util.collection.NamespaceID;
 import net.minecraft.core.world.World;
 
 import java.util.List;
 
 public class EntityEntryDispatcher extends EntityEntry<Entity> {
-    public final String id;
-    public EntityEntryDispatcher(String dispatcherId){
+    public final NamespaceID id;
+    public EntityEntryDispatcher(NamespaceID dispatcherId){
         id = dispatcherId;
     }
     @Override
diff --git a/src/main/java/net/minecraft/client/gui/options/OptionsButtonElement.java b/src/main/java/net/minecraft/client/gui/options/OptionsButtonElement.java
index 84b8ad1be..723aba8ba 100644
--- a/src/main/java/net/minecraft/client/gui/options/OptionsButtonElement.java
+++ b/src/main/java/net/minecraft/client/gui/options/OptionsButtonElement.java
@@ -3,9 +3,6 @@ package net.minecraft.client.gui.options;
 import net.minecraft.client.gui.ButtonElement;
 import net.minecraft.client.option.Option;
 
-// Referenced classes of package net.minecraft.src:
-//            GuiButton, EnumOptions
-
 public class OptionsButtonElement extends ButtonElement
 {
 
diff --git a/src/main/java/net/minecraft/client/gui/options/OptionsScreen.java b/src/main/java/net/minecraft/client/gui/options/OptionsScreen.java
index fd518d2ea..9b1e88ed6 100644
--- a/src/main/java/net/minecraft/client/gui/options/OptionsScreen.java
+++ b/src/main/java/net/minecraft/client/gui/options/OptionsScreen.java
@@ -19,7 +19,6 @@ import org.lwjgl.input.Mouse;
 import org.lwjgl.opengl.GL11;
 
 import static org.lwjgl.opengl.GL11.*;
-import static org.lwjgl.opengl.GL11.glEnable;
 
 public class OptionsScreen
     extends Screen
diff --git a/src/main/java/net/minecraft/client/gui/options/components/ButtonComponent.java b/src/main/java/net/minecraft/client/gui/options/components/ButtonComponent.java
index f6ef7624a..b9d5bd982 100644
--- a/src/main/java/net/minecraft/client/gui/options/components/ButtonComponent.java
+++ b/src/main/java/net/minecraft/client/gui/options/components/ButtonComponent.java
@@ -9,7 +9,6 @@ import net.minecraft.core.sound.SoundCategory;
 import org.lwjgl.opengl.GL11;
 
 import static org.lwjgl.opengl.GL11.*;
-import static org.lwjgl.opengl.GL11.GL_BLEND;
 
 public abstract class ButtonComponent
     implements OptionsComponent
diff --git a/src/main/java/net/minecraft/client/gui/options/data/OptionsPages.java b/src/main/java/net/minecraft/client/gui/options/data/OptionsPages.java
index c3cb902a2..de6a8fc01 100644
--- a/src/main/java/net/minecraft/client/gui/options/data/OptionsPages.java
+++ b/src/main/java/net/minecraft/client/gui/options/data/OptionsPages.java
@@ -32,7 +32,6 @@ import net.minecraft.core.block.Blocks;
 import net.minecraft.core.item.ItemStack;
 import net.minecraft.core.item.Items;
 import net.minecraft.core.util.helper.Utils;
-import net.minecraft.core.world.World;
 import org.useless.seedviewer.SeedViewerMain;
 import paulscode.sound.SoundSystem;
 
diff --git a/src/main/java/net/minecraft/client/gui/paged/Page.java b/src/main/java/net/minecraft/client/gui/paged/Page.java
index f2fa2f343..e71ae27e4 100644
--- a/src/main/java/net/minecraft/client/gui/paged/Page.java
+++ b/src/main/java/net/minecraft/client/gui/paged/Page.java
@@ -1,8 +1,6 @@
 package net.minecraft.client.gui.paged;
 
 import net.minecraft.client.Minecraft;
-import net.minecraft.client.gui.options.components.OptionsComponent;
-import net.minecraft.client.gui.options.data.OptionsPage;
 import net.minecraft.core.item.ItemStack;
 
 import java.util.ArrayList;
diff --git a/src/main/java/net/minecraft/client/gui/paged/ScreenPaged.java b/src/main/java/net/minecraft/client/gui/paged/ScreenPaged.java
index 06cc0f60f..e3badc430 100644
--- a/src/main/java/net/minecraft/client/gui/paged/ScreenPaged.java
+++ b/src/main/java/net/minecraft/client/gui/paged/ScreenPaged.java
@@ -12,7 +12,6 @@ import org.lwjgl.input.Mouse;
 import org.lwjgl.opengl.GL11;
 
 import static org.lwjgl.opengl.GL11.*;
-import static org.lwjgl.opengl.GL11.GL_TEXTURE_2D;
 
 public class ScreenPaged
     extends Screen {
diff --git a/src/main/java/net/minecraft/client/gui/subtitles/SubtitleTracker.java b/src/main/java/net/minecraft/client/gui/subtitles/SubtitleTracker.java
index 0d7a8e120..b6ce4f4d3 100644
--- a/src/main/java/net/minecraft/client/gui/subtitles/SubtitleTracker.java
+++ b/src/main/java/net/minecraft/client/gui/subtitles/SubtitleTracker.java
@@ -2,7 +2,6 @@ package net.minecraft.client.gui.subtitles;
 
 import net.minecraft.client.sound.SoundEvent;
 import net.minecraft.core.entity.Entity;
-import net.minecraft.core.util.helper.MathHelper;
 
 import java.util.ArrayList;
 import java.util.LinkedHashMap;
diff --git a/src/main/java/net/minecraft/client/input/MouseInput.java b/src/main/java/net/minecraft/client/input/MouseInput.java
index e88669dda..73584950c 100644
--- a/src/main/java/net/minecraft/client/input/MouseInput.java
+++ b/src/main/java/net/minecraft/client/input/MouseInput.java
@@ -1,8 +1,5 @@
 package net.minecraft.client.input;
 
-import java.util.ArrayList;
-import java.util.List;
-
 import net.minecraft.client.render.window.GameWindowGLFW;
 import org.lwjgl.glfw.GLFW;
 import org.lwjgl.input.Mouse;
diff --git a/src/main/java/net/minecraft/client/input/glfw/GlfwJoystick.java b/src/main/java/net/minecraft/client/input/glfw/GlfwJoystick.java
index 06f70a47b..fd414f93e 100644
--- a/src/main/java/net/minecraft/client/input/glfw/GlfwJoystick.java
+++ b/src/main/java/net/minecraft/client/input/glfw/GlfwJoystick.java
@@ -19,7 +19,7 @@ public class GlfwJoystick {
 
         String guid = this.getGuid();
 
-        int vid = 0;
+        int vid;
         try {
             String lower = guid.substring(8, 10);
             String upper = guid.substring(10, 12);
@@ -31,7 +31,7 @@ public class GlfwJoystick {
             return;
         }
 
-        int did = 0;
+        int did;
         try {
             String lower = guid.substring(16, 18);
             String upper = guid.substring(18, 20);
diff --git a/src/main/java/net/minecraft/client/net/handler/PacketHandlerClient.java b/src/main/java/net/minecraft/client/net/handler/PacketHandlerClient.java
index 7e51a4f22..e731d560b 100644
--- a/src/main/java/net/minecraft/client/net/handler/PacketHandlerClient.java
+++ b/src/main/java/net/minecraft/client/net/handler/PacketHandlerClient.java
@@ -51,6 +51,7 @@ import net.minecraft.core.player.gamemode.Gamemode;
 import net.minecraft.core.player.inventory.menu.MenuAbstract;
 import net.minecraft.core.player.inventory.container.ContainerSimple;
 import net.minecraft.core.sound.SoundTypes;
+import net.minecraft.core.util.collection.NamespaceID;
 import net.minecraft.core.util.helper.AES;
 import net.minecraft.core.util.helper.MathHelper;
 import net.minecraft.core.util.helper.RSA;
@@ -368,7 +369,8 @@ public class PacketHandlerClient extends PacketHandler
             if (tileentity instanceof TileEntityMobSpawner)
             {
                 TileEntityMobSpawner tileEntityMobSpawner = (TileEntityMobSpawner) tileentity;
-                tileEntityMobSpawner.setMobId(setMobSpawnerPacket.spawnType);
+                NamespaceID namespaceID = EntityDispatcher.idForClass(setMobSpawnerPacket.entityClass);
+                tileEntityMobSpawner.setMobId(namespaceID == null ? "none" : namespaceID.toString());
 
                 tileEntityMobSpawner.setChanged();
             }
@@ -1157,7 +1159,11 @@ public class PacketHandlerClient extends PacketHandler
     
     @Override
     public void handleIds(SyncIDsPacket syncIDsPacket) {
-    	SoundTypes.setSoundIds(syncIDsPacket.soundIds);
+        if (syncIDsPacket.destinationId == SyncIDsPacket.DESTINATION_SOUND_IDS) {
+            SoundTypes.setSoundIds(syncIDsPacket.mapping);
+        } else if (syncIDsPacket.destinationId == SyncIDsPacket.DESTINATION_ENTITY_IDS) {
+            EntityDispatcher.setNumericIds(syncIDsPacket.mapping);
+        }
     }
     
     @Override
diff --git a/src/main/java/net/minecraft/client/net/thread/ThreadDownloadResources.java b/src/main/java/net/minecraft/client/net/thread/ThreadDownloadResources.java
index 65d282ec9..1dc07b9a4 100644
--- a/src/main/java/net/minecraft/client/net/thread/ThreadDownloadResources.java
+++ b/src/main/java/net/minecraft/client/net/thread/ThreadDownloadResources.java
@@ -12,8 +12,6 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.concurrent.atomic.AtomicInteger;
 
-import com.b100.json.JsonParser;
-import com.b100.json.element.JsonElement;
 import com.b100.utils.StringUtils;
 import com.b100.xml.XmlFile;
 import com.b100.xml.XmlParser;
diff --git a/src/main/java/net/minecraft/client/option/GameSettings.java b/src/main/java/net/minecraft/client/option/GameSettings.java
index 8d4576d7c..d2ff09934 100644
--- a/src/main/java/net/minecraft/client/option/GameSettings.java
+++ b/src/main/java/net/minecraft/client/option/GameSettings.java
@@ -481,7 +481,7 @@ public class GameSettings {
 		try {
 			BufferedReader br = new BufferedReader(new FileReader(optionsFile));
 			
-line:		for (String line = ""; (line = br.readLine()) != null;) {
+line:		for (String line; (line = br.readLine()) != null;) {
 				try {
 					int i = line.indexOf(':');
 					String key = line.substring(0, i);
diff --git a/src/main/java/net/minecraft/client/option/KeyBinding.java b/src/main/java/net/minecraft/client/option/KeyBinding.java
index 68184cee3..581ad42be 100644
--- a/src/main/java/net/minecraft/client/option/KeyBinding.java
+++ b/src/main/java/net/minecraft/client/option/KeyBinding.java
@@ -28,7 +28,7 @@ public class KeyBinding {
 	
 	private final String id;
 	
-	private InputDevice inputDevice = null;
+	private InputDevice inputDevice;
 	private int keyCode = -1;
 
 	private InputDevice defaultInputDevice = null;
diff --git a/src/main/java/net/minecraft/client/option/OptionFloat.java b/src/main/java/net/minecraft/client/option/OptionFloat.java
index 588f87589..58c3e7619 100644
--- a/src/main/java/net/minecraft/client/option/OptionFloat.java
+++ b/src/main/java/net/minecraft/client/option/OptionFloat.java
@@ -16,8 +16,14 @@ public class OptionFloat extends Option<Float>{
 
 	@Override
 	public void parse(String string) {
-		if(string.equalsIgnoreCase("true")) this.value = 1.0f;
-		if(string.equalsIgnoreCase("false")) this.value = 0.0f;
+		if(string.equalsIgnoreCase("true")) {
+			this.value = 1.0f;
+			return;
+		}
+		if(string.equalsIgnoreCase("false")) {
+			this.value = 0.0f;
+			return;
+		}
 		
 		this.value = Float.parseFloat(string);
 	}
diff --git a/src/main/java/net/minecraft/client/player/controller/PlayerController.java b/src/main/java/net/minecraft/client/player/controller/PlayerController.java
index 59036f09f..0f1591d45 100644
--- a/src/main/java/net/minecraft/client/player/controller/PlayerController.java
+++ b/src/main/java/net/minecraft/client/player/controller/PlayerController.java
@@ -114,7 +114,7 @@ public abstract class PlayerController {
 					previousDamage = 0.0f;
 					soundDelay = 0;
 					
-					int newBlockHitDelay = 5;
+					int newBlockHitDelay;
 					if(mineStrength > 0.5f) {
 						newBlockHitDelay = 2;
 					}else if(mineStrength > 0.4f) {
diff --git a/src/main/java/net/minecraft/client/render/CameraSorter.java b/src/main/java/net/minecraft/client/render/CameraSorter.java
index 5dd7cfef5..82cfc3648 100644
--- a/src/main/java/net/minecraft/client/render/CameraSorter.java
+++ b/src/main/java/net/minecraft/client/render/CameraSorter.java
@@ -5,9 +5,6 @@ import net.minecraft.client.render.terrain.ChunkRenderer;
 
 import java.util.Comparator;
 
-// Referenced classes of package net.minecraft.src:
-//            Entity, WorldRenderer
-
 public class CameraSorter
     implements Comparator<ChunkRenderer>
 {
diff --git a/src/main/java/net/minecraft/client/render/ChunkRendererComparator.java b/src/main/java/net/minecraft/client/render/ChunkRendererComparator.java
index e5291eebd..292a3ab06 100644
--- a/src/main/java/net/minecraft/client/render/ChunkRendererComparator.java
+++ b/src/main/java/net/minecraft/client/render/ChunkRendererComparator.java
@@ -5,9 +5,6 @@ import net.minecraft.client.render.terrain.ChunkRenderer;
 
 import java.util.Comparator;
 
-// Referenced classes of package net.minecraft.src:
-//            WorldRenderer, Mob
-
 public class ChunkRendererComparator
     implements Comparator<ChunkRenderer>
 {
diff --git a/src/main/java/net/minecraft/client/render/DisplayList.java b/src/main/java/net/minecraft/client/render/DisplayList.java
index 888aa8c6b..7da023f78 100644
--- a/src/main/java/net/minecraft/client/render/DisplayList.java
+++ b/src/main/java/net/minecraft/client/render/DisplayList.java
@@ -5,9 +5,6 @@ import java.nio.IntBuffer;
 import net.minecraft.client.GLAllocation;
 import org.lwjgl.opengl.GL11;
 
-// Referenced classes of package net.minecraft.src:
-//            GLAllocation
-
 public class DisplayList
 {
 
diff --git a/src/main/java/net/minecraft/client/render/FogManager.java b/src/main/java/net/minecraft/client/render/FogManager.java
index df504172f..2d5be81e9 100644
--- a/src/main/java/net/minecraft/client/render/FogManager.java
+++ b/src/main/java/net/minecraft/client/render/FogManager.java
@@ -18,7 +18,6 @@ import net.minecraft.client.render.colorizer.Colorizers;
 import net.minecraft.core.block.material.Material;
 import net.minecraft.core.util.helper.MathHelper;
 import net.minecraft.core.world.Dimension;
-import net.minecraft.core.world.World;
 
 public class FogManager {
     public static final int FOG_MODE_SKY = -1;
diff --git a/src/main/java/net/minecraft/client/render/Font.java b/src/main/java/net/minecraft/client/render/Font.java
index 22dd70342..f6e52fb5d 100644
--- a/src/main/java/net/minecraft/client/render/Font.java
+++ b/src/main/java/net/minecraft/client/render/Font.java
@@ -94,7 +94,7 @@ public class Font {
     }
 
     private float renderCharAtPos(int formatCode, char c, boolean italic) {
-        float charWidth = 0;
+        float charWidth;
         if (c == 32)
         {
             charWidth = 4.0F;
diff --git a/src/main/java/net/minecraft/client/render/ItemRenderer.java b/src/main/java/net/minecraft/client/render/ItemRenderer.java
index b67cbc085..7d8f00b72 100644
--- a/src/main/java/net/minecraft/client/render/ItemRenderer.java
+++ b/src/main/java/net/minecraft/client/render/ItemRenderer.java
@@ -32,13 +32,6 @@ import static org.lwjgl.opengl.GL11.glEnable;
 import static org.lwjgl.opengl.GL11.glPopMatrix;
 import static org.lwjgl.opengl.GL11.glPushMatrix;
 
-// Referenced classes of package net.minecraft.src:
-//            RenderBlocks, MapItemRenderer, ItemStack, Block, 
-//            RenderEngine, Mob, Tessellator, Player,
-//            RenderHelper, MathHelper, World, Item, 
-//            ItemMap, PlayerLocal, RenderManager, RenderPlayer,
-//            Material, BlockFire, InventoryPlayer
-
 public class ItemRenderer
 {
 
diff --git a/src/main/java/net/minecraft/client/render/LightmapHelper.java b/src/main/java/net/minecraft/client/render/LightmapHelper.java
index 620ce591d..671a831f6 100644
--- a/src/main/java/net/minecraft/client/render/LightmapHelper.java
+++ b/src/main/java/net/minecraft/client/render/LightmapHelper.java
@@ -1,6 +1,5 @@
 package net.minecraft.client.render;
 
-import static org.lwjgl.opengl.GL11.*;
 import static org.lwjgl.opengl.GL13.*;
 
 import java.awt.image.BufferedImage;
diff --git a/src/main/java/net/minecraft/client/render/MapItemRenderer.java b/src/main/java/net/minecraft/client/render/MapItemRenderer.java
index 5caa559c1..dad99d663 100644
--- a/src/main/java/net/minecraft/client/render/MapItemRenderer.java
+++ b/src/main/java/net/minecraft/client/render/MapItemRenderer.java
@@ -14,10 +14,6 @@ import net.minecraft.core.world.saveddata.maps.ItemMapSavedData;
 import net.minecraft.core.world.saveddata.maps.MapWaypoint;
 import org.lwjgl.opengl.GL11;
 
-// Referenced classes of package net.minecraft.src:
-//            RenderEngine, MapData, MapColor, GameSettings, 
-//            Tessellator, MapCoord, FontRenderer, Player
-
 public class MapItemRenderer
 {
     public static final int IMAGE_WIDTH = 128;
diff --git a/src/main/java/net/minecraft/client/render/PanelCrashReport.java b/src/main/java/net/minecraft/client/render/PanelCrashReport.java
index c56d31a12..02e136fef 100644
--- a/src/main/java/net/minecraft/client/render/PanelCrashReport.java
+++ b/src/main/java/net/minecraft/client/render/PanelCrashReport.java
@@ -11,7 +11,6 @@ import java.io.StringWriter;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 
-import javax.swing.BorderFactory;
 import javax.swing.JScrollPane;
 import javax.swing.JTextArea;
 import javax.swing.UIManager;
diff --git a/src/main/java/net/minecraft/client/render/PostProcessingManager.java b/src/main/java/net/minecraft/client/render/PostProcessingManager.java
index 4a464eb55..d51333690 100644
--- a/src/main/java/net/minecraft/client/render/PostProcessingManager.java
+++ b/src/main/java/net/minecraft/client/render/PostProcessingManager.java
@@ -51,7 +51,6 @@ public class PostProcessingManager
         reset();
         if (mc.gameSettings.colorCorrection.value == 0) return;
 
-        float surfaceness = 1.0f;
         float y = (float)mc.thePlayer.y;
         int maxY = mc.currentWorld.getWorldType().getMaxY();
         int minY = mc.currentWorld.getWorldType().getMinY();
@@ -61,7 +60,7 @@ public class PostProcessingManager
         // > half Y should be 100%, < quarter Y should be 0%
         int hToQRange = halfY - quarterY;
         float adjustedY = y - quarterY;
-        surfaceness = adjustedY / hToQRange;
+        float surfaceness = adjustedY / hToQRange;
         surfaceness = MathHelper.clamp(surfaceness, 0.0f, 1.0f);
 
         double temperature = mc.currentWorld.getBlockTemperature((int)mc.thePlayer.x, (int)mc.thePlayer.z); // Ranges from 0.0 to 1.0
@@ -76,8 +75,8 @@ public class PostProcessingManager
         {
             lastTemperature = temperature;
             temperature = (temperature * 2) - 1.0; // Ranges from -1.0 to 1.0
-            saturation += 0.25 * temperature * surfaceness;
-            contrast += -0.1 * temperature * surfaceness;
+            saturation += (float) (0.25 * temperature * surfaceness);
+            contrast += (float) (-0.1 * temperature * surfaceness);
         }
 
         // Perform season effects
diff --git a/src/main/java/net/minecraft/client/render/RenderBlockCache.java b/src/main/java/net/minecraft/client/render/RenderBlockCache.java
index 750a10e9c..c6ced206d 100644
--- a/src/main/java/net/minecraft/client/render/RenderBlockCache.java
+++ b/src/main/java/net/minecraft/client/render/RenderBlockCache.java
@@ -4,7 +4,6 @@ import java.util.Arrays;
 
 import net.minecraft.client.Minecraft;
 import net.minecraft.core.block.Block;
-import net.minecraft.core.block.Blocks;
 import net.minecraft.core.world.WorldSource;
 
 final public class RenderBlockCache {
diff --git a/src/main/java/net/minecraft/client/render/RenderBlocks.java b/src/main/java/net/minecraft/client/render/RenderBlocks.java
index 6fdbcacaa..2e169bec0 100644
--- a/src/main/java/net/minecraft/client/render/RenderBlocks.java
+++ b/src/main/java/net/minecraft/client/render/RenderBlocks.java
@@ -12,13 +12,6 @@ import net.minecraft.core.enums.LightLayer;
 import net.minecraft.core.util.helper.Side;
 import net.minecraft.core.world.WorldSource;
 
-// Referenced classes of package net.minecraft.src:
-//            Block, BlockRail, Tessellator, IBlockAccess,
-//            BlockBed, ModelBed, BlockRepeater, BlockPistonBase,
-//            BlockPistonExtension, Vec3D, BlockFire, BlockWireRedstone,
-//            EntityRenderer, BlockFluid, MathHelper, Material,
-//            BlockDoor, World
-
 public class RenderBlocks
 {
 
@@ -839,8 +832,6 @@ public class RenderBlocks
             d5 = tex.getSubIconV(1 - block.maxZ);
             d4 = tex.getSubIconU(block.maxY);
             d6 = tex.getSubIconV(1 - block.minZ);
-            d8 = d4;
-            d9 = d3;
             d10 = d5;
             d11 = d6;
             d8 = d3;
diff --git a/src/main/java/net/minecraft/client/render/RenderGlobal.java b/src/main/java/net/minecraft/client/render/RenderGlobal.java
index 0f623c0a3..650671495 100644
--- a/src/main/java/net/minecraft/client/render/RenderGlobal.java
+++ b/src/main/java/net/minecraft/client/render/RenderGlobal.java
@@ -39,7 +39,6 @@ import net.minecraft.core.util.phys.BoundingVolume;
 import net.minecraft.core.util.phys.Vec3;
 import net.minecraft.core.world.AuroraProvider;
 import net.minecraft.core.world.LevelListener;
-import net.minecraft.core.world.World;
 import net.minecraft.core.world.season.Seasons;
 import net.minecraft.core.world.weather.Weather;
 import net.minecraft.core.world.weather.Weathers;
@@ -482,7 +481,7 @@ public class RenderGlobal
     public void markRenderersForNewPosition(int x, int y, int z)
     {
         x -= 8;
-        y -= 8;
+//        y -= 8;
         z -= 8;
         minBlockX = Integer.MAX_VALUE;
         minBlockY = Integer.MAX_VALUE;
diff --git a/src/main/java/net/minecraft/client/render/Scissor.java b/src/main/java/net/minecraft/client/render/Scissor.java
index e339eb950..d9167c196 100644
--- a/src/main/java/net/minecraft/client/render/Scissor.java
+++ b/src/main/java/net/minecraft/client/render/Scissor.java
@@ -1,6 +1,5 @@
 package net.minecraft.client.render;
 
-import net.minecraft.client.ScaledResolution;
 import net.minecraft.client.Minecraft;
 import net.minecraft.core.util.helper.MathHelper;
 import org.lwjgl.opengl.GL11;
diff --git a/src/main/java/net/minecraft/client/render/TextureManager.java b/src/main/java/net/minecraft/client/render/TextureManager.java
index 14b266f0b..4735ca002 100644
--- a/src/main/java/net/minecraft/client/render/TextureManager.java
+++ b/src/main/java/net/minecraft/client/render/TextureManager.java
@@ -2,7 +2,6 @@ package net.minecraft.client.render;
 
 import static net.minecraft.client.util.helper.Textures.*;
 import static net.minecraft.core.util.helper.Buffer.*;
-import static org.lwjgl.opengl.GL11.*;
 import static org.lwjgl.opengl.GL12.*;
 
 import java.awt.image.BufferedImage;
diff --git a/src/main/java/net/minecraft/client/render/blockentity/TileEntityRendererMobSpawner.java b/src/main/java/net/minecraft/client/render/blockentity/TileEntityRendererMobSpawner.java
index 239deb2ba..65c0421d2 100644
--- a/src/main/java/net/minecraft/client/render/blockentity/TileEntityRendererMobSpawner.java
+++ b/src/main/java/net/minecraft/client/render/blockentity/TileEntityRendererMobSpawner.java
@@ -11,10 +11,6 @@ import net.minecraft.core.entity.EntityDispatcher;
 import net.minecraft.core.world.World;
 import org.lwjgl.opengl.GL11;
 
-// Referenced classes of package net.minecraft.src:
-//            TileEntitySpecialRenderer, TileEntityMobSpawner, Entity, EntityList,
-//            RenderManager, TileEntity
-
 public class TileEntityRendererMobSpawner extends TileEntityRenderer<TileEntityMobSpawner>
 {
 
diff --git a/src/main/java/net/minecraft/client/render/blockentity/TileEntityRendererSign.java b/src/main/java/net/minecraft/client/render/blockentity/TileEntityRendererSign.java
index 6804b71ea..b646159a2 100644
--- a/src/main/java/net/minecraft/client/render/blockentity/TileEntityRendererSign.java
+++ b/src/main/java/net/minecraft/client/render/blockentity/TileEntityRendererSign.java
@@ -15,10 +15,6 @@ import net.minecraft.client.util.helper.Colors;
 import net.minecraft.core.util.helper.MathHelper;
 import org.lwjgl.opengl.GL11;
 
-// Referenced classes of package net.minecraft.src:
-//            TileEntitySpecialRenderer, ModelSign, TileEntitySign, Block,
-//            ModelRenderer, FontRenderer, TileEntity
-
 public class TileEntityRendererSign extends TileEntityRenderer<TileEntitySign>
 {
 
diff --git a/src/main/java/net/minecraft/client/render/canvas/CanvasMojangLogo.java b/src/main/java/net/minecraft/client/render/canvas/CanvasMojangLogo.java
index f0ffac4a2..f6a000539 100644
--- a/src/main/java/net/minecraft/client/render/canvas/CanvasMojangLogo.java
+++ b/src/main/java/net/minecraft/client/render/canvas/CanvasMojangLogo.java
@@ -7,9 +7,6 @@ import java.awt.image.BufferedImage;
 import java.io.IOException;
 import javax.imageio.ImageIO;
 
-// Referenced classes of package net.minecraft.src:
-//            PanelCrashReport
-
 public class CanvasMojangLogo extends Canvas
 {
 
diff --git a/src/main/java/net/minecraft/client/render/colorizer/Colorizers.java b/src/main/java/net/minecraft/client/render/colorizer/Colorizers.java
index 8ee4b034c..47cd1d8a5 100644
--- a/src/main/java/net/minecraft/client/render/colorizer/Colorizers.java
+++ b/src/main/java/net/minecraft/client/render/colorizer/Colorizers.java
@@ -136,7 +136,7 @@ public class Colorizers {
 		}else if(seasonProgress < 0.5f) {
 			season1 = world.getSeasonManager().getPreviousSeason();
 			season2 = currentSeason;
-			blendFactor = seasonProgress + 0.5f; // 0.5 -> 1.0
+//			blendFactor = seasonProgress + 0.5f; // 0.5 -> 1.0
 			if(fadeDuration == 0.0f) {
 				blendFactor = 1.0f;
 			}else {
diff --git a/src/main/java/net/minecraft/client/render/culling/Frustum.java b/src/main/java/net/minecraft/client/render/culling/Frustum.java
index 31d990abb..a02e8e7df 100644
--- a/src/main/java/net/minecraft/client/render/culling/Frustum.java
+++ b/src/main/java/net/minecraft/client/render/culling/Frustum.java
@@ -6,9 +6,6 @@ import net.minecraft.core.util.helper.MathHelper;
 import net.minecraft.client.GLAllocation;
 import org.lwjgl.opengl.GL11;
 
-// Referenced classes of package net.minecraft.src:
-//            ClippingHelper, GLAllocation, MathHelper
-
 public class Frustum extends FrustumData
 {
     private static final Frustum FRUSTUM = new Frustum();
diff --git a/src/main/java/net/minecraft/client/render/customatlas/CustomAtlasHandler.java b/src/main/java/net/minecraft/client/render/customatlas/CustomAtlasHandler.java
index 8ba478553..86ba2cf65 100644
--- a/src/main/java/net/minecraft/client/render/customatlas/CustomAtlasHandler.java
+++ b/src/main/java/net/minecraft/client/render/customatlas/CustomAtlasHandler.java
@@ -16,7 +16,6 @@ import net.minecraft.client.render.texturepack.TexturePack;
 import net.minecraft.client.render.texturepack.TexturePackCustom;
 import net.minecraft.client.render.texturepack.TexturePackList;
 import net.minecraft.client.util.helper.Textures;
-import net.minecraft.core.Global;
 import org.slf4j.Logger;
 
 public class CustomAtlasHandler {
diff --git a/src/main/java/net/minecraft/client/render/dynamictexture/DynamicTexture.java b/src/main/java/net/minecraft/client/render/dynamictexture/DynamicTexture.java
index 05e8758cf..fa2fef768 100644
--- a/src/main/java/net/minecraft/client/render/dynamictexture/DynamicTexture.java
+++ b/src/main/java/net/minecraft/client/render/dynamictexture/DynamicTexture.java
@@ -29,7 +29,7 @@ public abstract class DynamicTexture {
 	
 	public static int pmod(int a, int b) {
 		while(a < 0) a += b;
-		return a %= b;
+		return a % b;
 	}
 	
 	public static void putPixel(byte[] array, int i, int color) {
diff --git a/src/main/java/net/minecraft/client/render/dynamictexture/DynamicTextureCustom.java b/src/main/java/net/minecraft/client/render/dynamictexture/DynamicTextureCustom.java
index f16e4bb50..db740a5af 100644
--- a/src/main/java/net/minecraft/client/render/dynamictexture/DynamicTextureCustom.java
+++ b/src/main/java/net/minecraft/client/render/dynamictexture/DynamicTextureCustom.java
@@ -26,7 +26,7 @@ public class DynamicTextureCustom extends DynamicTexture {
 	private int delayUntilNextFrame = 0;
 	private int frameLength = 0;
 
-	private boolean tickWhenPaused = false;
+	private final boolean tickWhenPaused;
 	
 	public DynamicTextureCustom(IconCoordinate texture, AnimationProperties animationProperties) {
 		super(texture);
diff --git a/src/main/java/net/minecraft/client/render/dynamictexture/DynamicTextureFire.java b/src/main/java/net/minecraft/client/render/dynamictexture/DynamicTextureFire.java
index 651969e94..efc511ab2 100644
--- a/src/main/java/net/minecraft/client/render/dynamictexture/DynamicTextureFire.java
+++ b/src/main/java/net/minecraft/client/render/dynamictexture/DynamicTextureFire.java
@@ -1,7 +1,6 @@
 package net.minecraft.client.render.dynamictexture;
 
 import net.minecraft.client.render.texture.stitcher.IconCoordinate;
-import net.minecraft.client.render.texture.stitcher.TextureRegistry;
 import org.jetbrains.annotations.NotNull;
 
 public class DynamicTextureFire extends DynamicTexture{
diff --git a/src/main/java/net/minecraft/client/render/dynamictexture/DynamicTextureLavaFlowing.java b/src/main/java/net/minecraft/client/render/dynamictexture/DynamicTextureLavaFlowing.java
index 1070dc1d8..b1e86648e 100644
--- a/src/main/java/net/minecraft/client/render/dynamictexture/DynamicTextureLavaFlowing.java
+++ b/src/main/java/net/minecraft/client/render/dynamictexture/DynamicTextureLavaFlowing.java
@@ -1,7 +1,6 @@
 package net.minecraft.client.render.dynamictexture;
 
 import net.minecraft.client.render.texture.stitcher.IconCoordinate;
-import net.minecraft.client.render.texture.stitcher.TextureRegistry;
 import net.minecraft.core.util.helper.MathHelper;
 import org.jetbrains.annotations.NotNull;
 
diff --git a/src/main/java/net/minecraft/client/render/dynamictexture/DynamicTextureLavaStill.java b/src/main/java/net/minecraft/client/render/dynamictexture/DynamicTextureLavaStill.java
index 04eb555ca..d909898f2 100644
--- a/src/main/java/net/minecraft/client/render/dynamictexture/DynamicTextureLavaStill.java
+++ b/src/main/java/net/minecraft/client/render/dynamictexture/DynamicTextureLavaStill.java
@@ -1,7 +1,6 @@
 package net.minecraft.client.render.dynamictexture;
 
 import net.minecraft.client.render.texture.stitcher.IconCoordinate;
-import net.minecraft.client.render.texture.stitcher.TextureRegistry;
 import net.minecraft.core.util.helper.MathHelper;
 import org.jetbrains.annotations.NotNull;
 
diff --git a/src/main/java/net/minecraft/client/render/dynamictexture/DynamicTexturePortal.java b/src/main/java/net/minecraft/client/render/dynamictexture/DynamicTexturePortal.java
index 20fa51499..9cd2e5bd7 100644
--- a/src/main/java/net/minecraft/client/render/dynamictexture/DynamicTexturePortal.java
+++ b/src/main/java/net/minecraft/client/render/dynamictexture/DynamicTexturePortal.java
@@ -6,7 +6,6 @@ import java.io.IOException;
 import java.util.Random;
 
 import net.minecraft.client.render.texture.stitcher.IconCoordinate;
-import net.minecraft.client.render.texture.stitcher.TextureRegistry;
 import net.minecraft.core.util.helper.Color;
 import net.minecraft.core.util.helper.MathHelper;
 
diff --git a/src/main/java/net/minecraft/client/render/dynamictexture/DynamicTextureWaterFlow.java b/src/main/java/net/minecraft/client/render/dynamictexture/DynamicTextureWaterFlow.java
index 55d1922e9..28fba470a 100644
--- a/src/main/java/net/minecraft/client/render/dynamictexture/DynamicTextureWaterFlow.java
+++ b/src/main/java/net/minecraft/client/render/dynamictexture/DynamicTextureWaterFlow.java
@@ -2,7 +2,6 @@ package net.minecraft.client.render.dynamictexture;
 
 import net.minecraft.client.Minecraft;
 import net.minecraft.client.render.texture.stitcher.IconCoordinate;
-import net.minecraft.client.render.texture.stitcher.TextureRegistry;
 import org.jetbrains.annotations.NotNull;
 
 public class DynamicTextureWaterFlow extends DynamicTexture {
diff --git a/src/main/java/net/minecraft/client/render/dynamictexture/DynamicTextureWaterStill.java b/src/main/java/net/minecraft/client/render/dynamictexture/DynamicTextureWaterStill.java
index 08ea118e0..ae7918a5b 100644
--- a/src/main/java/net/minecraft/client/render/dynamictexture/DynamicTextureWaterStill.java
+++ b/src/main/java/net/minecraft/client/render/dynamictexture/DynamicTextureWaterStill.java
@@ -2,7 +2,6 @@ package net.minecraft.client.render.dynamictexture;
 
 import net.minecraft.client.Minecraft;
 import net.minecraft.client.render.texture.stitcher.IconCoordinate;
-import net.minecraft.client.render.texture.stitcher.TextureRegistry;
 
 public class DynamicTextureWaterStill extends DynamicTexture {
 	
diff --git a/src/main/java/net/minecraft/client/render/entity/EntityRendererBoat.java b/src/main/java/net/minecraft/client/render/entity/EntityRendererBoat.java
index fce2fb450..41a0b7b7b 100644
--- a/src/main/java/net/minecraft/client/render/entity/EntityRendererBoat.java
+++ b/src/main/java/net/minecraft/client/render/entity/EntityRendererBoat.java
@@ -13,10 +13,6 @@ import net.minecraft.core.world.World;
 import net.minecraft.core.world.wind.WindProvider;
 import org.lwjgl.opengl.GL11;
 
-// Referenced classes of package net.minecraft.src:
-//            Render, ModelBoat, EntityBoat, MathHelper,
-//            ModelBase, Entity
-
 public class EntityRendererBoat extends EntityRenderer<EntityBoat>
 {
 	
diff --git a/src/main/java/net/minecraft/client/render/entity/EntityRendererCannonball.java b/src/main/java/net/minecraft/client/render/entity/EntityRendererCannonball.java
index af0cdb3cd..a4280e414 100644
--- a/src/main/java/net/minecraft/client/render/entity/EntityRendererCannonball.java
+++ b/src/main/java/net/minecraft/client/render/entity/EntityRendererCannonball.java
@@ -6,10 +6,6 @@ import net.minecraft.client.render.tessellator.Tessellator;
 import net.minecraft.core.entity.projectile.ProjectileCannonball;
 import org.lwjgl.opengl.GL11;
 
-// Referenced classes of package net.minecraft.src:
-//            Render, Tessellator, MathHelper,
-//            Entity
-
 public class EntityRendererCannonball extends EntityRenderer<ProjectileCannonball>
 {
 
diff --git a/src/main/java/net/minecraft/client/render/entity/EntityRendererDefault.java b/src/main/java/net/minecraft/client/render/entity/EntityRendererDefault.java
index 3e8a87123..76b04542b 100644
--- a/src/main/java/net/minecraft/client/render/entity/EntityRendererDefault.java
+++ b/src/main/java/net/minecraft/client/render/entity/EntityRendererDefault.java
@@ -4,9 +4,6 @@ import net.minecraft.client.render.tessellator.Tessellator;
 import net.minecraft.core.entity.Entity;
 import org.lwjgl.opengl.GL11;
 
-// Referenced classes of package net.minecraft.src:
-//            Render, Entity
-
 public class EntityRendererDefault extends EntityRenderer<Entity>
 {
     @Override
diff --git a/src/main/java/net/minecraft/client/render/entity/EntityRendererFallingBlock.java b/src/main/java/net/minecraft/client/render/entity/EntityRendererFallingBlock.java
index 65f561ae9..b798a9b5b 100644
--- a/src/main/java/net/minecraft/client/render/entity/EntityRendererFallingBlock.java
+++ b/src/main/java/net/minecraft/client/render/entity/EntityRendererFallingBlock.java
@@ -16,10 +16,6 @@ import net.minecraft.core.block.Block;
 import net.minecraft.core.util.helper.MathHelper;
 import org.lwjgl.opengl.GL11;
 
-// Referenced classes of package net.minecraft.src:
-//            Render, RenderBlocks, Block, EntityFallingBlock,
-//            MathHelper, Entity
-
 public class EntityRendererFallingBlock extends EntityRenderer<EntityFallingBlock>
 {
     private final Minecraft mc;
diff --git a/src/main/java/net/minecraft/client/render/entity/EntityRendererItem.java b/src/main/java/net/minecraft/client/render/entity/EntityRendererItem.java
index 91c1f506b..5ed089652 100644
--- a/src/main/java/net/minecraft/client/render/entity/EntityRendererItem.java
+++ b/src/main/java/net/minecraft/client/render/entity/EntityRendererItem.java
@@ -20,11 +20,6 @@ import org.lwjgl.opengl.GL12;
 
 import static org.lwjgl.opengl.GL11.glPushMatrix;
 
-// Referenced classes of package net.minecraft.src:
-//            Render, RenderBlocks, EntityItem, MathHelper,
-//            ItemStack, Block, Tessellator, Item,
-//            RenderManager, RenderEngine, FontRenderer, Entity
-
 public class EntityRendererItem extends EntityRenderer<EntityItem>
 {
 	public final RenderBlocks renderBlocks;
diff --git a/src/main/java/net/minecraft/client/render/entity/EntityRendererLightningBolt.java b/src/main/java/net/minecraft/client/render/entity/EntityRendererLightningBolt.java
index f23410764..24f68064b 100644
--- a/src/main/java/net/minecraft/client/render/entity/EntityRendererLightningBolt.java
+++ b/src/main/java/net/minecraft/client/render/entity/EntityRendererLightningBolt.java
@@ -6,9 +6,6 @@ import net.minecraft.client.render.tessellator.Tessellator;
 import net.minecraft.core.entity.EntityLightning;
 import org.lwjgl.opengl.GL11;
 
-// Referenced classes of package net.minecraft.src:
-//            Render, Tessellator, EntityLightning, Entity
-
 public class EntityRendererLightningBolt extends EntityRenderer<EntityLightning>
 {
 
diff --git a/src/main/java/net/minecraft/client/render/entity/EntityRendererSprite.java b/src/main/java/net/minecraft/client/render/entity/EntityRendererSprite.java
index 69bf63279..49a9c7666 100644
--- a/src/main/java/net/minecraft/client/render/entity/EntityRendererSprite.java
+++ b/src/main/java/net/minecraft/client/render/entity/EntityRendererSprite.java
@@ -9,9 +9,6 @@ import net.minecraft.core.item.Item;
 import org.lwjgl.opengl.GL11;
 import org.lwjgl.opengl.GL12;
 
-// Referenced classes of package net.minecraft.src:
-//            Render, Tessellator, RenderManager, Entity
-
 public class EntityRendererSprite<T extends Entity> extends EntityRenderer<T>
 {
     private IconCoordinate itemIconIndex;
diff --git a/src/main/java/net/minecraft/client/render/entity/EntityRendererTNT.java b/src/main/java/net/minecraft/client/render/entity/EntityRendererTNT.java
index 103ce9c37..d52cefa96 100644
--- a/src/main/java/net/minecraft/client/render/entity/EntityRendererTNT.java
+++ b/src/main/java/net/minecraft/client/render/entity/EntityRendererTNT.java
@@ -11,10 +11,6 @@ import net.minecraft.core.block.Block;
 import net.minecraft.core.block.Blocks;
 import org.lwjgl.opengl.GL11;
 
-// Referenced classes of package net.minecraft.src:
-//            Render, RenderBlocks, EntityTNTPrimed, Block, 
-//            Entity
-
 public class EntityRendererTNT extends EntityRenderer<EntityPrimedTNT>
 {
 
diff --git a/src/main/java/net/minecraft/client/render/entity/MobRendererBiped.java b/src/main/java/net/minecraft/client/render/entity/MobRendererBiped.java
index 076f45583..f3d769fac 100644
--- a/src/main/java/net/minecraft/client/render/entity/MobRendererBiped.java
+++ b/src/main/java/net/minecraft/client/render/entity/MobRendererBiped.java
@@ -7,11 +7,6 @@ import net.minecraft.core.entity.Mob;
 import net.minecraft.core.item.ItemStack;
 import org.lwjgl.opengl.GL11;
 
-// Referenced classes of package net.minecraft.src:
-//            RenderLiving, Mob, ModelBiped, ModelRenderer,
-//            ItemStack, Block, RenderBlocks, Item, 
-//            RenderManager, ItemRenderer
-
 public class MobRendererBiped<T extends Mob> extends MobRenderer<T>
 {
 
diff --git a/src/main/java/net/minecraft/client/render/entity/MobRendererChicken.java b/src/main/java/net/minecraft/client/render/entity/MobRendererChicken.java
index 4134c307c..76e39da41 100644
--- a/src/main/java/net/minecraft/client/render/entity/MobRendererChicken.java
+++ b/src/main/java/net/minecraft/client/render/entity/MobRendererChicken.java
@@ -1,10 +1,5 @@
 package net.minecraft.client.render.entity;
 
-
-// Referenced classes of package net.minecraft.src:
-//            RenderLiving, MobChicken, MathHelper, ModelBase,
-//            Mob, Entity
-
 import net.minecraft.client.render.model.ModelBase;
 import net.minecraft.core.entity.animal.MobChicken;
 import net.minecraft.core.util.helper.MathHelper;
diff --git a/src/main/java/net/minecraft/client/render/entity/MobRendererCreeper.java b/src/main/java/net/minecraft/client/render/entity/MobRendererCreeper.java
index 8112ba028..184944a4d 100644
--- a/src/main/java/net/minecraft/client/render/entity/MobRendererCreeper.java
+++ b/src/main/java/net/minecraft/client/render/entity/MobRendererCreeper.java
@@ -6,10 +6,6 @@ import net.minecraft.core.entity.monster.MobCreeper;
 import net.minecraft.core.util.helper.MathHelper;
 import org.lwjgl.opengl.GL11;
 
-// Referenced classes of package net.minecraft.src:
-//            RenderLiving, ModelCreeper, MobCreeper, MathHelper,
-//            ModelBase, Mob
-
 public class MobRendererCreeper extends MobRenderer<MobCreeper>
 {
     public MobRendererCreeper()
diff --git a/src/main/java/net/minecraft/client/render/entity/MobRendererGiant.java b/src/main/java/net/minecraft/client/render/entity/MobRendererGiant.java
index 97943c3f9..f618a656c 100644
--- a/src/main/java/net/minecraft/client/render/entity/MobRendererGiant.java
+++ b/src/main/java/net/minecraft/client/render/entity/MobRendererGiant.java
@@ -4,9 +4,6 @@ import net.minecraft.client.render.model.ModelBase;
 import net.minecraft.core.entity.monster.MobGiant;
 import org.lwjgl.opengl.GL11;
 
-// Referenced classes of package net.minecraft.src:
-//            RenderLiving, EntityGiantZombie, ModelBase, Mob
-
 public class MobRendererGiant extends MobRenderer<MobGiant>
 {
 
@@ -16,15 +13,10 @@ public class MobRendererGiant extends MobRenderer<MobGiant>
         scale = f1;
     }
 
-    protected void preRenderScale(MobGiant entity, float f)
-    {
-        GL11.glScalef(scale, scale, scale);
-    }
-
     @Override
     protected void setupScale(MobGiant entity, float partialTick)
     {
-        preRenderScale(entity, partialTick);
+        GL11.glScalef(scale, scale, scale);
     }
 
     private float scale;
diff --git a/src/main/java/net/minecraft/client/render/entity/MobRendererPig.java b/src/main/java/net/minecraft/client/render/entity/MobRendererPig.java
index b4d2a48f9..d0588eece 100644
--- a/src/main/java/net/minecraft/client/render/entity/MobRendererPig.java
+++ b/src/main/java/net/minecraft/client/render/entity/MobRendererPig.java
@@ -1,9 +1,5 @@
 package net.minecraft.client.render.entity;
 
-
-// Referenced classes of package net.minecraft.src:
-//            RenderLiving, MobPig, ModelBase, Mob
-
 import net.minecraft.client.render.model.ModelBase;
 import net.minecraft.core.entity.animal.MobPig;
 
diff --git a/src/main/java/net/minecraft/client/render/entity/MobRendererSheep.java b/src/main/java/net/minecraft/client/render/entity/MobRendererSheep.java
index f43118d01..3cda09d33 100644
--- a/src/main/java/net/minecraft/client/render/entity/MobRendererSheep.java
+++ b/src/main/java/net/minecraft/client/render/entity/MobRendererSheep.java
@@ -7,9 +7,6 @@ import org.lwjgl.opengl.GL11;
 import net.minecraft.client.render.LightmapHelper;
 import net.minecraft.core.Global;
 
-// Referenced classes of package net.minecraft.src:
-//            RenderLiving, MobSheep, ModelBase, Mob
-
 public class MobRendererSheep extends MobRenderer<MobSheep>
 {
     public MobRendererSheep(ModelBase body, ModelBase wool, ModelBase overlay, float f)
diff --git a/src/main/java/net/minecraft/client/render/entity/MobRendererSlime.java b/src/main/java/net/minecraft/client/render/entity/MobRendererSlime.java
index bcbd35a5e..bf97cf25d 100644
--- a/src/main/java/net/minecraft/client/render/entity/MobRendererSlime.java
+++ b/src/main/java/net/minecraft/client/render/entity/MobRendererSlime.java
@@ -4,9 +4,6 @@ import net.minecraft.client.render.model.ModelBase;
 import net.minecraft.core.entity.monster.MobSlime;
 import org.lwjgl.opengl.GL11;
 
-// Referenced classes of package net.minecraft.src:
-//            RenderLiving, MobSlime, ModelBase, Mob
-
 public class MobRendererSlime extends MobRenderer<MobSlime>
 {
 
diff --git a/src/main/java/net/minecraft/client/render/entity/MobRendererSpider.java b/src/main/java/net/minecraft/client/render/entity/MobRendererSpider.java
index 4b1a74fcc..45b6bff3a 100644
--- a/src/main/java/net/minecraft/client/render/entity/MobRendererSpider.java
+++ b/src/main/java/net/minecraft/client/render/entity/MobRendererSpider.java
@@ -5,9 +5,6 @@ import net.minecraft.client.render.model.ModelSpider;
 import net.minecraft.core.entity.monster.MobSpider;
 import org.lwjgl.opengl.GL11;
 
-// Referenced classes of package net.minecraft.src:
-//            RenderLiving, ModelSpider, MobSpider, Mob
-
 public class MobRendererSpider extends MobRenderer<MobSpider>
 {
 
diff --git a/src/main/java/net/minecraft/client/render/entity/MobRendererSquid.java b/src/main/java/net/minecraft/client/render/entity/MobRendererSquid.java
index 394451e20..10b6e5dfe 100644
--- a/src/main/java/net/minecraft/client/render/entity/MobRendererSquid.java
+++ b/src/main/java/net/minecraft/client/render/entity/MobRendererSquid.java
@@ -5,10 +5,6 @@ import net.minecraft.client.render.tessellator.Tessellator;
 import net.minecraft.core.entity.animal.MobSquid;
 import org.lwjgl.opengl.GL11;
 
-// Referenced classes of package net.minecraft.src:
-//            RenderLiving, MobSquid, ModelBase, Mob,
-//            Entity
-
 public class MobRendererSquid extends MobRenderer<MobSquid>
 {
     public MobRendererSquid(ModelBase modelbase, float f)
diff --git a/src/main/java/net/minecraft/client/render/model/Cube.java b/src/main/java/net/minecraft/client/render/model/Cube.java
index 9de2dcf52..8ba09a4be 100644
--- a/src/main/java/net/minecraft/client/render/model/Cube.java
+++ b/src/main/java/net/minecraft/client/render/model/Cube.java
@@ -6,9 +6,6 @@ import net.minecraft.client.render.tessellator.Tessellator;
 import net.minecraft.client.render.Polygon;
 import org.lwjgl.opengl.GL11;
 
-// Referenced classes of package net.minecraft.src:
-//            PositionTextureVertex, TexturedQuad, GLAllocation, Tessellator
-
 public class Cube
 {
     private Vertex[] vertices;
diff --git a/src/main/java/net/minecraft/client/render/model/ModelBiped.java b/src/main/java/net/minecraft/client/render/model/ModelBiped.java
index fc7abcc7e..eafc96b12 100644
--- a/src/main/java/net/minecraft/client/render/model/ModelBiped.java
+++ b/src/main/java/net/minecraft/client/render/model/ModelBiped.java
@@ -1,9 +1,5 @@
 package net.minecraft.client.render.model;
 
-
-// Referenced classes of package net.minecraft.src:
-//            ModelBase, ModelRenderer, MathHelper
-
 import net.minecraft.core.util.helper.MathHelper;
 
 public class ModelBiped extends ModelBase
diff --git a/src/main/java/net/minecraft/client/render/model/ModelBoat.java b/src/main/java/net/minecraft/client/render/model/ModelBoat.java
index 7c5fb9a3d..d4aab5c8b 100644
--- a/src/main/java/net/minecraft/client/render/model/ModelBoat.java
+++ b/src/main/java/net/minecraft/client/render/model/ModelBoat.java
@@ -1,9 +1,5 @@
 package net.minecraft.client.render.model;
 
-
-// Referenced classes of package net.minecraft.src:
-//            ModelBase, ModelRenderer
-
 import net.minecraft.core.util.helper.MathHelper;
 
 public class ModelBoat extends ModelBase
diff --git a/src/main/java/net/minecraft/client/render/model/ModelCannonball.java b/src/main/java/net/minecraft/client/render/model/ModelCannonball.java
index 6defaba13..0ecd1d5a5 100644
--- a/src/main/java/net/minecraft/client/render/model/ModelCannonball.java
+++ b/src/main/java/net/minecraft/client/render/model/ModelCannonball.java
@@ -1,9 +1,5 @@
 package net.minecraft.client.render.model;
 
-
-// Referenced classes of package net.minecraft.src:
-//            ModelBase, ModelRenderer
-
 public class ModelCannonball extends ModelBase
 {
 
diff --git a/src/main/java/net/minecraft/client/render/model/ModelChicken.java b/src/main/java/net/minecraft/client/render/model/ModelChicken.java
index b1d9d2a0c..25220c7fd 100644
--- a/src/main/java/net/minecraft/client/render/model/ModelChicken.java
+++ b/src/main/java/net/minecraft/client/render/model/ModelChicken.java
@@ -1,9 +1,5 @@
 package net.minecraft.client.render.model;
 
-
-// Referenced classes of package net.minecraft.src:
-//            ModelBase, ModelRenderer, MathHelper
-
 import net.minecraft.core.util.helper.MathHelper;
 
 public class ModelChicken extends ModelBase
diff --git a/src/main/java/net/minecraft/client/render/model/ModelCow.java b/src/main/java/net/minecraft/client/render/model/ModelCow.java
index b78ed52c9..87c5fc0eb 100644
--- a/src/main/java/net/minecraft/client/render/model/ModelCow.java
+++ b/src/main/java/net/minecraft/client/render/model/ModelCow.java
@@ -1,9 +1,5 @@
 package net.minecraft.client.render.model;
 
-
-// Referenced classes of package net.minecraft.src:
-//            ModelQuadruped, ModelRenderer
-
 import net.minecraft.core.util.helper.MathHelper;
 
 public class ModelCow extends ModelQuadruped
diff --git a/src/main/java/net/minecraft/client/render/model/ModelCreeper.java b/src/main/java/net/minecraft/client/render/model/ModelCreeper.java
index e86fefeb5..bfc1e5cb6 100644
--- a/src/main/java/net/minecraft/client/render/model/ModelCreeper.java
+++ b/src/main/java/net/minecraft/client/render/model/ModelCreeper.java
@@ -1,9 +1,5 @@
 package net.minecraft.client.render.model;
 
-
-// Referenced classes of package net.minecraft.src:
-//            ModelBase, ModelRenderer, MathHelper
-
 import net.minecraft.core.util.helper.MathHelper;
 
 public class ModelCreeper extends ModelBase
diff --git a/src/main/java/net/minecraft/client/render/model/ModelGhast.java b/src/main/java/net/minecraft/client/render/model/ModelGhast.java
index d71139133..e790acf0f 100644
--- a/src/main/java/net/minecraft/client/render/model/ModelGhast.java
+++ b/src/main/java/net/minecraft/client/render/model/ModelGhast.java
@@ -4,9 +4,6 @@ import net.minecraft.core.util.helper.MathHelper;
 
 import java.util.Random;
 
-// Referenced classes of package net.minecraft.src:
-//            ModelBase, ModelRenderer, MathHelper
-
 public class ModelGhast extends ModelBase
 {
 
diff --git a/src/main/java/net/minecraft/client/render/model/ModelMinecart.java b/src/main/java/net/minecraft/client/render/model/ModelMinecart.java
index f02f6b282..22c59dd25 100644
--- a/src/main/java/net/minecraft/client/render/model/ModelMinecart.java
+++ b/src/main/java/net/minecraft/client/render/model/ModelMinecart.java
@@ -1,9 +1,5 @@
 package net.minecraft.client.render.model;
 
-
-// Referenced classes of package net.minecraft.src:
-//            ModelBase, ModelRenderer
-
 import net.minecraft.core.util.helper.MathHelper;
 
 public class ModelMinecart extends ModelBase
diff --git a/src/main/java/net/minecraft/client/render/model/ModelPig.java b/src/main/java/net/minecraft/client/render/model/ModelPig.java
index d5017e0a7..e27fb305f 100644
--- a/src/main/java/net/minecraft/client/render/model/ModelPig.java
+++ b/src/main/java/net/minecraft/client/render/model/ModelPig.java
@@ -1,9 +1,5 @@
 package net.minecraft.client.render.model;
 
-
-// Referenced classes of package net.minecraft.src:
-//            ModelQuadruped
-
 public class ModelPig extends ModelQuadruped
 {
 
diff --git a/src/main/java/net/minecraft/client/render/model/ModelQuadruped.java b/src/main/java/net/minecraft/client/render/model/ModelQuadruped.java
index 6e8bc6733..0c37640c4 100644
--- a/src/main/java/net/minecraft/client/render/model/ModelQuadruped.java
+++ b/src/main/java/net/minecraft/client/render/model/ModelQuadruped.java
@@ -1,9 +1,5 @@
 package net.minecraft.client.render.model;
 
-
-// Referenced classes of package net.minecraft.src:
-//            ModelBase, ModelRenderer, MathHelper
-
 import net.minecraft.core.util.helper.MathHelper;
 
 public class ModelQuadruped extends ModelBase
diff --git a/src/main/java/net/minecraft/client/render/model/ModelSheep.java b/src/main/java/net/minecraft/client/render/model/ModelSheep.java
index eaf5889b6..c47acc326 100644
--- a/src/main/java/net/minecraft/client/render/model/ModelSheep.java
+++ b/src/main/java/net/minecraft/client/render/model/ModelSheep.java
@@ -1,9 +1,5 @@
 package net.minecraft.client.render.model;
 
-
-// Referenced classes of package net.minecraft.src:
-//            ModelQuadruped, ModelRenderer
-
 import net.minecraft.core.entity.Mob;
 import net.minecraft.core.entity.animal.MobSheep;
 import net.minecraft.core.util.helper.MathHelper;
diff --git a/src/main/java/net/minecraft/client/render/model/ModelSheepOverlay.java b/src/main/java/net/minecraft/client/render/model/ModelSheepOverlay.java
index a3b63114f..d8650285d 100644
--- a/src/main/java/net/minecraft/client/render/model/ModelSheepOverlay.java
+++ b/src/main/java/net/minecraft/client/render/model/ModelSheepOverlay.java
@@ -1,9 +1,5 @@
 package net.minecraft.client.render.model;
 
-
-// Referenced classes of package net.minecraft.src:
-//            ModelQuadruped, ModelRenderer
-
 import net.minecraft.client.render.LightmapHelper;
 import net.minecraft.core.Global;
 import net.minecraft.core.entity.Mob;
diff --git a/src/main/java/net/minecraft/client/render/model/ModelSheepWool.java b/src/main/java/net/minecraft/client/render/model/ModelSheepWool.java
index f71921810..1a7d667ff 100644
--- a/src/main/java/net/minecraft/client/render/model/ModelSheepWool.java
+++ b/src/main/java/net/minecraft/client/render/model/ModelSheepWool.java
@@ -1,9 +1,5 @@
 package net.minecraft.client.render.model;
 
-
-// Referenced classes of package net.minecraft.src:
-//            ModelQuadruped, ModelRenderer
-
 public class ModelSheepWool extends ModelSheep
 {
 
diff --git a/src/main/java/net/minecraft/client/render/model/ModelSign.java b/src/main/java/net/minecraft/client/render/model/ModelSign.java
index d5bfce78f..c1c78edf7 100644
--- a/src/main/java/net/minecraft/client/render/model/ModelSign.java
+++ b/src/main/java/net/minecraft/client/render/model/ModelSign.java
@@ -1,9 +1,5 @@
 package net.minecraft.client.render.model;
 
-
-// Referenced classes of package net.minecraft.src:
-//            ModelRenderer
-
 public class ModelSign
 {
 
diff --git a/src/main/java/net/minecraft/client/render/model/ModelSkeleton.java b/src/main/java/net/minecraft/client/render/model/ModelSkeleton.java
index 5f14c77f6..975fad5cd 100644
--- a/src/main/java/net/minecraft/client/render/model/ModelSkeleton.java
+++ b/src/main/java/net/minecraft/client/render/model/ModelSkeleton.java
@@ -1,9 +1,5 @@
 package net.minecraft.client.render.model;
 
-
-// Referenced classes of package net.minecraft.src:
-//            ModelZombie, ModelRenderer
-
 public class ModelSkeleton extends ModelZombie
 {
 
diff --git a/src/main/java/net/minecraft/client/render/model/ModelSlime.java b/src/main/java/net/minecraft/client/render/model/ModelSlime.java
index 6f21a48e8..8904a454b 100644
--- a/src/main/java/net/minecraft/client/render/model/ModelSlime.java
+++ b/src/main/java/net/minecraft/client/render/model/ModelSlime.java
@@ -1,9 +1,5 @@
 package net.minecraft.client.render.model;
 
-
-// Referenced classes of package net.minecraft.src:
-//            ModelBase, ModelRenderer
-
 public class ModelSlime extends ModelBase
 {
 
diff --git a/src/main/java/net/minecraft/client/render/model/ModelSpider.java b/src/main/java/net/minecraft/client/render/model/ModelSpider.java
index 90a48e53a..a24a75cc6 100644
--- a/src/main/java/net/minecraft/client/render/model/ModelSpider.java
+++ b/src/main/java/net/minecraft/client/render/model/ModelSpider.java
@@ -1,9 +1,5 @@
 package net.minecraft.client.render.model;
 
-
-// Referenced classes of package net.minecraft.src:
-//            ModelBase, ModelRenderer, MathHelper
-
 import net.minecraft.core.util.helper.MathHelper;
 
 public class ModelSpider extends ModelBase
diff --git a/src/main/java/net/minecraft/client/render/model/ModelSquid.java b/src/main/java/net/minecraft/client/render/model/ModelSquid.java
index f80a81968..5b9f4a919 100644
--- a/src/main/java/net/minecraft/client/render/model/ModelSquid.java
+++ b/src/main/java/net/minecraft/client/render/model/ModelSquid.java
@@ -1,9 +1,5 @@
 package net.minecraft.client.render.model;
 
-
-// Referenced classes of package net.minecraft.src:
-//            ModelBase, ModelRenderer
-
 public class ModelSquid extends ModelBase
 {
 
diff --git a/src/main/java/net/minecraft/client/render/model/ModelWolf.java b/src/main/java/net/minecraft/client/render/model/ModelWolf.java
index 3dc9a884a..9158dc538 100644
--- a/src/main/java/net/minecraft/client/render/model/ModelWolf.java
+++ b/src/main/java/net/minecraft/client/render/model/ModelWolf.java
@@ -7,10 +7,6 @@ import net.minecraft.core.entity.animal.MobWolf;
 import net.minecraft.core.util.helper.MathHelper;
 import org.lwjgl.opengl.GL11;
 
-// Referenced classes of package net.minecraft.src:
-//            ModelBase, ModelRenderer, MobWolf, MathHelper,
-//            Mob
-
 public class ModelWolf extends ModelBase
 {
 
diff --git a/src/main/java/net/minecraft/client/render/model/ModelZombie.java b/src/main/java/net/minecraft/client/render/model/ModelZombie.java
index d46280adc..4af4cfe4f 100644
--- a/src/main/java/net/minecraft/client/render/model/ModelZombie.java
+++ b/src/main/java/net/minecraft/client/render/model/ModelZombie.java
@@ -1,9 +1,5 @@
 package net.minecraft.client.render.model;
 
-
-// Referenced classes of package net.minecraft.src:
-//            ModelBiped, MathHelper, ModelRenderer
-
 import net.minecraft.core.util.helper.MathHelper;
 
 public class ModelZombie extends ModelBiped {
diff --git a/src/main/java/net/minecraft/client/render/shader/Shader.java b/src/main/java/net/minecraft/client/render/shader/Shader.java
index 6a9af19cc..5def25de5 100644
--- a/src/main/java/net/minecraft/client/render/shader/Shader.java
+++ b/src/main/java/net/minecraft/client/render/shader/Shader.java
@@ -1,6 +1,5 @@
 package net.minecraft.client.render.shader;
 
-import static org.lwjgl.opengl.GL11.*;
 import static org.lwjgl.opengl.GL20.*;
 
 import java.util.HashMap;
diff --git a/src/main/java/net/minecraft/client/render/shader/ShadersRenderer.java b/src/main/java/net/minecraft/client/render/shader/ShadersRenderer.java
index 3d5b29762..5f61de971 100644
--- a/src/main/java/net/minecraft/client/render/shader/ShadersRenderer.java
+++ b/src/main/java/net/minecraft/client/render/shader/ShadersRenderer.java
@@ -2,7 +2,6 @@ package net.minecraft.client.render.shader;
 
 import static org.lwjgl.opengl.ARBFramebufferObject.*;
 import static org.lwjgl.opengl.ARBMultitexture.*;
-import static org.lwjgl.opengl.GL11.*;
 import static org.lwjgl.opengl.GL20.*;
 
 import java.io.File;
diff --git a/src/main/java/net/minecraft/client/render/terrain/VertexConfig.java b/src/main/java/net/minecraft/client/render/terrain/VertexConfig.java
index 71a5668a5..296e48a1d 100644
--- a/src/main/java/net/minecraft/client/render/terrain/VertexConfig.java
+++ b/src/main/java/net/minecraft/client/render/terrain/VertexConfig.java
@@ -1,7 +1,5 @@
 package net.minecraft.client.render.terrain;
 
-import static org.lwjgl.opengl.GL11.*;
-import static org.lwjgl.opengl.GL13.*;
 import static org.lwjgl.opengl.GL20.*;
 
 import java.nio.ByteBuffer;
diff --git a/src/main/java/net/minecraft/client/render/texturepack/TexturePackList.java b/src/main/java/net/minecraft/client/render/texturepack/TexturePackList.java
index ff02b0730..30261446e 100644
--- a/src/main/java/net/minecraft/client/render/texturepack/TexturePackList.java
+++ b/src/main/java/net/minecraft/client/render/texturepack/TexturePackList.java
@@ -2,7 +2,6 @@ package net.minecraft.client.render.texturepack;
 
 import com.mojang.logging.LogUtils;
 import net.minecraft.client.Minecraft;
-import net.minecraft.client.holiday.Holidays;
 import net.minecraft.client.render.Font;
 import net.minecraft.client.sound.SoundRepository;
 import org.jetbrains.annotations.Nullable;
diff --git a/src/main/java/net/minecraft/client/render/window/GameWindowGLFW.java b/src/main/java/net/minecraft/client/render/window/GameWindowGLFW.java
index fc010ce5d..3662b577b 100644
--- a/src/main/java/net/minecraft/client/render/window/GameWindowGLFW.java
+++ b/src/main/java/net/minecraft/client/render/window/GameWindowGLFW.java
@@ -129,8 +129,8 @@ public class GameWindowGLFW implements GameWindow {
 		Display.setWindow(this);
 
 		
-		Method createKeyboard = null;
-		Method createMouse = null;
+		Method createKeyboard;
+		Method createMouse;
 		
 		try {
 			createKeyboard = Keyboard.class.getDeclaredMethod("create", InputImplementation.class);
diff --git a/src/main/java/net/minecraft/client/render/worldtype/WorldTypeFX.java b/src/main/java/net/minecraft/client/render/worldtype/WorldTypeFX.java
index ae91f7a3d..6754f6a2f 100644
--- a/src/main/java/net/minecraft/client/render/worldtype/WorldTypeFX.java
+++ b/src/main/java/net/minecraft/client/render/worldtype/WorldTypeFX.java
@@ -1,6 +1,5 @@
 package net.minecraft.client.render.worldtype;
 
-import net.minecraft.core.util.helper.MathHelper;
 import net.minecraft.core.util.phys.Vec3;
 import net.minecraft.core.world.World;
 import net.minecraft.core.world.type.WorldType;
diff --git a/src/main/java/net/minecraft/client/sound/NamedSoundRepository.java b/src/main/java/net/minecraft/client/sound/NamedSoundRepository.java
index 2f04494d5..f52b78d88 100644
--- a/src/main/java/net/minecraft/client/sound/NamedSoundRepository.java
+++ b/src/main/java/net/minecraft/client/sound/NamedSoundRepository.java
@@ -198,10 +198,10 @@ public class NamedSoundRepository extends Registry<SoundEvent> {
             attenuation_distance = jObj.get("attenuation_distance").getAsInt();
         }
 
-        boolean preload = false;
-        if (jObj.has("preload")) {
-            preload = jObj.get("preload").getAsBoolean();
-        }
+//        boolean preload = false;
+//        if (jObj.has("preload")) {
+//            preload = jObj.get("preload").getAsBoolean();
+//        }
 
         String type = "file";
         if (jObj.has("type")) {
diff --git a/src/main/java/net/minecraft/client/util/debug/DebugRender.java b/src/main/java/net/minecraft/client/util/debug/DebugRender.java
index 8d30c2b04..b8183412d 100644
--- a/src/main/java/net/minecraft/client/util/debug/DebugRender.java
+++ b/src/main/java/net/minecraft/client/util/debug/DebugRender.java
@@ -181,7 +181,7 @@ public class DebugRender {
 		Minecraft mc = Minecraft.getMinecraft(Minecraft.class);
 		if (mc.gameSettings.customFpsLimit.value > 0 || mc.gameSettings.enableVsync.value){
 			tessellator.setColorOpaque_I(0x00FF00);
-			int fps = 0;
+			int fps;
 			if (mc.gameSettings.enableVsync.value){
 				fps = mc.gameWindow.getFrequency(); // Cap fps when minimized
 			} else {
diff --git a/src/main/java/net/minecraft/client/world/WorldClient.java b/src/main/java/net/minecraft/client/world/WorldClient.java
index 39037d115..10ebc53b9 100644
--- a/src/main/java/net/minecraft/client/world/WorldClient.java
+++ b/src/main/java/net/minecraft/client/world/WorldClient.java
@@ -3,10 +3,8 @@ package net.minecraft.client.world;
 import net.minecraft.client.render.LightmapHelper;
 import net.minecraft.client.render.camera.ICamera;
 import net.minecraft.client.render.colorizer.Colorizers;
-import net.minecraft.client.render.worldtype.WorldTypeFX;
 import net.minecraft.client.render.worldtype.WorldTypeFXDispatcher;
 import net.minecraft.client.world.chunk.provider.ChunkProviderViewer;
-import net.minecraft.core.enums.LightLayer;
 import net.minecraft.core.util.helper.MathHelper;
 import net.minecraft.core.util.phys.Vec3;
 import net.minecraft.core.world.AuroraProvider;
diff --git a/src/main/java/net/minecraft/client/world/chunk/provider/ChunkProviderClient.java b/src/main/java/net/minecraft/client/world/chunk/provider/ChunkProviderClient.java
index 38dc54980..278518b1a 100644
--- a/src/main/java/net/minecraft/client/world/chunk/provider/ChunkProviderClient.java
+++ b/src/main/java/net/minecraft/client/world/chunk/provider/ChunkProviderClient.java
@@ -9,10 +9,6 @@ import net.minecraft.core.world.chunk.provider.IChunkProvider;
 
 import java.util.*;
 
-// Referenced classes of package net.minecraft.src:
-//            IChunkProvider, EmptyChunk, ChunkCoordIntPair, Chunk, 
-//            NibbleArray, World, IProgressUpdate
-
 public class ChunkProviderClient
     implements IChunkProvider
 {
@@ -30,7 +26,7 @@ public class ChunkProviderClient
     {
         return true;
 
-        // Previous code always returned true, possibly was a bug?
+        // TODO Previous code always returned true, possibly was a bug?
         /*if(this != null)
         {
             return true;
diff --git a/src/main/java/net/minecraft/client/world/chunk/provider/ChunkProviderStatic.java b/src/main/java/net/minecraft/client/world/chunk/provider/ChunkProviderStatic.java
index d29bd8e4d..211de19b9 100644
--- a/src/main/java/net/minecraft/client/world/chunk/provider/ChunkProviderStatic.java
+++ b/src/main/java/net/minecraft/client/world/chunk/provider/ChunkProviderStatic.java
@@ -1,7 +1,7 @@
 package net.minecraft.client.world.chunk.provider;
 
 import com.mojang.logging.LogUtils;
-import net.minecraft.core.Global;
+
 import net.minecraft.core.world.ProgressListener;
 import net.minecraft.core.world.World;
 import net.minecraft.core.world.chunk.Chunk;
@@ -14,13 +14,12 @@ import org.slf4j.Logger;
 import java.io.IOException;
 import java.util.Arrays;
 
-// Referenced classes of package net.minecraft.src:
-//            IChunkProvider, Chunk, World, IChunkLoader, 
-//            IProgressUpdate
-
 public class ChunkProviderStatic
     implements IChunkProvider
 {
+    public static final int CHUNK_RADIUS = 64; // Radius should *always* be a power of 2!
+    public static final int CHUNK_MASK = CHUNK_RADIUS * 2 - 1;
+
     private static final Logger LOGGER = LogUtils.getLogger();
     private final Chunk blankChunk;
     public ChunkGenerator chunkGenerator;
@@ -36,7 +35,7 @@ public class ChunkProviderStatic
 
     public ChunkProviderStatic(World world, IChunkLoader ichunkloader, ChunkGenerator chunkGenerator)
     {
-        chunks = new Chunk[1024];
+        chunks = new Chunk[CHUNK_RADIUS * 2 * CHUNK_RADIUS * 2];
         lastQueriedChunkXPos = Integer.MIN_VALUE;
         lastQueriedChunkZPos = Integer.MIN_VALUE;
         blankChunk = new EmptyChunk(world, 0, 0);
@@ -55,16 +54,16 @@ public class ChunkProviderStatic
 
     public boolean canChunkExist(int chunkX, int chunkZ)
     {
-        byte byte0 = 15;
+        byte byte0 = CHUNK_RADIUS - 1;
         return chunkX >= curChunkX - byte0 && chunkZ >= curChunkY - byte0 && chunkX <= curChunkX + byte0 && chunkZ <= curChunkY + byte0;
     }
 
     @Override
     public void regenerateChunk(int chunkX, int chunkZ)
     {
-        int k = chunkX & 0x1f;
-        int l = chunkZ & 0x1f;
-        int i1 = k + l * 32;
+        int k = chunkX & CHUNK_MASK;
+        int l = chunkZ & CHUNK_MASK;
+        int i1 = k + l * CHUNK_RADIUS * 2;
         Chunk newChunk;
         if (chunkGenerator != null)
         {
@@ -106,9 +105,9 @@ public class ChunkProviderStatic
             return true;
         } else
         {
-            int k = chunkX & 0x1f;
-            int l = chunkZ & 0x1f;
-            int chunkIndex = k + l * 32;
+            int k = chunkX & CHUNK_MASK;
+            int l = chunkZ & CHUNK_MASK;
+            int chunkIndex = k + l * CHUNK_RADIUS * 2;
             return chunks[chunkIndex] == blankChunk || (chunks[chunkIndex] != null && chunks[chunkIndex].isAtLocation(chunkX, chunkZ));
         }
     }
@@ -130,9 +129,9 @@ public class ChunkProviderStatic
         {
             return blankChunk;
         }
-        int k = chunkX & 0x1f;
-        int l = chunkZ & 0x1f;
-        int i1 = k + l * 32;
+        int k = chunkX & CHUNK_MASK;
+        int l = chunkZ & CHUNK_MASK;
+        int i1 = k + l * CHUNK_RADIUS * 2;
         if(!isChunkLoaded(chunkX, chunkZ))
         {
             if(chunks[i1] != null)
diff --git a/src/main/java/net/minecraft/core/MinecraftAccessor.java b/src/main/java/net/minecraft/core/MinecraftAccessor.java
index 90024fd58..f4ba2a338 100644
--- a/src/main/java/net/minecraft/core/MinecraftAccessor.java
+++ b/src/main/java/net/minecraft/core/MinecraftAccessor.java
@@ -26,6 +26,6 @@ public interface MinecraftAccessor
     }
 
     default Collection<String> getAvailableSoundKeys() {
-        return SoundTypes.getSoundIds().keySet();
+        return SoundTypes.getSoundIds().values();
     }
 }
\ No newline at end of file
diff --git a/src/main/java/net/minecraft/core/achievement/stat/DistanceValueFormatter.java b/src/main/java/net/minecraft/core/achievement/stat/DistanceValueFormatter.java
index a3b2418b5..f24e9ce9f 100644
--- a/src/main/java/net/minecraft/core/achievement/stat/DistanceValueFormatter.java
+++ b/src/main/java/net/minecraft/core/achievement/stat/DistanceValueFormatter.java
@@ -1,8 +1,5 @@
 package net.minecraft.core.achievement.stat;
 
-// Referenced classes of package net.minecraft.src:
-//            StatValueFormatter, StatBase
-
 final class DistanceValueFormatter implements StatValueFormatter {
     public static double UNIT_CENTIMETER_TO_METER = 1d/100;
     public static double UNIT_METER_TO_KILOMETER = 1d/1000;
diff --git a/src/main/java/net/minecraft/core/achievement/stat/SimpleValueFormatter.java b/src/main/java/net/minecraft/core/achievement/stat/SimpleValueFormatter.java
index 73bd925dd..06186341a 100644
--- a/src/main/java/net/minecraft/core/achievement/stat/SimpleValueFormatter.java
+++ b/src/main/java/net/minecraft/core/achievement/stat/SimpleValueFormatter.java
@@ -1,8 +1,5 @@
 package net.minecraft.core.achievement.stat;
 
-// Referenced classes of package net.minecraft.src:
-//            StatValueFormatter, StatBase
-
 final class SimpleValueFormatter implements StatValueFormatter {
 
     @Override
diff --git a/src/main/java/net/minecraft/core/achievement/stat/Stat.java b/src/main/java/net/minecraft/core/achievement/stat/Stat.java
index a404feb9c..54c25704e 100644
--- a/src/main/java/net/minecraft/core/achievement/stat/Stat.java
+++ b/src/main/java/net/minecraft/core/achievement/stat/Stat.java
@@ -1,12 +1,8 @@
 package net.minecraft.core.achievement.stat;
 
-import com.b100.utils.StreamUtils;
 import net.minecraft.core.lang.I18n;
 import net.minecraft.core.util.collection.NamespaceID;
 
-import java.io.BufferedReader;
-import java.io.InputStream;
-import java.io.InputStreamReader;
 import java.text.DecimalFormat;
 import java.text.NumberFormat;
 import java.util.*;
diff --git a/src/main/java/net/minecraft/core/achievement/stat/StatList.java b/src/main/java/net/minecraft/core/achievement/stat/StatList.java
index 4d9fb95d8..b64152d60 100644
--- a/src/main/java/net/minecraft/core/achievement/stat/StatList.java
+++ b/src/main/java/net/minecraft/core/achievement/stat/StatList.java
@@ -2,7 +2,6 @@ package net.minecraft.core.achievement.stat;
 
 import net.minecraft.core.WeightedRandomBag;
 import net.minecraft.core.WeightedRandomLootObject;
-import net.minecraft.core.achievement.Achievement;
 import net.minecraft.core.achievement.Achievements;
 import net.minecraft.core.data.registry.Registries;
 import net.minecraft.core.data.registry.recipe.entry.RecipeEntryBlastFurnace;
@@ -81,7 +80,7 @@ public abstract class StatList
     public static Stat fishCaughtStat =
         new StatBasic(new NamespaceID("minecraft", "caught_fish"), "stat.fishCaught").registerStat();
 
-    public static Map<String, Stat> mobEncounterStats;
+    public static Map<NamespaceID, Stat> mobEncounterStats;
 
     public static Map<Integer, Integer> replacementMap = new HashMap<>();
 
@@ -141,9 +140,9 @@ public abstract class StatList
         }
 
         mobEncounterStats = new HashMap<>();
-        for (Map.Entry<String, Class<? extends Entity>> entry : EntityDispatcher.keyToClassMap.entrySet())
+        for (Map.Entry<NamespaceID, Class<? extends Entity>> entry : EntityDispatcher.idToClassMap.entrySet())
         {
-            mobEncounterStats.put(entry.getKey(), new StatMob(new NamespaceID("minecraft", "encounter_" + entry.getKey()), "stat.encounterMob", entry.getKey()).registerStat());
+            mobEncounterStats.put(entry.getKey(), new StatMob(new NamespaceID("minecraft", "encounter_" + entry.getKey().toString().replace(":", "_")), "stat.encounterMob", entry.getKey()).registerStat());
         }
     }
 
@@ -247,8 +246,9 @@ public abstract class StatList
             }
 
             if (OFFSET_MOB <= id && id < OFFSET_MOB + OFFSET_OFFSET) {
-                Class<? extends Entity> c = EntityDispatcher.getClassFromID(id - OFFSET_MOB);
-                String entityID = EntityDispatcher.getEncodeId(c);
+                @SuppressWarnings("deprecation") // This is converting old stats that used the legacy ids numbers
+                Class<? extends Entity> c = EntityDispatcher.Legacy.getClassFromID(id - OFFSET_MOB);
+                NamespaceID entityID = EntityDispatcher.idForClass(c);
                 return mobEncounterStats.get(entityID);
             }
 
diff --git a/src/main/java/net/minecraft/core/achievement/stat/StatMob.java b/src/main/java/net/minecraft/core/achievement/stat/StatMob.java
index b7624def4..117cde22a 100644
--- a/src/main/java/net/minecraft/core/achievement/stat/StatMob.java
+++ b/src/main/java/net/minecraft/core/achievement/stat/StatMob.java
@@ -3,14 +3,14 @@ package net.minecraft.core.achievement.stat;
 import net.minecraft.core.util.collection.NamespaceID;
 
 public class StatMob extends Stat {
-    private final String mobId;
+    private final NamespaceID mobId;
 
-    public StatMob(NamespaceID id, String name, String mobId) {
+    public StatMob(NamespaceID id, String name, NamespaceID mobId) {
         super(id, name);
         this.mobId = mobId;
     }
 
-    public String getMobId() {
+    public NamespaceID getMobId() {
         return mobId;
     }
 }
diff --git a/src/main/java/net/minecraft/core/achievement/stat/StatsCounter.java b/src/main/java/net/minecraft/core/achievement/stat/StatsCounter.java
index e6da28072..206539c86 100644
--- a/src/main/java/net/minecraft/core/achievement/stat/StatsCounter.java
+++ b/src/main/java/net/minecraft/core/achievement/stat/StatsCounter.java
@@ -14,7 +14,6 @@ import com.b100.json.element.JsonEntry;
 import com.b100.json.element.JsonObject;
 import com.b100.utils.FileUtils;
 import com.mojang.logging.LogUtils;
-import net.minecraft.core.Global;
 import net.minecraft.core.MD5String;
 import net.minecraft.core.achievement.Achievement;
 import net.minecraft.core.player.Session;
diff --git a/src/main/java/net/minecraft/core/achievement/stat/TimeValueFormatter.java b/src/main/java/net/minecraft/core/achievement/stat/TimeValueFormatter.java
index d6b8c0bb5..16c609cc9 100644
--- a/src/main/java/net/minecraft/core/achievement/stat/TimeValueFormatter.java
+++ b/src/main/java/net/minecraft/core/achievement/stat/TimeValueFormatter.java
@@ -1,8 +1,5 @@
 package net.minecraft.core.achievement.stat;
 
-// Referenced classes of package net.minecraft.src:
-//            StatValueFormatter, StatBase
-
 import net.minecraft.core.Global;
 
 final class TimeValueFormatter implements StatValueFormatter {
diff --git a/src/main/java/net/minecraft/core/block/BlockAlgae.java b/src/main/java/net/minecraft/core/block/BlockAlgae.java
index 75924dfd1..9fdd7944e 100644
--- a/src/main/java/net/minecraft/core/block/BlockAlgae.java
+++ b/src/main/java/net/minecraft/core/block/BlockAlgae.java
@@ -12,11 +12,6 @@ import net.minecraft.core.world.World;
 import net.minecraft.core.block.material.Material;
 import net.minecraft.core.util.phys.AABB;
 
-// Referenced classes of package net.minecraft.src:
-//            Block, Material, World, AxisAlignedBB,
-//            IBlockAccess, Item, EntityItem, ItemStack,
-//            StatList, Player, EnumSkyBlock
-
 public class BlockAlgae extends Block
 {
 
diff --git a/src/main/java/net/minecraft/core/block/BlockButton.java b/src/main/java/net/minecraft/core/block/BlockButton.java
index 0f80e44bd..c3edb56b6 100644
--- a/src/main/java/net/minecraft/core/block/BlockButton.java
+++ b/src/main/java/net/minecraft/core/block/BlockButton.java
@@ -18,10 +18,6 @@ import org.jetbrains.annotations.Nullable;
 
 import java.util.Random;
 
-// Referenced classes of package net.minecraft.src:
-//            Block, Material, World, IBlockAccess, 
-//            AxisAlignedBB, Player
-
 public class BlockButton extends Block
 {
     public static final int MASK_POWERED = 0b0000_1000;
diff --git a/src/main/java/net/minecraft/core/block/BlockCactus.java b/src/main/java/net/minecraft/core/block/BlockCactus.java
index 3f3a2deb7..dc0904cf2 100644
--- a/src/main/java/net/minecraft/core/block/BlockCactus.java
+++ b/src/main/java/net/minecraft/core/block/BlockCactus.java
@@ -19,10 +19,6 @@ import org.jetbrains.annotations.Nullable;
 
 import java.util.Random;
 
-// Referenced classes of package net.minecraft.src:
-//            Block, Material, World, AxisAlignedBB, 
-//            Entity
-
 public class BlockCactus extends Block implements IBonemealable
 {
 
diff --git a/src/main/java/net/minecraft/core/block/BlockChest.java b/src/main/java/net/minecraft/core/block/BlockChest.java
index e8fa4260b..4dee34beb 100644
--- a/src/main/java/net/minecraft/core/block/BlockChest.java
+++ b/src/main/java/net/minecraft/core/block/BlockChest.java
@@ -318,9 +318,8 @@ public class BlockChest extends BlockTileEntity implements IPaintable {
 	
 	public static Container getInventory(World world, int x, int y, int z) {
 		Container inventory = (Container) world.getBlockEntity(x, y, z);
-		
-		int meta = world.getBlockMetadata(x, y, z);
-		meta = world.getBlockMetadata(x, y, z);
+
+        int meta = world.getBlockMetadata(x, y, z);
 		Type type = getTypeFromMeta(meta);
 		
 		if(type != Type.SINGLE) {
diff --git a/src/main/java/net/minecraft/core/block/BlockClay.java b/src/main/java/net/minecraft/core/block/BlockClay.java
index 20a1cb742..08450fcd8 100644
--- a/src/main/java/net/minecraft/core/block/BlockClay.java
+++ b/src/main/java/net/minecraft/core/block/BlockClay.java
@@ -7,9 +7,6 @@ import net.minecraft.core.item.ItemStack;
 import net.minecraft.core.block.material.Material;
 import net.minecraft.core.world.World;
 
-// Referenced classes of package net.minecraft.src:
-//            Block, Material, Item
-
 public class BlockClay extends Block
 {
     public BlockClay(String key, String namespaceId, int id)
diff --git a/src/main/java/net/minecraft/core/block/BlockCobweb.java b/src/main/java/net/minecraft/core/block/BlockCobweb.java
index 9f1753adf..011cb9eb7 100644
--- a/src/main/java/net/minecraft/core/block/BlockCobweb.java
+++ b/src/main/java/net/minecraft/core/block/BlockCobweb.java
@@ -10,10 +10,6 @@ import net.minecraft.core.block.material.Material;
 import net.minecraft.core.util.phys.AABB;
 import net.minecraft.core.world.WorldSource;
 
-// Referenced classes of package net.minecraft.src:
-//            Block, Material, Entity, Item, 
-//            World, AxisAlignedBB
-
 public class BlockCobweb extends Block
 {
 
diff --git a/src/main/java/net/minecraft/core/block/BlockDeadBush.java b/src/main/java/net/minecraft/core/block/BlockDeadBush.java
index c070c8ba3..acc5e698b 100644
--- a/src/main/java/net/minecraft/core/block/BlockDeadBush.java
+++ b/src/main/java/net/minecraft/core/block/BlockDeadBush.java
@@ -6,9 +6,6 @@ import net.minecraft.core.item.Items;
 import net.minecraft.core.item.ItemStack;
 import net.minecraft.core.world.World;
 
-// Referenced classes of package net.minecraft.src:
-//            BlockFlower, Block
-
 public class BlockDeadBush extends BlockFlower
 {
 
diff --git a/src/main/java/net/minecraft/core/block/BlockDoor.java b/src/main/java/net/minecraft/core/block/BlockDoor.java
index b5f77f3d4..df1efadc3 100644
--- a/src/main/java/net/minecraft/core/block/BlockDoor.java
+++ b/src/main/java/net/minecraft/core/block/BlockDoor.java
@@ -23,11 +23,6 @@ import net.minecraft.core.world.WorldSource;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
 
-// Referenced classes of package net.minecraft.src:
-//            Block, Material, IBlockAccess, World, 
-//            Item, AxisAlignedBB, Player, Vec3D,
-//            MovingObjectPosition
-
 public class BlockDoor extends Block implements IPaintable
 {
     public static final int MASK_ROTATION = 0b0000_0011;
diff --git a/src/main/java/net/minecraft/core/block/BlockFence.java b/src/main/java/net/minecraft/core/block/BlockFence.java
index a4b897264..81d63800a 100644
--- a/src/main/java/net/minecraft/core/block/BlockFence.java
+++ b/src/main/java/net/minecraft/core/block/BlockFence.java
@@ -1,9 +1,5 @@
 package net.minecraft.core.block;
 
-
-// Referenced classes of package net.minecraft.src:
-//            Block, Material, World, AxisAlignedBB
-
 import net.minecraft.core.util.helper.DyeColor;
 import net.minecraft.core.util.phys.AABB;
 import net.minecraft.core.block.material.Material;
@@ -11,7 +7,6 @@ import net.minecraft.core.block.tag.BlockTags;
 import net.minecraft.core.world.World;
 import net.minecraft.core.world.WorldSource;
 
-
 public class BlockFence extends Block implements IPaintable
 {
 //    private static final List<BoundingVolume> selectionVolumes = new ArrayList<>();
diff --git a/src/main/java/net/minecraft/core/block/BlockFluidFlowing.java b/src/main/java/net/minecraft/core/block/BlockFluidFlowing.java
index fae1bca73..e8463b54f 100644
--- a/src/main/java/net/minecraft/core/block/BlockFluidFlowing.java
+++ b/src/main/java/net/minecraft/core/block/BlockFluidFlowing.java
@@ -8,10 +8,6 @@ import net.minecraft.core.world.World;
 
 import java.util.Random;
 
-// Referenced classes of package net.minecraft.src:
-//            BlockFluid, World, Material, WorldProvider,
-//            Block
-
 public class BlockFluidFlowing extends BlockFluid
 {
     int maxCount;
diff --git a/src/main/java/net/minecraft/core/block/BlockFurnace.java b/src/main/java/net/minecraft/core/block/BlockFurnace.java
index 9c380a1cd..f063c0e83 100644
--- a/src/main/java/net/minecraft/core/block/BlockFurnace.java
+++ b/src/main/java/net/minecraft/core/block/BlockFurnace.java
@@ -15,12 +15,6 @@ import org.slf4j.Logger;
 
 import java.util.Random;
 
-// Referenced classes of package net.minecraft.src:
-//            BlockContainer, Material, Block, World, 
-//            IBlockAccess, TileEntityFurnace, Player, TileEntity,
-//            Mob, MathHelper, IInventory, ItemStack,
-//            EntityItem
-
 public class BlockFurnace extends BlockTileEntityRotatable
 {
     private static final Logger LOGGER = LogUtils.getLogger();
diff --git a/src/main/java/net/minecraft/core/block/BlockFurnaceBlast.java b/src/main/java/net/minecraft/core/block/BlockFurnaceBlast.java
index d34d941a3..9cccd3117 100644
--- a/src/main/java/net/minecraft/core/block/BlockFurnaceBlast.java
+++ b/src/main/java/net/minecraft/core/block/BlockFurnaceBlast.java
@@ -13,12 +13,6 @@ import org.slf4j.Logger;
 
 import java.util.Random;
 
-// Referenced classes of package net.minecraft.src:
-//            BlockContainer, Material, Block, World,
-//            IBlockAccess, TileEntityFurnace, Player, TileEntity,
-//            Mob, MathHelper, IInventory, ItemStack,
-//            EntityItem
-
 public class BlockFurnaceBlast extends BlockFurnace
 {
     private static final Logger LOGGER = LogUtils.getLogger();
diff --git a/src/main/java/net/minecraft/core/block/BlockGlass.java b/src/main/java/net/minecraft/core/block/BlockGlass.java
index 636ba6b05..5b90ae5c6 100644
--- a/src/main/java/net/minecraft/core/block/BlockGlass.java
+++ b/src/main/java/net/minecraft/core/block/BlockGlass.java
@@ -6,9 +6,6 @@ import net.minecraft.core.enums.EnumDropCause;
 import net.minecraft.core.item.ItemStack;
 import net.minecraft.core.world.World;
 
-// Referenced classes of package net.minecraft.src:
-//            BlockBreakable, Material
-
 public class BlockGlass extends BlockTransparent
 {
 
diff --git a/src/main/java/net/minecraft/core/block/BlockGlassTinted.java b/src/main/java/net/minecraft/core/block/BlockGlassTinted.java
index 977d919e2..70a0b6acc 100644
--- a/src/main/java/net/minecraft/core/block/BlockGlassTinted.java
+++ b/src/main/java/net/minecraft/core/block/BlockGlassTinted.java
@@ -6,9 +6,6 @@ import net.minecraft.core.item.ItemStack;
 import net.minecraft.core.block.material.Material;
 import net.minecraft.core.world.World;
 
-// Referenced classes of package net.minecraft.src:
-//            BlockBreakable, Material
-
 public class BlockGlassTinted extends BlockGlass
 {
 
diff --git a/src/main/java/net/minecraft/core/block/BlockGlowStone.java b/src/main/java/net/minecraft/core/block/BlockGlowStone.java
index 106033879..01954344b 100644
--- a/src/main/java/net/minecraft/core/block/BlockGlowStone.java
+++ b/src/main/java/net/minecraft/core/block/BlockGlowStone.java
@@ -8,9 +8,6 @@ import net.minecraft.core.block.material.Material;
 import net.minecraft.core.world.World;
 import net.minecraft.core.world.WorldSource;
 
-// Referenced classes of package net.minecraft.src:
-//            Block, Item, Material
-
 public class BlockGlowStone extends Block
 {
 
diff --git a/src/main/java/net/minecraft/core/block/BlockGrass.java b/src/main/java/net/minecraft/core/block/BlockGrass.java
index cd3067d3c..ff174acca 100644
--- a/src/main/java/net/minecraft/core/block/BlockGrass.java
+++ b/src/main/java/net/minecraft/core/block/BlockGrass.java
@@ -1,7 +1,6 @@
 package net.minecraft.core.block;
 
 import java.util.Random;
-
 import net.minecraft.core.block.entity.TileEntity;
 import net.minecraft.core.block.material.Material;
 import net.minecraft.core.data.gamerule.GameRules;
@@ -10,16 +9,9 @@ import net.minecraft.core.item.ItemStack;
 import net.minecraft.core.world.World;
 import net.minecraft.core.world.biome.Biome;
 import net.minecraft.core.world.biome.Biomes;
-import net.minecraft.core.world.noise.ImprovedNoise;
-
-// Referenced classes of package net.minecraft.src:
-//            Block, Material, IBlockAccess, WorldChunkManager, 
-//            ColorizerGrass, World
 
 public class BlockGrass extends Block
 {
-    private static ImprovedNoise grassColorPerlin = new ImprovedNoise(new Random(0));
-
     public BlockGrass(String key, String namespaceId, int id, Material material)
     {
         super(key, namespaceId, id, material);
diff --git a/src/main/java/net/minecraft/core/block/BlockGravel.java b/src/main/java/net/minecraft/core/block/BlockGravel.java
index 0b1dd2b1d..09c457898 100644
--- a/src/main/java/net/minecraft/core/block/BlockGravel.java
+++ b/src/main/java/net/minecraft/core/block/BlockGravel.java
@@ -6,9 +6,6 @@ import net.minecraft.core.item.Items;
 import net.minecraft.core.item.ItemStack;
 import net.minecraft.core.world.World;
 
-// Referenced classes of package net.minecraft.src:
-//            BlockSand, Item
-
 public class BlockGravel extends BlockSand
 {
 
diff --git a/src/main/java/net/minecraft/core/block/BlockIce.java b/src/main/java/net/minecraft/core/block/BlockIce.java
index 24802c980..ce9e6d447 100644
--- a/src/main/java/net/minecraft/core/block/BlockIce.java
+++ b/src/main/java/net/minecraft/core/block/BlockIce.java
@@ -10,10 +10,6 @@ import net.minecraft.core.world.World;
 
 import java.util.Random;
 
-// Referenced classes of package net.minecraft.src:
-//            BlockBreakable, Material, World, Block, 
-//            EnumSkyBlock, IBlockAccess, Player
-
 public class BlockIce extends BlockTransparent
 {
 
diff --git a/src/main/java/net/minecraft/core/block/BlockJukebox.java b/src/main/java/net/minecraft/core/block/BlockJukebox.java
index daed5484d..f83a6c989 100644
--- a/src/main/java/net/minecraft/core/block/BlockJukebox.java
+++ b/src/main/java/net/minecraft/core/block/BlockJukebox.java
@@ -1,9 +1,5 @@
 package net.minecraft.core.block;
 
-// Referenced classes of package net.minecraft.src:
-//            BlockContainer, Material, World, TileEntityJukebox,
-//            EntityItem, ItemStack, Player, TileEntity
-
 import net.minecraft.core.block.entity.TileEntityActivator;
 import net.minecraft.core.block.entity.TileEntity;
 import net.minecraft.core.block.entity.TileEntityJukebox;
diff --git a/src/main/java/net/minecraft/core/block/BlockLayerBase.java b/src/main/java/net/minecraft/core/block/BlockLayerBase.java
index c5e64424f..8c986ae15 100644
--- a/src/main/java/net/minecraft/core/block/BlockLayerBase.java
+++ b/src/main/java/net/minecraft/core/block/BlockLayerBase.java
@@ -7,11 +7,6 @@ import net.minecraft.core.world.WorldSource;
 
 import java.util.function.Supplier;
 
-// Referenced classes of package net.minecraft.src:
-//            Block, Material, World, AxisAlignedBB, 
-//            IBlockAccess, Item, EntityItem, ItemStack,
-//            StatList, Player, EnumSkyBlock
-
 public abstract class BlockLayerBase extends Block
 {
     private Supplier<Integer> idSupplier = () -> -1;
diff --git a/src/main/java/net/minecraft/core/block/BlockLayerLeaves.java b/src/main/java/net/minecraft/core/block/BlockLayerLeaves.java
index 7e4d56ecc..1dacf8349 100644
--- a/src/main/java/net/minecraft/core/block/BlockLayerLeaves.java
+++ b/src/main/java/net/minecraft/core/block/BlockLayerLeaves.java
@@ -1,6 +1,5 @@
 package net.minecraft.core.block;
 
-
 import net.minecraft.core.block.entity.TileEntity;
 import net.minecraft.core.enums.EnumDropCause;
 import net.minecraft.core.item.ItemStack;
@@ -11,11 +10,6 @@ import net.minecraft.core.world.WorldSource;
 
 import java.util.Random;
 
-// Referenced classes of package net.minecraft.src:
-//            Block, Material, World, AxisAlignedBB, 
-//            IBlockAccess, Item, EntityItem, ItemStack,
-//            StatList, Player, EnumSkyBlock
-
 public class BlockLayerLeaves extends BlockLayerBase
 {
     public static final int MASK_PERMANENT = 0b1000_0000;
diff --git a/src/main/java/net/minecraft/core/block/BlockLayerSnow.java b/src/main/java/net/minecraft/core/block/BlockLayerSnow.java
index 3849499c3..585600eae 100644
--- a/src/main/java/net/minecraft/core/block/BlockLayerSnow.java
+++ b/src/main/java/net/minecraft/core/block/BlockLayerSnow.java
@@ -12,11 +12,6 @@ import net.minecraft.core.world.WorldSource;
 
 import java.util.Random;
 
-// Referenced classes of package net.minecraft.src:
-//            Block, Material, World, AxisAlignedBB, 
-//            IBlockAccess, Item, EntityItem, ItemStack,
-//            StatList, Player, EnumSkyBlock
-
 public class BlockLayerSnow extends BlockLayerBase
 {
 
@@ -102,7 +97,7 @@ public class BlockLayerSnow extends BlockLayerBase
             dropBlockWithCause(world, EnumDropCause.WORLD, x, y, z, world.getBlockMetadata(x, y, z), null, null);
 			world.setBlockWithNotify(x, y, z, 0);
 		}
-        if(world.getBlockBiome(x, y, z) != null && !world.getBlockBiome(x, y, z).hasSurfaceSnow() && world.getSeasonManager().getCurrentSeason() != null && world.getSeasonManager().getCurrentSeason().letWeatherCleanUpSnow)
+        if(!world.getBlockBiome(x, y, z).hasSurfaceSnow() && world.getSeasonManager().getCurrentSeason() != null && world.getSeasonManager().getCurrentSeason().letWeatherCleanUpSnow)
         {
             dropBlockWithCause(world, EnumDropCause.WORLD, x, y, z, world.getBlockMetadata(x, y, z), null, null);
             world.setBlockWithNotify(x, y, z, 0);
diff --git a/src/main/java/net/minecraft/core/block/BlockLeavesBase.java b/src/main/java/net/minecraft/core/block/BlockLeavesBase.java
index 165a70e13..a0a1277fe 100644
--- a/src/main/java/net/minecraft/core/block/BlockLeavesBase.java
+++ b/src/main/java/net/minecraft/core/block/BlockLeavesBase.java
@@ -14,9 +14,6 @@ import net.minecraft.core.world.WorldSource;
 import net.minecraft.core.world.season.Season;
 import org.jetbrains.annotations.Nullable;
 
-// Referenced classes of package net.minecraft.src:
-//            Block, IBlockAccess, Material
-
 public abstract class BlockLeavesBase extends Block
 {
     public static final int MASK_DECAY_DATA = 0b0000_1111;
diff --git a/src/main/java/net/minecraft/core/block/BlockLeavesBirch.java b/src/main/java/net/minecraft/core/block/BlockLeavesBirch.java
index 84281eec2..e7ea149ff 100644
--- a/src/main/java/net/minecraft/core/block/BlockLeavesBirch.java
+++ b/src/main/java/net/minecraft/core/block/BlockLeavesBirch.java
@@ -2,12 +2,6 @@ package net.minecraft.core.block;
 
 import net.minecraft.core.block.material.Material;
 
-// Referenced classes of package net.minecraft.src:
-//            BlockLeavesBase, Material, ColorizerFoliage, IBlockAccess,
-//            WorldChunkManager, World, Block, Player,
-//            ItemStack, Item, ItemShears, StatList, 
-//            Entity
-
 public class BlockLeavesBirch extends BlockLeavesBase
 {
 
diff --git a/src/main/java/net/minecraft/core/block/BlockLeavesCherry.java b/src/main/java/net/minecraft/core/block/BlockLeavesCherry.java
index 57e707f5e..7586cca01 100644
--- a/src/main/java/net/minecraft/core/block/BlockLeavesCherry.java
+++ b/src/main/java/net/minecraft/core/block/BlockLeavesCherry.java
@@ -6,12 +6,6 @@ import net.minecraft.core.world.season.Seasons;
 
 import java.util.Random;
 
-// Referenced classes of package net.minecraft.src:
-//            BlockLeavesBase, Material, ColorizerFoliage, IBlockAccess,
-//            WorldChunkManager, World, Block, Player,
-//            ItemStack, Item, ItemShears, StatList, 
-//            Entity
-
 public class BlockLeavesCherry extends BlockLeavesBase
 {
 
diff --git a/src/main/java/net/minecraft/core/block/BlockLeavesEucalyptus.java b/src/main/java/net/minecraft/core/block/BlockLeavesEucalyptus.java
index ace4ab8d5..90c2efb10 100644
--- a/src/main/java/net/minecraft/core/block/BlockLeavesEucalyptus.java
+++ b/src/main/java/net/minecraft/core/block/BlockLeavesEucalyptus.java
@@ -5,12 +5,6 @@ import net.minecraft.core.block.material.Material;
 
 import java.util.Random;
 
-// Referenced classes of package net.minecraft.src:
-//            BlockLeavesBase, Material, ColorizerFoliage, IBlockAccess,
-//            WorldChunkManager, World, Block, Player,
-//            ItemStack, Item, ItemShears, StatList, 
-//            Entity
-
 public class BlockLeavesEucalyptus extends BlockLeavesBase
 {
 
diff --git a/src/main/java/net/minecraft/core/block/BlockLeavesOak.java b/src/main/java/net/minecraft/core/block/BlockLeavesOak.java
index 5c41efdbf..5426f8027 100644
--- a/src/main/java/net/minecraft/core/block/BlockLeavesOak.java
+++ b/src/main/java/net/minecraft/core/block/BlockLeavesOak.java
@@ -6,12 +6,6 @@ import net.minecraft.core.world.wind.WindProvider;
 
 import java.util.Random;
 
-// Referenced classes of package net.minecraft.src:
-//            BlockLeavesBase, Material, ColorizerFoliage, IBlockAccess,
-//            WorldChunkManager, World, Block, Player,
-//            ItemStack, Item, ItemShears, StatList, 
-//            Entity
-
 public class BlockLeavesOak extends BlockLeavesBase
 {
 	public BlockLeavesOak(String key, String namespaceId, int id)
diff --git a/src/main/java/net/minecraft/core/block/BlockLeavesPine.java b/src/main/java/net/minecraft/core/block/BlockLeavesPine.java
index 59b825eed..91102df67 100644
--- a/src/main/java/net/minecraft/core/block/BlockLeavesPine.java
+++ b/src/main/java/net/minecraft/core/block/BlockLeavesPine.java
@@ -6,12 +6,6 @@ import net.minecraft.core.item.ItemStack;
 import net.minecraft.core.world.World;
 import net.minecraft.core.block.material.Material;
 
-// Referenced classes of package net.minecraft.src:
-//            BlockLeavesBase, Material, ColorizerFoliage, IBlockAccess,
-//            WorldChunkManager, World, Block, Player,
-//            ItemStack, Item, ItemShears, StatList, 
-//            Entity
-
 public class BlockLeavesPine extends BlockLeavesBase
 {
 
diff --git a/src/main/java/net/minecraft/core/block/BlockLeavesShrub.java b/src/main/java/net/minecraft/core/block/BlockLeavesShrub.java
index 25a65f5f3..92b3f9e93 100644
--- a/src/main/java/net/minecraft/core/block/BlockLeavesShrub.java
+++ b/src/main/java/net/minecraft/core/block/BlockLeavesShrub.java
@@ -5,12 +5,6 @@ import net.minecraft.core.block.material.Material;
 
 import java.util.Random;
 
-// Referenced classes of package net.minecraft.src:
-//            BlockLeavesBase, Material, ColorizerFoliage, IBlockAccess,
-//            WorldChunkManager, World, Block, Player,
-//            ItemStack, Item, ItemShears, StatList,
-//            Entity
-
 public class BlockLeavesShrub extends BlockLeavesBase
 {
 
diff --git a/src/main/java/net/minecraft/core/block/BlockMesh.java b/src/main/java/net/minecraft/core/block/BlockMesh.java
index 41b2e5072..b3234266a 100644
--- a/src/main/java/net/minecraft/core/block/BlockMesh.java
+++ b/src/main/java/net/minecraft/core/block/BlockMesh.java
@@ -1,8 +1,5 @@
 package net.minecraft.core.block;
 
-// Referenced classes of package net.minecraft.src:
-//            Block, Material
-
 import net.minecraft.core.block.material.Material;
 import net.minecraft.core.entity.Entity;
 import net.minecraft.core.entity.EntityItem;
diff --git a/src/main/java/net/minecraft/core/block/BlockMotionSensor.java b/src/main/java/net/minecraft/core/block/BlockMotionSensor.java
index 8e46f86b9..7f9756446 100644
--- a/src/main/java/net/minecraft/core/block/BlockMotionSensor.java
+++ b/src/main/java/net/minecraft/core/block/BlockMotionSensor.java
@@ -13,10 +13,6 @@ import net.minecraft.core.util.helper.Side;
 import net.minecraft.core.world.World;
 import net.minecraft.core.world.WorldSource;
 
-// Referenced classes of package net.minecraft.src:
-//            Block, Material, World, Item,
-//            Player, Entity
-
 public class BlockMotionSensor extends BlockTileEntityVeryRotatable
 {
     public final boolean isActive;
diff --git a/src/main/java/net/minecraft/core/block/BlockMushroom.java b/src/main/java/net/minecraft/core/block/BlockMushroom.java
index 6dbe3bc43..9d7383156 100644
--- a/src/main/java/net/minecraft/core/block/BlockMushroom.java
+++ b/src/main/java/net/minecraft/core/block/BlockMushroom.java
@@ -4,9 +4,6 @@ import net.minecraft.core.world.World;
 
 import java.util.Random;
 
-// Referenced classes of package net.minecraft.src:
-//            BlockFlower, World, Block
-
 public class BlockMushroom extends BlockFlower
 {
 
diff --git a/src/main/java/net/minecraft/core/block/BlockOreCoal.java b/src/main/java/net/minecraft/core/block/BlockOreCoal.java
index 2e212cf41..4ba57e030 100644
--- a/src/main/java/net/minecraft/core/block/BlockOreCoal.java
+++ b/src/main/java/net/minecraft/core/block/BlockOreCoal.java
@@ -10,9 +10,6 @@ import net.minecraft.core.world.World;
 import java.util.HashMap;
 import java.util.Map;
 
-// Referenced classes of package net.minecraft.src:
-//            Block, Material, Item
-
 public class BlockOreCoal extends Block
 {
     public static Map<Integer, Integer> variantMap = new HashMap<>();
diff --git a/src/main/java/net/minecraft/core/block/BlockOreDiamond.java b/src/main/java/net/minecraft/core/block/BlockOreDiamond.java
index 172becdc1..56f61dd6a 100644
--- a/src/main/java/net/minecraft/core/block/BlockOreDiamond.java
+++ b/src/main/java/net/minecraft/core/block/BlockOreDiamond.java
@@ -10,9 +10,6 @@ import net.minecraft.core.world.World;
 import java.util.HashMap;
 import java.util.Map;
 
-// Referenced classes of package net.minecraft.src:
-//            Block, Material, Item
-
 public class BlockOreDiamond extends Block
 {
     public static Map<Integer, Integer> variantMap = new HashMap<>();
diff --git a/src/main/java/net/minecraft/core/block/BlockOreRedstone.java b/src/main/java/net/minecraft/core/block/BlockOreRedstone.java
index 92ea40c37..188e28b22 100644
--- a/src/main/java/net/minecraft/core/block/BlockOreRedstone.java
+++ b/src/main/java/net/minecraft/core/block/BlockOreRedstone.java
@@ -15,10 +15,6 @@ import java.util.Map;
 import java.util.Random;
 import java.util.function.Supplier;
 
-// Referenced classes of package net.minecraft.src:
-//            Block, Material, World, Item, 
-//            Player, Entity
-
 public class BlockOreRedstone extends Block
 {
     public static Map<Integer, Integer> variantMap = new HashMap<>();
diff --git a/src/main/java/net/minecraft/core/block/BlockPathDirt.java b/src/main/java/net/minecraft/core/block/BlockPathDirt.java
index 81fda1d8a..19b8f929f 100644
--- a/src/main/java/net/minecraft/core/block/BlockPathDirt.java
+++ b/src/main/java/net/minecraft/core/block/BlockPathDirt.java
@@ -7,10 +7,6 @@ import net.minecraft.core.item.ItemStack;
 import net.minecraft.core.block.material.Material;
 import net.minecraft.core.world.World;
 import net.minecraft.core.world.WorldSource;
-//updated
-// Referenced classes of package net.minecraft.src:
-//            Block, Material, AxisAlignedBB, World,
-//            Entity
 
 public class BlockPathDirt extends Block
 {
diff --git a/src/main/java/net/minecraft/core/block/BlockPortal.java b/src/main/java/net/minecraft/core/block/BlockPortal.java
index fe010dbc8..5b38bb027 100644
--- a/src/main/java/net/minecraft/core/block/BlockPortal.java
+++ b/src/main/java/net/minecraft/core/block/BlockPortal.java
@@ -16,10 +16,6 @@ import org.jetbrains.annotations.Nullable;
 
 import java.util.Random;
 
-// Referenced classes of package net.minecraft.src:
-//            BlockBreakable, Material, IBlockAccess, World, 
-//            Block, BlockFire, Entity, AxisAlignedBB
-
 public class BlockPortal extends BlockTransparent implements IPainted
 {
     public static final int MAX_PORTAL_SIZE = 32;
diff --git a/src/main/java/net/minecraft/core/block/BlockPumpkin.java b/src/main/java/net/minecraft/core/block/BlockPumpkin.java
index faec7f541..ea902c242 100644
--- a/src/main/java/net/minecraft/core/block/BlockPumpkin.java
+++ b/src/main/java/net/minecraft/core/block/BlockPumpkin.java
@@ -1,9 +1,5 @@
 package net.minecraft.core.block;
 
-// Referenced classes of package net.minecraft.src:
-//            Block, Material, World, Mob,
-//            MathHelper
-
 import net.minecraft.core.block.material.Material;
 import net.minecraft.core.block.material.MaterialColor;
 import net.minecraft.core.entity.player.Player;
diff --git a/src/main/java/net/minecraft/core/block/BlockSand.java b/src/main/java/net/minecraft/core/block/BlockSand.java
index 748f7b1af..66e9fd101 100644
--- a/src/main/java/net/minecraft/core/block/BlockSand.java
+++ b/src/main/java/net/minecraft/core/block/BlockSand.java
@@ -7,10 +7,6 @@ import net.minecraft.core.world.World;
 
 import java.util.Random;
 
-// Referenced classes of package net.minecraft.src:
-//            Block, Material, World, EntityFallingBlock,
-//            BlockFire
-
 public class BlockSand extends Block
 {
 
diff --git a/src/main/java/net/minecraft/core/block/BlockSaplingBase.java b/src/main/java/net/minecraft/core/block/BlockSaplingBase.java
index 3f11ee255..37e9ef662 100644
--- a/src/main/java/net/minecraft/core/block/BlockSaplingBase.java
+++ b/src/main/java/net/minecraft/core/block/BlockSaplingBase.java
@@ -10,10 +10,6 @@ import net.minecraft.core.util.helper.Side;
 import net.minecraft.core.world.World;
 import org.jetbrains.annotations.Nullable;
 
-// Referenced classes of package net.minecraft.src:
-//            BlockFlower, World, WorldGenTaiga2, WorldGenForest,
-//            WorldGenTrees, WorldGenBigTree, WorldGenerator
-
 public abstract class BlockSaplingBase extends BlockFlower implements IBonemealable
 {
 	public boolean canGrowOnSand = false;
diff --git a/src/main/java/net/minecraft/core/block/BlockSaplingBirch.java b/src/main/java/net/minecraft/core/block/BlockSaplingBirch.java
index 7545f9390..9b92072a0 100644
--- a/src/main/java/net/minecraft/core/block/BlockSaplingBirch.java
+++ b/src/main/java/net/minecraft/core/block/BlockSaplingBirch.java
@@ -6,10 +6,6 @@ import net.minecraft.core.world.generate.feature.WorldFeature;
 
 import java.util.Random;
 
-// Referenced classes of package net.minecraft.src:
-//            BlockFlower, World, WorldGenTaiga2, WorldGenForest,
-//            WorldGenTrees, WorldGenBigTree, WorldGenerator
-
 public class BlockSaplingBirch extends BlockSaplingBase
 {
 
@@ -22,13 +18,12 @@ public class BlockSaplingBirch extends BlockSaplingBase
     @Override
 	public void growTree(World world, int x, int y, int z, Random random)
     {
-    	Object obj = null;
 
-    	world.setBlock(x, y, z, 0);
+        world.setBlock(x, y, z, 0);
 
-    	obj = new WorldFeatureTree(Blocks.LEAVES_BIRCH.id, Blocks.LOG_BIRCH.id, 5);
+        WorldFeature tree = new WorldFeatureTree(Blocks.LEAVES_BIRCH.id, Blocks.LOG_BIRCH.id, 5);
 
-        if(!((WorldFeature) (obj)).place(world, random, x, y, z))
+        if(!tree.place(world, random, x, y, z))
         {
             world.setBlock(x, y, z, id);
         }
diff --git a/src/main/java/net/minecraft/core/block/BlockSaplingCherry.java b/src/main/java/net/minecraft/core/block/BlockSaplingCherry.java
index 1c45f2f8a..2da2ab4a8 100644
--- a/src/main/java/net/minecraft/core/block/BlockSaplingCherry.java
+++ b/src/main/java/net/minecraft/core/block/BlockSaplingCherry.java
@@ -7,10 +7,6 @@ import net.minecraft.core.world.generate.feature.WorldFeature;
 import net.minecraft.core.world.generate.feature.tree.WorldFeatureTreeCherry;
 import net.minecraft.core.world.generate.feature.tree.WorldFeatureTreeFancy;
 
-// Referenced classes of package net.minecraft.src:
-//            BlockFlower, World, WorldGenTaiga2, WorldGenForest,
-//            WorldGenTrees, WorldGenBigTree, WorldGenerator
-
 public class BlockSaplingCherry extends BlockSaplingBase
 {
 
@@ -22,13 +18,13 @@ public class BlockSaplingCherry extends BlockSaplingBase
     @Override
 	public void growTree(World world, int x, int y, int z, Random random)
     {
-        Object treeBig  = new WorldFeatureTreeFancy(Blocks.LEAVES_CHERRY.id, Blocks.LOG_CHERRY.id);
-        Object treeSmall = new WorldFeatureTreeCherry(Blocks.LEAVES_CHERRY.id, Blocks.LOG_CHERRY.id, 4);
+        WorldFeature treeBig  = new WorldFeatureTreeFancy(Blocks.LEAVES_CHERRY.id, Blocks.LOG_CHERRY.id);
+        WorldFeature treeSmall = new WorldFeatureTreeCherry(Blocks.LEAVES_CHERRY.id, Blocks.LOG_CHERRY.id, 4);
         world.setBlock(x, y, z, 0);
 
-        if(!((WorldFeature) (treeSmall)).place(world, random, x, y, z))
+        if(!treeSmall.place(world, random, x, y, z))
         {
-            if(!((WorldFeature) (treeBig)).place(world, random, x, y, z)) {
+            if(!treeBig.place(world, random, x, y, z)) {
                 world.setBlock(x, y, z, id);
             }
         }
diff --git a/src/main/java/net/minecraft/core/block/BlockSaplingEucalyptus.java b/src/main/java/net/minecraft/core/block/BlockSaplingEucalyptus.java
index bb98975f9..db7174b2b 100644
--- a/src/main/java/net/minecraft/core/block/BlockSaplingEucalyptus.java
+++ b/src/main/java/net/minecraft/core/block/BlockSaplingEucalyptus.java
@@ -6,10 +6,6 @@ import net.minecraft.core.world.generate.feature.WorldFeature;
 
 import java.util.Random;
 
-// Referenced classes of package net.minecraft.src:
-//            BlockFlower, World, WorldGenTaiga2, WorldGenForest,
-//            WorldGenTrees, WorldGenBigTree, WorldGenerator
-
 public class BlockSaplingEucalyptus extends BlockSaplingBase
 {
 
@@ -21,13 +17,12 @@ public class BlockSaplingEucalyptus extends BlockSaplingBase
     @Override
 	public void growTree(World world, int x, int y, int z, Random random)
     {
-    	WorldFeature obj = null;
-        
-    	world.setBlock(x, y, z, 0);
-        
-        obj = new WorldFeatureTreeEucalyptus(Blocks.LEAVES_EUCALYPTUS.id, Blocks.LOG_EUCALYPTUS.id);
-        obj.init(1.0D, 1.0D, 1.0D);
-        if(!obj.place(world, random, x, y, z))
+
+        world.setBlock(x, y, z, 0);
+
+        WorldFeature tree = new WorldFeatureTreeEucalyptus(Blocks.LEAVES_EUCALYPTUS.id, Blocks.LOG_EUCALYPTUS.id);
+        tree.init(1.0D, 1.0D, 1.0D);
+        if(!tree.place(world, random, x, y, z))
         {
             world.setBlock(x, y, z, id);
         }
diff --git a/src/main/java/net/minecraft/core/block/BlockSaplingOak.java b/src/main/java/net/minecraft/core/block/BlockSaplingOak.java
index e359156e6..3e4cacce2 100644
--- a/src/main/java/net/minecraft/core/block/BlockSaplingOak.java
+++ b/src/main/java/net/minecraft/core/block/BlockSaplingOak.java
@@ -7,10 +7,6 @@ import net.minecraft.core.world.generate.feature.WorldFeature;
 
 import java.util.Random;
 
-// Referenced classes of package net.minecraft.src:
-//            BlockFlower, World, WorldGenTaiga2, WorldGenForest,
-//            WorldGenTrees, WorldGenBigTree, WorldGenerator
-
 public class BlockSaplingOak extends BlockSaplingBase
 {
 
@@ -22,13 +18,13 @@ public class BlockSaplingOak extends BlockSaplingBase
     @Override
 	public void growTree(World world, int x, int y, int z, Random random)
     {
-    	Object treeBig = new WorldFeatureTreeFancy(Blocks.LEAVES_OAK.id, Blocks.LOG_OAK.id);
-        Object treeSmall = new WorldFeatureTree(Blocks.LEAVES_OAK.id, Blocks.LOG_OAK.id, 4);
+    	WorldFeature treeBig = new WorldFeatureTreeFancy(Blocks.LEAVES_OAK.id, Blocks.LOG_OAK.id);
+        WorldFeature treeSmall = new WorldFeatureTree(Blocks.LEAVES_OAK.id, Blocks.LOG_OAK.id, 4);
     	world.setBlock(x, y, z, 0);
 
-        if(!((WorldFeature) (treeSmall)).place(world, random, x, y, z))
+        if(!treeSmall.place(world, random, x, y, z))
         {
-            if(!((WorldFeature) (treeBig)).place(world, random, x, y, z)) {
+            if(!treeBig.place(world, random, x, y, z)) {
                 world.setBlock(x, y, z, id);
             }
         }
diff --git a/src/main/java/net/minecraft/core/block/BlockSaplingPine.java b/src/main/java/net/minecraft/core/block/BlockSaplingPine.java
index 3e66bae0e..f783e9865 100644
--- a/src/main/java/net/minecraft/core/block/BlockSaplingPine.java
+++ b/src/main/java/net/minecraft/core/block/BlockSaplingPine.java
@@ -7,10 +7,6 @@ import net.minecraft.core.world.generate.feature.WorldFeature;
 
 import java.util.Random;
 
-// Referenced classes of package net.minecraft.src:
-//            BlockFlower, World, WorldGenTaiga2, WorldGenForest,
-//            WorldGenTrees, WorldGenBigTree, WorldGenerator
-
 public class BlockSaplingPine extends BlockSaplingBase
 {
 
diff --git a/src/main/java/net/minecraft/core/block/BlockSaplingRetro.java b/src/main/java/net/minecraft/core/block/BlockSaplingRetro.java
index 0e553cd7e..24e2c885b 100644
--- a/src/main/java/net/minecraft/core/block/BlockSaplingRetro.java
+++ b/src/main/java/net/minecraft/core/block/BlockSaplingRetro.java
@@ -7,10 +7,6 @@ import net.minecraft.core.world.generate.feature.WorldFeature;
 
 import java.util.Random;
 
-// Referenced classes of package net.minecraft.src:
-//            BlockFlower, World, WorldGenTaiga2, WorldGenForest,
-//            WorldGenTrees, WorldGenBigTree, WorldGenerator
-
 public class BlockSaplingRetro extends BlockSaplingBase
 {
 
@@ -23,13 +19,13 @@ public class BlockSaplingRetro extends BlockSaplingBase
     @Override
 	public void growTree(World world, int x, int y, int z, Random random)
     {
-        Object treeBig  = new WorldFeatureTreeFancy(Blocks.LEAVES_OAK_RETRO.id, Blocks.LOG_OAK.id);
-        Object treeSmall = new WorldFeatureTree(Blocks.LEAVES_OAK_RETRO.id, Blocks.LOG_OAK.id, 4);
+        WorldFeature treeBig  = new WorldFeatureTreeFancy(Blocks.LEAVES_OAK_RETRO.id, Blocks.LOG_OAK.id);
+        WorldFeature treeSmall = new WorldFeatureTree(Blocks.LEAVES_OAK_RETRO.id, Blocks.LOG_OAK.id, 4);
         world.setBlock(x, y, z, 0);
 
-        if(!((WorldFeature) (treeSmall)).place(world, random, x, y, z))
+        if(!treeSmall.place(world, random, x, y, z))
         {
-            if(!((WorldFeature) (treeBig)).place(world, random, x, y, z)) {
+            if(!treeBig.place(world, random, x, y, z)) {
                 world.setBlock(x, y, z, id);
             }
         }
diff --git a/src/main/java/net/minecraft/core/block/BlockSaplingShrub.java b/src/main/java/net/minecraft/core/block/BlockSaplingShrub.java
index defa974ab..4a329f5e7 100644
--- a/src/main/java/net/minecraft/core/block/BlockSaplingShrub.java
+++ b/src/main/java/net/minecraft/core/block/BlockSaplingShrub.java
@@ -6,10 +6,6 @@ import net.minecraft.core.world.generate.feature.WorldFeature;
 
 import java.util.Random;
 
-// Referenced classes of package net.minecraft.src:
-//            BlockFlower, World, WorldGenTaiga2, WorldGenForest,
-//            WorldGenTrees, WorldGenBigTree, WorldGenerator
-
 public class BlockSaplingShrub extends BlockSaplingBase
 {
 
@@ -21,13 +17,12 @@ public class BlockSaplingShrub extends BlockSaplingBase
     @Override
 	public void growTree(World world, int x, int y, int z, Random random)
     {
-    	Object obj = null;
-        
-    	world.setBlock(x, y, z, 0);
-        
-    	obj = new WorldFeatureTreeShrub(Blocks.LEAVES_SHRUB.id, Blocks.LOG_OAK.id);
+
+        world.setBlock(x, y, z, 0);
+
+        WorldFeature tree = new WorldFeatureTreeShrub(Blocks.LEAVES_SHRUB.id, Blocks.LOG_OAK.id);
         
-        if(!((WorldFeature) (obj)).place(world, random, x, y, z))
+        if(!tree.place(world, random, x, y, z))
         {
             world.setBlock(x, y, z, id);
         }
diff --git a/src/main/java/net/minecraft/core/block/BlockSaplingThorn.java b/src/main/java/net/minecraft/core/block/BlockSaplingThorn.java
index 25a8bdb33..59ba350e7 100644
--- a/src/main/java/net/minecraft/core/block/BlockSaplingThorn.java
+++ b/src/main/java/net/minecraft/core/block/BlockSaplingThorn.java
@@ -18,10 +18,9 @@ public class BlockSaplingThorn extends BlockSaplingBase
     @Override
     public void growTree(World world, int x, int y, int z, Random random)
     {
-        WorldFeature treeFeature = null;
 
         world.setBlock(x, y, z, 0);
-        treeFeature = new WorldFeatureTreeThorn(1, Blocks.LOG_THORN.id, 0, Blocks.LEAVES_THORN.id, 0);
+        WorldFeature treeFeature = new WorldFeatureTreeThorn(1, Blocks.LOG_THORN.id, 0, Blocks.LEAVES_THORN.id, 0);
 
         if(!treeFeature.place(world, random, x, y, z))
         {
diff --git a/src/main/java/net/minecraft/core/block/BlockSlab.java b/src/main/java/net/minecraft/core/block/BlockSlab.java
index 2c410d618..9bce7fba7 100644
--- a/src/main/java/net/minecraft/core/block/BlockSlab.java
+++ b/src/main/java/net/minecraft/core/block/BlockSlab.java
@@ -18,9 +18,6 @@ import org.jetbrains.annotations.NotNull;
 
 import java.util.Random;
 
-// Referenced classes of package net.minecraft.src:
-//            Block, Material, World, IBlockAccess
-
 public class BlockSlab extends Block
 {
 
diff --git a/src/main/java/net/minecraft/core/block/BlockSnow.java b/src/main/java/net/minecraft/core/block/BlockSnow.java
index 12f55c4cc..1edae8d5c 100644
--- a/src/main/java/net/minecraft/core/block/BlockSnow.java
+++ b/src/main/java/net/minecraft/core/block/BlockSnow.java
@@ -10,10 +10,6 @@ import net.minecraft.core.block.material.Material;
 
 import java.util.Random;
 
-// Referenced classes of package net.minecraft.src:
-//            Block, Material, Item, EnumSkyBlock, 
-//            World
-
 public class BlockSnow extends Block
 {
 
diff --git a/src/main/java/net/minecraft/core/block/BlockSoulSand.java b/src/main/java/net/minecraft/core/block/BlockSoulSand.java
index 4772523d2..3086d2d15 100644
--- a/src/main/java/net/minecraft/core/block/BlockSoulSand.java
+++ b/src/main/java/net/minecraft/core/block/BlockSoulSand.java
@@ -1,10 +1,5 @@
 package net.minecraft.core.block;
 
-
-// Referenced classes of package net.minecraft.src:
-//            Block, Material, AxisAlignedBB, Entity, 
-//            World
-
 import net.minecraft.core.util.phys.AABB;
 import net.minecraft.core.entity.Entity;
 import net.minecraft.core.block.material.Material;
diff --git a/src/main/java/net/minecraft/core/block/BlockSpinifex.java b/src/main/java/net/minecraft/core/block/BlockSpinifex.java
index 7e428a88a..d8d413723 100644
--- a/src/main/java/net/minecraft/core/block/BlockSpinifex.java
+++ b/src/main/java/net/minecraft/core/block/BlockSpinifex.java
@@ -5,9 +5,6 @@ import net.minecraft.core.enums.EnumDropCause;
 import net.minecraft.core.item.ItemStack;
 import net.minecraft.core.world.World;
 
-// Referenced classes of package net.minecraft.src:
-//            BlockFlower, Block
-
 public class BlockSpinifex extends BlockFlower
 {
 
diff --git a/src/main/java/net/minecraft/core/block/BlockSponge.java b/src/main/java/net/minecraft/core/block/BlockSponge.java
index a016fbc3b..37a3a523a 100644
--- a/src/main/java/net/minecraft/core/block/BlockSponge.java
+++ b/src/main/java/net/minecraft/core/block/BlockSponge.java
@@ -1,9 +1,5 @@
 package net.minecraft.core.block;
 
-
-// Referenced classes of package net.minecraft.src:
-//            Block, Material, World
-
 import net.minecraft.core.block.tag.BlockTags;
 import net.minecraft.core.sound.SoundCategory;
 import net.minecraft.core.util.helper.Side;
diff --git a/src/main/java/net/minecraft/core/block/BlockStairs.java b/src/main/java/net/minecraft/core/block/BlockStairs.java
index 55cec6b5f..f132a8296 100644
--- a/src/main/java/net/minecraft/core/block/BlockStairs.java
+++ b/src/main/java/net/minecraft/core/block/BlockStairs.java
@@ -18,11 +18,6 @@ import net.minecraft.core.world.WorldSource;
 import net.minecraft.core.world.World;
 import org.jetbrains.annotations.NotNull;
 
-// Referenced classes of package net.minecraft.src:
-//            Block, World, Mob, MathHelper,
-//            IBlockAccess, AxisAlignedBB, Player, Entity,
-//            Vec3D
-
 public class BlockStairs extends Block
 {
 //    private static final Map<Integer, BoundingVolume> selectionVolumes = new HashMap<>();
diff --git a/src/main/java/net/minecraft/core/block/BlockSugarcane.java b/src/main/java/net/minecraft/core/block/BlockSugarcane.java
index dd13cbcc9..29df647a7 100644
--- a/src/main/java/net/minecraft/core/block/BlockSugarcane.java
+++ b/src/main/java/net/minecraft/core/block/BlockSugarcane.java
@@ -16,10 +16,6 @@ import org.jetbrains.annotations.Nullable;
 
 import java.util.Random;
 
-// Referenced classes of package net.minecraft.src:
-//            Block, Material, World, GrassBlock,
-//            Item, AxisAlignedBB
-
 public class BlockSugarcane extends Block implements IBonemealable
 {
 
diff --git a/src/main/java/net/minecraft/core/block/BlockTallGrass.java b/src/main/java/net/minecraft/core/block/BlockTallGrass.java
index 63d3fb2e8..8ea97d60a 100644
--- a/src/main/java/net/minecraft/core/block/BlockTallGrass.java
+++ b/src/main/java/net/minecraft/core/block/BlockTallGrass.java
@@ -1,16 +1,11 @@
 package net.minecraft.core.block;
 
-
 import net.minecraft.core.block.entity.TileEntity;
 import net.minecraft.core.block.material.MaterialColor;
 import net.minecraft.core.enums.EnumDropCause;
 import net.minecraft.core.item.ItemStack;
 import net.minecraft.core.world.World;
 
-// Referenced classes of package net.minecraft.src:
-//            BlockFlower, IBlockAccess, WorldChunkManager, ColorizerGrass,
-//            Item
-
 public class BlockTallGrass extends BlockFlower
 {
 	public BlockTallGrass(String key, String namespaceId, int id)
@@ -24,7 +19,7 @@ public class BlockTallGrass extends BlockFlower
     @Override
     protected boolean mayPlaceOn(int blockId) {
     	Block block = Block.getBlock(blockId);
-    	if(block != null && block instanceof BlockMoss) {
+    	if(block instanceof BlockMoss) {
     		return true;
     	}
     	return super.mayPlaceOn(blockId);
diff --git a/src/main/java/net/minecraft/core/block/BlockTileEntity.java b/src/main/java/net/minecraft/core/block/BlockTileEntity.java
index 0db0790b0..2ef0bc440 100644
--- a/src/main/java/net/minecraft/core/block/BlockTileEntity.java
+++ b/src/main/java/net/minecraft/core/block/BlockTileEntity.java
@@ -1,9 +1,5 @@
 package net.minecraft.core.block;
 
-
-// Referenced classes of package net.minecraft.src:
-//            Block, World, Material, TileEntity
-
 import net.minecraft.core.block.entity.TileEntity;
 import net.minecraft.core.block.material.Material;
 import net.minecraft.core.world.World;
diff --git a/src/main/java/net/minecraft/core/block/BlockTorch.java b/src/main/java/net/minecraft/core/block/BlockTorch.java
index 9f584b832..b099736fc 100644
--- a/src/main/java/net/minecraft/core/block/BlockTorch.java
+++ b/src/main/java/net/minecraft/core/block/BlockTorch.java
@@ -13,10 +13,6 @@ import org.jetbrains.annotations.NotNull;
 
 import java.util.Random;
 
-// Referenced classes of package net.minecraft.src:
-//            Block, Material, World, AxisAlignedBB, 
-//            Vec3D, MovingObjectPosition
-
 public class BlockTorch extends Block
 {
     public static final int MASK_DIRECTION = 0b0000_0111;
diff --git a/src/main/java/net/minecraft/core/block/BlockWireRedstone.java b/src/main/java/net/minecraft/core/block/BlockWireRedstone.java
index b219e694c..d67503682 100644
--- a/src/main/java/net/minecraft/core/block/BlockWireRedstone.java
+++ b/src/main/java/net/minecraft/core/block/BlockWireRedstone.java
@@ -126,8 +126,7 @@ public class BlockWireRedstone extends Block {
                 if (world.isBlockNormalCube(xi, y0, zi)) {
                     yi += 2;
                 }
-                int targetStrength = 0;
-                targetStrength = checkTarget(world, xi, y0, zi, -1);
+                int targetStrength = checkTarget(world, xi, y0, zi, -1);
                 newStrength = world.getBlockMetadata(x0, y0, z0);
                 if (newStrength > 0) {
                     newStrength--;
diff --git a/src/main/java/net/minecraft/core/block/BlockWorkbench.java b/src/main/java/net/minecraft/core/block/BlockWorkbench.java
index 9fd2a1763..19540ea0e 100644
--- a/src/main/java/net/minecraft/core/block/BlockWorkbench.java
+++ b/src/main/java/net/minecraft/core/block/BlockWorkbench.java
@@ -1,8 +1,5 @@
 package net.minecraft.core.block;
 
-// Referenced classes of package net.minecraft.src:
-//            Block, Material, World, Player
-
 import net.minecraft.core.entity.player.Player;
 import net.minecraft.core.util.helper.Side;
 import net.minecraft.core.block.material.Material;
diff --git a/src/main/java/net/minecraft/core/block/entity/TileEntity.java b/src/main/java/net/minecraft/core/block/entity/TileEntity.java
index 85f29fc2e..41ff5a94d 100644
--- a/src/main/java/net/minecraft/core/block/entity/TileEntity.java
+++ b/src/main/java/net/minecraft/core/block/entity/TileEntity.java
@@ -8,6 +8,7 @@ import net.minecraft.core.entity.Entity;
 import net.minecraft.core.entity.Mob;
 import net.minecraft.core.enums.EnumDropCause;
 import net.minecraft.core.net.packet.Packet;
+import net.minecraft.core.util.collection.NamespaceID;
 import net.minecraft.core.util.helper.MathHelper;
 import net.minecraft.core.util.helper.Side;
 import net.minecraft.core.world.ICarriable;
@@ -102,13 +103,13 @@ public class TileEntity implements ICarriable
 
     public void writeToNBT(CompoundTag nbttagcompound)
     {
-        String name = TileEntityDispatcher.getIDFromClass(getClass());
+        NamespaceID name = TileEntityDispatcher.getIDFromClass(getClass());
         if(name == null)
         {
             throw new RuntimeException(getClass() + " is missing a mapping! This is a bug!");
         } else
         {
-            nbttagcompound.putString("id", name);
+            nbttagcompound.putString("id", name.toString());
             nbttagcompound.putInt("x", x);
             nbttagcompound.putInt("y", y);
             nbttagcompound.putInt("z", z);
diff --git a/src/main/java/net/minecraft/core/block/entity/TileEntityChest.java b/src/main/java/net/minecraft/core/block/entity/TileEntityChest.java
index 3b7846a7b..3b69525d4 100644
--- a/src/main/java/net/minecraft/core/block/entity/TileEntityChest.java
+++ b/src/main/java/net/minecraft/core/block/entity/TileEntityChest.java
@@ -1,10 +1,5 @@
 package net.minecraft.core.block.entity;
 
-
-// Referenced classes of package net.minecraft.src:
-//            TileEntity, IInventory, ItemStack, NBTTagCompound,
-//            NBTTagList, World, Player
-
 import com.mojang.logging.LogUtils;
 import net.minecraft.core.block.Block;
 import net.minecraft.core.block.BlockChest;
diff --git a/src/main/java/net/minecraft/core/block/entity/TileEntityDispatcher.java b/src/main/java/net/minecraft/core/block/entity/TileEntityDispatcher.java
index d28ff8a4b..97f5d0948 100644
--- a/src/main/java/net/minecraft/core/block/entity/TileEntityDispatcher.java
+++ b/src/main/java/net/minecraft/core/block/entity/TileEntityDispatcher.java
@@ -3,6 +3,7 @@ package net.minecraft.core.block.entity;
 import com.mojang.logging.LogUtils;
 import com.mojang.nbt.CompoundTag;
 import net.minecraft.core.block.piston.TileEntityMovingPistonBlock;
+import net.minecraft.core.util.collection.NamespaceID;
 import org.slf4j.Logger;
 
 import java.util.HashMap;
@@ -11,75 +12,133 @@ import java.util.Map;
 public class TileEntityDispatcher {
     private static final Logger LOGGER = LogUtils.getLogger();
 
-    private static final Map<String, Class<? extends TileEntity>> nameToClassMap = new HashMap<>();
-    private static final Map<Class<? extends TileEntity>, String> classToNameMap = new HashMap<>();
+    private static final Map<NamespaceID, Class<? extends TileEntity>> idToClassMap = new HashMap<>();
+    private static final Map<String, Class<? extends TileEntity>> stringToClassMap = new HashMap<>();
+    private static final Map<Class<? extends TileEntity>, NamespaceID> classToIdMap = new HashMap<>();
 
-    public static void addMapping(Class<? extends TileEntity> entityClass, String name)
-    {
-        if(nameToClassMap.containsKey(name))
-        {
-            throw new IllegalArgumentException("Duplicate id: " + name);
-        } else
-        {
-            nameToClassMap.put(name, entityClass);
-            classToNameMap.put(entityClass, name);
+    public static void addMapping(Class<? extends TileEntity> entityClass, NamespaceID id) {
+        if(idToClassMap.containsKey(id)) {
+            throw new IllegalArgumentException("Duplicate id: " + id);
         }
+
+        idToClassMap.put(id, entityClass);
+        stringToClassMap.put(id.toString(), entityClass);
+        classToIdMap.put(entityClass, id);
     }
 
-    public static TileEntity createAndLoadEntity(CompoundTag nbttagcompound)
+    public static TileEntity createAndLoadEntity(CompoundTag compoundTag)
     {
         TileEntity tileEntity = null;
-        Class<? extends TileEntity> entityClass = nameToClassMap.get(nbttagcompound.getString("id"));
-        try
-        {
-            if(entityClass != null)
-            {
+        Class<? extends TileEntity> entityClass = getClassFromID(compoundTag.getString("id"));
+        try {
+            if(entityClass != null) {
                 tileEntity = entityClass.newInstance();
             }
         }
-        catch(Exception exception)
-        {
+        catch(Exception exception) {
             LOGGER.error("Exception when instancing class '{}'!", entityClass.getSimpleName(), exception);
         }
-        if(tileEntity != null)
-        {
-            tileEntity.readFromNBT(nbttagcompound);
-        } else
-        {
-            LOGGER.warn("Skipping TileEntity with id {}", nbttagcompound.getString("id"));
+        if(tileEntity != null) {
+            tileEntity.readFromNBT(compoundTag);
+        } else {
+            LOGGER.warn("Skipping TileEntity with id {}", compoundTag.getString("id"));
         }
         return tileEntity;
     }
 
     public static Class<? extends TileEntity> getClassFromID(String id)
     {
-        return nameToClassMap.get(id);
+        if (Legacy.isLegacyKey(id)) {
+            return Legacy.getClassFromID(id);
+        }
+        return stringToClassMap.get(id);
     }
 
-    public static String getIDFromClass(Class<? extends TileEntity> clazz)
+    public static Class<? extends TileEntity> getClassFromID(NamespaceID id)
     {
-        return classToNameMap.get(clazz);
+        return idToClassMap.get(id);
     }
 
-    static
+    public static NamespaceID getIDFromClass(Class<? extends TileEntity> clazz)
     {
-        // TODO make these ids namespaced
-        addMapping(TileEntityFurnace.class, "Furnace");
-        addMapping(TileEntityChest.class, "Chest");
-        addMapping(TileEntityJukebox.class, "RecordPlayer");
-        addMapping(TileEntityDispenser.class, "Trap");
-        addMapping(TileEntityActivator.class, "Activator");
-        addMapping(TileEntitySign.class, "Sign");
-        addMapping(TileEntityMobSpawner.class, "MobSpawner");
-        addMapping(TileEntityNoteblock.class, "Music");
-        addMapping(TileEntityMovingPistonBlock.class, "Piston");
-        addMapping(TileEntityFurnaceBlastFurnace.class, "BlastFurnace");
-        addMapping(TileEntitySensor.class, "Sensor");
-        addMapping(TileEntityTrommel.class, "Trommel");
-        addMapping(TileEntityBasket.class, "Basket");
-        addMapping(TileEntityFlag.class, "Flag");
-        addMapping(TileEntitySeat.class, "Seat");
-        addMapping(TileEntityFlowerJar.class, "FlowerJar");
-        addMapping(TileEntityMeshGold.class, "MeshGold");
+        return classToIdMap.get(clazz);
+    }
+
+    private static boolean hasInit = false;
+    public static void init() {
+        if (hasInit) return;
+        hasInit = true;
+        addMapping(TileEntityFurnace.class, new NamespaceID("minecraft", "furnace"));
+        addMapping(TileEntityChest.class, new NamespaceID("minecraft", "chest"));
+        addMapping(TileEntityJukebox.class, new NamespaceID("minecraft", "jukebox"));
+        addMapping(TileEntityDispenser.class, new NamespaceID("minecraft", "dispenser"));
+        addMapping(TileEntityActivator.class, new NamespaceID("minecraft", "activator"));
+        addMapping(TileEntitySign.class, new NamespaceID("minecraft", "sign"));
+        addMapping(TileEntityMobSpawner.class, new NamespaceID("minecraft", "mob_spawner"));
+        addMapping(TileEntityMovingPistonBlock.class, new NamespaceID("minecraft", "piston_moving"));
+        addMapping(TileEntityFurnaceBlastFurnace.class, new NamespaceID("minecraft", "furnace_blast"));
+        addMapping(TileEntitySensor.class, new NamespaceID("minecraft", "sensor"));
+        addMapping(TileEntityTrommel.class, new NamespaceID("minecraft", "trommel"));
+        addMapping(TileEntityBasket.class, new NamespaceID("minecraft", "basket"));
+        addMapping(TileEntityFlag.class, new NamespaceID("minecraft", "flag"));
+        addMapping(TileEntitySeat.class, new NamespaceID("minecraft", "seat"));
+        addMapping(TileEntityFlowerJar.class, new NamespaceID("minecraft", "jar_flower"));
+        addMapping(TileEntityMeshGold.class, new NamespaceID("minecraft", "mesh_gold"));
+    }
+
+    @Deprecated
+    public static class Legacy {
+
+        private static final Map<String, Class<? extends TileEntity>> nameToClassMap = new HashMap<>();
+        private static final Map<Class<? extends TileEntity>, String> classToNameMap = new HashMap<>();
+
+        @Deprecated
+        public static Class<? extends TileEntity> getClassFromID(String id)
+        {
+            return nameToClassMap.get(id);
+        }
+        @Deprecated
+        public static String getIDFromClass(Class<? extends TileEntity> clazz)
+        {
+            return classToNameMap.get(clazz);
+        }
+
+        @Deprecated
+        public static void addMapping(Class<? extends TileEntity> entityClass, String name)
+        {
+            if(nameToClassMap.containsKey(name))
+            {
+                throw new IllegalArgumentException("Duplicate id: " + name);
+            } else
+            {
+                nameToClassMap.put(name, entityClass);
+                classToNameMap.put(entityClass, name);
+            }
+        }
+
+        public static boolean isLegacyKey(String id) {
+            return nameToClassMap.containsKey(id);
+        }
+
+        static
+        {
+            addMapping(TileEntityFurnace.class, "Furnace");
+            addMapping(TileEntityChest.class, "Chest");
+            addMapping(TileEntityJukebox.class, "RecordPlayer");
+            addMapping(TileEntityDispenser.class, "Trap");
+            addMapping(TileEntityActivator.class, "Activator");
+            addMapping(TileEntitySign.class, "Sign");
+            addMapping(TileEntityMobSpawner.class, "MobSpawner");
+            addMapping(TileEntityNoteblock.class, "Music");
+            addMapping(TileEntityMovingPistonBlock.class, "Piston");
+            addMapping(TileEntityFurnaceBlastFurnace.class, "BlastFurnace");
+            addMapping(TileEntitySensor.class, "Sensor");
+            addMapping(TileEntityTrommel.class, "Trommel");
+            addMapping(TileEntityBasket.class, "Basket");
+            addMapping(TileEntityFlag.class, "Flag");
+            addMapping(TileEntitySeat.class, "Seat");
+            addMapping(TileEntityFlowerJar.class, "FlowerJar");
+            addMapping(TileEntityMeshGold.class, "MeshGold");
+        }
     }
 }
diff --git a/src/main/java/net/minecraft/core/block/entity/TileEntityFurnace.java b/src/main/java/net/minecraft/core/block/entity/TileEntityFurnace.java
index 931c4e392..f0bed94c0 100644
--- a/src/main/java/net/minecraft/core/block/entity/TileEntityFurnace.java
+++ b/src/main/java/net/minecraft/core/block/entity/TileEntityFurnace.java
@@ -1,11 +1,5 @@
 package net.minecraft.core.block.entity;
 
-
-// Referenced classes of package net.minecraft.src:
-//            TileEntity, IInventory, ItemStack, NBTTagCompound,
-//            NBTTagList, World, BlockFurnace, FurnaceRecipes,
-//            Item, Block, Material, Player
-
 import com.mojang.nbt.CompoundTag;
 import com.mojang.nbt.ListTag;
 import net.minecraft.core.block.Block;
diff --git a/src/main/java/net/minecraft/core/block/entity/TileEntityFurnaceBlastFurnace.java b/src/main/java/net/minecraft/core/block/entity/TileEntityFurnaceBlastFurnace.java
index 5d29ca1ba..2a7200eee 100644
--- a/src/main/java/net/minecraft/core/block/entity/TileEntityFurnaceBlastFurnace.java
+++ b/src/main/java/net/minecraft/core/block/entity/TileEntityFurnaceBlastFurnace.java
@@ -1,11 +1,5 @@
 package net.minecraft.core.block.entity;
 
-
-// Referenced classes of package net.minecraft.src:
-//            TileEntity, IInventory, ItemStack, NBTTagCompound,
-//            NBTTagList, World, BlockFurnace, FurnaceRecipes,
-//            Item, Block, Material, Player
-
 import com.mojang.nbt.CompoundTag;
 import com.mojang.nbt.ListTag;
 import net.minecraft.core.block.BlockFurnaceBlast;
diff --git a/src/main/java/net/minecraft/core/block/entity/TileEntityJukebox.java b/src/main/java/net/minecraft/core/block/entity/TileEntityJukebox.java
index 6fade50a7..2dac646f2 100644
--- a/src/main/java/net/minecraft/core/block/entity/TileEntityJukebox.java
+++ b/src/main/java/net/minecraft/core/block/entity/TileEntityJukebox.java
@@ -1,9 +1,5 @@
 package net.minecraft.core.block.entity;
 
-
-// Referenced classes of package net.minecraft.src:
-//            TileEntity, NBTTagCompound
-
 import net.minecraft.core.block.Block;
 import net.minecraft.core.entity.EntityItem;
 import net.minecraft.core.item.ItemStack;
diff --git a/src/main/java/net/minecraft/core/block/entity/TileEntityMobSpawner.java b/src/main/java/net/minecraft/core/block/entity/TileEntityMobSpawner.java
index d24f2fdea..aeaebe6df 100644
--- a/src/main/java/net/minecraft/core/block/entity/TileEntityMobSpawner.java
+++ b/src/main/java/net/minecraft/core/block/entity/TileEntityMobSpawner.java
@@ -25,9 +25,8 @@ public class TileEntityMobSpawner extends TileEntity
 
     public TileEntityMobSpawner()
     {
-        delay = -1;
         yaw2 = 0.0D;
-        mobId = "Pig";
+        mobId = "minecraft:pig";
         delay = 20;
     }
 
@@ -43,6 +42,13 @@ public class TileEntityMobSpawner extends TileEntity
     	} else {
     		this.mobId = mobId;
     	}
+        try {
+            if (EntityDispatcher.Legacy.isLegacyKey(mobId)) {
+                this.mobId = EntityDispatcher.idForClass(EntityDispatcher.Legacy.getClassFromEncodeID(mobId)).toString();
+            }
+        } catch (Exception e) {
+            LOGGER.error("Failed to convert legacy mobspawner id!", e);
+        }
     }
 
     public boolean anyPlayerInRange()
@@ -93,22 +99,13 @@ public class TileEntityMobSpawner extends TileEntity
             byte byte0 = 4;
             for(int i = 0; i < byte0; i++)
             {
-                Mob entityliving = null;
-                
-                if(mobId.equalsIgnoreCase("random")) {
-                	List<SpawnListEntry> list = worldObj.getBlockBiome(x, y, z).getSpawnableList(MobCategory.monster);
-                	
-                	SpawnListEntry entry = list.get(worldObj.rand.nextInt(list.size()));
-                	entityliving = (Mob) EntityDispatcher.createEntityInWorld(EntityDispatcher.classToKeyMap.get(entry.entityClass), worldObj);
-                }else {
-                	entityliving = (Mob) EntityDispatcher.createEntityInWorld(mobId, worldObj);
-                }
-                
-                if(entityliving == null)
+                Mob mob = (Mob) EntityDispatcher.createEntityInWorld(mobId, worldObj);
+
+                if(mob == null)
                 {
                     return;
                 }
-                int j = worldObj.getEntitiesWithinAABB(entityliving.getClass(), AABB.getTemporaryBB(x, y, z, x + 1, y + 1, z + 1).grow(8D, 4D, 8D)).size();
+                int j = worldObj.getEntitiesWithinAABB(mob.getClass(), AABB.getTemporaryBB(x, y, z, x + 1, y + 1, z + 1).grow(8D, 4D, 8D)).size();
                 if(j >= 6)
                 {
                     updateDelay();
@@ -117,13 +114,13 @@ public class TileEntityMobSpawner extends TileEntity
                 double d6 = (double) x + (worldObj.rand.nextDouble() - worldObj.rand.nextDouble()) * 4D;
                 double d7 = (y + worldObj.rand.nextInt(3)) - 1;
                 double d8 = (double) z + (worldObj.rand.nextDouble() - worldObj.rand.nextDouble()) * 4D;
-                entityliving.moveTo(d6, d7, d8, worldObj.rand.nextFloat() * 360F, 0.0F);
-                if(!entityliving.canSpawnHere())
+                mob.moveTo(d6, d7, d8, worldObj.rand.nextFloat() * 360F, 0.0F);
+                if(!mob.canSpawnHere())
                 {
                 	updateDelay();
                     continue;
                 }
-                worldObj.entityJoinedWorld(entityliving);
+                worldObj.entityJoinedWorld(mob);
                 for(int k = 0; k < 20; k++)
                 {
                     double d1 = (double) x + 0.5D + ((double)worldObj.rand.nextFloat() - 0.5D) * 2D;
@@ -131,10 +128,10 @@ public class TileEntityMobSpawner extends TileEntity
                     double d5 = (double) z + 0.5D + ((double)worldObj.rand.nextFloat() - 0.5D) * 2D;
                     worldObj.spawnParticle("smoke", d1, d3, d5, 0.0D, 0.0D, 0.0D, 0);
                     worldObj.spawnParticle("flame", d1, d3, d5, 0.0D, 0.0D, 0.0D, 0);
-                    worldObj.playSoundAtEntity(null, entityliving, "mob.ghast.fireball", 0.025F, 0.75F);
+                    worldObj.playSoundAtEntity(null, mob, "mob.ghast.fireball", 0.025F, 0.75F);
                 }
 
-                entityliving.spawnExplosionParticle();
+                mob.spawnExplosionParticle();
                 updateDelay();
             }
 
@@ -145,7 +142,7 @@ public class TileEntityMobSpawner extends TileEntity
     @Override
 	public Packet getDescriptionPacket()
     {
-        return new SetMobSpawnerPacket(x, y, z, mobId);
+        return new SetMobSpawnerPacket(x, y, z, EntityDispatcher.classForId(mobId));
     }
     
     public int countNearbySpawners() {
diff --git a/src/main/java/net/minecraft/core/block/material/MaterialDecoration.java b/src/main/java/net/minecraft/core/block/material/MaterialDecoration.java
index cff0d9a52..d4bbf16ba 100644
--- a/src/main/java/net/minecraft/core/block/material/MaterialDecoration.java
+++ b/src/main/java/net/minecraft/core/block/material/MaterialDecoration.java
@@ -1,9 +1,5 @@
 package net.minecraft.core.block.material;
 
-
-// Referenced classes of package net.minecraft.src:
-//            Material, MapColor
-
 public class MaterialDecoration extends Material
 {
 
diff --git a/src/main/java/net/minecraft/core/block/material/MaterialGas.java b/src/main/java/net/minecraft/core/block/material/MaterialGas.java
index 3efb73a86..7de208ac0 100644
--- a/src/main/java/net/minecraft/core/block/material/MaterialGas.java
+++ b/src/main/java/net/minecraft/core/block/material/MaterialGas.java
@@ -1,9 +1,5 @@
 package net.minecraft.core.block.material;
 
-
-// Referenced classes of package net.minecraft.src:
-//            Material, MapColor
-
 public class MaterialGas extends Material
 {
 
diff --git a/src/main/java/net/minecraft/core/block/material/MaterialLiquid.java b/src/main/java/net/minecraft/core/block/material/MaterialLiquid.java
index 144a11813..19e98389a 100644
--- a/src/main/java/net/minecraft/core/block/material/MaterialLiquid.java
+++ b/src/main/java/net/minecraft/core/block/material/MaterialLiquid.java
@@ -1,9 +1,5 @@
 package net.minecraft.core.block.material;
 
-
-// Referenced classes of package net.minecraft.src:
-//            Material, MapColor
-
 public class MaterialLiquid extends Material
 {
 
diff --git a/src/main/java/net/minecraft/core/block/material/MaterialPortal.java b/src/main/java/net/minecraft/core/block/material/MaterialPortal.java
index 8d2c8a165..3cfb75cac 100644
--- a/src/main/java/net/minecraft/core/block/material/MaterialPortal.java
+++ b/src/main/java/net/minecraft/core/block/material/MaterialPortal.java
@@ -1,9 +1,5 @@
 package net.minecraft.core.block.material;
 
-
-// Referenced classes of package net.minecraft.src:
-//            Material, MapColor
-
 public class MaterialPortal extends Material
 {
 
diff --git a/src/main/java/net/minecraft/core/crafting/ContainerListener.java b/src/main/java/net/minecraft/core/crafting/ContainerListener.java
index 509c1ec3d..4fa274868 100644
--- a/src/main/java/net/minecraft/core/crafting/ContainerListener.java
+++ b/src/main/java/net/minecraft/core/crafting/ContainerListener.java
@@ -5,9 +5,6 @@ import net.minecraft.core.player.inventory.menu.MenuAbstract;
 
 import java.util.List;
 
-// Referenced classes of package net.minecraft.src:
-//            Container, ItemStack
-
 public interface ContainerListener
 {
     void updateCraftingInventory(MenuAbstract container, List<ItemStack> list);
diff --git a/src/main/java/net/minecraft/core/crafting/LookupFuelFurnaceBlast.java b/src/main/java/net/minecraft/core/crafting/LookupFuelFurnaceBlast.java
index aea76c956..d47da7159 100644
--- a/src/main/java/net/minecraft/core/crafting/LookupFuelFurnaceBlast.java
+++ b/src/main/java/net/minecraft/core/crafting/LookupFuelFurnaceBlast.java
@@ -1,7 +1,6 @@
 package net.minecraft.core.crafting;
 
 import net.minecraft.core.block.Blocks;
-import net.minecraft.core.item.Item;
 import net.minecraft.core.item.Items;
 
 public class LookupFuelFurnaceBlast extends LookupFuelFurnace {
diff --git a/src/main/java/net/minecraft/core/data/registry/recipe/entry/RecipeEntryBlastFurnace.java b/src/main/java/net/minecraft/core/data/registry/recipe/entry/RecipeEntryBlastFurnace.java
index 90e56107c..abed164d7 100644
--- a/src/main/java/net/minecraft/core/data/registry/recipe/entry/RecipeEntryBlastFurnace.java
+++ b/src/main/java/net/minecraft/core/data/registry/recipe/entry/RecipeEntryBlastFurnace.java
@@ -1,6 +1,5 @@
 package net.minecraft.core.data.registry.recipe.entry;
 
-import net.minecraft.core.data.registry.recipe.SearchQuery;
 import net.minecraft.core.data.registry.Registries;
 import net.minecraft.core.data.registry.recipe.*;
 import net.minecraft.core.data.registry.recipe.adapter.RecipeBlastFurnaceJsonAdapter;
diff --git a/src/main/java/net/minecraft/core/data/registry/recipe/entry/RecipeEntryFurnace.java b/src/main/java/net/minecraft/core/data/registry/recipe/entry/RecipeEntryFurnace.java
index 1def3d2c7..ad678bea3 100644
--- a/src/main/java/net/minecraft/core/data/registry/recipe/entry/RecipeEntryFurnace.java
+++ b/src/main/java/net/minecraft/core/data/registry/recipe/entry/RecipeEntryFurnace.java
@@ -1,6 +1,5 @@
 package net.minecraft.core.data.registry.recipe.entry;
 
-import net.minecraft.core.data.registry.recipe.SearchQuery;
 import net.minecraft.core.data.registry.Registries;
 import net.minecraft.core.data.registry.recipe.*;
 import net.minecraft.core.data.registry.recipe.adapter.RecipeFurnaceJsonAdapter;
diff --git a/src/main/java/net/minecraft/core/data/registry/recipe/entry/RecipeEntryTrommel.java b/src/main/java/net/minecraft/core/data/registry/recipe/entry/RecipeEntryTrommel.java
index 5d08877bb..ae50b7086 100644
--- a/src/main/java/net/minecraft/core/data/registry/recipe/entry/RecipeEntryTrommel.java
+++ b/src/main/java/net/minecraft/core/data/registry/recipe/entry/RecipeEntryTrommel.java
@@ -1,6 +1,5 @@
 package net.minecraft.core.data.registry.recipe.entry;
 
-import net.minecraft.core.data.registry.recipe.SearchQuery;
 import net.minecraft.core.WeightedRandomBag;
 import net.minecraft.core.WeightedRandomLootObject;
 import net.minecraft.core.data.registry.Registries;
diff --git a/src/main/java/net/minecraft/core/entity/Entity.java b/src/main/java/net/minecraft/core/entity/Entity.java
index 920554ffc..9a4ebc534 100644
--- a/src/main/java/net/minecraft/core/entity/Entity.java
+++ b/src/main/java/net/minecraft/core/entity/Entity.java
@@ -4,6 +4,7 @@ import java.util.List;
 import java.util.Random;
 
 import net.minecraft.core.block.BlockFluid;
+import net.minecraft.core.util.collection.NamespaceID;
 import net.minecraft.core.util.helper.DyeColor;
 import net.minecraft.core.world.ICarriable;
 import org.jetbrains.annotations.Nullable;
@@ -13,7 +14,6 @@ import com.mojang.nbt.DoubleTag;
 import com.mojang.nbt.FloatTag;
 import com.mojang.nbt.ListTag;
 
-import net.minecraft.client.gui.guidebook.mobs.MobInfoRegistry;
 import net.minecraft.core.Global;
 import net.minecraft.core.block.Block;
 import net.minecraft.core.block.material.Material;
@@ -1030,14 +1030,14 @@ public abstract class Entity
 
     public boolean save(CompoundTag tag)
     {
-        String s = getEncodeId();
+        NamespaceID s = getEncodeId();
         if(removed || s == null)
         {
             return false;
         }
         else
         {
-            tag.putString("id", s);
+            tag.putString("id", s.toString());
             saveWithoutId(tag);
             return true;
         }
@@ -1092,9 +1092,9 @@ public abstract class Entity
         readAdditionalSaveData(tag);
     }
 
-    protected final String getEncodeId()
+    protected final NamespaceID getEncodeId()
     {
-        return EntityDispatcher.getEncodeId(this);
+        return EntityDispatcher.idForClass(this.getClass());
     }
 
     public abstract void readAdditionalSaveData(CompoundTag tag);
@@ -1512,11 +1512,11 @@ public abstract class Entity
         if (entity instanceof Player){
             return ((Player) entity).getDisplayName();
         }
-        if (MobInfoRegistry.getMobInfo(entity.getClass()) != null){
-            return translator.translateKey(MobInfoRegistry.getMobInfo(entity.getClass()).getNameTranslationKey());
+        if (EntityDispatcher.nameKeyForClass(entity.getClass()) != null){
+            return translator.translateKey(EntityDispatcher.nameKeyForClass(entity.getClass()));
         }
-        String dispatcherName = EntityDispatcher.getEncodeId(entity);
-        if (dispatcherName != null) return dispatcherName;
+        NamespaceID dispatcherId = EntityDispatcher.idForClass(entity.getClass());
+        if (dispatcherId != null) return dispatcherId.value;
         return entity.getClass().getSimpleName();
     }
 }
diff --git a/src/main/java/net/minecraft/core/entity/EntityDispatcher.java b/src/main/java/net/minecraft/core/entity/EntityDispatcher.java
index e04c60072..d1fe54ece 100644
--- a/src/main/java/net/minecraft/core/entity/EntityDispatcher.java
+++ b/src/main/java/net/minecraft/core/entity/EntityDispatcher.java
@@ -7,169 +7,320 @@ import net.minecraft.core.entity.projectile.*;
 import net.minecraft.core.entity.vehicle.EntityBoat;
 import net.minecraft.core.entity.vehicle.MinecartEntity;
 import com.mojang.nbt.CompoundTag;
+import net.minecraft.core.util.collection.NamespaceID;
 import net.minecraft.core.world.World;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
 import org.slf4j.Logger;
 
 import java.util.HashMap;
 import java.util.Map;
 
-public class EntityDispatcher
+public final class EntityDispatcher
 {
     private static final Logger LOGGER = LogUtils.getLogger();
 
-    public static final Map<String, Class<? extends Entity>> keyToClassMap = new HashMap<>();
-    public static final Map<Class<? extends Entity>, String> classToKeyMap = new HashMap<>();
-    private static final Map<Integer, Class<? extends Entity>> idToClassMap = new HashMap<>();
-    private static final Map<Class<? extends Entity>, Integer> classToIdMap = new HashMap<>();
+    private static int mappingCount = 0;
 
-    private static int maxIdSize = 0;
+    public static final Map<Class<? extends Entity>, NamespaceID> classToIdMap = new HashMap<>();
+    public static final Map<NamespaceID, Class<? extends Entity>> idToClassMap = new HashMap<>();
+    public static final Map<String, Class<? extends Entity>> stringIdToClassMap = new HashMap<>();
 
-    public EntityDispatcher()
-    {
+    private static final Map<Integer, Class<? extends Entity>> numericIdToClassMap = new HashMap<>();
+    private static final Map<Integer, String> numericIdToStringIdMap = new HashMap<>();
+    private static final Map<Class<? extends Entity>, Integer> classToNumericIdMap = new HashMap<>();
+
+    private static final Map<Class<? extends Entity>, String> classToNameKeyMap = new HashMap<>();
+
+    private EntityDispatcher() {}
+
+    public static void addMapping(@NotNull Class<? extends Entity> entityClass, @NotNull NamespaceID namespaceID) {
+        addMapping(entityClass, namespaceID, null);
     }
 
-    public static void addMapping(Class<? extends Entity> clazz, String key, int id)
-    {
-        keyToClassMap.put(key, clazz);
-        classToKeyMap.put(clazz, key);
-        idToClassMap.put(id, clazz);
-        classToIdMap.put(clazz, id);
+    public static void addMapping(@NotNull Class<? extends Entity> entityClass, @NotNull NamespaceID namespaceID, @Nullable String nameKey) {
+        if (classToIdMap.containsKey(entityClass)) {
+            throw new IllegalArgumentException("EntityDispatcher already contains an assignment for class " + entityClass.getSimpleName() + " with namespace " + classToIdMap.get(entityClass) + "!");
+        }
+
+        classToIdMap.put(entityClass, namespaceID);
+        idToClassMap.put(namespaceID, entityClass);
+        stringIdToClassMap.put(namespaceID.toString(), entityClass);
 
-        if (key.length() > maxIdSize) {
-            maxIdSize = key.length();
+        int numericId = mappingCount++;
+        numericIdToClassMap.put(numericId, entityClass);
+        numericIdToStringIdMap.put(numericId, namespaceID.toString());
+        classToNumericIdMap.put(entityClass, numericId);
+
+        if (nameKey != null) {
+            classToNameKeyMap.put(entityClass, nameKey);
         }
     }
 
-    public static Entity createEntityInWorld(String id, World world)
+    public static @Nullable Class<? extends Entity> classForId(NamespaceID id) {
+        return idToClassMap.get(id);
+    }
+
+    public static @Nullable Class<? extends Entity> classForId(String id) {
+        return stringIdToClassMap.get(id);
+    }
+
+    public static @Nullable NamespaceID idForClass(Class<? extends Entity> entityClass) {
+        return classToIdMap.get(entityClass);
+    }
+
+    public static @Nullable Class<? extends Entity> classForNumericId(int id) {
+        return numericIdToClassMap.get(id);
+    }
+
+    public static @Nullable String nameKeyForClass(Class<? extends Entity> entityClass) {
+        return classToNameKeyMap.get(entityClass);
+    }
+
+    public static int numericIdForClass(Class<? extends Entity> entityClass) {
+        return classToNumericIdMap.getOrDefault(entityClass, -1);
+    }
+
+    public static void setNumericIds(Map<Integer, String> mapping) {
+        numericIdToClassMap.clear();
+        numericIdToStringIdMap.clear();
+        classToNumericIdMap.clear();
+        for (Map.Entry<Integer, String> entry : mapping.entrySet()) {
+            Class<? extends Entity> entityClass = classForId(entry.getValue());
+            if (entityClass == null) {
+                LOGGER.error("Could not find entityClass assigned to namespace id {}! Skipping!", entry.getValue());
+                continue;
+            }
+
+            numericIdToClassMap.put(entry.getKey(), entityClass);
+            numericIdToStringIdMap.put(entry.getKey(), entry.getValue());
+            classToNumericIdMap.put(entityClass, entry.getKey());
+
+            if (entry.getKey() >= mappingCount) {
+                mappingCount = entry.getKey() + 1;
+            }
+        }
+    }
+
+    public static Map<Integer, String> getEntityIds() {
+        return numericIdToStringIdMap;
+    }
+
+    public static @Nullable Entity createEntityInWorld(String id, World world)
     {
+        if (id == null) return null;
+        if (Legacy.isLegacyKey(id)) { // Handle entity creation via legacy id
+            return createEntityInWorld(Legacy.getClassFromEncodeID(id), world);
+        } else {
+            Class<? extends Entity> entityClass = classForId(id);
+            if (entityClass == null) {
+                LOGGER.warn("EntityDispatcher could not find entity class for id '{}'!", id);
+                return null;
+            }
+            return createEntityInWorld(entityClass, world);
+        }
+    }
+
+    public static @Nullable Entity createEntityInWorld(NamespaceID id, World world) {
+        return createEntityInWorld(classForId(id), world);
+    }
+
+    public static @Nullable Entity createEntityInWorld(Class<? extends Entity> clazz, World world) {
         Entity entity = null;
-        try
-        {
-            Class<? extends Entity> clazz = keyToClassMap.get(id);
-            if(clazz != null)
-            {
+        try {
+            if(clazz != null) {
                 entity = clazz.getConstructor(World.class).newInstance(world);
+            } else {
+                return null;
             }
         }
-        catch(Exception exception)
-        {
-            LOGGER.error("Failed to instance entity id '{}'!", id, exception);
+        catch(Exception exception) {
+            LOGGER.error("Failed to instance for class '{}'!", clazz.getSimpleName(), exception);
         }
         return entity;
     }
 
     public static Entity createEntityFromNBT(CompoundTag compoundTag, World world)
     {
-        Entity entity = null;
-        try
-        {
-            Class<? extends Entity> clazz = keyToClassMap.get(compoundTag.getString("id"));
-            if(clazz != null)
-            {
-                entity = clazz.getConstructor(new Class[] {World.class}).newInstance(world);
-            }
-        }
-        catch(Exception exception)
-        {
-            LOGGER.error("Failed to instance entity id '{}'!", compoundTag.getStringOrDefault("id", "UNKNOWN"), exception);
-        }
-        if(entity != null)
-        {
+        String id = compoundTag.getStringOrDefault("id", "UNKNOWN");
+        Entity entity = createEntityInWorld(id, world);
+
+        if(entity != null) {
             entity.load(compoundTag);
-        } else
-        {
+        } else {
             LOGGER.warn("Skipping Entity with id {}", compoundTag.getStringOrDefault("id", "UNKNOWN"));
         }
         return entity;
     }
 
-    public static Entity createEntity(int id, World world)
+    public static @Nullable Entity createEntity(int id, World world)
     {
-        Entity entity = null;
+        @Nullable Entity entity = null;
         try
         {
-            Class<? extends Entity> clazz = idToClassMap.get(id);
+            Class<? extends Entity> clazz = classForNumericId(id);
             if(clazz != null) {
                 entity = clazz.getConstructor(new Class[] {World.class}).newInstance(world);
+            } else {
+                LOGGER.error("No entity class assign to id {}!", id);
             }
         }
         catch(Exception exception)
         {
             LOGGER.error("Failed to instance entity id '{}'!", id, exception);
         }
-        if(entity == null)
-        {
-            LOGGER.warn("Skipping Entity with id {}", id);
-        }
         return entity;
     }
 
-    public static int getEntityID(Entity entity)
-    {
-        return getEntityID(entity.getClass());
-    }
+    private static boolean hasInit = false;
+    public static void init() {
+        if (hasInit) return;
+        hasInit = true;
 
-    public static int getEntityID(Class<? extends Entity> entityClass) {
-        return classToIdMap.get(entityClass);
-    }
+        // Misc
+        addMapping(EntityItem.class, new NamespaceID("minecraft", "item"));
+        addMapping(EntityPainting.class, new NamespaceID("minecraft", "painting"));
+        addMapping(EntityLightning.class, new NamespaceID("minecraft", "lightning"));
+        addMapping(EntityFallingBlock.class, new NamespaceID("minecraft", "falling_block"));
+        addMapping(MinecartEntity.class, new NamespaceID("minecraft", "minecart"));
+        addMapping(EntityBoat.class, new NamespaceID("minecraft", "boat"));
+        addMapping(EntityPrimedTNT.class, new NamespaceID("minecraft", "primed_tnt"));
 
-    public static String getEncodeId(Entity entity)
-    {
-        return classToKeyMap.get(entity.getClass());
-    }
+        // Projectiles
+        addMapping(ProjectilePebble.class, new NamespaceID("minecraft", "pebble"));
+        addMapping(ProjectileArrow.class, new NamespaceID("minecraft", "arrow"));
+        addMapping(ProjectileArrowGolden.class, new NamespaceID("minecraft", "arrow_golden"));
+        addMapping(ProjectileArrowPurple.class, new NamespaceID("minecraft", "arrow_purple"));
+        addMapping(ProjectileSnowball.class, new NamespaceID("minecraft", "snowball"));
+        addMapping(ProjectileFireball.class, new NamespaceID("minecraft", "fireball"));
+        addMapping(ProjectileCannonball.class, new NamespaceID("minecraft", "cannonball"));
 
-    public static String getEncodeId(Class<? extends Entity> clazz)
-    {
-        return classToKeyMap.get(clazz);
-    }
+//        addMapping(Mob.class, new NamespaceID("minecraft", "mob")); // Abstract class, shouldn't ever be instantiated
+        addMapping(MobHuman.class, new NamespaceID("minecraft", "human"));
 
-    public static Class<? extends Entity> getClassFromID(int id) {
-        return idToClassMap.get(id);
-    }
+        // Hostile
+        addMapping(MobZombie.class, new NamespaceID("minecraft", "zombie"), "guidebook.section.mob.zombie.name");
+        addMapping(MobZombieArmored.class, new NamespaceID("minecraft", "zombie_armored"), "guidebook.section.mob.armored_zombie.name");
+        addMapping(MobZombiePig.class, new NamespaceID("minecraft", "zombie_pigman"), "guidebook.section.mob.zombie_pigman.name");
+        addMapping(MobCreeper.class, new NamespaceID("minecraft", "creeper"), "guidebook.section.mob.creeper.name");
+        addMapping(MobSkeleton.class, new NamespaceID("minecraft", "skeleton"), "guidebook.section.mob.skeleton.name");
+        addMapping(MobSpider.class, new NamespaceID("minecraft", "spider"), "guidebook.section.mob.spider.name");
+        addMapping(MobGiant.class, new NamespaceID("minecraft", "giant"));
+        addMapping(MobSlime.class, new NamespaceID("minecraft", "slime"), "guidebook.section.mob.slime.name");
+        addMapping(MobGhast.class, new NamespaceID("minecraft", "ghast"), "guidebook.section.mob.ghast.name");
+        addMapping(MobSnowman.class, new NamespaceID("minecraft", "snowman"), "guidebook.section.mob.snowman.name");
 
-    public static Class<? extends Entity> getClassFromEncodeID(String encodeID) {
-        return keyToClassMap.get(encodeID);
+        // Passive
+        addMapping(MobScorpion.class, new NamespaceID("minecraft", "scorpion"));
+        addMapping(MobPig.class, new NamespaceID("minecraft", "pig"), "guidebook.section.mob.pig.name");
+        addMapping(MobSheep.class, new NamespaceID("minecraft", "sheep"), "guidebook.section.mob.sheep.name");
+        addMapping(MobCow.class, new NamespaceID("minecraft", "cow"), "guidebook.section.mob.cow.name");
+        addMapping(MobChicken.class, new NamespaceID("minecraft", "chicken"), "guidebook.section.mob.chicken.name");
+        addMapping(MobSquid.class, new NamespaceID("minecraft", "squid"), "guidebook.section.mob.squid.name");
+        addMapping(MobWolf.class, new NamespaceID("minecraft", "wolf"), "guidebook.section.mob.wolf.name");
+        addMapping(MobFireflyCluster.class, new NamespaceID("minecraft", "firefly_cluster"), "guidebook.section.mob.firefly_cluster.name");
     }
 
-    public static int getLargestIdSize() {
-        return maxIdSize;
-    }
+    @Deprecated
+    public static class Legacy {
+        public static final Map<String, Class<? extends Entity>> keyToClassMap = new HashMap<>();
+        public static final Map<Class<? extends Entity>, String> classToKeyMap = new HashMap<>();
+        private static final Map<Integer, Class<? extends Entity>> idToClassMap = new HashMap<>();
+        private static final Map<Class<? extends Entity>, Integer> classToIdMap = new HashMap<>();
 
-    static 
-    {
-        addMapping(EntityItem.class, "Item", 1);
-        addMapping(EntityLightning.class, "Lightning", 8);
-        addMapping(EntityPainting.class, "Painting", 9);
-        addMapping(ProjectileArrow.class, "Arrow", 10);
-        addMapping(ProjectileSnowball.class, "Snowball", 11);
-        addMapping(ProjectileFireball.class, "Fireball", 12);
-        addMapping(EntityPrimedTNT.class, "PrimedTnt", 20);
-        addMapping(EntityFallingBlock.class, "FallingSand", 21);
-        addMapping(MinecartEntity.class, "Minecart", 40);
-        addMapping(EntityBoat.class, "Boat", 41);
-        addMapping(MobZombieArmored.class, "ArmouredZombie", 42);
-        addMapping(ProjectileArrowGolden.class, "ArrowGolden", 43);
-        addMapping(ProjectileCannonball.class, "Cannonball", 44);
-        addMapping(ProjectileArrowPurple.class, "ArrowPurple", 45);
-        addMapping(ProjectilePebble.class, "Pebble", 46);
-        addMapping(MobFireflyCluster.class, "FireflyCluster", 47);
-        addMapping(Mob.class, "Mob", 48);
-        addMapping(MobHuman.class, "MobMonster", 49);
-        addMapping(MobCreeper.class, "Creeper", 50);
-        addMapping(MobSkeleton.class, "Skeleton", 51);
-        addMapping(MobSpider.class, "Spider", 52);
-        addMapping(MobGiant.class, "Giant", 53);
-        addMapping(MobZombie.class, "Zombie", 54);
-        addMapping(MobSlime.class, "Slime", 55);
-        addMapping(MobGhast.class, "Ghast", 56);
-        addMapping(MobZombiePig.class, "PigZombie", 57);
-        addMapping(MobSnowman.class, "Snowman", 58);
-        addMapping(MobScorpion.class, "Scorpion", 59);
-        addMapping(MobPig.class, "Pig", 90);
-        addMapping(MobSheep.class, "Sheep", 91);
-        addMapping(MobCow.class, "Cow", 92);
-        addMapping(MobChicken.class, "Chicken", 93);
-        addMapping(MobSquid.class, "Squid", 94);
-        addMapping(MobWolf.class, "Wolf", 95);
+        private static int maxIdSize = 0;
+
+        @Deprecated
+        public static void addMapping(Class<? extends Entity> clazz, String key, int id)
+        {
+            keyToClassMap.put(key, clazz);
+            classToKeyMap.put(clazz, key);
+            idToClassMap.put(id, clazz);
+            classToIdMap.put(clazz, id);
+
+            if (key.length() > maxIdSize) {
+                maxIdSize = key.length();
+            }
+        }
+
+        @Deprecated
+        public static int getEntityID(Entity entity)
+        {
+            return getEntityID(entity.getClass());
+        }
+
+        @Deprecated
+        public static int getEntityID(Class<? extends Entity> entityClass) {
+            return classToIdMap.get(entityClass);
+        }
+
+        @Deprecated
+        public static String getEncodeId(Entity entity)
+        {
+            return classToKeyMap.get(entity.getClass());
+        }
+
+        @Deprecated
+        public static String getEncodeId(Class<? extends Entity> clazz)
+        {
+            return classToKeyMap.get(clazz);
+        }
+
+        @Deprecated
+        public static Class<? extends Entity> getClassFromID(int id) {
+            return idToClassMap.get(id);
+        }
+
+        @Deprecated
+        public static Class<? extends Entity> getClassFromEncodeID(String encodeID) {
+            return keyToClassMap.get(encodeID);
+        }
+
+        @Deprecated
+        public static int getLargestIdSize() {
+            return maxIdSize;
+        }
+
+        public static boolean isLegacyKey(String key) {
+            return keyToClassMap.containsKey(key);
+        }
+
+        static
+        {
+            addMapping(EntityItem.class, "Item", 1);
+            addMapping(EntityLightning.class, "Lightning", 8);
+            addMapping(EntityPainting.class, "Painting", 9);
+            addMapping(ProjectileArrow.class, "Arrow", 10);
+            addMapping(ProjectileSnowball.class, "Snowball", 11);
+            addMapping(ProjectileFireball.class, "Fireball", 12);
+            addMapping(EntityPrimedTNT.class, "PrimedTnt", 20);
+            addMapping(EntityFallingBlock.class, "FallingSand", 21);
+            addMapping(MinecartEntity.class, "Minecart", 40);
+            addMapping(EntityBoat.class, "Boat", 41);
+            addMapping(MobZombieArmored.class, "ArmouredZombie", 42);
+            addMapping(ProjectileArrowGolden.class, "ArrowGolden", 43);
+            addMapping(ProjectileCannonball.class, "Cannonball", 44);
+            addMapping(ProjectileArrowPurple.class, "ArrowPurple", 45);
+            addMapping(ProjectilePebble.class, "Pebble", 46);
+            addMapping(MobFireflyCluster.class, "FireflyCluster", 47);
+            addMapping(Mob.class, "Mob", 48);
+            addMapping(MobHuman.class, "MobMonster", 49);
+            addMapping(MobCreeper.class, "Creeper", 50);
+            addMapping(MobSkeleton.class, "Skeleton", 51);
+            addMapping(MobSpider.class, "Spider", 52);
+            addMapping(MobGiant.class, "Giant", 53);
+            addMapping(MobZombie.class, "Zombie", 54);
+            addMapping(MobSlime.class, "Slime", 55);
+            addMapping(MobGhast.class, "Ghast", 56);
+            addMapping(MobZombiePig.class, "PigZombie", 57);
+            addMapping(MobSnowman.class, "Snowman", 58);
+            addMapping(MobScorpion.class, "Scorpion", 59);
+            addMapping(MobPig.class, "Pig", 90);
+            addMapping(MobSheep.class, "Sheep", 91);
+            addMapping(MobCow.class, "Cow", 92);
+            addMapping(MobChicken.class, "Chicken", 93);
+            addMapping(MobSquid.class, "Squid", 94);
+            addMapping(MobWolf.class, "Wolf", 95);
+        }
     }
 }
diff --git a/src/main/java/net/minecraft/core/entity/EntityFallingBlock.java b/src/main/java/net/minecraft/core/entity/EntityFallingBlock.java
index de8ffe0e4..22a1a068d 100644
--- a/src/main/java/net/minecraft/core/entity/EntityFallingBlock.java
+++ b/src/main/java/net/minecraft/core/entity/EntityFallingBlock.java
@@ -1,10 +1,5 @@
 package net.minecraft.core.entity;
 
-
-// Referenced classes of package net.minecraft.src:
-//            Entity, MathHelper, World, BlockSand,
-//            NBTTagCompound
-
 import net.minecraft.core.block.Block;
 import net.minecraft.core.block.BlockSand;
 import net.minecraft.core.block.Blocks;
diff --git a/src/main/java/net/minecraft/core/entity/EntityItem.java b/src/main/java/net/minecraft/core/entity/EntityItem.java
index 5cf1915b5..a48f94408 100644
--- a/src/main/java/net/minecraft/core/entity/EntityItem.java
+++ b/src/main/java/net/minecraft/core/entity/EntityItem.java
@@ -3,12 +3,6 @@ package net.minecraft.core.entity;
 import java.util.List;
 
 import com.mojang.nbt.CompoundTag;
-
-// Referenced classes of package net.minecraft.src:
-//            Entity, MathHelper, World, Material, 
-//            AxisAlignedBB, Block, NBTTagCompound, ItemStack, 
-//            Player, InventoryPlayer, Achievements, Item
-
 import net.minecraft.core.achievement.Achievements;
 import net.minecraft.core.achievement.stat.StatList;
 import net.minecraft.core.block.Block;
diff --git a/src/main/java/net/minecraft/core/entity/EntityLightning.java b/src/main/java/net/minecraft/core/entity/EntityLightning.java
index 25360e394..7eb092cea 100644
--- a/src/main/java/net/minecraft/core/entity/EntityLightning.java
+++ b/src/main/java/net/minecraft/core/entity/EntityLightning.java
@@ -11,11 +11,6 @@ import net.minecraft.core.world.World;
 
 import java.util.List;
 
-// Referenced classes of package net.minecraft.src:
-//            EntityWeatherEffect, World, MathHelper, Block, 
-//            BlockFire, AxisAlignedBB, Entity, NBTTagCompound,
-//            Vec3D
-
 public class EntityLightning extends Entity
 {
     private int life;
diff --git a/src/main/java/net/minecraft/core/entity/EntityPainting.java b/src/main/java/net/minecraft/core/entity/EntityPainting.java
index f40331605..dd913e88f 100644
--- a/src/main/java/net/minecraft/core/entity/EntityPainting.java
+++ b/src/main/java/net/minecraft/core/entity/EntityPainting.java
@@ -15,11 +15,6 @@ import net.minecraft.core.util.helper.DamageType;
 
 import java.util.*;
 
-// Referenced classes of package net.minecraft.src:
-//            Entity, ArtType, AxisAlignedBB, World,
-//            EntityItem, ItemStack, Item, MathHelper,
-//            Material, NBTTagCompound
-
 public class EntityPainting extends Entity
 {
     public static final int DATA_ITEM_ID = 16;
@@ -170,7 +165,7 @@ public class EntityPainting extends Entity
         int xSize = art.sizeX / 16;
         int ySize = art.sizeY / 16;
         int xPosition = this.blockX;
-        int yPosition = this.blockY;
+        int yPosition = MathHelper.floor(y - (double)((float)art.sizeY / 32F));
         int zPosition = this.blockZ;
         if(direction == 0)
         {
@@ -188,7 +183,6 @@ public class EntityPainting extends Entity
         {
             zPosition = MathHelper.floor(z - (double)((float)art.sizeX / 32F));
         }
-        yPosition = MathHelper.floor(y - (double)((float)art.sizeY / 32F));
         for(int dx = 0; dx < xSize; dx++)
         {
             for(int dy = 0; dy < ySize; dy++)
diff --git a/src/main/java/net/minecraft/core/entity/EntityPrimedTNT.java b/src/main/java/net/minecraft/core/entity/EntityPrimedTNT.java
index d0f85b1f5..9268ef57f 100644
--- a/src/main/java/net/minecraft/core/entity/EntityPrimedTNT.java
+++ b/src/main/java/net/minecraft/core/entity/EntityPrimedTNT.java
@@ -1,9 +1,5 @@
 package net.minecraft.core.entity;
 
-
-// Referenced classes of package net.minecraft.src:
-//            Entity, MathHelper, World, NBTTagCompound
-
 import net.minecraft.core.util.helper.MathHelper;
 import com.mojang.nbt.CompoundTag;
 import net.minecraft.core.world.World;
diff --git a/src/main/java/net/minecraft/core/entity/Mob.java b/src/main/java/net/minecraft/core/entity/Mob.java
index 1c500d5a9..eee37609e 100644
--- a/src/main/java/net/minecraft/core/entity/Mob.java
+++ b/src/main/java/net/minecraft/core/entity/Mob.java
@@ -31,11 +31,6 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-// Referenced classes of package net.minecraft.src:
-//            Entity, Vec3D, World, Material,
-//            MathHelper, Block, StepSound, AxisAlignedBB,
-//            NBTTagCompound, ItemStack, MovingObjectPosition
-
 public abstract class Mob extends Entity
 {
     public static final int DATA_VARIANT = 1;
@@ -1084,7 +1079,6 @@ public abstract class Mob extends Entity
     protected void updateAI()
     {
         entityAge++;
-        Player entityplayer = world.getClosestPlayerToEntity(this, -1D);
         tryToDespawn();
         moveStrafing = 0.0F;
         moveForward = 0.0F;
diff --git a/src/main/java/net/minecraft/core/entity/MobFlying.java b/src/main/java/net/minecraft/core/entity/MobFlying.java
index f17358ada..c5bec5d4a 100644
--- a/src/main/java/net/minecraft/core/entity/MobFlying.java
+++ b/src/main/java/net/minecraft/core/entity/MobFlying.java
@@ -1,10 +1,5 @@
 package net.minecraft.core.entity;
 
-
-// Referenced classes of package net.minecraft.src:
-//            Mob, MathHelper, AxisAlignedBB, World,
-//            Block
-
 import net.minecraft.core.block.Block;
 import net.minecraft.core.util.helper.MathHelper;
 import net.minecraft.core.world.World;
diff --git a/src/main/java/net/minecraft/core/entity/MobPathfinder.java b/src/main/java/net/minecraft/core/entity/MobPathfinder.java
index 8c6987f04..3b10a9791 100644
--- a/src/main/java/net/minecraft/core/entity/MobPathfinder.java
+++ b/src/main/java/net/minecraft/core/entity/MobPathfinder.java
@@ -1,9 +1,5 @@
 package net.minecraft.core.entity;
 
-// Referenced classes of package net.minecraft.src:
-//            Mob, World, Entity, AxisAlignedBB,
-//            MathHelper, PathEntity, Vec3D
-
 import net.minecraft.core.entity.animal.MobFireflyCluster;
 import net.minecraft.core.util.helper.MathHelper;
 import net.minecraft.core.util.phys.AABB;
diff --git a/src/main/java/net/minecraft/core/entity/animal/MobAnimal.java b/src/main/java/net/minecraft/core/entity/animal/MobAnimal.java
index 14486242a..cf444dc60 100644
--- a/src/main/java/net/minecraft/core/entity/animal/MobAnimal.java
+++ b/src/main/java/net/minecraft/core/entity/animal/MobAnimal.java
@@ -1,10 +1,5 @@
 package net.minecraft.core.entity.animal;
 
-
-// Referenced classes of package net.minecraft.src:
-//            EntityCreature, World, Block, GrassBlock,
-//            MathHelper, AxisAlignedBB, NBTTagCompound
-
 import net.minecraft.core.block.tag.BlockTags;
 import net.minecraft.core.entity.MobPathfinder;
 import net.minecraft.core.entity.player.Player;
diff --git a/src/main/java/net/minecraft/core/entity/animal/MobCow.java b/src/main/java/net/minecraft/core/entity/animal/MobCow.java
index c002d5394..9bd83a11d 100644
--- a/src/main/java/net/minecraft/core/entity/animal/MobCow.java
+++ b/src/main/java/net/minecraft/core/entity/animal/MobCow.java
@@ -1,10 +1,5 @@
 package net.minecraft.core.entity.animal;
 
-
-// Referenced classes of package net.minecraft.src:
-//            MobAnimal, Item, Player, InventoryPlayer,
-//            ItemStack, World, NBTTagCompound
-
 import net.minecraft.core.WeightedRandomLootObject;
 import net.minecraft.core.entity.player.Player;
 import net.minecraft.core.item.Items;
diff --git a/src/main/java/net/minecraft/core/entity/animal/MobPig.java b/src/main/java/net/minecraft/core/entity/animal/MobPig.java
index d69980f50..3f0124453 100644
--- a/src/main/java/net/minecraft/core/entity/animal/MobPig.java
+++ b/src/main/java/net/minecraft/core/entity/animal/MobPig.java
@@ -1,11 +1,5 @@
 package net.minecraft.core.entity.animal;
 
-
-// Referenced classes of package net.minecraft.src:
-//            MobAnimal, DataWatcher, NBTTagCompound, World,
-//            Player, Item, MobZombiePig, Achievements,
-//            EntityLightning
-
 import net.minecraft.core.WeightedRandomLootObject;
 import net.minecraft.core.achievement.Achievements;
 import net.minecraft.core.block.Block;
diff --git a/src/main/java/net/minecraft/core/entity/animal/MobSquid.java b/src/main/java/net/minecraft/core/entity/animal/MobSquid.java
index 94c5155a6..d7375d80d 100644
--- a/src/main/java/net/minecraft/core/entity/animal/MobSquid.java
+++ b/src/main/java/net/minecraft/core/entity/animal/MobSquid.java
@@ -1,10 +1,5 @@
 package net.minecraft.core.entity.animal;
 
-// Referenced classes of package net.minecraft.src:
-//            EntityWaterMob, ItemStack, Item, AxisAlignedBB, 
-//            Material, World, MathHelper, NBTTagCompound, 
-//            Player
-
 import net.minecraft.core.WeightedRandomLootObject;
 import net.minecraft.core.block.Block;
 import net.minecraft.core.block.material.Material;
@@ -49,7 +44,6 @@ public class MobSquid extends MobWaterAnimal
         tx = 0.0F;
         ty = 0.0F;
         tz = 0.0F;
-        isInWater();
         textureIdentifier = new NamespaceID("minecraft", "squid");
         setSize(0.95F, 0.95F);
         tentacleSpeed = (1.0F / (random.nextFloat() + 1.0F)) * 0.2F;
@@ -128,7 +122,7 @@ public class MobSquid extends MobWaterAnimal
                     yd *= 0.98D;
                     zd = 0.0D;
                 }
-                xBodyRot += (double)(-90F - xBodyRot) * 0.02D;
+                xBodyRot += (-90F - xBodyRot) * 0.02F;
             }
         }
     }
diff --git a/src/main/java/net/minecraft/core/entity/animal/MobWaterAnimal.java b/src/main/java/net/minecraft/core/entity/animal/MobWaterAnimal.java
index 0e06804b0..274466abc 100644
--- a/src/main/java/net/minecraft/core/entity/animal/MobWaterAnimal.java
+++ b/src/main/java/net/minecraft/core/entity/animal/MobWaterAnimal.java
@@ -1,9 +1,5 @@
 package net.minecraft.core.entity.animal;
 
-
-// Referenced classes of package net.minecraft.src:
-//            EntityCreature, World, NBTTagCompound
-
 import net.minecraft.core.entity.MobPathfinder;
 import com.mojang.nbt.CompoundTag;
 import net.minecraft.core.world.World;
diff --git a/src/main/java/net/minecraft/core/entity/animal/MobWolf.java b/src/main/java/net/minecraft/core/entity/animal/MobWolf.java
index aaebe0192..3bab971d1 100644
--- a/src/main/java/net/minecraft/core/entity/animal/MobWolf.java
+++ b/src/main/java/net/minecraft/core/entity/animal/MobWolf.java
@@ -22,12 +22,6 @@ import net.minecraft.core.util.helper.DamageType;
 
 import java.util.*;
 
-// Referenced classes of package net.minecraft.src:
-//            MobAnimal, DataWatcher, NBTTagCompound, World,
-//            Player, MobSheep, AxisAlignedBB, Entity,
-//            InventoryPlayer, ItemStack, Item, ItemFood,
-//            MathHelper, ProjectileArrow, Mob
-
 public class MobWolf extends MobAnimal
 {
     public static final Map<ArmorMaterial, IArmorItem> ARMOR_MATERIALS = new HashMap<>();
diff --git a/src/main/java/net/minecraft/core/entity/monster/MobGhast.java b/src/main/java/net/minecraft/core/entity/monster/MobGhast.java
index 2ae0f5969..de9506e2d 100644
--- a/src/main/java/net/minecraft/core/entity/monster/MobGhast.java
+++ b/src/main/java/net/minecraft/core/entity/monster/MobGhast.java
@@ -1,10 +1,5 @@
 package net.minecraft.core.entity.monster;
 
-// Referenced classes of package net.minecraft.src:
-//            MobFlying, IMob, DataWatcher, World,
-//            MathHelper, Entity, AxisAlignedBB, ProjectileFireball,
-//            Vec3D, Item
-
 import net.minecraft.core.WeightedRandomLootObject;
 import net.minecraft.core.entity.MobFlying;
 import net.minecraft.core.entity.player.Player;
diff --git a/src/main/java/net/minecraft/core/entity/monster/MobGiant.java b/src/main/java/net/minecraft/core/entity/monster/MobGiant.java
index cb7862550..51decd3b9 100644
--- a/src/main/java/net/minecraft/core/entity/monster/MobGiant.java
+++ b/src/main/java/net/minecraft/core/entity/monster/MobGiant.java
@@ -1,9 +1,5 @@
 package net.minecraft.core.entity.monster;
 
-
-// Referenced classes of package net.minecraft.src:
-//            EntityMob, World
-
 import net.minecraft.core.util.collection.NamespaceID;
 import net.minecraft.core.world.World;
 
diff --git a/src/main/java/net/minecraft/core/entity/monster/MobMonster.java b/src/main/java/net/minecraft/core/entity/monster/MobMonster.java
index 4c227bc26..4d70e795c 100644
--- a/src/main/java/net/minecraft/core/entity/monster/MobMonster.java
+++ b/src/main/java/net/minecraft/core/entity/monster/MobMonster.java
@@ -1,9 +1,5 @@
 package net.minecraft.core.entity.monster;
 
-// Referenced classes of package net.minecraft.src:
-//            EntityCreature, IMob, World, Entity, 
-//            AxisAlignedBB, MathHelper, EnumSkyBlock, NBTTagCompound
-
 import net.minecraft.core.entity.Entity;
 import net.minecraft.core.entity.MobPathfinder;
 import net.minecraft.core.entity.player.Player;
diff --git a/src/main/java/net/minecraft/core/entity/monster/MobScorpion.java b/src/main/java/net/minecraft/core/entity/monster/MobScorpion.java
index e0d35c519..bd515e69a 100644
--- a/src/main/java/net/minecraft/core/entity/monster/MobScorpion.java
+++ b/src/main/java/net/minecraft/core/entity/monster/MobScorpion.java
@@ -1,9 +1,5 @@
 package net.minecraft.core.entity.monster;
 
-// Referenced classes of package net.minecraft.src:
-//            EntityMob, World, Entity, MathHelper, 
-//            Item, NBTTagCompound
-
 import net.minecraft.core.WeightedRandomLootObject;
 import net.minecraft.core.entity.Entity;
 import net.minecraft.core.entity.player.Player;
diff --git a/src/main/java/net/minecraft/core/entity/monster/MobSkeleton.java b/src/main/java/net/minecraft/core/entity/monster/MobSkeleton.java
index 89ce34c38..84de94046 100644
--- a/src/main/java/net/minecraft/core/entity/monster/MobSkeleton.java
+++ b/src/main/java/net/minecraft/core/entity/monster/MobSkeleton.java
@@ -1,9 +1,5 @@
 package net.minecraft.core.entity.monster;
 
-// Referenced classes of package net.minecraft.src:
-//            EntityMob, World, MathHelper, Entity, 
-//            ProjectileArrow, Item, ItemStack, NBTTagCompound
-
 import net.minecraft.core.WeightedRandomLootObject;
 import net.minecraft.core.entity.Entity;
 import net.minecraft.core.entity.projectile.ProjectileArrow;
diff --git a/src/main/java/net/minecraft/core/entity/monster/MobSlime.java b/src/main/java/net/minecraft/core/entity/monster/MobSlime.java
index cd8bfcfb2..10a5f2cb2 100644
--- a/src/main/java/net/minecraft/core/entity/monster/MobSlime.java
+++ b/src/main/java/net/minecraft/core/entity/monster/MobSlime.java
@@ -1,10 +1,5 @@
 package net.minecraft.core.entity.monster;
 
-// Referenced classes of package net.minecraft.src:
-//            Mob, IMob, DataWatcher, NBTTagCompound,
-//            MathHelper, AxisAlignedBB, World, Player,
-//            Item, Chunk
-
 import net.minecraft.core.WeightedRandomLootObject;
 import net.minecraft.core.entity.Mob;
 import net.minecraft.core.entity.player.Player;
diff --git a/src/main/java/net/minecraft/core/entity/monster/MobSnowman.java b/src/main/java/net/minecraft/core/entity/monster/MobSnowman.java
index c1f8705cf..cd0a55f6e 100644
--- a/src/main/java/net/minecraft/core/entity/monster/MobSnowman.java
+++ b/src/main/java/net/minecraft/core/entity/monster/MobSnowman.java
@@ -1,8 +1,5 @@
 package net.minecraft.core.entity.monster;
 
-// Referenced classes of package net.minecraft.src:
-//            EntityMob, World, MathHelper, Item
-
 import net.minecraft.core.WeightedRandomLootObject;
 import net.minecraft.core.block.Blocks;
 import net.minecraft.core.entity.Entity;
diff --git a/src/main/java/net/minecraft/core/entity/monster/MobSpider.java b/src/main/java/net/minecraft/core/entity/monster/MobSpider.java
index 441d83d91..512eef413 100644
--- a/src/main/java/net/minecraft/core/entity/monster/MobSpider.java
+++ b/src/main/java/net/minecraft/core/entity/monster/MobSpider.java
@@ -1,9 +1,5 @@
 package net.minecraft.core.entity.monster;
 
-// Referenced classes of package net.minecraft.src:
-//            EntityMob, World, Entity, MathHelper, 
-//            Item, NBTTagCompound
-
 import net.minecraft.core.WeightedRandomLootObject;
 import net.minecraft.core.entity.Entity;
 import net.minecraft.core.entity.player.Player;
diff --git a/src/main/java/net/minecraft/core/entity/monster/MobZombie.java b/src/main/java/net/minecraft/core/entity/monster/MobZombie.java
index 994e8ae20..b15a864e2 100644
--- a/src/main/java/net/minecraft/core/entity/monster/MobZombie.java
+++ b/src/main/java/net/minecraft/core/entity/monster/MobZombie.java
@@ -1,8 +1,5 @@
 package net.minecraft.core.entity.monster;
 
-// Referenced classes of package net.minecraft.src:
-//            EntityMob, World, MathHelper, Item
-
 import net.minecraft.core.WeightedRandomLootObject;
 import net.minecraft.core.item.Items;
 import net.minecraft.core.util.collection.NamespaceID;
diff --git a/src/main/java/net/minecraft/core/entity/monster/MobZombieArmored.java b/src/main/java/net/minecraft/core/entity/monster/MobZombieArmored.java
index 5334a1697..78a29b630 100644
--- a/src/main/java/net/minecraft/core/entity/monster/MobZombieArmored.java
+++ b/src/main/java/net/minecraft/core/entity/monster/MobZombieArmored.java
@@ -1,9 +1,5 @@
 package net.minecraft.core.entity.monster;
 
-// Referenced classes of package net.minecraft.src:
-//            EntityMob, World, MathHelper, Item
-
-
 import com.mojang.nbt.CompoundTag;
 import net.minecraft.core.entity.Entity;
 import net.minecraft.core.entity.EntityItem;
diff --git a/src/main/java/net/minecraft/core/entity/monster/MobZombiePig.java b/src/main/java/net/minecraft/core/entity/monster/MobZombiePig.java
index accba6dde..970af73a8 100644
--- a/src/main/java/net/minecraft/core/entity/monster/MobZombiePig.java
+++ b/src/main/java/net/minecraft/core/entity/monster/MobZombiePig.java
@@ -18,10 +18,6 @@ import net.minecraft.core.util.helper.DamageType;
 import java.util.ArrayList;
 import java.util.List;
 
-// Referenced classes of package net.minecraft.src:
-//            MobZombie, World, NBTTagCompound, Player,
-//            AxisAlignedBB, Entity, Item, ItemStack
-
 public class MobZombiePig extends MobZombie
 {
 
diff --git a/src/main/java/net/minecraft/core/entity/player/Player.java b/src/main/java/net/minecraft/core/entity/player/Player.java
index 10dfc1a10..f49e0c959 100644
--- a/src/main/java/net/minecraft/core/entity/player/Player.java
+++ b/src/main/java/net/minecraft/core/entity/player/Player.java
@@ -394,8 +394,7 @@ public abstract class Player extends Mob
     private void collideWithPlayer(Entity entity)
     {
         entity.playerTouch(this);
-        String entityName = EntityDispatcher.getEncodeId(entity);
-        addStat(StatList.mobEncounterStats.get(entityName), 1);
+        addStat(StatList.mobEncounterStats.get(EntityDispatcher.idForClass(entity.getClass())), 1);
     }
 
     public int getScore()
@@ -906,8 +905,7 @@ public abstract class Player extends Mob
         }
         addStat(StatList.damageTakenStat, damage);
         if (attacker != null) {
-            String entityName = EntityDispatcher.getEncodeId(attacker);
-            addStat(StatList.mobEncounterStats.get(entityName), 1);
+            addStat(StatList.mobEncounterStats.get(EntityDispatcher.idForClass(attacker.getClass())), 1);
         }
 
         return super.hurt(attacker, damage, type);
@@ -1093,8 +1091,7 @@ public abstract class Player extends Mob
                 addStat(StatList.damageDealtStat, i);
             }
         }
-        String entityName = EntityDispatcher.getEncodeId(entity);
-        addStat(StatList.mobEncounterStats.get(entityName), 1);
+        addStat(StatList.mobEncounterStats.get(EntityDispatcher.idForClass(entity.getClass())), 1);
     }
 
     public void respawnPlayer()
diff --git a/src/main/java/net/minecraft/core/entity/projectile/ProjectileArrow.java b/src/main/java/net/minecraft/core/entity/projectile/ProjectileArrow.java
index 6eb8cd34b..ccd0b4b41 100644
--- a/src/main/java/net/minecraft/core/entity/projectile/ProjectileArrow.java
+++ b/src/main/java/net/minecraft/core/entity/projectile/ProjectileArrow.java
@@ -14,12 +14,6 @@ import net.minecraft.core.util.phys.AABB;
 import net.minecraft.core.util.phys.Vec3;
 import net.minecraft.core.world.World;
 
-// Referenced classes of package net.minecraft.src:
-//            Entity, Player, Mob, MathHelper,
-//            World, Block, Vec3D, AxisAlignedBB, 
-//            MovingObjectPosition, NBTTagCompound, ItemStack, Item, 
-//            InventoryPlayer
-
 public class ProjectileArrow extends Projectile
 {
     public static final int TYPE_NORMAL = 0;
diff --git a/src/main/java/net/minecraft/core/entity/projectile/ProjectileArrowGolden.java b/src/main/java/net/minecraft/core/entity/projectile/ProjectileArrowGolden.java
index 5b1eeae44..4ef9a4701 100644
--- a/src/main/java/net/minecraft/core/entity/projectile/ProjectileArrowGolden.java
+++ b/src/main/java/net/minecraft/core/entity/projectile/ProjectileArrowGolden.java
@@ -1,11 +1,5 @@
 package net.minecraft.core.entity.projectile;
 
-// Referenced classes of package net.minecraft.src:
-//            Entity, Player, Mob, MathHelper,
-//            World, Block, Vec3D, AxisAlignedBB, 
-//            MovingObjectPosition, NBTTagCompound, ItemStack, Item, 
-//            InventoryPlayer
-
 import net.minecraft.core.entity.Mob;
 import net.minecraft.core.entity.player.Player;
 import net.minecraft.core.item.Items;
diff --git a/src/main/java/net/minecraft/core/entity/projectile/ProjectileArrowPurple.java b/src/main/java/net/minecraft/core/entity/projectile/ProjectileArrowPurple.java
index a61e17827..c90168ff5 100644
--- a/src/main/java/net/minecraft/core/entity/projectile/ProjectileArrowPurple.java
+++ b/src/main/java/net/minecraft/core/entity/projectile/ProjectileArrowPurple.java
@@ -4,12 +4,6 @@ import net.minecraft.core.entity.Mob;
 import net.minecraft.core.item.Items;
 import net.minecraft.core.world.World;
 
-// Referenced classes of package net.minecraft.src:
-//            Entity, Player, Mob, MathHelper,
-//            World, Block, Vec3D, AxisAlignedBB, 
-//            MovingObjectPosition, NBTTagCompound, ItemStack, Item, 
-//            InventoryPlayer
-
 public class ProjectileArrowPurple extends ProjectileArrow
 {
 
diff --git a/src/main/java/net/minecraft/core/entity/projectile/ProjectileFireball.java b/src/main/java/net/minecraft/core/entity/projectile/ProjectileFireball.java
index fa7230218..22d7136bf 100644
--- a/src/main/java/net/minecraft/core/entity/projectile/ProjectileFireball.java
+++ b/src/main/java/net/minecraft/core/entity/projectile/ProjectileFireball.java
@@ -11,10 +11,6 @@ import net.minecraft.core.util.helper.MathHelper;
 import net.minecraft.core.world.World;
 import net.minecraft.core.util.helper.DamageType;
 
-// Referenced classes of package net.minecraft.src:
-//            Entity, AxisAlignedBB, MathHelper, Mob,
-//            World, Vec3D, MovingObjectPosition, NBTTagCompound
-
 public class ProjectileFireball extends Projectile
 {
     public static final double FIREBALL_SPEED = 1d;
diff --git a/src/main/java/net/minecraft/core/entity/projectile/ProjectilePebble.java b/src/main/java/net/minecraft/core/entity/projectile/ProjectilePebble.java
index d1c9b657e..75a3f22bf 100644
--- a/src/main/java/net/minecraft/core/entity/projectile/ProjectilePebble.java
+++ b/src/main/java/net/minecraft/core/entity/projectile/ProjectilePebble.java
@@ -8,11 +8,6 @@ import net.minecraft.core.item.ItemStack;
 import net.minecraft.core.util.helper.DamageType;
 import net.minecraft.core.world.World;
 
-// Referenced classes of package net.minecraft.src:
-//            Entity, AxisAlignedBB, Mob, MathHelper,
-//            World, Vec3D, MovingObjectPosition, NBTTagCompound, 
-//            Player, ItemStack, Item, InventoryPlayer
-
 public class ProjectilePebble extends Projectile
 {
     private boolean firstBounce = true;
diff --git a/src/main/java/net/minecraft/core/entity/projectile/ProjectileSnowball.java b/src/main/java/net/minecraft/core/entity/projectile/ProjectileSnowball.java
index 4bca556fe..9880b5191 100644
--- a/src/main/java/net/minecraft/core/entity/projectile/ProjectileSnowball.java
+++ b/src/main/java/net/minecraft/core/entity/projectile/ProjectileSnowball.java
@@ -4,11 +4,6 @@ import net.minecraft.core.entity.Mob;
 import net.minecraft.core.item.Items;
 import net.minecraft.core.world.World;
 
-// Referenced classes of package net.minecraft.src:
-//            Entity, AxisAlignedBB, Mob, MathHelper,
-//            World, Vec3D, MovingObjectPosition, NBTTagCompound, 
-//            Player, ItemStack, Item, InventoryPlayer
-
 public class ProjectileSnowball extends Projectile
 {
 
diff --git a/src/main/java/net/minecraft/core/item/IComplexItem.java b/src/main/java/net/minecraft/core/item/IComplexItem.java
index f44036c3c..a31626a2b 100644
--- a/src/main/java/net/minecraft/core/item/IComplexItem.java
+++ b/src/main/java/net/minecraft/core/item/IComplexItem.java
@@ -1,9 +1,5 @@
 package net.minecraft.core.item;
 
-
-// Referenced classes of package net.minecraft.src:
-//            Item
-
 import net.minecraft.core.entity.player.Player;
 import net.minecraft.core.net.packet.Packet;
 import net.minecraft.core.world.World;
diff --git a/src/main/java/net/minecraft/core/item/ItemBed.java b/src/main/java/net/minecraft/core/item/ItemBed.java
index 96e074e6e..ccad71853 100644
--- a/src/main/java/net/minecraft/core/item/ItemBed.java
+++ b/src/main/java/net/minecraft/core/item/ItemBed.java
@@ -2,11 +2,6 @@ package net.minecraft.core.item;
 
 import net.minecraft.core.block.BlockBed;
 import net.minecraft.core.block.Blocks;
-
-// Referenced classes of package net.minecraft.src:
-//            Item, Block, BlockBed, Player,
-//            MathHelper, World, ItemStack
-
 import net.minecraft.core.entity.player.Player;
 import net.minecraft.core.enums.EnumBlockSoundEffectType;
 import net.minecraft.core.util.helper.Side;
diff --git a/src/main/java/net/minecraft/core/item/ItemBoat.java b/src/main/java/net/minecraft/core/item/ItemBoat.java
index 82334b741..f3408371a 100644
--- a/src/main/java/net/minecraft/core/item/ItemBoat.java
+++ b/src/main/java/net/minecraft/core/item/ItemBoat.java
@@ -1,11 +1,5 @@
 package net.minecraft.core.item;
 
-
-// Referenced classes of package net.minecraft.src:
-//            Item, Player, Vec3D, MathHelper,
-//            World, MovingObjectPosition, EnumMovingObjectType, Block, 
-//            EntityBoat, ItemStack
-
 import net.minecraft.core.block.entity.TileEntityActivator;
 import net.minecraft.core.entity.vehicle.EntityBoat;
 import net.minecraft.core.entity.player.Player;
diff --git a/src/main/java/net/minecraft/core/item/ItemBow.java b/src/main/java/net/minecraft/core/item/ItemBow.java
index 426616de3..b17f40bf4 100644
--- a/src/main/java/net/minecraft/core/item/ItemBow.java
+++ b/src/main/java/net/minecraft/core/item/ItemBow.java
@@ -1,10 +1,6 @@
 
 package net.minecraft.core.item;
 
-// Referenced classes of package net.minecraft.src:
-//            Item, Player, InventoryPlayer, World,
-//            ProjectileArrow, ItemStack
-
 import net.minecraft.core.entity.projectile.ProjectileArrow;
 import net.minecraft.core.entity.projectile.ProjectileArrowGolden;
 import net.minecraft.core.entity.projectile.ProjectileArrowPurple;
diff --git a/src/main/java/net/minecraft/core/item/ItemBucket.java b/src/main/java/net/minecraft/core/item/ItemBucket.java
index 41df2a94a..96034047b 100644
--- a/src/main/java/net/minecraft/core/item/ItemBucket.java
+++ b/src/main/java/net/minecraft/core/item/ItemBucket.java
@@ -1,10 +1,5 @@
 package net.minecraft.core.item;
 
-// Referenced classes of package net.minecraft.src:
-//            Item, Player, Vec3D, MathHelper,
-//            World, MovingObjectPosition, EnumMovingObjectType, Material, 
-//            ItemStack, WorldProvider, Block, MobCow
-
 import net.minecraft.core.block.entity.TileEntityActivator;
 import net.minecraft.core.util.helper.Direction;
 import net.minecraft.core.util.phys.HitResult;
diff --git a/src/main/java/net/minecraft/core/item/ItemBucketEmpty.java b/src/main/java/net/minecraft/core/item/ItemBucketEmpty.java
index 4137912be..6573ae216 100644
--- a/src/main/java/net/minecraft/core/item/ItemBucketEmpty.java
+++ b/src/main/java/net/minecraft/core/item/ItemBucketEmpty.java
@@ -1,10 +1,5 @@
 package net.minecraft.core.item;
 
-// Referenced classes of package net.minecraft.src:
-//            Item, Player, Vec3D, MathHelper,
-//            World, MovingObjectPosition, EnumMovingObjectType, Material,
-//            ItemStack, WorldProvider, Block, MobCow
-
 import net.minecraft.core.block.entity.TileEntityActivator;
 import net.minecraft.core.entity.Entity;
 import net.minecraft.core.entity.animal.MobCow;
diff --git a/src/main/java/net/minecraft/core/item/ItemCoal.java b/src/main/java/net/minecraft/core/item/ItemCoal.java
index 0552046d0..0382a6e3d 100644
--- a/src/main/java/net/minecraft/core/item/ItemCoal.java
+++ b/src/main/java/net/minecraft/core/item/ItemCoal.java
@@ -1,9 +1,5 @@
 package net.minecraft.core.item;
 
-
-// Referenced classes of package net.minecraft.src:
-//            Item, ItemStack
-
 public class ItemCoal extends Item
 {
 
diff --git a/src/main/java/net/minecraft/core/item/ItemDiscMusic.java b/src/main/java/net/minecraft/core/item/ItemDiscMusic.java
index 2b8ae53dc..0e9dc9935 100644
--- a/src/main/java/net/minecraft/core/item/ItemDiscMusic.java
+++ b/src/main/java/net/minecraft/core/item/ItemDiscMusic.java
@@ -1,10 +1,5 @@
 package net.minecraft.core.item;
 
-
-// Referenced classes of package net.minecraft.src:
-//            Item, World, Block, BlockJukebox,
-//            ItemStack, Player
-
 import net.minecraft.core.block.BlockJukebox;
 import net.minecraft.core.block.entity.TileEntityActivator;
 import net.minecraft.core.entity.player.Player;
diff --git a/src/main/java/net/minecraft/core/item/ItemDoor.java b/src/main/java/net/minecraft/core/item/ItemDoor.java
index e8e8f2ade..eaa4805ec 100644
--- a/src/main/java/net/minecraft/core/item/ItemDoor.java
+++ b/src/main/java/net/minecraft/core/item/ItemDoor.java
@@ -2,11 +2,6 @@ package net.minecraft.core.item;
 
 import net.minecraft.core.block.Block;
 import net.minecraft.core.block.entity.TileEntityActivator;
-
-// Referenced classes of package net.minecraft.src:
-//            Item, Material, Block, Player,
-//            MathHelper, World, ItemStack
-
 import net.minecraft.core.entity.player.Player;
 import net.minecraft.core.enums.EnumBlockSoundEffectType;
 import net.minecraft.core.util.helper.Direction;
diff --git a/src/main/java/net/minecraft/core/item/ItemEgg.java b/src/main/java/net/minecraft/core/item/ItemEgg.java
index f7be14b2c..93de7e207 100644
--- a/src/main/java/net/minecraft/core/item/ItemEgg.java
+++ b/src/main/java/net/minecraft/core/item/ItemEgg.java
@@ -1,9 +1,5 @@
 package net.minecraft.core.item;
 
-// Referenced classes of package net.minecraft.src:
-//            Item, ItemStack, World, ProjectileEgg,
-//            Player
-
 import net.minecraft.core.block.entity.TileEntityActivator;
 import net.minecraft.core.entity.projectile.ProjectileEgg;
 import net.minecraft.core.entity.player.Player;
diff --git a/src/main/java/net/minecraft/core/item/ItemFireStriker.java b/src/main/java/net/minecraft/core/item/ItemFireStriker.java
index c43e40560..1a78d77de 100644
--- a/src/main/java/net/minecraft/core/item/ItemFireStriker.java
+++ b/src/main/java/net/minecraft/core/item/ItemFireStriker.java
@@ -1,9 +1,5 @@
 package net.minecraft.core.item;
 
-// Referenced classes of package net.minecraft.src:
-//            Item, World, Block, BlockFire,
-//            ItemStack, Player
-
 import net.minecraft.core.block.Block;
 import net.minecraft.core.block.BlockBrazier;
 import net.minecraft.core.block.BlockFluid;
diff --git a/src/main/java/net/minecraft/core/item/ItemFishingRod.java b/src/main/java/net/minecraft/core/item/ItemFishingRod.java
index d03d623b6..edf198122 100644
--- a/src/main/java/net/minecraft/core/item/ItemFishingRod.java
+++ b/src/main/java/net/minecraft/core/item/ItemFishingRod.java
@@ -1,9 +1,5 @@
 package net.minecraft.core.item;
 
-// Referenced classes of package net.minecraft.src:
-//            Item, Player, EntityFish, ItemStack,
-//            World
-
 import net.minecraft.core.entity.EntityFishingBobber;
 import net.minecraft.core.entity.player.Player;
 import net.minecraft.core.world.World;
diff --git a/src/main/java/net/minecraft/core/item/ItemHandCannonLoaded.java b/src/main/java/net/minecraft/core/item/ItemHandCannonLoaded.java
index d9b13c8ea..9b436007b 100644
--- a/src/main/java/net/minecraft/core/item/ItemHandCannonLoaded.java
+++ b/src/main/java/net/minecraft/core/item/ItemHandCannonLoaded.java
@@ -1,9 +1,5 @@
 package net.minecraft.core.item;
 
-// Referenced classes of package net.minecraft.src:
-//            Item, Player, InventoryPlayer, World,
-//            ProjectileArrow, ItemStack
-
 import net.minecraft.core.entity.player.Player;
 import net.minecraft.core.entity.projectile.ProjectileCannonball;
 import net.minecraft.core.world.World;
@@ -21,7 +17,7 @@ public class ItemHandCannonLoaded extends Item
 	@Override
     public ItemStack onUseItem(ItemStack itemstack, World world, Player entityplayer)
     {
-		world.playSoundAtEntity(entityplayer, entityplayer, "random.bow", 0.3F, 1.0F / (itemRand.nextFloat() * -0.2F + -0.4F));
+		world.playSoundAtEntity(entityplayer, entityplayer, "random.bow", 0.3F, 1.0F / (itemRand.nextFloat() * -0.2F - 0.4F));
 
 		if(!world.isClientSide)
 		{
diff --git a/src/main/java/net/minecraft/core/item/ItemHandCannonUnloaded.java b/src/main/java/net/minecraft/core/item/ItemHandCannonUnloaded.java
index 278d25003..8c6201eee 100644
--- a/src/main/java/net/minecraft/core/item/ItemHandCannonUnloaded.java
+++ b/src/main/java/net/minecraft/core/item/ItemHandCannonUnloaded.java
@@ -1,9 +1,5 @@
 package net.minecraft.core.item;
 
-// Referenced classes of package net.minecraft.src:
-//            Item, Player, InventoryPlayer, World,
-//            ProjectileArrow, ItemStack
-
 import net.minecraft.core.entity.player.Player;
 import net.minecraft.core.world.World;
 
diff --git a/src/main/java/net/minecraft/core/item/ItemMap.java b/src/main/java/net/minecraft/core/item/ItemMap.java
index 4ce548df4..eb0789e3b 100644
--- a/src/main/java/net/minecraft/core/item/ItemMap.java
+++ b/src/main/java/net/minecraft/core/item/ItemMap.java
@@ -2,13 +2,6 @@ package net.minecraft.core.item;
 
 import net.minecraft.core.block.Block;
 import net.minecraft.core.block.Blocks;
-
-// Referenced classes of package net.minecraft.src:
-//            ItemMapBase, MapData, World, ItemStack, 
-//            WorldInfo, WorldProvider, Entity, MathHelper, 
-//            Block, Chunk, Material, MapColor, 
-//            EntityPlayer
-
 import net.minecraft.core.block.entity.TileEntityFlag;
 import net.minecraft.core.block.material.Material;
 import net.minecraft.core.entity.Entity;
diff --git a/src/main/java/net/minecraft/core/item/ItemPainting.java b/src/main/java/net/minecraft/core/item/ItemPainting.java
index 8627381c9..48b3051b8 100644
--- a/src/main/java/net/minecraft/core/item/ItemPainting.java
+++ b/src/main/java/net/minecraft/core/item/ItemPainting.java
@@ -1,10 +1,5 @@
 package net.minecraft.core.item;
 
-
-// Referenced classes of package net.minecraft.src:
-//            Item, EntityPainting, World, ItemStack,
-//            Player
-
 import net.minecraft.core.entity.EntityPainting;
 import net.minecraft.core.entity.player.Player;
 import net.minecraft.core.block.Blocks;
diff --git a/src/main/java/net/minecraft/core/item/ItemQuiver.java b/src/main/java/net/minecraft/core/item/ItemQuiver.java
index 94556b506..337db95ad 100644
--- a/src/main/java/net/minecraft/core/item/ItemQuiver.java
+++ b/src/main/java/net/minecraft/core/item/ItemQuiver.java
@@ -5,10 +5,6 @@ import net.minecraft.core.item.material.ArmorMaterial;
 import net.minecraft.core.player.inventory.slot.Slot;
 import org.jetbrains.annotations.Nullable;
 
-// Referenced classes of package net.minecraft.src:
-//            Item, Block, BlockLeaves, ItemStack,
-//            Mob
-
 public class ItemQuiver extends Item implements IArmorItem
 {
 
diff --git a/src/main/java/net/minecraft/core/item/ItemQuiverEndless.java b/src/main/java/net/minecraft/core/item/ItemQuiverEndless.java
index 2987ddb3a..93874ca75 100644
--- a/src/main/java/net/minecraft/core/item/ItemQuiverEndless.java
+++ b/src/main/java/net/minecraft/core/item/ItemQuiverEndless.java
@@ -1,11 +1,5 @@
 package net.minecraft.core.item;
 
-
-// Referenced classes of package net.minecraft.src:
-//            Item, Block, BlockLeaves, ItemStack,
-//            Mob
-
-
 import net.minecraft.core.item.material.ArmorMaterial;
 
 public class ItemQuiverEndless extends Item implements IArmorItem
diff --git a/src/main/java/net/minecraft/core/item/ItemSaddle.java b/src/main/java/net/minecraft/core/item/ItemSaddle.java
index 5e94a48bc..ecb9f337a 100644
--- a/src/main/java/net/minecraft/core/item/ItemSaddle.java
+++ b/src/main/java/net/minecraft/core/item/ItemSaddle.java
@@ -1,9 +1,5 @@
 package net.minecraft.core.item;
 
-
-// Referenced classes of package net.minecraft.src:
-//            Item, MobPig, ItemStack, Mob
-
 import net.minecraft.core.entity.Mob;
 import net.minecraft.core.entity.animal.MobPig;
 import net.minecraft.core.entity.player.Player;
diff --git a/src/main/java/net/minecraft/core/item/ItemSign.java b/src/main/java/net/minecraft/core/item/ItemSign.java
index f90ddfdbe..b9283d055 100644
--- a/src/main/java/net/minecraft/core/item/ItemSign.java
+++ b/src/main/java/net/minecraft/core/item/ItemSign.java
@@ -3,11 +3,6 @@ package net.minecraft.core.item;
 
 import net.minecraft.core.block.Blocks;
 import net.minecraft.core.block.entity.TileEntitySign;
-
-// Referenced classes of package net.minecraft.src:
-//            Item, World, Material, Block, 
-//            Player, MathHelper, ItemStack, TileEntitySign
-
 import net.minecraft.core.entity.player.Player;
 import net.minecraft.core.enums.EnumBlockSoundEffectType;
 import net.minecraft.core.util.helper.MathHelper;
diff --git a/src/main/java/net/minecraft/core/item/block/ItemBlock.java b/src/main/java/net/minecraft/core/item/block/ItemBlock.java
index 74beedb28..d632fb62b 100644
--- a/src/main/java/net/minecraft/core/item/block/ItemBlock.java
+++ b/src/main/java/net/minecraft/core/item/block/ItemBlock.java
@@ -14,10 +14,6 @@ import org.jetbrains.annotations.Nullable;
 
 import java.util.Random;
 
-// Referenced classes of package net.minecraft.src:
-//            Item, Block, World, ItemStack, 
-//            Material, StepSound, Player
-
 public class ItemBlock extends Item
 {
 
diff --git a/src/main/java/net/minecraft/core/item/block/ItemBlockAlgae.java b/src/main/java/net/minecraft/core/item/block/ItemBlockAlgae.java
index 3b31b0af8..da9cb36ee 100644
--- a/src/main/java/net/minecraft/core/item/block/ItemBlockAlgae.java
+++ b/src/main/java/net/minecraft/core/item/block/ItemBlockAlgae.java
@@ -1,8 +1,4 @@
 package net.minecraft.core.item.block;
-// Referenced classes of package net.minecraft.src:
-//            Item, Player, Vec3D, MathHelper,
-//            World, MovingObjectPosition, EnumMovingObjectType, Block, 
-//            EntityBoat, ItemStack
 
 import net.minecraft.core.block.entity.TileEntityActivator;
 import net.minecraft.core.block.tag.BlockTags;
diff --git a/src/main/java/net/minecraft/core/item/block/ItemBlockLayer.java b/src/main/java/net/minecraft/core/item/block/ItemBlockLayer.java
index affd673c0..1692cfbf4 100644
--- a/src/main/java/net/minecraft/core/item/block/ItemBlockLayer.java
+++ b/src/main/java/net/minecraft/core/item/block/ItemBlockLayer.java
@@ -1,11 +1,6 @@
 package net.minecraft.core.item.block;
 
 import net.minecraft.core.block.BlockLayerBase;
-
-// Referenced classes of package net.minecraft.src:
-//            Item, Block, World, ItemStack,
-//            Material, StepSound, Player
-
 import net.minecraft.core.block.Block;
 import net.minecraft.core.block.tag.BlockTags;
 import net.minecraft.core.entity.player.Player;
diff --git a/src/main/java/net/minecraft/core/item/tool/ItemToolHoe.java b/src/main/java/net/minecraft/core/item/tool/ItemToolHoe.java
index 48c29304a..a8f8a59a9 100644
--- a/src/main/java/net/minecraft/core/item/tool/ItemToolHoe.java
+++ b/src/main/java/net/minecraft/core/item/tool/ItemToolHoe.java
@@ -18,10 +18,6 @@ import org.jetbrains.annotations.Nullable;
 
 import java.util.Random;
 
-// Referenced classes of package net.minecraft.src:
-//            Item, EnumToolMaterial, World, Block, 
-//            GrassBlock, StepSound, ItemStack, Player
-
 public class ItemToolHoe extends ItemTool
 {
     public ItemToolHoe(String name, String namespaceId, int id, ToolMaterial enumtoolmaterial)
diff --git a/src/main/java/net/minecraft/core/item/tool/ItemToolShears.java b/src/main/java/net/minecraft/core/item/tool/ItemToolShears.java
index f501e1ed5..58ba5b5e3 100644
--- a/src/main/java/net/minecraft/core/item/tool/ItemToolShears.java
+++ b/src/main/java/net/minecraft/core/item/tool/ItemToolShears.java
@@ -1,10 +1,5 @@
 package net.minecraft.core.item.tool;
 
-
-// Referenced classes of package net.minecraft.src:
-//            Item, Block, BlockLeaves, ItemStack, 
-//            Mob
-
 import net.minecraft.core.block.BlockLeavesBase;
 import net.minecraft.core.block.entity.TileEntityActivator;
 import net.minecraft.core.block.tag.BlockTags;
diff --git a/src/main/java/net/minecraft/core/item/tool/ItemToolShovel.java b/src/main/java/net/minecraft/core/item/tool/ItemToolShovel.java
index 19d4ee78e..84e91426a 100644
--- a/src/main/java/net/minecraft/core/item/tool/ItemToolShovel.java
+++ b/src/main/java/net/minecraft/core/item/tool/ItemToolShovel.java
@@ -16,9 +16,6 @@ import org.jetbrains.annotations.Nullable;
 
 import java.util.Random;
 
-// Referenced classes of package net.minecraft.src:
-//            ItemTool, Block, EnumToolMaterial
-//updated
 public class ItemToolShovel extends ItemTool
 {
     public ItemToolShovel(String name, String namespaceId, int id, ToolMaterial enumtoolmaterial)
diff --git a/src/main/java/net/minecraft/core/item/tool/ItemToolSword.java b/src/main/java/net/minecraft/core/item/tool/ItemToolSword.java
index 0097ce77a..1e820d7a4 100644
--- a/src/main/java/net/minecraft/core/item/tool/ItemToolSword.java
+++ b/src/main/java/net/minecraft/core/item/tool/ItemToolSword.java
@@ -15,10 +15,6 @@ import net.minecraft.core.world.World;
 
 import java.util.Random;
 
-// Referenced classes of package net.minecraft.src:
-//            Item, EnumToolMaterial, Block, ItemStack, 
-//            Mob, Entity
-
 public class ItemToolSword extends Item
 {
 
diff --git a/src/main/java/net/minecraft/core/lang/I18n.java b/src/main/java/net/minecraft/core/lang/I18n.java
index 7cbb05b27..b118a066d 100644
--- a/src/main/java/net/minecraft/core/lang/I18n.java
+++ b/src/main/java/net/minecraft/core/lang/I18n.java
@@ -1,7 +1,6 @@
 package net.minecraft.core.lang;
 
 import com.mojang.logging.LogUtils;
-import net.minecraft.core.Global;
 import org.slf4j.Logger;
 
 import java.io.IOException;
diff --git a/src/main/java/net/minecraft/core/net/PropertyManager.java b/src/main/java/net/minecraft/core/net/PropertyManager.java
index 891935365..6d9908328 100644
--- a/src/main/java/net/minecraft/core/net/PropertyManager.java
+++ b/src/main/java/net/minecraft/core/net/PropertyManager.java
@@ -7,7 +7,6 @@ import org.slf4j.Logger;
 import java.io.*;
 import java.nio.file.Files;
 import java.util.Properties;
-import java.util.logging.Level;
 
 
 public class PropertyManager
diff --git a/src/main/java/net/minecraft/core/net/ServerCommandEntry.java b/src/main/java/net/minecraft/core/net/ServerCommandEntry.java
index f82f4f246..9ff3a2dd3 100644
--- a/src/main/java/net/minecraft/core/net/ServerCommandEntry.java
+++ b/src/main/java/net/minecraft/core/net/ServerCommandEntry.java
@@ -1,8 +1,5 @@
 package net.minecraft.core.net;
 
-
-// Referenced classes of package net.minecraft.src:
-//            ICommandListener
 public class ServerCommandEntry
 {
 
diff --git a/src/main/java/net/minecraft/core/net/command/arguments/ArgumentTypeEntitySummon.java b/src/main/java/net/minecraft/core/net/command/arguments/ArgumentTypeEntitySummon.java
index 76aa1e92b..ceb3e209f 100644
--- a/src/main/java/net/minecraft/core/net/command/arguments/ArgumentTypeEntitySummon.java
+++ b/src/main/java/net/minecraft/core/net/command/arguments/ArgumentTypeEntitySummon.java
@@ -9,14 +9,17 @@ import com.mojang.brigadier.suggestion.SuggestionsBuilder;
 import net.minecraft.core.entity.Entity;
 import net.minecraft.core.entity.EntityDispatcher;
 import net.minecraft.core.lang.I18n;
+import net.minecraft.core.net.command.util.CommandHelper;
+import net.minecraft.core.util.collection.NamespaceID;
 
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.List;
+import java.util.Locale;
 import java.util.concurrent.CompletableFuture;
 
 public class ArgumentTypeEntitySummon implements ArgumentType<Class<? extends Entity>> {
-    private static final List<String> EXAMPLES = Arrays.asList("Creeper", "Skeleton", "Slime");
+    private static final List<String> EXAMPLES = Arrays.asList("minecraft:creeper", "skeleton", "minecraft:slime");
 
     public static ArgumentType<Class<? extends Entity>> entity() {
         return new ArgumentTypeEntitySummon();
@@ -24,11 +27,19 @@ public class ArgumentTypeEntitySummon implements ArgumentType<Class<? extends En
 
     @Override
     public Class<? extends Entity> parse(StringReader reader) throws CommandSyntaxException {
-        final String string = reader.readString();
+        StringBuilder builder = new StringBuilder();
+        while (reader.canRead()) {
+            char peak = reader.peek();
+            if (peak == '[' || peak == '{' || peak == ' ') {
+                break;
+            }
+            builder.append(reader.read());
+        }
+        String string = builder.toString();
 
-        for (String entityName : EntityDispatcher.keyToClassMap.keySet()) {
-            if (entityName.equals(string)) {
-                return EntityDispatcher.keyToClassMap.get(entityName);
+        for (NamespaceID entityId : EntityDispatcher.idToClassMap.keySet()) {
+            if (CommandHelper.matchesNamespaceId(entityId, string)) {
+                return EntityDispatcher.classForId(entityId);
             }
         }
         throw new CommandSyntaxException(CommandSyntaxException.BUILT_IN_EXCEPTIONS.dispatcherUnknownArgument(), () -> I18n.getInstance().translateKey("command.argument_types.entity_summon.invalid_entity"));
@@ -36,10 +47,9 @@ public class ArgumentTypeEntitySummon implements ArgumentType<Class<? extends En
 
     @Override
     public <S> CompletableFuture<Suggestions> listSuggestions(CommandContext<S> context, SuggestionsBuilder builder) {
-        for (String entityName : EntityDispatcher.keyToClassMap.keySet()) {
-            if (entityName.toLowerCase().startsWith(builder.getRemainingLowerCase())) {
-                builder.suggest(entityName);
-            }
+        String remaining = builder.getRemaining().toLowerCase(Locale.ROOT);
+        for (NamespaceID entityId : EntityDispatcher.idToClassMap.keySet()) {
+            CommandHelper.getStringToSuggest(entityId.toString().toLowerCase(Locale.ROOT), remaining).ifPresent(builder::suggest);
         }
         return builder.buildFuture();
     }
diff --git a/src/main/java/net/minecraft/core/net/command/commands/CommandMobSpawning.java b/src/main/java/net/minecraft/core/net/command/commands/CommandMobSpawning.java
index d13ac478a..bed9bfc2b 100644
--- a/src/main/java/net/minecraft/core/net/command/commands/CommandMobSpawning.java
+++ b/src/main/java/net/minecraft/core/net/command/commands/CommandMobSpawning.java
@@ -11,6 +11,7 @@ import net.minecraft.core.entity.EntityDispatcher;
 import net.minecraft.core.lang.I18n;
 import net.minecraft.core.net.command.CommandSource;
 import net.minecraft.core.net.command.arguments.ArgumentTypeEntitySummon;
+import net.minecraft.core.util.collection.NamespaceID;
 import net.minecraft.core.world.World;
 import net.minecraft.core.world.config.spawning.SpawnerConfig;
 
@@ -26,11 +27,11 @@ public class CommandMobSpawning {
                 LiteralArgumentBuilder.<CommandSource>literal("mobspawning")
                     .requires(CommandSource::hasAdmin)
                     .then(LiteralArgumentBuilder.<CommandSource>literal("list").executes(c -> {
-                        Collection<String> ids = EntityDispatcher.classToKeyMap.values();
+                        Collection<NamespaceID> ids = EntityDispatcher.idToClassMap.keySet();
                         World world = c.getSource().getWorld();
                         SpawnerConfig config = world.getSpawnerConfig();
-                        for (String s : ids) {
-                            c.getSource().sendMessage(String.format("%s : %s", s, config.canMobSpawn(s)));
+                        for (NamespaceID s : ids) {
+                            c.getSource().sendMessage(String.format("%s : %s", s.toString(), config.canMobSpawn(s)));
                         }
                         c.getSource().sendMessage("Passive Spawning : " + config.canPassiveSpawn(world));
                         c.getSource().sendMessage("Hostile Spawning : " + config.canHostileSpawn(world));
@@ -44,7 +45,7 @@ public class CommandMobSpawning {
                                     World world = c.getSource().getWorld();
                                     SpawnerConfig config = world.getSpawnerConfig();
 
-                                    String mobId = EntityDispatcher.getEncodeId(c.getArgument("entity", Class.class));
+                                    NamespaceID mobId = EntityDispatcher.idForClass(c.getArgument("entity", Class.class));
                                     boolean value = c.getArgument("value", Boolean.class);
                                     config.setMobSpawn(mobId, value);
                                     c.getSource().sendTranslatableMessage("command.commands.mobspawning.set", mobId, value);
diff --git a/src/main/java/net/minecraft/core/net/command/helpers/EntitySelectorOptions.java b/src/main/java/net/minecraft/core/net/command/helpers/EntitySelectorOptions.java
index 3f03c2565..10fce3b60 100644
--- a/src/main/java/net/minecraft/core/net/command/helpers/EntitySelectorOptions.java
+++ b/src/main/java/net/minecraft/core/net/command/helpers/EntitySelectorOptions.java
@@ -18,6 +18,7 @@ import net.minecraft.core.lang.I18n;
 import net.minecraft.core.net.command.util.CommandHelper;
 import net.minecraft.core.net.command.util.NbtHelper;
 import net.minecraft.core.player.gamemode.Gamemode;
+import net.minecraft.core.util.collection.NamespaceID;
 import net.minecraft.core.util.helper.LoggedPrintStream;
 
 import java.util.*;
@@ -114,11 +115,14 @@ public class EntitySelectorOptions {
                 }
                 CommandHelper.suggest("!Player", builder);
                 CommandHelper.suggest("Player", builder);
-                for (String key : EntityDispatcher.keyToClassMap.keySet()) {
-                    if (!key.toLowerCase(Locale.ROOT).startsWith(string)) continue;
+                for (NamespaceID key : EntityDispatcher.idToClassMap.keySet()) {
+                    if (!(key.toString().startsWith(string) || (key.namespace.equals("minecraft") && key.value.startsWith(string)))) continue;
                     CommandHelper.suggest("!" + key, builder);
                     if (invert) continue;
-                    CommandHelper.suggest(key, builder);
+                    if (key.namespace.equals("minecraft")) {
+                        CommandHelper.suggest(key.value, builder);
+                    }
+                    CommandHelper.suggest(key.toString(), builder);
                 }
                 return builder.buildFuture();
             });
@@ -130,12 +134,24 @@ public class EntitySelectorOptions {
             if (invert) {
                 parser.setTypeInverse(true);
             }
-            String type = parser.getReader().readUnquotedString();
+
+            StringBuilder builder = new StringBuilder();
+            while (parser.getReader().canRead()) {
+                char peak = parser.getReader().peek();
+                if (peak != ':' && !StringReader.isAllowedInUnquotedString(peak)) {
+                    break;
+                }
+                builder.append(parser.getReader().read());
+            }
+            String type = builder.toString();
+
             if (type.equals("Player")) {
                 parser.setLimitToType(Player.class);
             } else {
-                if (EntityDispatcher.keyToClassMap.containsKey(type)) {
-                    parser.setLimitToType(EntityDispatcher.keyToClassMap.get(type));
+                if (EntityDispatcher.classForId(type) != null) {
+                    parser.setLimitToType(EntityDispatcher.classForId(type));
+                } else if (EntityDispatcher.classForId("minecraft:" + type) != null) {
+                    parser.setLimitToType(EntityDispatcher.classForId("minecraft:" + type));
                 } else {
                     parser.getReader().setCursor(cursor);
                     throw UNKNOWN_ENTITY_TYPE.createWithContext(parser.getReader(), type);
diff --git a/src/main/java/net/minecraft/core/net/command/helpers/ItemStackArgumentParser.java b/src/main/java/net/minecraft/core/net/command/helpers/ItemStackArgumentParser.java
index c1ee9cf69..e54c86d42 100644
--- a/src/main/java/net/minecraft/core/net/command/helpers/ItemStackArgumentParser.java
+++ b/src/main/java/net/minecraft/core/net/command/helpers/ItemStackArgumentParser.java
@@ -11,7 +11,6 @@ import net.minecraft.core.item.ItemStack;
 import net.minecraft.core.lang.I18n;
 import net.minecraft.core.net.command.util.CommandHelper;
 
-import java.util.Locale;
 import java.util.concurrent.CompletableFuture;
 import java.util.function.Consumer;
 
diff --git a/src/main/java/net/minecraft/core/net/command/util/CommandHelper.java b/src/main/java/net/minecraft/core/net/command/util/CommandHelper.java
index 5c9fefbaf..d06f75197 100644
--- a/src/main/java/net/minecraft/core/net/command/util/CommandHelper.java
+++ b/src/main/java/net/minecraft/core/net/command/util/CommandHelper.java
@@ -8,13 +8,9 @@ import com.mojang.nbt.Tag;
 import net.minecraft.core.block.Block;
 import net.minecraft.core.block.entity.TileEntity;
 import net.minecraft.core.entity.Entity;
-import net.minecraft.core.entity.EntityDispatcher;
-import net.minecraft.core.entity.EntityItem;
-import net.minecraft.core.entity.Mob;
 import net.minecraft.core.net.command.CommandSource;
 import net.minecraft.core.net.command.helpers.IntegerCoordinates;
 import net.minecraft.core.util.collection.NamespaceID;
-import net.minecraft.core.util.helper.LoggedPrintStream;
 import net.minecraft.core.util.helper.MathHelper;
 import net.minecraft.core.world.WorldSource;
 import net.minecraft.core.world.generate.feature.WorldFeature;
@@ -101,14 +97,7 @@ public class CommandHelper {
     }
 
     public static String getEntityName(Entity entity) {
-        if (entity instanceof Mob) {
-            if (!LoggedPrintStream.removeColorCodes(((Mob) entity).getDisplayName()).isEmpty()) {
-                return LoggedPrintStream.removeColorCodes(((Mob) entity).getDisplayName());
-            }
-        } else if (entity instanceof EntityItem && ((EntityItem) entity).item != null) {
-            return LoggedPrintStream.removeColorCodes(((EntityItem) entity).item.getDisplayName());
-        }
-        return EntityDispatcher.getEncodeId(entity);
+        return Entity.getNameFromEntity(entity, true);
     }
 
     public static int getVolume(CommandSource source, IntegerCoordinates first, IntegerCoordinates second) throws CommandSyntaxException {
diff --git a/src/main/java/net/minecraft/core/net/command/util/CommandReflectionHelper.java b/src/main/java/net/minecraft/core/net/command/util/CommandReflectionHelper.java
index 00ba01ef8..b866ddcd8 100644
--- a/src/main/java/net/minecraft/core/net/command/util/CommandReflectionHelper.java
+++ b/src/main/java/net/minecraft/core/net/command/util/CommandReflectionHelper.java
@@ -13,9 +13,8 @@ import java.util.zip.ZipFile;
 
 public class CommandReflectionHelper {
     public static List<Class<?>> getAllClasses(Condition<String> classNameCondition) {
-        String[] classPathEntries;
-        ArrayList classes = new ArrayList();
-        for (String classPathEntry : classPathEntries = System.getProperty("java.class.path").split(";")) {
+        List<Class<?>> classes = new ArrayList<>();
+        for (String classPathEntry : System.getProperty("java.class.path").split(";")) {
             File file = new File(classPathEntry);
             if (file.isDirectory()) {
                 int l = file.getAbsolutePath().length() + 1;
diff --git a/src/main/java/net/minecraft/core/net/packet/AESSendKeyPacket.java b/src/main/java/net/minecraft/core/net/packet/AESSendKeyPacket.java
index 4c7c487a5..935b9d746 100644
--- a/src/main/java/net/minecraft/core/net/packet/AESSendKeyPacket.java
+++ b/src/main/java/net/minecraft/core/net/packet/AESSendKeyPacket.java
@@ -7,9 +7,6 @@ import java.io.DataInputStream;
 import java.io.DataOutputStream;
 import java.io.IOException;
 
-// Referenced classes of package net.minecraft.src:
-//            Packet, PacketHandler
-
 public class AESSendKeyPacket extends Packet
 {
 
diff --git a/src/main/java/net/minecraft/core/net/packet/AddMobPacket.java b/src/main/java/net/minecraft/core/net/packet/AddMobPacket.java
index 6ee96204b..0201ce533 100644
--- a/src/main/java/net/minecraft/core/net/packet/AddMobPacket.java
+++ b/src/main/java/net/minecraft/core/net/packet/AddMobPacket.java
@@ -9,10 +9,6 @@ import net.minecraft.core.net.handler.PacketHandler;
 import java.io.*;
 import java.util.List;
 
-// Referenced classes of package net.minecraft.src:
-//            Packet, Mob, EntityList, MathHelper,
-//            DataWatcher, PacketHandler
-
 public class AddMobPacket extends Packet
 {
     public int id;
@@ -31,18 +27,18 @@ public class AddMobPacket extends Packet
     {
     }
 
-    public AddMobPacket(Mob entityliving)
+    public AddMobPacket(Mob mob)
     {
-        id = entityliving.id;
-        type = (short) EntityDispatcher.getEntityID(entityliving);
-        x = MathHelper.floor(entityliving.x * 32D);
-        y = MathHelper.floor(entityliving.y * 32D);
-        z = MathHelper.floor(entityliving.z * 32D);
-        yaw = (byte)(int)((entityliving.yRot * 256F) / 360F);
-        pitch = (byte)(int)((entityliving.xRot * 256F) / 360F);
-        metaData = entityliving.getEntityData();
-        nickname = entityliving.nickname;
-        chatColor = entityliving.chatColor;
+        id = mob.id;
+        type = (short) EntityDispatcher.numericIdForClass(mob.getClass());
+        x = MathHelper.floor(mob.x * 32D);
+        y = MathHelper.floor(mob.y * 32D);
+        z = MathHelper.floor(mob.z * 32D);
+        yaw = (byte)(int)((mob.yRot * 256F) / 360F);
+        pitch = (byte)(int)((mob.xRot * 256F) / 360F);
+        metaData = mob.getEntityData();
+        nickname = mob.nickname;
+        chatColor = mob.chatColor;
     }
 
     @Override
diff --git a/src/main/java/net/minecraft/core/net/packet/AddPaintingPacket.java b/src/main/java/net/minecraft/core/net/packet/AddPaintingPacket.java
index e2ebd5d68..c7bf2744d 100644
--- a/src/main/java/net/minecraft/core/net/packet/AddPaintingPacket.java
+++ b/src/main/java/net/minecraft/core/net/packet/AddPaintingPacket.java
@@ -7,9 +7,6 @@ import net.minecraft.core.net.handler.PacketHandler;
 
 import java.io.*;
 
-// Referenced classes of package net.minecraft.src:
-//            Packet, EntityPainting, ArtType, PacketHandler
-
 public class AddPaintingPacket extends Packet
 {
 
diff --git a/src/main/java/net/minecraft/core/net/packet/AddPlayerPacket.java b/src/main/java/net/minecraft/core/net/packet/AddPlayerPacket.java
index 908d73593..38bf0a6a7 100644
--- a/src/main/java/net/minecraft/core/net/packet/AddPlayerPacket.java
+++ b/src/main/java/net/minecraft/core/net/packet/AddPlayerPacket.java
@@ -10,10 +10,6 @@ import org.jetbrains.annotations.Nullable;
 import java.io.*;
 import java.util.UUID;
 
-// Referenced classes of package net.minecraft.src:
-//            Packet, Player, MathHelper, InventoryPlayer,
-//            ItemStack, PacketHandler
-
 public class AddPlayerPacket extends Packet
 {
 
diff --git a/src/main/java/net/minecraft/core/net/packet/AnimatePacket.java b/src/main/java/net/minecraft/core/net/packet/AnimatePacket.java
index 1a6656f8f..ab15256e4 100644
--- a/src/main/java/net/minecraft/core/net/packet/AnimatePacket.java
+++ b/src/main/java/net/minecraft/core/net/packet/AnimatePacket.java
@@ -5,9 +5,6 @@ import net.minecraft.core.net.handler.PacketHandler;
 
 import java.io.*;
 
-// Referenced classes of package net.minecraft.src:
-//            Packet, Entity, PacketHandler
-
 public class AnimatePacket extends Packet
 {
 
diff --git a/src/main/java/net/minecraft/core/net/packet/BedMessagePacket.java b/src/main/java/net/minecraft/core/net/packet/BedMessagePacket.java
index 5b2efa0b9..45fbfecfc 100644
--- a/src/main/java/net/minecraft/core/net/packet/BedMessagePacket.java
+++ b/src/main/java/net/minecraft/core/net/packet/BedMessagePacket.java
@@ -4,9 +4,6 @@ import net.minecraft.core.net.handler.PacketHandler;
 
 import java.io.*;
 
-// Referenced classes of package net.minecraft.src:
-//            Packet, PacketHandler
-
 public class BedMessagePacket extends Packet
 {
 
diff --git a/src/main/java/net/minecraft/core/net/packet/BlockEventPacket.java b/src/main/java/net/minecraft/core/net/packet/BlockEventPacket.java
index 6924123c4..13c76e2a5 100644
--- a/src/main/java/net/minecraft/core/net/packet/BlockEventPacket.java
+++ b/src/main/java/net/minecraft/core/net/packet/BlockEventPacket.java
@@ -4,9 +4,6 @@ import net.minecraft.core.net.handler.PacketHandler;
 
 import java.io.*;
 
-// Referenced classes of package net.minecraft.src:
-//            Packet, PacketHandler
-
 public class BlockEventPacket extends Packet
 {
     public int xLocation;
diff --git a/src/main/java/net/minecraft/core/net/packet/BlockRegionUpdatePacket.java b/src/main/java/net/minecraft/core/net/packet/BlockRegionUpdatePacket.java
index 6c91d1f01..913c4516e 100644
--- a/src/main/java/net/minecraft/core/net/packet/BlockRegionUpdatePacket.java
+++ b/src/main/java/net/minecraft/core/net/packet/BlockRegionUpdatePacket.java
@@ -8,9 +8,6 @@ import java.util.zip.DataFormatException;
 import java.util.zip.Deflater;
 import java.util.zip.Inflater;
 
-// Referenced classes of package net.minecraft.src:
-//            Packet, PacketHandler
-
 public class BlockRegionUpdatePacket extends Packet
 {
 
diff --git a/src/main/java/net/minecraft/core/net/packet/BlockUpdatePacket.java b/src/main/java/net/minecraft/core/net/packet/BlockUpdatePacket.java
index bd62caaf4..467672504 100644
--- a/src/main/java/net/minecraft/core/net/packet/BlockUpdatePacket.java
+++ b/src/main/java/net/minecraft/core/net/packet/BlockUpdatePacket.java
@@ -5,9 +5,6 @@ import net.minecraft.core.world.World;
 
 import java.io.*;
 
-// Referenced classes of package net.minecraft.src:
-//            Packet, PacketHandler
-
 public class BlockUpdatePacket extends Packet
 {
     public int xPosition;
diff --git a/src/main/java/net/minecraft/core/net/packet/ChunkBlocksUpdatePacket.java b/src/main/java/net/minecraft/core/net/packet/ChunkBlocksUpdatePacket.java
index 82db24948..cba18abd2 100644
--- a/src/main/java/net/minecraft/core/net/packet/ChunkBlocksUpdatePacket.java
+++ b/src/main/java/net/minecraft/core/net/packet/ChunkBlocksUpdatePacket.java
@@ -6,9 +6,6 @@ import net.minecraft.core.net.handler.PacketHandler;
 
 import java.io.*;
 
-// Referenced classes of package net.minecraft.src:
-//            Packet, PacketHandler
-
 public class ChunkBlocksUpdatePacket extends Packet
 {
 
diff --git a/src/main/java/net/minecraft/core/net/packet/ChunkVisibilityPacket.java b/src/main/java/net/minecraft/core/net/packet/ChunkVisibilityPacket.java
index 2741cbe9c..a853526a2 100644
--- a/src/main/java/net/minecraft/core/net/packet/ChunkVisibilityPacket.java
+++ b/src/main/java/net/minecraft/core/net/packet/ChunkVisibilityPacket.java
@@ -4,9 +4,6 @@ import net.minecraft.core.net.handler.PacketHandler;
 
 import java.io.*;
 
-// Referenced classes of package net.minecraft.src:
-//            Packet, PacketHandler
-
 public class ChunkVisibilityPacket extends Packet
 {
     public int chunkX;
diff --git a/src/main/java/net/minecraft/core/net/packet/ContainerAckPacket.java b/src/main/java/net/minecraft/core/net/packet/ContainerAckPacket.java
index 499911949..3c54938e0 100644
--- a/src/main/java/net/minecraft/core/net/packet/ContainerAckPacket.java
+++ b/src/main/java/net/minecraft/core/net/packet/ContainerAckPacket.java
@@ -4,9 +4,6 @@ import net.minecraft.core.net.handler.PacketHandler;
 
 import java.io.*;
 
-// Referenced classes of package net.minecraft.src:
-//            Packet, PacketHandler
-
 public class ContainerAckPacket extends Packet
 {
 
diff --git a/src/main/java/net/minecraft/core/net/packet/ContainerClickPacket.java b/src/main/java/net/minecraft/core/net/packet/ContainerClickPacket.java
index d4785fcdb..83ba8e7ff 100644
--- a/src/main/java/net/minecraft/core/net/packet/ContainerClickPacket.java
+++ b/src/main/java/net/minecraft/core/net/packet/ContainerClickPacket.java
@@ -6,9 +6,6 @@ import net.minecraft.core.net.handler.PacketHandler;
 
 import java.io.*;
 
-// Referenced classes of package net.minecraft.src:
-//            Packet, PacketHandler, ItemStack
-
 public class ContainerClickPacket extends Packet {
 
 	public ContainerClickPacket() {
diff --git a/src/main/java/net/minecraft/core/net/packet/ContainerClosePacket.java b/src/main/java/net/minecraft/core/net/packet/ContainerClosePacket.java
index d58b8aeb2..0a7177f9b 100644
--- a/src/main/java/net/minecraft/core/net/packet/ContainerClosePacket.java
+++ b/src/main/java/net/minecraft/core/net/packet/ContainerClosePacket.java
@@ -4,9 +4,6 @@ import net.minecraft.core.net.handler.PacketHandler;
 
 import java.io.*;
 
-// Referenced classes of package net.minecraft.src:
-//            Packet, PacketHandler
-
 public class ContainerClosePacket extends Packet
 {
 
diff --git a/src/main/java/net/minecraft/core/net/packet/ContainerOpenPacket.java b/src/main/java/net/minecraft/core/net/packet/ContainerOpenPacket.java
index 88ea5573d..7d93ab1eb 100644
--- a/src/main/java/net/minecraft/core/net/packet/ContainerOpenPacket.java
+++ b/src/main/java/net/minecraft/core/net/packet/ContainerOpenPacket.java
@@ -4,9 +4,6 @@ import net.minecraft.core.net.handler.PacketHandler;
 
 import java.io.*;
 
-// Referenced classes of package net.minecraft.src:
-//            Packet, PacketHandler
-
 public class ContainerOpenPacket extends Packet
 {
     public static final int TYPE_GENERIC_CONTAINER = 0;
diff --git a/src/main/java/net/minecraft/core/net/packet/ContainerSetContentPacket.java b/src/main/java/net/minecraft/core/net/packet/ContainerSetContentPacket.java
index 67ad7c452..eea501c1d 100644
--- a/src/main/java/net/minecraft/core/net/packet/ContainerSetContentPacket.java
+++ b/src/main/java/net/minecraft/core/net/packet/ContainerSetContentPacket.java
@@ -1,16 +1,12 @@
 package net.minecraft.core.net.packet;
 
 import com.mojang.nbt.CompoundTag;
-import net.minecraft.core.item.Item;
 import net.minecraft.core.item.ItemStack;
 import net.minecraft.core.net.handler.PacketHandler;
 
 import java.io.*;
 import java.util.List;
 
-// Referenced classes of package net.minecraft.src:
-//            Packet, ItemStack, PacketHandler
-
 public class ContainerSetContentPacket extends Packet
 {
     public int windowId;
diff --git a/src/main/java/net/minecraft/core/net/packet/ContainerSetDataPacket.java b/src/main/java/net/minecraft/core/net/packet/ContainerSetDataPacket.java
index f2fcccc86..b96ad1082 100644
--- a/src/main/java/net/minecraft/core/net/packet/ContainerSetDataPacket.java
+++ b/src/main/java/net/minecraft/core/net/packet/ContainerSetDataPacket.java
@@ -4,9 +4,6 @@ import net.minecraft.core.net.handler.PacketHandler;
 
 import java.io.*;
 
-// Referenced classes of package net.minecraft.src:
-//            Packet, PacketHandler
-
 public class ContainerSetDataPacket extends Packet
 {
 
diff --git a/src/main/java/net/minecraft/core/net/packet/ContainerSetSlotPacket.java b/src/main/java/net/minecraft/core/net/packet/ContainerSetSlotPacket.java
index d32a79e9b..3c6d3b013 100644
--- a/src/main/java/net/minecraft/core/net/packet/ContainerSetSlotPacket.java
+++ b/src/main/java/net/minecraft/core/net/packet/ContainerSetSlotPacket.java
@@ -6,9 +6,6 @@ import net.minecraft.core.net.handler.PacketHandler;
 
 import java.io.*;
 
-// Referenced classes of package net.minecraft.src:
-//            Packet, PacketHandler, ItemStack
-
 public class ContainerSetSlotPacket extends Packet
 {
 
diff --git a/src/main/java/net/minecraft/core/net/packet/EnitityEventPacket.java b/src/main/java/net/minecraft/core/net/packet/EnitityEventPacket.java
index ec4b04a19..50f9070d9 100644
--- a/src/main/java/net/minecraft/core/net/packet/EnitityEventPacket.java
+++ b/src/main/java/net/minecraft/core/net/packet/EnitityEventPacket.java
@@ -4,9 +4,6 @@ import net.minecraft.core.net.handler.PacketHandler;
 
 import java.io.*;
 
-// Referenced classes of package net.minecraft.src:
-//            Packet, PacketHandler
-
 public class EnitityEventPacket extends Packet
 {
 
diff --git a/src/main/java/net/minecraft/core/net/packet/InteractPacket.java b/src/main/java/net/minecraft/core/net/packet/InteractPacket.java
index 03bb57665..e7df42227 100644
--- a/src/main/java/net/minecraft/core/net/packet/InteractPacket.java
+++ b/src/main/java/net/minecraft/core/net/packet/InteractPacket.java
@@ -4,9 +4,6 @@ import net.minecraft.core.net.handler.PacketHandler;
 
 import java.io.*;
 
-// Referenced classes of package net.minecraft.src:
-//            Packet, PacketHandler
-
 public class InteractPacket extends Packet
 {
     public static final int ACTION_INTERACT = 0;
diff --git a/src/main/java/net/minecraft/core/net/packet/KeepAlivePacket.java b/src/main/java/net/minecraft/core/net/packet/KeepAlivePacket.java
index 449891ac5..18457b2f8 100644
--- a/src/main/java/net/minecraft/core/net/packet/KeepAlivePacket.java
+++ b/src/main/java/net/minecraft/core/net/packet/KeepAlivePacket.java
@@ -4,9 +4,6 @@ import net.minecraft.core.net.handler.PacketHandler;
 
 import java.io.*;
 
-// Referenced classes of package net.minecraft.src:
-//            Packet, PacketHandler
-
 public class KeepAlivePacket extends Packet
 {
 
diff --git a/src/main/java/net/minecraft/core/net/packet/LoginPacket.java b/src/main/java/net/minecraft/core/net/packet/LoginPacket.java
index 0b07c1fe4..b86470626 100644
--- a/src/main/java/net/minecraft/core/net/packet/LoginPacket.java
+++ b/src/main/java/net/minecraft/core/net/packet/LoginPacket.java
@@ -5,9 +5,6 @@ import net.minecraft.core.net.handler.PacketHandler;
 import java.io.*;
 import java.util.UUID;
 
-// Referenced classes of package net.minecraft.src:
-//            Packet, PacketHandler
-
 public class LoginPacket extends Packet
 {
     public int playerEntityIdAndProtocolVersion;
diff --git a/src/main/java/net/minecraft/core/net/packet/MapDataPacket.java b/src/main/java/net/minecraft/core/net/packet/MapDataPacket.java
index e7d752ddc..b0ee5176b 100644
--- a/src/main/java/net/minecraft/core/net/packet/MapDataPacket.java
+++ b/src/main/java/net/minecraft/core/net/packet/MapDataPacket.java
@@ -22,7 +22,6 @@ public class MapDataPacket extends Packet {
 	public MapDataPacket(short itemId, short meta, byte scale, byte[] mapData, List<MapWaypoint> waypoints) {
 		this.isChunkDataPacket = true;
 		this.itemId = itemId;
-		this.scale = scale;
 		this.meta = meta;
 		this.waypoints = waypoints;
 		this.mapData = mapData;
diff --git a/src/main/java/net/minecraft/core/net/packet/MoveEntityPacket.java b/src/main/java/net/minecraft/core/net/packet/MoveEntityPacket.java
index 2fc7c642b..d5cbee447 100644
--- a/src/main/java/net/minecraft/core/net/packet/MoveEntityPacket.java
+++ b/src/main/java/net/minecraft/core/net/packet/MoveEntityPacket.java
@@ -4,9 +4,6 @@ import net.minecraft.core.net.handler.PacketHandler;
 
 import java.io.*;
 
-// Referenced classes of package net.minecraft.src:
-//            Packet, PacketHandler
-
 public class MoveEntityPacket extends Packet
 {
     public int id;
diff --git a/src/main/java/net/minecraft/core/net/packet/MovePlayerPacket.java b/src/main/java/net/minecraft/core/net/packet/MovePlayerPacket.java
index 5bda6e6ed..5aea9dff7 100644
--- a/src/main/java/net/minecraft/core/net/packet/MovePlayerPacket.java
+++ b/src/main/java/net/minecraft/core/net/packet/MovePlayerPacket.java
@@ -4,9 +4,6 @@ import net.minecraft.core.net.handler.PacketHandler;
 
 import java.io.*;
 
-// Referenced classes of package net.minecraft.src:
-//            Packet, PacketHandler
-
 public class MovePlayerPacket extends Packet
 {
     public double x;
diff --git a/src/main/java/net/minecraft/core/net/packet/PlaySoundEffectPacket.java b/src/main/java/net/minecraft/core/net/packet/PlaySoundEffectPacket.java
index 90e70ee37..8ad9cb5e3 100644
--- a/src/main/java/net/minecraft/core/net/packet/PlaySoundEffectPacket.java
+++ b/src/main/java/net/minecraft/core/net/packet/PlaySoundEffectPacket.java
@@ -4,9 +4,6 @@ import net.minecraft.core.net.handler.PacketHandler;
 
 import java.io.*;
 
-// Referenced classes of package net.minecraft.src:
-//            Packet, PacketHandler
-
 public class PlaySoundEffectPacket extends Packet
 {
 
diff --git a/src/main/java/net/minecraft/core/net/packet/PlayerActionPacket.java b/src/main/java/net/minecraft/core/net/packet/PlayerActionPacket.java
index 49c8368f3..e006a7837 100644
--- a/src/main/java/net/minecraft/core/net/packet/PlayerActionPacket.java
+++ b/src/main/java/net/minecraft/core/net/packet/PlayerActionPacket.java
@@ -7,9 +7,6 @@ import java.io.IOException;
 import net.minecraft.core.net.handler.PacketHandler;
 import net.minecraft.core.util.helper.Side;
 
-// Referenced classes of package net.minecraft.src:
-//            Packet, PacketHandler
-
 public class PlayerActionPacket extends Packet
 {
     public static final int ACTION_DIG_START = 0;
diff --git a/src/main/java/net/minecraft/core/net/packet/PlayerGamemodePacket.java b/src/main/java/net/minecraft/core/net/packet/PlayerGamemodePacket.java
index c632cc47b..648b70cea 100644
--- a/src/main/java/net/minecraft/core/net/packet/PlayerGamemodePacket.java
+++ b/src/main/java/net/minecraft/core/net/packet/PlayerGamemodePacket.java
@@ -4,9 +4,6 @@ import net.minecraft.core.net.handler.PacketHandler;
 
 import java.io.*;
 
-// Referenced classes of package net.minecraft.src:
-//            Packet, DataWatcher, PacketHandler
-
 public class PlayerGamemodePacket extends Packet
 {
 
diff --git a/src/main/java/net/minecraft/core/net/packet/PreLoginPacket.java b/src/main/java/net/minecraft/core/net/packet/PreLoginPacket.java
index 22dfed246..12a411e8f 100644
--- a/src/main/java/net/minecraft/core/net/packet/PreLoginPacket.java
+++ b/src/main/java/net/minecraft/core/net/packet/PreLoginPacket.java
@@ -4,9 +4,6 @@ import net.minecraft.core.net.handler.PacketHandler;
 
 import java.io.*;
 
-// Referenced classes of package net.minecraft.src:
-//            Packet, PacketHandler
-
 public class PreLoginPacket extends Packet
 {
     public String username;
diff --git a/src/main/java/net/minecraft/core/net/packet/RemoveEntityPacket.java b/src/main/java/net/minecraft/core/net/packet/RemoveEntityPacket.java
index 7988e9688..c3ba39c60 100644
--- a/src/main/java/net/minecraft/core/net/packet/RemoveEntityPacket.java
+++ b/src/main/java/net/minecraft/core/net/packet/RemoveEntityPacket.java
@@ -4,9 +4,6 @@ import net.minecraft.core.net.handler.PacketHandler;
 
 import java.io.*;
 
-// Referenced classes of package net.minecraft.src:
-//            Packet, PacketHandler
-
 public class RemoveEntityPacket extends Packet
 {
 
diff --git a/src/main/java/net/minecraft/core/net/packet/RespawnPacket.java b/src/main/java/net/minecraft/core/net/packet/RespawnPacket.java
index 51773fe6f..ff35f4a2d 100644
--- a/src/main/java/net/minecraft/core/net/packet/RespawnPacket.java
+++ b/src/main/java/net/minecraft/core/net/packet/RespawnPacket.java
@@ -4,9 +4,6 @@ import net.minecraft.core.net.handler.PacketHandler;
 
 import java.io.*;
 
-// Referenced classes of package net.minecraft.src:
-//            Packet, PacketHandler
-
 public class RespawnPacket extends Packet
 {
     public byte respawnDimensionId;
diff --git a/src/main/java/net/minecraft/core/net/packet/SetCarriedItemPacket.java b/src/main/java/net/minecraft/core/net/packet/SetCarriedItemPacket.java
index a4bae91e8..02453eb7f 100644
--- a/src/main/java/net/minecraft/core/net/packet/SetCarriedItemPacket.java
+++ b/src/main/java/net/minecraft/core/net/packet/SetCarriedItemPacket.java
@@ -4,9 +4,6 @@ import net.minecraft.core.net.handler.PacketHandler;
 
 import java.io.*;
 
-// Referenced classes of package net.minecraft.src:
-//            Packet, PacketHandler
-
 public class SetCarriedItemPacket extends Packet
 {
 
diff --git a/src/main/java/net/minecraft/core/net/packet/SetEntityDataPacket.java b/src/main/java/net/minecraft/core/net/packet/SetEntityDataPacket.java
index 29653a156..c4290d9eb 100644
--- a/src/main/java/net/minecraft/core/net/packet/SetEntityDataPacket.java
+++ b/src/main/java/net/minecraft/core/net/packet/SetEntityDataPacket.java
@@ -6,9 +6,6 @@ import net.minecraft.core.world.data.SynchedEntityData;
 import java.io.*;
 import java.util.List;
 
-// Referenced classes of package net.minecraft.src:
-//            Packet, DataWatcher, PacketHandler
-
 public class SetEntityDataPacket extends Packet
 {
 
diff --git a/src/main/java/net/minecraft/core/net/packet/SetEntityMotionPacket.java b/src/main/java/net/minecraft/core/net/packet/SetEntityMotionPacket.java
index 3daddafcf..c76a33a92 100644
--- a/src/main/java/net/minecraft/core/net/packet/SetEntityMotionPacket.java
+++ b/src/main/java/net/minecraft/core/net/packet/SetEntityMotionPacket.java
@@ -5,9 +5,6 @@ import net.minecraft.core.net.handler.PacketHandler;
 
 import java.io.*;
 
-// Referenced classes of package net.minecraft.src:
-//            Packet, Entity, PacketHandler
-
 public class SetEntityMotionPacket extends Packet
 {
 
diff --git a/src/main/java/net/minecraft/core/net/packet/SetEquippedItemPacket.java b/src/main/java/net/minecraft/core/net/packet/SetEquippedItemPacket.java
index c04a9f500..1497e5777 100644
--- a/src/main/java/net/minecraft/core/net/packet/SetEquippedItemPacket.java
+++ b/src/main/java/net/minecraft/core/net/packet/SetEquippedItemPacket.java
@@ -6,9 +6,6 @@ import net.minecraft.core.net.handler.PacketHandler;
 
 import java.io.*;
 
-// Referenced classes of package net.minecraft.src:
-//            Packet, PacketHandler
-
 public class SetEquippedItemPacket extends Packet
 {
     public int entityID;
diff --git a/src/main/java/net/minecraft/core/net/packet/SetHealthPacket.java b/src/main/java/net/minecraft/core/net/packet/SetHealthPacket.java
index 06c6d2524..c26830d3b 100644
--- a/src/main/java/net/minecraft/core/net/packet/SetHealthPacket.java
+++ b/src/main/java/net/minecraft/core/net/packet/SetHealthPacket.java
@@ -4,9 +4,6 @@ import net.minecraft.core.net.handler.PacketHandler;
 
 import java.io.*;
 
-// Referenced classes of package net.minecraft.src:
-//            Packet, PacketHandler
-
 public class SetHealthPacket extends Packet
 {
     public int healthMP;
diff --git a/src/main/java/net/minecraft/core/net/packet/SetMobSpawnerPacket.java b/src/main/java/net/minecraft/core/net/packet/SetMobSpawnerPacket.java
index d01c02d68..4c4743fba 100644
--- a/src/main/java/net/minecraft/core/net/packet/SetMobSpawnerPacket.java
+++ b/src/main/java/net/minecraft/core/net/packet/SetMobSpawnerPacket.java
@@ -1,7 +1,9 @@
 package net.minecraft.core.net.packet;
 
+import net.minecraft.core.entity.Entity;
 import net.minecraft.core.entity.EntityDispatcher;
 import net.minecraft.core.net.handler.PacketHandler;
+import org.jetbrains.annotations.Nullable;
 
 import java.io.DataInputStream;
 import java.io.DataOutputStream;
@@ -11,19 +13,18 @@ public class SetMobSpawnerPacket extends Packet {
     public int xPosition;
     public int yPosition;
     public int zPosition;
-    public String spawnType;
+    public @Nullable Class<? extends Entity> entityClass;
 
     public SetMobSpawnerPacket() {
         isChunkDataPacket = true;
     }
 
-    public SetMobSpawnerPacket(int x, int y, int z, String spawnType) {
+    public SetMobSpawnerPacket(int x, int y, int z, @Nullable Class<? extends Entity> entityClass) {
         isChunkDataPacket = true;
         this.xPosition = x;
         this.yPosition = y;
         this.zPosition = z;
-        if(spawnType == null) spawnType = "none";
-        this.spawnType = spawnType;
+        this.entityClass = entityClass;
     }
 
     @Override
@@ -31,7 +32,12 @@ public class SetMobSpawnerPacket extends Packet {
         xPosition = dis.readInt();
         yPosition = dis.readShort();
         zPosition = dis.readInt();
-        spawnType = readString(dis, EntityDispatcher.getLargestIdSize());
+        int type = dis.readShort() & 0xFFFF;
+        if (type == 0xFFFF) {
+            entityClass = null;
+        } else {
+            entityClass = EntityDispatcher.classForNumericId(type);
+        }
     }
 
     @Override
@@ -39,7 +45,7 @@ public class SetMobSpawnerPacket extends Packet {
         dos.writeInt(xPosition);
         dos.writeShort(yPosition);
         dos.writeInt(zPosition);
-        writeString(spawnType, dos);
+        dos.writeShort(entityClass == null ? 0xFFFF : EntityDispatcher.numericIdForClass(entityClass));
     }
 
     @Override
@@ -49,6 +55,6 @@ public class SetMobSpawnerPacket extends Packet {
 
     @Override
 	public int getEstimatedSize() {
-        return 12 + spawnType.length();
+        return 14;
     }
 }
\ No newline at end of file
diff --git a/src/main/java/net/minecraft/core/net/packet/SetRidingPacket.java b/src/main/java/net/minecraft/core/net/packet/SetRidingPacket.java
index abca2c753..6532d88d0 100644
--- a/src/main/java/net/minecraft/core/net/packet/SetRidingPacket.java
+++ b/src/main/java/net/minecraft/core/net/packet/SetRidingPacket.java
@@ -5,9 +5,6 @@ import net.minecraft.core.net.handler.PacketHandler;
 
 import java.io.*;
 
-// Referenced classes of package net.minecraft.src:
-//            Packet, PacketHandler
-
 public class SetRidingPacket extends Packet
 {
 
diff --git a/src/main/java/net/minecraft/core/net/packet/SetSpawnPositionPacket.java b/src/main/java/net/minecraft/core/net/packet/SetSpawnPositionPacket.java
index 1b2c175cb..7cbe8008f 100644
--- a/src/main/java/net/minecraft/core/net/packet/SetSpawnPositionPacket.java
+++ b/src/main/java/net/minecraft/core/net/packet/SetSpawnPositionPacket.java
@@ -4,9 +4,6 @@ import net.minecraft.core.net.handler.PacketHandler;
 
 import java.io.*;
 
-// Referenced classes of package net.minecraft.src:
-//            Packet, PacketHandler
-
 public class SetSpawnPositionPacket extends Packet
 {
     public int x;
diff --git a/src/main/java/net/minecraft/core/net/packet/SetTimePacket.java b/src/main/java/net/minecraft/core/net/packet/SetTimePacket.java
index 99e04c377..772ef8920 100644
--- a/src/main/java/net/minecraft/core/net/packet/SetTimePacket.java
+++ b/src/main/java/net/minecraft/core/net/packet/SetTimePacket.java
@@ -4,9 +4,6 @@ import net.minecraft.core.net.handler.PacketHandler;
 
 import java.io.*;
 
-// Referenced classes of package net.minecraft.src:
-//            Packet, PacketHandler
-
 public class SetTimePacket extends Packet
 {
     public long time;
diff --git a/src/main/java/net/minecraft/core/net/packet/SignUpdatePacket.java b/src/main/java/net/minecraft/core/net/packet/SignUpdatePacket.java
index 3d560fa29..025e0ef73 100644
--- a/src/main/java/net/minecraft/core/net/packet/SignUpdatePacket.java
+++ b/src/main/java/net/minecraft/core/net/packet/SignUpdatePacket.java
@@ -5,9 +5,6 @@ import net.minecraft.core.net.handler.PacketHandler;
 
 import java.io.*;
 
-// Referenced classes of package net.minecraft.src:
-//            Packet, PacketHandler
-
 public class SignUpdatePacket extends Packet
 {
 
diff --git a/src/main/java/net/minecraft/core/net/packet/StatisticPacket.java b/src/main/java/net/minecraft/core/net/packet/StatisticPacket.java
index aef0545f3..0db1befd5 100644
--- a/src/main/java/net/minecraft/core/net/packet/StatisticPacket.java
+++ b/src/main/java/net/minecraft/core/net/packet/StatisticPacket.java
@@ -6,9 +6,6 @@ import net.minecraft.core.util.collection.NamespaceID;
 
 import java.io.*;
 
-// Referenced classes of package net.minecraft.src:
-//            Packet, PacketHandler
-
 public class StatisticPacket extends Packet
 {
     public NamespaceID statID;
diff --git a/src/main/java/net/minecraft/core/net/packet/SyncIDsPacket.java b/src/main/java/net/minecraft/core/net/packet/SyncIDsPacket.java
index b5abb0235..0d67e8722 100644
--- a/src/main/java/net/minecraft/core/net/packet/SyncIDsPacket.java
+++ b/src/main/java/net/minecraft/core/net/packet/SyncIDsPacket.java
@@ -8,18 +8,31 @@ import java.util.Map;
 import java.util.Map.Entry;
 
 import net.minecraft.core.net.handler.PacketHandler;
-import net.minecraft.core.sound.SoundTypes;
 
 public class SyncIDsPacket extends Packet {
+	public static final int MAX_ID_STRING_SIZE = 128;
+	public static final int DESTINATION_SOUND_IDS = 0;
+	public static final int DESTINATION_ENTITY_IDS = 1;
 
-	public Map<String, Integer> soundIds;
 	private int packetSize;
-	
+
+	public int destinationId = -1;
+	public Map<Integer, String> mapping;
+
+	public SyncIDsPacket() {
+
+	}
+
+	public SyncIDsPacket(int destinationId, Map<Integer, String> mapping) {
+		this.destinationId = destinationId;
+		this.mapping = mapping;
+	}
+
 	@Override
 	public void read(DataInputStream in) throws IOException {
 		int size = 0;
 		
-		size += readSoundIds(in);
+		size += readIds(in);
 		
 		this.packetSize = size;
 	}
@@ -28,39 +41,39 @@ public class SyncIDsPacket extends Packet {
 	public void write(DataOutputStream out) throws IOException {
 		int size = 0;
 		
-		size += writeSoundIds(out);
+		size += writeIds(out);
 		
 		this.packetSize = size;
 	}
 	
-	public int readSoundIds(DataInputStream in) throws IOException {
-		this.soundIds = new HashMap<>();
+	public int readIds(DataInputStream in) throws IOException {
+		this.mapping = new HashMap<>();
 		
 		int bytesRead = 0;
-		
+
+		this.destinationId = in.readByte() & 0xFF;
 		int count = in.readInt();
 		bytesRead += 4;
 		
 		for(int i=0; i < count; i++) {
 			int id = in.readShort() & 0xFFFF;
-			String name = readString(in, SoundTypes.MAX_SOUND_NAME_LENGTH);
-			soundIds.put(name, id);
+			String name = readString(in, MAX_ID_STRING_SIZE);
+			mapping.put(id, name);
 		}
 		
 		return bytesRead;
 	}
 	
-	public int writeSoundIds(DataOutputStream out) throws IOException {
-		Map<String, Integer> soundIds = SoundTypes.getSoundIds();
-		
+	public int writeIds(DataOutputStream out) throws IOException {
 		int bytesWritten = 0;
-		
-		out.writeInt(soundIds.size());
+
+		out.writeByte(destinationId);
+		out.writeInt(mapping.size());
 		bytesWritten += 4;
 		
-		for(Entry<String, Integer> entry : soundIds.entrySet()) {
-			out.writeShort(entry.getValue());
-			writeString(entry.getKey(), out);
+		for(Entry<Integer, String> entry : mapping.entrySet()) {
+			out.writeShort(entry.getKey());
+			writeString(entry.getValue(), out);
 		}
 		
 		return bytesWritten;
@@ -73,7 +86,7 @@ public class SyncIDsPacket extends Packet {
 
 	@Override
 	public int getEstimatedSize() {
-		return packetSize;
+		return packetSize + 1;
 	}
 
 }
diff --git a/src/main/java/net/minecraft/core/net/packet/TakeItemEntityPacket.java b/src/main/java/net/minecraft/core/net/packet/TakeItemEntityPacket.java
index 66ad9f834..a25a2d063 100644
--- a/src/main/java/net/minecraft/core/net/packet/TakeItemEntityPacket.java
+++ b/src/main/java/net/minecraft/core/net/packet/TakeItemEntityPacket.java
@@ -4,9 +4,6 @@ import net.minecraft.core.net.handler.PacketHandler;
 
 import java.io.*;
 
-// Referenced classes of package net.minecraft.src:
-//            Packet, PacketHandler
-
 public class TakeItemEntityPacket extends Packet
 {
 
diff --git a/src/main/java/net/minecraft/core/net/packet/TeleportEntityPacket.java b/src/main/java/net/minecraft/core/net/packet/TeleportEntityPacket.java
index ae9f23aae..1f0f19112 100644
--- a/src/main/java/net/minecraft/core/net/packet/TeleportEntityPacket.java
+++ b/src/main/java/net/minecraft/core/net/packet/TeleportEntityPacket.java
@@ -6,9 +6,6 @@ import net.minecraft.core.net.handler.PacketHandler;
 
 import java.io.*;
 
-// Referenced classes of package net.minecraft.src:
-//            Packet, Entity, MathHelper, PacketHandler
-
 public class TeleportEntityPacket extends Packet
 {
     public int id;
diff --git a/src/main/java/net/minecraft/core/net/packet/UpdateCreativeInventoryPacket.java b/src/main/java/net/minecraft/core/net/packet/UpdateCreativeInventoryPacket.java
index 72332b072..7079089e1 100644
--- a/src/main/java/net/minecraft/core/net/packet/UpdateCreativeInventoryPacket.java
+++ b/src/main/java/net/minecraft/core/net/packet/UpdateCreativeInventoryPacket.java
@@ -4,9 +4,6 @@ import net.minecraft.core.net.handler.PacketHandler;
 
 import java.io.*;
 
-// Referenced classes of package net.minecraft.src:
-//            Packet, PacketHandler
-
 public class UpdateCreativeInventoryPacket extends Packet
 {
 
diff --git a/src/main/java/net/minecraft/core/net/packet/UpdatePlayerProfilePacket.java b/src/main/java/net/minecraft/core/net/packet/UpdatePlayerProfilePacket.java
index bdba2be9f..b5f05fccb 100644
--- a/src/main/java/net/minecraft/core/net/packet/UpdatePlayerProfilePacket.java
+++ b/src/main/java/net/minecraft/core/net/packet/UpdatePlayerProfilePacket.java
@@ -8,9 +8,6 @@ import java.io.DataOutputStream;
 import java.io.IOException;
 import java.util.UUID;
 
-// Referenced classes of package net.minecraft.src:
-//            Packet, PacketHandler
-
 public class UpdatePlayerProfilePacket extends Packet
 {
 
diff --git a/src/main/java/net/minecraft/core/net/packet/UpdatePlayerStatePacket.java b/src/main/java/net/minecraft/core/net/packet/UpdatePlayerStatePacket.java
index 9e89c21ad..25a295144 100644
--- a/src/main/java/net/minecraft/core/net/packet/UpdatePlayerStatePacket.java
+++ b/src/main/java/net/minecraft/core/net/packet/UpdatePlayerStatePacket.java
@@ -4,9 +4,6 @@ import net.minecraft.core.net.handler.PacketHandler;
 
 import java.io.*;
 
-// Referenced classes of package net.minecraft.src:
-//            Packet, Entity, PacketHandler
-
 public class UpdatePlayerStatePacket extends Packet
 {
     public static final int STATE_SNEAK = 1;
diff --git a/src/main/java/net/minecraft/core/net/packet/UseItemPacket.java b/src/main/java/net/minecraft/core/net/packet/UseItemPacket.java
index e3b7f6bae..ad69ea35d 100644
--- a/src/main/java/net/minecraft/core/net/packet/UseItemPacket.java
+++ b/src/main/java/net/minecraft/core/net/packet/UseItemPacket.java
@@ -8,9 +8,6 @@ import net.minecraft.core.item.ItemStack;
 import net.minecraft.core.net.handler.PacketHandler;
 import net.minecraft.core.util.helper.Direction;
 
-// Referenced classes of package net.minecraft.src:
-//            Packet, ItemStack, PacketHandler
-
 public class UseItemPacket extends Packet
 {
 
diff --git a/src/main/java/net/minecraft/core/net/packet/WeatherEffectPacket.java b/src/main/java/net/minecraft/core/net/packet/WeatherEffectPacket.java
index 86c28195c..2c61ba902 100644
--- a/src/main/java/net/minecraft/core/net/packet/WeatherEffectPacket.java
+++ b/src/main/java/net/minecraft/core/net/packet/WeatherEffectPacket.java
@@ -7,10 +7,6 @@ import net.minecraft.core.util.helper.MathHelper;
 
 import java.io.*;
 
-// Referenced classes of package net.minecraft.src:
-//            Packet, Entity, MathHelper, EntityLightning,
-//            PacketHandler
-
 public class WeatherEffectPacket extends Packet
 {
     public static final int EFFECT_LIGHTNING = 1;
diff --git a/src/main/java/net/minecraft/core/net/packet/WeatherStatusPacket.java b/src/main/java/net/minecraft/core/net/packet/WeatherStatusPacket.java
index caabcd2f8..bf43370db 100644
--- a/src/main/java/net/minecraft/core/net/packet/WeatherStatusPacket.java
+++ b/src/main/java/net/minecraft/core/net/packet/WeatherStatusPacket.java
@@ -4,10 +4,6 @@ import net.minecraft.core.net.handler.PacketHandler;
 
 import java.io.*;
 
-// Referenced classes of package net.minecraft.src:
-//            Packet, Entity, MathHelper, EntityLightning,
-//            PacketHandler
-
 public class WeatherStatusPacket extends Packet
 {
     public int dimId;
diff --git a/src/main/java/net/minecraft/core/player/inventory/InventorySorter.java b/src/main/java/net/minecraft/core/player/inventory/InventorySorter.java
index 1136e185c..f736e9617 100644
--- a/src/main/java/net/minecraft/core/player/inventory/InventorySorter.java
+++ b/src/main/java/net/minecraft/core/player/inventory/InventorySorter.java
@@ -3,8 +3,6 @@ package net.minecraft.core.player.inventory;
 import net.minecraft.core.item.ItemStack;
 
 import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
 import java.util.List;
 
 public abstract class InventorySorter {
diff --git a/src/main/java/net/minecraft/core/player/inventory/container/Container.java b/src/main/java/net/minecraft/core/player/inventory/container/Container.java
index b4068a044..f3973be22 100644
--- a/src/main/java/net/minecraft/core/player/inventory/container/Container.java
+++ b/src/main/java/net/minecraft/core/player/inventory/container/Container.java
@@ -1,9 +1,5 @@
 package net.minecraft.core.player.inventory.container;
 
-
-// Referenced classes of package net.minecraft.src:
-//            ItemStack, Player
-
 import net.minecraft.core.entity.player.Player;
 import net.minecraft.core.item.ItemStack;
 
diff --git a/src/main/java/net/minecraft/core/player/inventory/container/ContainerCompound.java b/src/main/java/net/minecraft/core/player/inventory/container/ContainerCompound.java
index a1e3fdfe6..f6edc4057 100644
--- a/src/main/java/net/minecraft/core/player/inventory/container/ContainerCompound.java
+++ b/src/main/java/net/minecraft/core/player/inventory/container/ContainerCompound.java
@@ -1,9 +1,5 @@
 package net.minecraft.core.player.inventory.container;
 
-
-// Referenced classes of package net.minecraft.src:
-//            IInventory, ItemStack, Player
-
 import net.minecraft.core.entity.player.Player;
 import net.minecraft.core.item.ItemStack;
 import net.minecraft.core.player.inventory.InventorySorter;
diff --git a/src/main/java/net/minecraft/core/player/inventory/container/ContainerCrafting.java b/src/main/java/net/minecraft/core/player/inventory/container/ContainerCrafting.java
index 94c3aa8fb..f02b082a2 100644
--- a/src/main/java/net/minecraft/core/player/inventory/container/ContainerCrafting.java
+++ b/src/main/java/net/minecraft/core/player/inventory/container/ContainerCrafting.java
@@ -1,9 +1,5 @@
 package net.minecraft.core.player.inventory.container;
 
-
-// Referenced classes of package net.minecraft.src:
-//            IInventory, ItemStack, Container, Player
-
 import net.minecraft.core.entity.player.Player;
 import net.minecraft.core.item.ItemStack;
 import net.minecraft.core.player.inventory.menu.MenuAbstract;
diff --git a/src/main/java/net/minecraft/core/player/inventory/container/ContainerInventory.java b/src/main/java/net/minecraft/core/player/inventory/container/ContainerInventory.java
index 6282a4ec8..84238f80d 100644
--- a/src/main/java/net/minecraft/core/player/inventory/container/ContainerInventory.java
+++ b/src/main/java/net/minecraft/core/player/inventory/container/ContainerInventory.java
@@ -5,12 +5,6 @@ import com.mojang.nbt.CompoundTag;
 import com.mojang.nbt.ListTag;
 
 import net.minecraft.core.block.Block;
-
-// Referenced classes of package net.minecraft.src:
-//            IInventory, ItemStack, Player, NBTTagCompound,
-//            NBTTagList, Block, Material, ItemArmor,
-//            Entity
-
 import net.minecraft.core.block.tag.BlockTags;
 import net.minecraft.core.entity.Entity;
 import net.minecraft.core.entity.player.Player;
diff --git a/src/main/java/net/minecraft/core/player/inventory/container/ContainerResult.java b/src/main/java/net/minecraft/core/player/inventory/container/ContainerResult.java
index 9fd1602f0..c23dc2274 100644
--- a/src/main/java/net/minecraft/core/player/inventory/container/ContainerResult.java
+++ b/src/main/java/net/minecraft/core/player/inventory/container/ContainerResult.java
@@ -1,9 +1,5 @@
 package net.minecraft.core.player.inventory.container;
 
-
-// Referenced classes of package net.minecraft.src:
-//            IInventory, ItemStack, Player
-
 import net.minecraft.core.entity.player.Player;
 import net.minecraft.core.item.ItemStack;
 
diff --git a/src/main/java/net/minecraft/core/player/inventory/container/ContainerSimple.java b/src/main/java/net/minecraft/core/player/inventory/container/ContainerSimple.java
index f44de68bc..6abb9118f 100644
--- a/src/main/java/net/minecraft/core/player/inventory/container/ContainerSimple.java
+++ b/src/main/java/net/minecraft/core/player/inventory/container/ContainerSimple.java
@@ -4,9 +4,6 @@ import net.minecraft.core.entity.player.Player;
 import net.minecraft.core.item.ItemStack;
 import net.minecraft.core.player.inventory.InventorySorter;
 
-// Referenced classes of package net.minecraft.src:
-//            IInventory, ItemStack, IInvBasic, Player
-
 public class ContainerSimple
     implements Container
 {
diff --git a/src/main/java/net/minecraft/core/player/inventory/menu/MenuAbstract.java b/src/main/java/net/minecraft/core/player/inventory/menu/MenuAbstract.java
index 375b80e11..8d57d074a 100644
--- a/src/main/java/net/minecraft/core/player/inventory/menu/MenuAbstract.java
+++ b/src/main/java/net/minecraft/core/player/inventory/menu/MenuAbstract.java
@@ -185,8 +185,6 @@ public abstract class MenuAbstract
 		}
 		
 		if(action == InventoryAction.INTERACT_SLOT || action == InventoryAction.INTERACT_GRABBED) {
-			ItemStack grabbedItem = player.inventory.getHeldItemStack();
-			
 			Item interactItem;
 			if(action == InventoryAction.INTERACT_SLOT) {
 				if(stackInSlot == null) {
@@ -208,7 +206,7 @@ public abstract class MenuAbstract
 			}
 			slot.set(result);
 			
-			grabbedItem = player.inventory.getHeldItemStack();
+			ItemStack grabbedItem = player.inventory.getHeldItemStack();
 			if(grabbedItem != null && grabbedItem.stackSize <= 0) {
 				player.inventory.setHeldItemStack(null);
 			}
diff --git a/src/main/java/net/minecraft/core/player/inventory/menu/MenuCrafting.java b/src/main/java/net/minecraft/core/player/inventory/menu/MenuCrafting.java
index c95142e4e..bae51791c 100644
--- a/src/main/java/net/minecraft/core/player/inventory/menu/MenuCrafting.java
+++ b/src/main/java/net/minecraft/core/player/inventory/menu/MenuCrafting.java
@@ -1,10 +1,5 @@
 package net.minecraft.core.player.inventory.menu;
 
-// Referenced classes of package net.minecraft.src:
-//            Container, InventoryCrafting, InventoryCraftResult, SlotCrafting, 
-//            InventoryPlayer, Slot, CraftingManager, IInventory, 
-//            World, Player, Block, ItemStack
-
 import net.minecraft.core.InventoryAction;
 import net.minecraft.core.block.Blocks;
 import net.minecraft.core.data.registry.Registries;
diff --git a/src/main/java/net/minecraft/core/player/inventory/slot/Slot.java b/src/main/java/net/minecraft/core/player/inventory/slot/Slot.java
index a82c5edde..794cba5ef 100644
--- a/src/main/java/net/minecraft/core/player/inventory/slot/Slot.java
+++ b/src/main/java/net/minecraft/core/player/inventory/slot/Slot.java
@@ -1,8 +1,5 @@
 package net.minecraft.core.player.inventory.slot;
 
-// Referenced classes of package net.minecraft.src:
-//            IInventory, ItemStack
-
 import net.minecraft.core.achievement.stat.StatList;
 import net.minecraft.core.entity.player.Player;
 import net.minecraft.core.item.ItemStack;
diff --git a/src/main/java/net/minecraft/core/player/inventory/slot/SlotFurnace.java b/src/main/java/net/minecraft/core/player/inventory/slot/SlotFurnace.java
index 78be145f5..99eff9fee 100644
--- a/src/main/java/net/minecraft/core/player/inventory/slot/SlotFurnace.java
+++ b/src/main/java/net/minecraft/core/player/inventory/slot/SlotFurnace.java
@@ -1,10 +1,5 @@
 package net.minecraft.core.player.inventory.slot;
 
-
-// Referenced classes of package net.minecraft.src:
-//            Slot, Player, ItemStack, Item,
-//            Achievements, IInventory
-
 import net.minecraft.core.achievement.Achievements;
 import net.minecraft.core.entity.player.Player;
 import net.minecraft.core.item.Items;
diff --git a/src/main/java/net/minecraft/core/player/inventory/slot/SlotResult.java b/src/main/java/net/minecraft/core/player/inventory/slot/SlotResult.java
index 7ea7d9dea..323c03dd2 100644
--- a/src/main/java/net/minecraft/core/player/inventory/slot/SlotResult.java
+++ b/src/main/java/net/minecraft/core/player/inventory/slot/SlotResult.java
@@ -1,10 +1,5 @@
 package net.minecraft.core.player.inventory.slot;
 
-
-// Referenced classes of package net.minecraft.src:
-//            Slot, Player, ItemStack, Block,
-//            Achievements, Item, IInventory
-
 import net.minecraft.core.achievement.Achievements;
 import net.minecraft.core.block.Blocks;
 import net.minecraft.core.data.registry.Registries;
diff --git a/src/main/java/net/minecraft/core/sound/SoundTypes.java b/src/main/java/net/minecraft/core/sound/SoundTypes.java
index 3cbd2bef3..e8a2e975f 100644
--- a/src/main/java/net/minecraft/core/sound/SoundTypes.java
+++ b/src/main/java/net/minecraft/core/sound/SoundTypes.java
@@ -5,6 +5,7 @@ import com.google.gson.JsonElement;
 import com.google.gson.JsonObject;
 import com.google.gson.JsonParseException;
 import com.google.gson.JsonParser;
+import net.minecraft.core.net.packet.SyncIDsPacket;
 
 import java.io.InputStream;
 import java.util.HashMap;
@@ -12,11 +13,8 @@ import java.util.Map;
 import java.util.Map.Entry;
 
 public class SoundTypes {
-	
-	public static final int MAX_SOUND_NAME_LENGTH = 64;
-	
-	private static Map<Integer, String> idToSoundNameMap = new HashMap<>();
-	private static Map<String, Integer> soundNameToIdMap = new HashMap<>();
+	private static final Map<Integer, String> idToSoundNameMap = new HashMap<>();
+	private static final Map<String, Integer> soundNameToIdMap = new HashMap<>();
 	
 	private static int idCount = 0;
 	
@@ -46,7 +44,7 @@ public class SoundTypes {
 	}
 
 	public static boolean register(String soundPath) {
-		if(soundPath.length() > MAX_SOUND_NAME_LENGTH) {
+		if(soundPath.length() > SyncIDsPacket.MAX_ID_STRING_SIZE) {
 			throw new RuntimeException("Sound Path is too long: '" + soundPath + "'!");
 		}
 		
@@ -83,22 +81,22 @@ public class SoundTypes {
 		return idToSoundNameMap.get(id);
 	}
 	
-	public static void setSoundIds(Map<String, Integer> soundIds) {
+	public static void setSoundIds(Map<Integer, String> soundIds) {
 		idToSoundNameMap.clear();
 		soundNameToIdMap.clear();
 		
-		for(Entry<String, Integer> entry : soundIds.entrySet()) {
-			int id = entry.getValue();
-			String name = entry.getKey();
+		for(Entry<Integer, String> entry : soundIds.entrySet()) {
+			int id = entry.getKey();
+			String name = entry.getValue();
 			
 			idToSoundNameMap.put(id, name);
 			soundNameToIdMap.put(name, id);
 		}
 	}
 	
-	public static Map<String, Integer> getSoundIds() {
-		// TODO Make soundNameToIdMap immutable and don't return new instance every time
-		return new HashMap<>(soundNameToIdMap); 
+	public static Map<Integer, String> getSoundIds() {
+		// TODO Make soundNameToIdMap immutable
+		return idToSoundNameMap;
 	}
 
 }
diff --git a/src/main/java/net/minecraft/core/util/phys/HitResult.java b/src/main/java/net/minecraft/core/util/phys/HitResult.java
index 466bfc92e..ea0eab1b2 100644
--- a/src/main/java/net/minecraft/core/util/phys/HitResult.java
+++ b/src/main/java/net/minecraft/core/util/phys/HitResult.java
@@ -1,7 +1,6 @@
 package net.minecraft.core.util.phys;
 
 import net.minecraft.core.entity.Entity;
-import net.minecraft.core.util.helper.MathHelper;
 import net.minecraft.core.util.helper.Side;
 
 public class HitResult
diff --git a/src/main/java/net/minecraft/core/util/phys/Vec3.java b/src/main/java/net/minecraft/core/util/phys/Vec3.java
index 4688861a7..a6fa29331 100644
--- a/src/main/java/net/minecraft/core/util/phys/Vec3.java
+++ b/src/main/java/net/minecraft/core/util/phys/Vec3.java
@@ -5,9 +5,6 @@ import net.minecraft.core.util.helper.MathHelper;
 import java.util.ArrayList;
 import java.util.List;
 
-// Referenced classes of package net.minecraft.src:
-//            MathHelper
-
 public class Vec3
 {
     private static final List<Vec3> pool = new ArrayList<>();
diff --git a/src/main/java/net/minecraft/core/world/AuroraProvider.java b/src/main/java/net/minecraft/core/world/AuroraProvider.java
index edf9f0ce0..05476f7b8 100644
--- a/src/main/java/net/minecraft/core/world/AuroraProvider.java
+++ b/src/main/java/net/minecraft/core/world/AuroraProvider.java
@@ -20,7 +20,7 @@ public class AuroraProvider
         double auroraLevel = 0.0f;
         double auroraRadius = 0.03f;
 
-        double mult = 1.0d;
+        double mult;
         if (celestialAngle < 0.25f || celestialAngle > 0.75f)
         {
             return 0.0f;
diff --git a/src/main/java/net/minecraft/core/world/Dimension.java b/src/main/java/net/minecraft/core/world/Dimension.java
index 5add6e428..77c53c5b7 100644
--- a/src/main/java/net/minecraft/core/world/Dimension.java
+++ b/src/main/java/net/minecraft/core/world/Dimension.java
@@ -7,7 +7,6 @@ import net.minecraft.core.world.type.WorldType;
 import net.minecraft.core.world.type.WorldTypes;
 
 import java.util.Collections;
-import java.util.Date;
 import java.util.HashMap;
 import java.util.Map;
 
diff --git a/src/main/java/net/minecraft/core/world/LevelListener.java b/src/main/java/net/minecraft/core/world/LevelListener.java
index 768a152ef..5bbff7a08 100644
--- a/src/main/java/net/minecraft/core/world/LevelListener.java
+++ b/src/main/java/net/minecraft/core/world/LevelListener.java
@@ -1,8 +1,5 @@
 package net.minecraft.core.world;
 
-// Referenced classes of package net.minecraft.src:
-//            Entity, TileEntity, Player
-
 import net.minecraft.core.block.entity.TileEntity;
 import net.minecraft.core.entity.Entity;
 import net.minecraft.core.entity.player.Player;
diff --git a/src/main/java/net/minecraft/core/world/PortalHandler.java b/src/main/java/net/minecraft/core/world/PortalHandler.java
index b15826afa..1b010846e 100644
--- a/src/main/java/net/minecraft/core/world/PortalHandler.java
+++ b/src/main/java/net/minecraft/core/world/PortalHandler.java
@@ -10,10 +10,6 @@ import org.jetbrains.annotations.Nullable;
 
 import java.util.Random;
 
-// Referenced classes of package net.minecraft.src:
-//            Entity, MathHelper, World, Block, 
-//            BlockPortal, Material
-
 public class PortalHandler
 {
 
diff --git a/src/main/java/net/minecraft/core/world/SpawnerMobs.java b/src/main/java/net/minecraft/core/world/SpawnerMobs.java
index 769400fd3..5921fe9e5 100644
--- a/src/main/java/net/minecraft/core/world/SpawnerMobs.java
+++ b/src/main/java/net/minecraft/core/world/SpawnerMobs.java
@@ -125,7 +125,7 @@ public final class SpawnerMobs
                     }
                 }
 
-                if (!spawnerConfig.canMobSpawn(EntityDispatcher.getEncodeId(spawnListEntry.entityClass))) continue;
+                if (!spawnerConfig.canMobSpawn(EntityDispatcher.idForClass(spawnListEntry.entityClass))) continue;
 
                 final ChunkPosition pos = getRandomSpawningPointInChunk(world, chunk.x, chunk.z);
                 final int x = pos.x;
@@ -254,17 +254,12 @@ public final class SpawnerMobs
                     {
                         spawnY++;
                     }
-					
-					if(spawnY >= y + 16)
-                    {
-						spawnY = y;
-					}
-                    else
-                    {
+
+                    if (spawnY < y + 16) {
 						float entityX = x + 0.5f;
 						float entityY = spawnY;
 						float entityZ = z + 0.5f;
-						
+
 						Mob entity;
                         Class<?> eClass= entityClasses[world.rand.nextInt(entityClasses.length)];
 						try
@@ -276,7 +271,7 @@ public final class SpawnerMobs
                             LOGGER.error("Exception instancing class '{}'!", eClass.getSimpleName(), e);
 							return spawnedEntity;
 						}
-						
+
 						entity.moveTo(entityX, entityY, entityZ, world.rand.nextFloat() * 360.0f, 0.0f);
 						if(entity.canSpawnHere())
                         {
@@ -302,7 +297,7 @@ public final class SpawnerMobs
 							}
 						}
 					}
-					i++;
+                    i++;
 				}
 			}
 		}
diff --git a/src/main/java/net/minecraft/core/world/biome/BiomeCaatinga.java b/src/main/java/net/minecraft/core/world/biome/BiomeCaatinga.java
index 192ffe4e4..4477c5b1e 100644
--- a/src/main/java/net/minecraft/core/world/biome/BiomeCaatinga.java
+++ b/src/main/java/net/minecraft/core/world/biome/BiomeCaatinga.java
@@ -4,17 +4,12 @@
 
 package net.minecraft.core.world.biome;
 
-import net.minecraft.core.block.Block;
 import net.minecraft.core.block.Blocks;
 import net.minecraft.core.world.generate.feature.tree.*;
 import net.minecraft.core.world.generate.feature.WorldFeature;
 
 import java.util.Random;
 
-// Referenced classes of package net.minecraft.src:
-//            BiomeGenBase, SpawnListEntry, MobWolf, WorldGenForest,
-//            WorldGenBigTree, WorldGenTrees, WorldGenerator
-
 public class BiomeCaatinga extends Biome
 {
 
diff --git a/src/main/java/net/minecraft/core/world/biome/BiomeParadise.java b/src/main/java/net/minecraft/core/world/biome/BiomeParadise.java
index 3a61fadb6..2a21492b6 100644
--- a/src/main/java/net/minecraft/core/world/biome/BiomeParadise.java
+++ b/src/main/java/net/minecraft/core/world/biome/BiomeParadise.java
@@ -3,9 +3,6 @@ package net.minecraft.core.world.biome;
 import net.minecraft.core.entity.animal.MobChicken;
 import net.minecraft.core.entity.SpawnListEntry;
 
-// Referenced classes of package net.minecraft.src:
-//            BiomeGenBase, SpawnListEntry, MobChicken
-
 public class BiomeParadise extends Biome
 {	
     public BiomeParadise(String key)
diff --git a/src/main/java/net/minecraft/core/world/biome/BiomePlains.java b/src/main/java/net/minecraft/core/world/biome/BiomePlains.java
index 05e075616..d7e32c07b 100644
--- a/src/main/java/net/minecraft/core/world/biome/BiomePlains.java
+++ b/src/main/java/net/minecraft/core/world/biome/BiomePlains.java
@@ -1,6 +1,5 @@
 package net.minecraft.core.world.biome;
 
-import net.minecraft.core.block.Block;
 import net.minecraft.core.block.Blocks;
 import net.minecraft.core.world.generate.feature.WorldFeature;
 import net.minecraft.core.world.generate.feature.tree.WorldFeatureTreeEucalyptus;
diff --git a/src/main/java/net/minecraft/core/world/biome/BiomeSeasonalForest.java b/src/main/java/net/minecraft/core/world/biome/BiomeSeasonalForest.java
index e9ce674b5..949724290 100644
--- a/src/main/java/net/minecraft/core/world/biome/BiomeSeasonalForest.java
+++ b/src/main/java/net/minecraft/core/world/biome/BiomeSeasonalForest.java
@@ -10,10 +10,6 @@ import net.minecraft.core.world.generate.feature.WorldFeature;
 
 import java.util.Random;
 
-// Referenced classes of package net.minecraft.src:
-//            BiomeGenBase, SpawnListEntry, MobWolf, WorldGenForest,
-//            WorldGenBigTree, WorldGenTrees, WorldGenerator
-
 public class BiomeSeasonalForest extends Biome
 {
 
diff --git a/src/main/java/net/minecraft/core/world/biome/BiomeShrubland.java b/src/main/java/net/minecraft/core/world/biome/BiomeShrubland.java
index 33041f2a1..481087ab9 100644
--- a/src/main/java/net/minecraft/core/world/biome/BiomeShrubland.java
+++ b/src/main/java/net/minecraft/core/world/biome/BiomeShrubland.java
@@ -1,6 +1,5 @@
 package net.minecraft.core.world.biome;
 
-import net.minecraft.core.block.Block;
 import net.minecraft.core.block.Blocks;
 import net.minecraft.core.world.generate.feature.tree.WorldFeatureTreeShrub;
 import net.minecraft.core.world.generate.feature.WorldFeature;
diff --git a/src/main/java/net/minecraft/core/world/biome/BiomeSwamp.java b/src/main/java/net/minecraft/core/world/biome/BiomeSwamp.java
index 3d11de867..23841fec0 100644
--- a/src/main/java/net/minecraft/core/world/biome/BiomeSwamp.java
+++ b/src/main/java/net/minecraft/core/world/biome/BiomeSwamp.java
@@ -1,6 +1,5 @@
 package net.minecraft.core.world.biome;
 
-import net.minecraft.core.block.Block;
 import net.minecraft.core.block.Blocks;
 import net.minecraft.core.world.generate.feature.tree.WorldFeatureTreeShapeSwamp;
 import net.minecraft.core.world.generate.feature.WorldFeature;
diff --git a/src/main/java/net/minecraft/core/world/biome/BiomeTaiga.java b/src/main/java/net/minecraft/core/world/biome/BiomeTaiga.java
index f40813bd3..373eae536 100644
--- a/src/main/java/net/minecraft/core/world/biome/BiomeTaiga.java
+++ b/src/main/java/net/minecraft/core/world/biome/BiomeTaiga.java
@@ -9,10 +9,6 @@ import net.minecraft.core.world.generate.feature.WorldFeature;
 
 import java.util.Random;
 
-// Referenced classes of package net.minecraft.src:
-//            BiomeGenBase, SpawnListEntry, MobWolf, WorldGenTaiga1,
-//            WorldGenTaiga2, WorldGenerator
-
 public class BiomeTaiga extends Biome
 {
 
diff --git a/src/main/java/net/minecraft/core/world/biome/data/BiomeRangeLookup.java b/src/main/java/net/minecraft/core/world/biome/data/BiomeRangeLookup.java
index 46e3ac2b2..1a174ecce 100644
--- a/src/main/java/net/minecraft/core/world/biome/data/BiomeRangeLookup.java
+++ b/src/main/java/net/minecraft/core/world/biome/data/BiomeRangeLookup.java
@@ -2,7 +2,6 @@ package net.minecraft.core.world.biome.data;
 
 import net.minecraft.core.data.registry.Registries;
 import net.minecraft.core.world.biome.Biome;
-import org.lwjgl.Sys;
 
 public class BiomeRangeLookup
 {
diff --git a/src/main/java/net/minecraft/core/world/biome/provider/BiomeProviderOverworld.java b/src/main/java/net/minecraft/core/world/biome/provider/BiomeProviderOverworld.java
index 9985583b3..8f2b1b55a 100644
--- a/src/main/java/net/minecraft/core/world/biome/provider/BiomeProviderOverworld.java
+++ b/src/main/java/net/minecraft/core/world/biome/provider/BiomeProviderOverworld.java
@@ -1,6 +1,5 @@
 package net.minecraft.core.world.biome.provider;
 
-import net.minecraft.core.Global;
 import net.minecraft.core.util.helper.MathHelper;
 import net.minecraft.core.world.biome.Biome;
 import net.minecraft.core.world.biome.Biomes;
diff --git a/src/main/java/net/minecraft/core/world/chunk/ChunkSection.java b/src/main/java/net/minecraft/core/world/chunk/ChunkSection.java
index 389403e53..c37d3ff2a 100644
--- a/src/main/java/net/minecraft/core/world/chunk/ChunkSection.java
+++ b/src/main/java/net/minecraft/core/world/chunk/ChunkSection.java
@@ -1,7 +1,6 @@
 package net.minecraft.core.world.chunk;
 
 import net.minecraft.core.block.Block;
-import net.minecraft.core.block.Blocks;
 import net.minecraft.core.data.registry.Registries;
 import net.minecraft.core.entity.Entity;
 import net.minecraft.core.enums.LightLayer;
diff --git a/src/main/java/net/minecraft/core/world/chunk/EmptyChunk.java b/src/main/java/net/minecraft/core/world/chunk/EmptyChunk.java
index cc171872e..1cbad469f 100644
--- a/src/main/java/net/minecraft/core/world/chunk/EmptyChunk.java
+++ b/src/main/java/net/minecraft/core/world/chunk/EmptyChunk.java
@@ -10,10 +10,6 @@ import java.util.Arrays;
 import java.util.List;
 import java.util.Random;
 
-// Referenced classes of package net.minecraft.src:
-//            Chunk, World, EnumSkyBlock, Entity, 
-//            TileEntity, AxisAlignedBB
-
 public class EmptyChunk extends Chunk
 {
 
diff --git a/src/main/java/net/minecraft/core/world/chunk/IChunkLoader.java b/src/main/java/net/minecraft/core/world/chunk/IChunkLoader.java
index 8c258a408..ba2d08b41 100644
--- a/src/main/java/net/minecraft/core/world/chunk/IChunkLoader.java
+++ b/src/main/java/net/minecraft/core/world/chunk/IChunkLoader.java
@@ -1,13 +1,9 @@
 package net.minecraft.core.world.chunk;
 
 import net.minecraft.core.world.World;
-import net.minecraft.core.world.chunk.Chunk;
 
 import java.io.IOException;
 
-// Referenced classes of package net.minecraft.src:
-//            World, Chunk
-
 public interface IChunkLoader
 {
     /**
diff --git a/src/main/java/net/minecraft/core/world/chunk/LightUpdate.java b/src/main/java/net/minecraft/core/world/chunk/LightUpdate.java
index 771747964..c60aea73e 100644
--- a/src/main/java/net/minecraft/core/world/chunk/LightUpdate.java
+++ b/src/main/java/net/minecraft/core/world/chunk/LightUpdate.java
@@ -1,8 +1,5 @@
 package net.minecraft.core.world.chunk;
 
-// Referenced classes of package net.minecraft.src:
-//            World, Chunk, Block, EnumSkyBlock
-
 import com.mojang.logging.LogUtils;
 import net.minecraft.core.block.Block;
 import net.minecraft.core.enums.LightLayer;
diff --git a/src/main/java/net/minecraft/core/world/chunk/MissingBlockFixer.java b/src/main/java/net/minecraft/core/world/chunk/MissingBlockFixer.java
index ec93f9182..51f828601 100644
--- a/src/main/java/net/minecraft/core/world/chunk/MissingBlockFixer.java
+++ b/src/main/java/net/minecraft/core/world/chunk/MissingBlockFixer.java
@@ -1,9 +1,5 @@
 package net.minecraft.core.world.chunk;
 
-
-// Referenced classes of package net.minecraft.src:
-//            Block
-
 import com.mojang.logging.LogUtils;
 import net.minecraft.core.block.Block;
 import org.slf4j.Logger;
diff --git a/src/main/java/net/minecraft/core/world/chunk/provider/IChunkProvider.java b/src/main/java/net/minecraft/core/world/chunk/provider/IChunkProvider.java
index 6f50be6fc..cc48170c7 100644
--- a/src/main/java/net/minecraft/core/world/chunk/provider/IChunkProvider.java
+++ b/src/main/java/net/minecraft/core/world/chunk/provider/IChunkProvider.java
@@ -1,9 +1,5 @@
 package net.minecraft.core.world.chunk.provider;
 
-
-// Referenced classes of package net.minecraft.src:
-//            Chunk, IProgressUpdate
-
 import net.minecraft.core.world.ProgressListener;
 import net.minecraft.core.world.chunk.Chunk;
 
diff --git a/src/main/java/net/minecraft/core/world/config/spawning/SpawnerConfig.java b/src/main/java/net/minecraft/core/world/config/spawning/SpawnerConfig.java
index 3f8e56fb6..ed62446aa 100644
--- a/src/main/java/net/minecraft/core/world/config/spawning/SpawnerConfig.java
+++ b/src/main/java/net/minecraft/core/world/config/spawning/SpawnerConfig.java
@@ -1,9 +1,13 @@
 package net.minecraft.core.world.config.spawning;
 
+import com.mojang.logging.LogUtils;
 import com.mojang.nbt.ByteTag;
 import com.mojang.nbt.CompoundTag;
 import com.mojang.nbt.Tag;
+import net.minecraft.core.util.HardIllegalArgumentException;
+import net.minecraft.core.util.collection.NamespaceID;
 import net.minecraft.core.world.World;
+import org.slf4j.Logger;
 
 import java.util.Collection;
 import java.util.HashMap;
@@ -11,9 +15,10 @@ import java.util.Locale;
 import java.util.Map;
 
 public class SpawnerConfig {
+    private static final Logger LOGGER = LogUtils.getLogger();
     private boolean allowPassive = true;
     private boolean allowHostile = true;
-    private final Map<String, Boolean> mobSpawnOverrides = new HashMap<>();
+    private final Map<NamespaceID, Boolean> mobSpawnOverrides = new HashMap<>();
 
     public boolean canPassiveSpawn(World world) {
         return allowPassive;
@@ -31,15 +36,15 @@ public class SpawnerConfig {
         allowHostile = flag;
     }
 
-    public boolean canMobSpawn(String mobID) {
-        return mobSpawnOverrides.getOrDefault(mobID.toLowerCase(Locale.ROOT), true);
+    public boolean canMobSpawn(NamespaceID mobID) {
+        return mobSpawnOverrides.getOrDefault(mobID, true);
     }
 
-    public void setMobSpawn(String mobID, boolean flag) {
-        mobSpawnOverrides.put(mobID.toLowerCase(Locale.ROOT), flag);
+    public void setMobSpawn(NamespaceID mobID, boolean flag) {
+        mobSpawnOverrides.put(mobID, flag);
     }
 
-    public Collection<Map.Entry<String, Boolean>> getSpawnEntries() {
+    public Collection<Map.Entry<NamespaceID, Boolean>> getSpawnEntries() {
         return mobSpawnOverrides.entrySet();
     }
 
@@ -47,8 +52,8 @@ public class SpawnerConfig {
         tag.putBoolean("passive", allowPassive);
         tag.putBoolean("hostile", allowHostile);
         CompoundTag overridesTag = new CompoundTag();
-        for (Map.Entry<String, Boolean> e : mobSpawnOverrides.entrySet()) {
-            overridesTag.putBoolean(e.getKey(), e.getValue());
+        for (Map.Entry<NamespaceID, Boolean> e : mobSpawnOverrides.entrySet()) {
+            overridesTag.putBoolean(e.getKey().toString(), e.getValue());
         }
         tag.putCompound("overrides", overridesTag);
     }
@@ -58,7 +63,11 @@ public class SpawnerConfig {
         allowHostile = tag.getBoolean("hostile");
         CompoundTag overrides = tag.getCompound("overrides");
         for (Map.Entry<String, Tag<?>> tagEntry : overrides.getValue().entrySet()) {
-            mobSpawnOverrides.put(tagEntry.getKey(), ((ByteTag)tagEntry.getValue()).getValue() != 0);
+            try {
+                mobSpawnOverrides.put(new NamespaceID(tagEntry.getKey()), ((ByteTag)tagEntry.getValue()).getValue() != 0);
+            } catch (HardIllegalArgumentException e) {
+                LOGGER.error("Failed to convert string '{}' to namespace id!", tagEntry.getKey(), e);
+            }
         }
     }
 
diff --git a/src/main/java/net/minecraft/core/world/generate/CavesLargeFeature.java b/src/main/java/net/minecraft/core/world/generate/CavesLargeFeature.java
index 697fe5fe3..4b08708c8 100644
--- a/src/main/java/net/minecraft/core/world/generate/CavesLargeFeature.java
+++ b/src/main/java/net/minecraft/core/world/generate/CavesLargeFeature.java
@@ -12,10 +12,6 @@ import net.minecraft.core.world.generate.chunk.ChunkGeneratorResult;
 
 import java.util.Random;
 
-// Referenced classes of package net.minecraft.src:
-//            MapGenBase, MathHelper, Block, GrassBlock,
-//            World
-
 public class CavesLargeFeature extends LargeFeature {
     private final int minY;
     private final int maxY;
diff --git a/src/main/java/net/minecraft/core/world/generate/LargeFeature.java b/src/main/java/net/minecraft/core/world/generate/LargeFeature.java
index 82ca00f02..f45790a17 100644
--- a/src/main/java/net/minecraft/core/world/generate/LargeFeature.java
+++ b/src/main/java/net/minecraft/core/world/generate/LargeFeature.java
@@ -5,9 +5,6 @@ import net.minecraft.core.world.generate.chunk.ChunkGeneratorResult;
 
 import java.util.Random;
 
-// Referenced classes of package net.minecraft.src:
-//            World, IChunkProvider
-
 public class LargeFeature
 {
 
diff --git a/src/main/java/net/minecraft/core/world/generate/WarrensCavesLargeFeature.java b/src/main/java/net/minecraft/core/world/generate/WarrensCavesLargeFeature.java
index 5fb6aa9c6..81e74694c 100644
--- a/src/main/java/net/minecraft/core/world/generate/WarrensCavesLargeFeature.java
+++ b/src/main/java/net/minecraft/core/world/generate/WarrensCavesLargeFeature.java
@@ -5,17 +5,12 @@ import net.minecraft.core.block.Blocks;
 import net.minecraft.core.block.tag.BlockTags;
 import net.minecraft.core.util.helper.MathHelper;
 import net.minecraft.core.world.World;
-import net.minecraft.core.world.biome.Biome;
 import net.minecraft.core.world.chunk.Chunk;
 import net.minecraft.core.world.chunk.ChunkSection;
 import net.minecraft.core.world.generate.chunk.ChunkGeneratorResult;
 
 import java.util.Random;
 
-// Referenced classes of package net.minecraft.src:
-//            MapGenBase, MathHelper, Block, GrassBlock,
-//            World
-
 public class WarrensCavesLargeFeature extends LargeFeature {
     private final int minY;
     private final int maxY;
diff --git a/src/main/java/net/minecraft/core/world/generate/chunk/ChunkDecorator.java b/src/main/java/net/minecraft/core/world/generate/chunk/ChunkDecorator.java
index 0c8aeb6cb..28866ff46 100644
--- a/src/main/java/net/minecraft/core/world/generate/chunk/ChunkDecorator.java
+++ b/src/main/java/net/minecraft/core/world/generate/chunk/ChunkDecorator.java
@@ -1,6 +1,5 @@
 package net.minecraft.core.world.generate.chunk;
 
-import net.minecraft.core.world.World;
 import net.minecraft.core.world.chunk.Chunk;
 
 public interface ChunkDecorator
diff --git a/src/main/java/net/minecraft/core/world/generate/chunk/ChunkGenerator.java b/src/main/java/net/minecraft/core/world/generate/chunk/ChunkGenerator.java
index 0ae912068..445f15767 100644
--- a/src/main/java/net/minecraft/core/world/generate/chunk/ChunkGenerator.java
+++ b/src/main/java/net/minecraft/core/world/generate/chunk/ChunkGenerator.java
@@ -5,8 +5,6 @@ import net.minecraft.core.world.World;
 import net.minecraft.core.world.biome.Biome;
 import net.minecraft.core.world.chunk.Chunk;
 import net.minecraft.core.world.chunk.ChunkSection;
-import net.minecraft.core.world.data.ChunkNibbleArray;
-import net.minecraft.core.world.data.ChunkUnsignedByteArray;
 import net.minecraft.core.world.generate.feature.WorldFeature;
 
 import static net.minecraft.core.world.chunk.Chunk.CHUNK_SIZE_X;
diff --git a/src/main/java/net/minecraft/core/world/generate/chunk/ChunkGeneratorResult.java b/src/main/java/net/minecraft/core/world/generate/chunk/ChunkGeneratorResult.java
index 0ea90249d..680286b03 100644
--- a/src/main/java/net/minecraft/core/world/generate/chunk/ChunkGeneratorResult.java
+++ b/src/main/java/net/minecraft/core/world/generate/chunk/ChunkGeneratorResult.java
@@ -1,7 +1,6 @@
 package net.minecraft.core.world.generate.chunk;
 
 import net.minecraft.core.block.Block;
-import net.minecraft.core.block.Blocks;
 import net.minecraft.core.world.chunk.Chunk;
 import net.minecraft.core.world.chunk.ChunkSection;
 
diff --git a/src/main/java/net/minecraft/core/world/generate/chunk/debug/ChunkDecoratorDebug.java b/src/main/java/net/minecraft/core/world/generate/chunk/debug/ChunkDecoratorDebug.java
index 55ff1a3b0..87360d25b 100644
--- a/src/main/java/net/minecraft/core/world/generate/chunk/debug/ChunkDecoratorDebug.java
+++ b/src/main/java/net/minecraft/core/world/generate/chunk/debug/ChunkDecoratorDebug.java
@@ -1,7 +1,6 @@
 package net.minecraft.core.world.generate.chunk.debug;
 
 import net.minecraft.core.block.Block;
-import net.minecraft.core.block.Blocks;
 import net.minecraft.core.world.chunk.Chunk;
 import net.minecraft.core.world.generate.chunk.ChunkDecorator;
 
diff --git a/src/main/java/net/minecraft/core/world/generate/chunk/debug/ChunkGeneratorDebug.java b/src/main/java/net/minecraft/core/world/generate/chunk/debug/ChunkGeneratorDebug.java
index 1b56ab0f9..bbdb6c6a0 100644
--- a/src/main/java/net/minecraft/core/world/generate/chunk/debug/ChunkGeneratorDebug.java
+++ b/src/main/java/net/minecraft/core/world/generate/chunk/debug/ChunkGeneratorDebug.java
@@ -1,9 +1,7 @@
 package net.minecraft.core.world.generate.chunk.debug;
 
-import net.minecraft.core.Global;
 import net.minecraft.core.world.World;
 import net.minecraft.core.world.chunk.Chunk;
-import net.minecraft.core.world.chunk.ChunkSection;
 import net.minecraft.core.world.generate.chunk.ChunkGenerator;
 import net.minecraft.core.world.generate.chunk.ChunkGeneratorResult;
 
diff --git a/src/main/java/net/minecraft/core/world/generate/chunk/empty/ChunkDecoratorEmpty.java b/src/main/java/net/minecraft/core/world/generate/chunk/empty/ChunkDecoratorEmpty.java
index c2ad0fecc..3be9f40cd 100644
--- a/src/main/java/net/minecraft/core/world/generate/chunk/empty/ChunkDecoratorEmpty.java
+++ b/src/main/java/net/minecraft/core/world/generate/chunk/empty/ChunkDecoratorEmpty.java
@@ -1,6 +1,5 @@
 package net.minecraft.core.world.generate.chunk.empty;
 
-import net.minecraft.core.block.Block;
 import net.minecraft.core.block.Blocks;
 import net.minecraft.core.world.chunk.Chunk;
 import net.minecraft.core.world.generate.chunk.ChunkDecorator;
diff --git a/src/main/java/net/minecraft/core/world/generate/chunk/empty/ChunkGeneratorEmpty.java b/src/main/java/net/minecraft/core/world/generate/chunk/empty/ChunkGeneratorEmpty.java
index 9559f17fc..9013709dd 100644
--- a/src/main/java/net/minecraft/core/world/generate/chunk/empty/ChunkGeneratorEmpty.java
+++ b/src/main/java/net/minecraft/core/world/generate/chunk/empty/ChunkGeneratorEmpty.java
@@ -1,9 +1,7 @@
 package net.minecraft.core.world.generate.chunk.empty;
 
-import net.minecraft.core.Global;
 import net.minecraft.core.world.World;
 import net.minecraft.core.world.chunk.Chunk;
-import net.minecraft.core.world.chunk.ChunkSection;
 import net.minecraft.core.world.generate.chunk.ChunkGenerator;
 import net.minecraft.core.world.generate.chunk.ChunkGeneratorResult;
 
diff --git a/src/main/java/net/minecraft/core/world/generate/chunk/flat/ChunkGeneratorFlat.java b/src/main/java/net/minecraft/core/world/generate/chunk/flat/ChunkGeneratorFlat.java
index 1392b3e99..e034e4c65 100644
--- a/src/main/java/net/minecraft/core/world/generate/chunk/flat/ChunkGeneratorFlat.java
+++ b/src/main/java/net/minecraft/core/world/generate/chunk/flat/ChunkGeneratorFlat.java
@@ -1,6 +1,5 @@
 package net.minecraft.core.world.generate.chunk.flat;
 
-import net.minecraft.core.block.Block;
 import net.minecraft.core.block.Blocks;
 import net.minecraft.core.world.World;
 import net.minecraft.core.world.chunk.Chunk;
diff --git a/src/main/java/net/minecraft/core/world/generate/chunk/indev/LevelGenerator.java b/src/main/java/net/minecraft/core/world/generate/chunk/indev/LevelGenerator.java
index dc9e4ee60..4bc7eb155 100644
--- a/src/main/java/net/minecraft/core/world/generate/chunk/indev/LevelGenerator.java
+++ b/src/main/java/net/minecraft/core/world/generate/chunk/indev/LevelGenerator.java
@@ -1,6 +1,5 @@
 package net.minecraft.core.world.generate.chunk.indev;
 
-import net.minecraft.core.block.Block;
 import net.minecraft.core.block.Blocks;
 import net.minecraft.core.world.World;
 import net.minecraft.core.world.chunk.Chunk;
diff --git a/src/main/java/net/minecraft/core/world/generate/chunk/perlin/DensityGenerator.java b/src/main/java/net/minecraft/core/world/generate/chunk/perlin/DensityGenerator.java
index ce9634d56..cfc0d2736 100644
--- a/src/main/java/net/minecraft/core/world/generate/chunk/perlin/DensityGenerator.java
+++ b/src/main/java/net/minecraft/core/world/generate/chunk/perlin/DensityGenerator.java
@@ -1,6 +1,5 @@
 package net.minecraft.core.world.generate.chunk.perlin;
 
-import net.minecraft.core.Global;
 import net.minecraft.core.world.World;
 import net.minecraft.core.world.chunk.Chunk;
 
diff --git a/src/main/java/net/minecraft/core/world/generate/chunk/perlin/TerrainGeneratorLerp.java b/src/main/java/net/minecraft/core/world/generate/chunk/perlin/TerrainGeneratorLerp.java
index 6051cb36e..891e26a5a 100644
--- a/src/main/java/net/minecraft/core/world/generate/chunk/perlin/TerrainGeneratorLerp.java
+++ b/src/main/java/net/minecraft/core/world/generate/chunk/perlin/TerrainGeneratorLerp.java
@@ -2,7 +2,6 @@ package net.minecraft.core.world.generate.chunk.perlin;
 
 import net.minecraft.core.world.World;
 import net.minecraft.core.world.chunk.Chunk;
-import net.minecraft.core.world.chunk.ChunkSection;
 import net.minecraft.core.world.generate.chunk.ChunkGeneratorResult;
 
 import java.util.Random;
diff --git a/src/main/java/net/minecraft/core/world/generate/chunk/perlin/nether/DensityGeneratorNether.java b/src/main/java/net/minecraft/core/world/generate/chunk/perlin/nether/DensityGeneratorNether.java
index 255404cf1..124c8ae5f 100644
--- a/src/main/java/net/minecraft/core/world/generate/chunk/perlin/nether/DensityGeneratorNether.java
+++ b/src/main/java/net/minecraft/core/world/generate/chunk/perlin/nether/DensityGeneratorNether.java
@@ -13,8 +13,8 @@ public class DensityGeneratorNether
     private final PerlinNoise minLimitNoise;
     private final PerlinNoise maxLimitNoise;
     private final PerlinNoise mainNoise;
-    private final PerlinNoise scaleNoise;
-    private final PerlinNoise depthNoise;
+//    private final PerlinNoise scaleNoise;
+//    private final PerlinNoise depthNoise;
 
 
     public DensityGeneratorNether(World world)
@@ -24,8 +24,8 @@ public class DensityGeneratorNether
         this.minLimitNoise = new PerlinNoise(world.getRandomSeed(), 16, 0);
         this.maxLimitNoise = new PerlinNoise(world.getRandomSeed(), 16, 16);
         this.mainNoise = new PerlinNoise(world.getRandomSeed(), 8, 32);
-        this.scaleNoise = new PerlinNoise(world.getRandomSeed(), 10, 48);
-        this.depthNoise = new PerlinNoise(world.getRandomSeed(), 16, 58);
+//        this.scaleNoise = new PerlinNoise(world.getRandomSeed(), 10, 48);
+//        this.depthNoise = new PerlinNoise(world.getRandomSeed(), 16, 58);
     }
 
     @Override
@@ -45,13 +45,13 @@ public class DensityGeneratorNether
         final double mainNoiseScaleY = 60.0;
         final double mainNoiseScaleZ = 80.0;
 
-        final double scaleNoiseScaleX = 1.0;
-        final double scaleNoiseScaleZ = 1.0;
+//        final double scaleNoiseScaleX = 1.0;
+//        final double scaleNoiseScaleZ = 1.0;
 
-        final double depthNoiseScaleX = 100.0;
-        final double depthNoiseScaleZ = 100.0;
+//        final double depthNoiseScaleX = 100.0;
+//        final double depthNoiseScaleZ = 100.0;
 
-        final double depthBaseSize = (terrainHeight / 16D) + 0.5D;
+//        final double depthBaseSize = (terrainHeight / 16D) + 0.5D;
 
         final double coordScale = 684.412D;
         final double heightScale = 2053.236D;
@@ -59,13 +59,13 @@ public class DensityGeneratorNether
         final double upperLimitScale = 512.0;
         final double lowerLimitScale = 512.0;
 
-        double[] scaleArray = scaleNoise.get(null, x, z, xSize, zSize, scaleNoiseScaleX, scaleNoiseScaleZ);
-        double[] depthArray = depthNoise.get(null, x, z, xSize, zSize, depthNoiseScaleX, depthNoiseScaleZ);
+//        double[] scaleArray = scaleNoise.get(null, x, z, xSize, zSize, scaleNoiseScaleX, scaleNoiseScaleZ);
+//        double[] depthArray = depthNoise.get(null, x, z, xSize, zSize, depthNoiseScaleX, depthNoiseScaleZ);
         double[] mainNoiseArray = mainNoise.get(null, x, y, z, xSize, ySize, zSize, coordScale / mainNoiseScaleX, heightScale / mainNoiseScaleY, coordScale / mainNoiseScaleZ);
         double[] minLimitArray = minLimitNoise.get(null, x, y, z, xSize, ySize, zSize, coordScale, heightScale, coordScale);
         double[] maxLimitArray = maxLimitNoise.get(null, x, y, z, xSize, ySize, zSize, coordScale, heightScale, coordScale);
         int mainIndex = 0;
-        int depthScaleIndex = 0;
+//        int depthScaleIndex = 0;
         double[] densityOffsetArray = new double[ySize];
         for(int dy = 0; dy < ySize; dy++)
         {
@@ -87,45 +87,45 @@ public class DensityGeneratorNether
             for(int dz = 0; dz < zSize; dz++)
             {
                 // Calculate scale
-                double scale = (scaleArray[depthScaleIndex] + 256D) / 512D;
-                if(scale > 1.0D)
-                {
-                    scale = 1.0D;
-                }
-                double d4 = 0.0D;
+//                double scale = (scaleArray[depthScaleIndex] + 256D) / 512D;
+//                if(scale > 1.0D)
+//                {
+//                    scale = 1.0D;
+//                }
+//                double d4 = 0.0D;
 
                 // Calculate depth
-                double depth = depthArray[depthScaleIndex] / 8000D;
-                if(depth < 0.0D)
-                {
-                    depth = -depth;
-                }
-                depth = depth * 3D - 3D;
-
-                if(depth < 0.0D)
-                {
-                    depth /= 2D;
-                    if(depth < -1D)
-                    {
-                        depth = -1D;
-                    }
-                    depth /= 1.4D;
-                    depth /= 2D;
-                    scale = 0.0D;
-                }
-                else
-                {
-                    if(depth > 1.0D)
-                    {
-                        depth = 1.0D;
-                    }
-                    depth /= 6D;
-                }
-
-                scale += 0.5D;
-                depth = (depth * (depthBaseSize * 2)) / 16D;
-
-                depthScaleIndex++;
+//                double depth = depthArray[depthScaleIndex] / 8000D;
+//                if(depth < 0.0D)
+//                {
+//                    depth = -depth;
+//                }
+//                depth = depth * 3D - 3D;
+
+//                if(depth < 0.0D)
+//                {
+//                    depth /= 2D;
+//                    if(depth < -1D)
+//                    {
+//                        depth = -1D;
+//                    }
+//                    depth /= 1.4D;
+//                    depth /= 2D;
+//                    scale = 0.0D;
+//                }
+//                else
+//                {
+//                    if(depth > 1.0D)
+//                    {
+//                        depth = 1.0D;
+//                    }
+//                    depth /= 6D;
+//                }
+
+//                scale += 0.5D;
+//                depth = (depth * (depthBaseSize * 2)) / 16D;
+
+//                depthScaleIndex++;
                 for(int dy = 0; dy < ySize; dy++)
                 {
                     double density;
@@ -154,19 +154,20 @@ public class DensityGeneratorNether
                         double d11 = (float)(dy - (ySize - 4)) / 3F;
                         density = density * (1.0D - d11) + -10D * d11;
                     }
-                    if((double)dy < d4)
-                    {
-                        double densityMod = (d4 - (double)dy) / 4D;
-                        if(densityMod < 0.0D)
-                        {
-                            densityMod = 0.0D;
-                        }
-                        if(densityMod > 1.0D)
-                        {
-                            densityMod = 1.0D;
-                        }
-                        density = density * (1.0D - densityMod) + -10D * densityMod;
-                    }
+                    // This code was always false
+//                    if((double)dy < d4)
+//                    {
+//                        double densityMod = (d4 - (double)dy) / 4D;
+//                        if(densityMod < 0.0D)
+//                        {
+//                            densityMod = 0.0D;
+//                        }
+//                        if(densityMod > 1.0D)
+//                        {
+//                            densityMod = 1.0D;
+//                        }
+//                        density = density * (1.0D - densityMod) + -10D * densityMod;
+//                    }
 
                     densityMapArray[mainIndex] = density;
                     mainIndex++;
diff --git a/src/main/java/net/minecraft/core/world/generate/chunk/perlin/nether/TerrainGeneratorNether.java b/src/main/java/net/minecraft/core/world/generate/chunk/perlin/nether/TerrainGeneratorNether.java
index b7b17333d..e643374c0 100644
--- a/src/main/java/net/minecraft/core/world/generate/chunk/perlin/nether/TerrainGeneratorNether.java
+++ b/src/main/java/net/minecraft/core/world/generate/chunk/perlin/nether/TerrainGeneratorNether.java
@@ -1,6 +1,5 @@
 package net.minecraft.core.world.generate.chunk.perlin.nether;
 
-import net.minecraft.core.block.Block;
 import net.minecraft.core.block.Blocks;
 import net.minecraft.core.world.World;
 import net.minecraft.core.world.generate.chunk.perlin.DensityGenerator;
diff --git a/src/main/java/net/minecraft/core/world/generate/chunk/perlin/overworld/ChunkDecoratorOverworld.java b/src/main/java/net/minecraft/core/world/generate/chunk/perlin/overworld/ChunkDecoratorOverworld.java
index 15907905c..ae62cf9ea 100644
--- a/src/main/java/net/minecraft/core/world/generate/chunk/perlin/overworld/ChunkDecoratorOverworld.java
+++ b/src/main/java/net/minecraft/core/world/generate/chunk/perlin/overworld/ChunkDecoratorOverworld.java
@@ -67,7 +67,6 @@ public class ChunkDecoratorOverworld
         long l2 = (rand.nextLong() / 2L) * 2L + 1L;
         rand.setSeed((long) chunkX * l1 + (long) chunkZ * l2 ^ world.getRandomSeed());
         Random swampRand = new Random((long) chunkX * l1 + (long) chunkZ * l2 ^ world.getRandomSeed());
-        double d = 0.25D;
 
         // Water pass for swamps
         if (biome == Biomes.OVERWORLD_SWAMPLAND)
@@ -242,7 +241,7 @@ public class ChunkDecoratorOverworld
         }
 
 
-        d = 0.5D;
+        double d = 0.5D;
         int k4 = (int) ((treeDensityNoise.get((double) x * d, (double) z * d) / 8D + rand.nextDouble() * 4D + 4D) / 3D);
         int treeDensity = 0;
         if (rand.nextInt(10) == 0) {
diff --git a/src/main/java/net/minecraft/core/world/generate/chunk/perlin/overworld/SurfaceGeneratorOverworld.java b/src/main/java/net/minecraft/core/world/generate/chunk/perlin/overworld/SurfaceGeneratorOverworld.java
index d315bc946..26ae72e5a 100644
--- a/src/main/java/net/minecraft/core/world/generate/chunk/perlin/overworld/SurfaceGeneratorOverworld.java
+++ b/src/main/java/net/minecraft/core/world/generate/chunk/perlin/overworld/SurfaceGeneratorOverworld.java
@@ -2,7 +2,6 @@ package net.minecraft.core.world.generate.chunk.perlin.overworld;
 
 import java.util.Random;
 
-import net.minecraft.core.block.Block;
 import net.minecraft.core.block.Blocks;
 import net.minecraft.core.world.World;
 import net.minecraft.core.world.biome.Biome;
diff --git a/src/main/java/net/minecraft/core/world/generate/chunk/perlin/overworld/TerrainGeneratorOverworld.java b/src/main/java/net/minecraft/core/world/generate/chunk/perlin/overworld/TerrainGeneratorOverworld.java
index f4985fb38..dee0984a5 100644
--- a/src/main/java/net/minecraft/core/world/generate/chunk/perlin/overworld/TerrainGeneratorOverworld.java
+++ b/src/main/java/net/minecraft/core/world/generate/chunk/perlin/overworld/TerrainGeneratorOverworld.java
@@ -1,6 +1,5 @@
 package net.minecraft.core.world.generate.chunk.perlin.overworld;
 
-import net.minecraft.core.block.Block;
 import net.minecraft.core.block.Blocks;
 import net.minecraft.core.world.World;
 import net.minecraft.core.world.generate.chunk.perlin.DensityGenerator;
diff --git a/src/main/java/net/minecraft/core/world/generate/chunk/perlin/overworld/hell/ChunkDecoratorOverworldHell.java b/src/main/java/net/minecraft/core/world/generate/chunk/perlin/overworld/hell/ChunkDecoratorOverworldHell.java
index 707d503b7..5cbb48a10 100644
--- a/src/main/java/net/minecraft/core/world/generate/chunk/perlin/overworld/hell/ChunkDecoratorOverworldHell.java
+++ b/src/main/java/net/minecraft/core/world/generate/chunk/perlin/overworld/hell/ChunkDecoratorOverworldHell.java
@@ -9,7 +9,6 @@ import net.minecraft.core.block.BlockOreIron;
 import net.minecraft.core.block.BlockOreLapis;
 import net.minecraft.core.block.BlockOreRedstone;
 import net.minecraft.core.world.World;
-import net.minecraft.core.world.biome.Biome;
 import net.minecraft.core.world.chunk.Chunk;
 import net.minecraft.core.world.generate.chunk.ChunkDecorator;
 import net.minecraft.core.world.generate.feature.*;
@@ -42,18 +41,17 @@ public class ChunkDecoratorOverworldHell
         int maxY = world.getWorldType().getMaxY();
         int rangeY = (maxY + 1) - minY;
 
-        float oreHeightModifier = rangeY / 128f;
+//        float oreHeightModifier = rangeY / 128f;
 
         BlockSand.fallInstantly = true;
         int x = chunkX * 16;
         int z = chunkZ * 16;
-        int y = world.getHeightValue(x + 16, z + 16);
-        Biome biome = world.getBlockBiome(x + 16, y, z + 16);
+//        int y = world.getHeightValue(x + 16, z + 16);
+//        Biome biome = world.getBlockBiome(x + 16, y, z + 16);
         Random rand = new Random(world.getRandomSeed());
         long l1 = (rand.nextLong() / 2L) * 2L + 1L;
         long l2 = (rand.nextLong() / 2L) * 2L + 1L;
         rand.setSeed((long)chunkX * l1 + (long) chunkZ * l2 ^ world.getRandomSeed());
-        double d = 0.25D;
         if(rand.nextInt(32) == 0)
         {
             int i1 = x + rand.nextInt(16) + 8;
@@ -191,9 +189,8 @@ public class ChunkDecoratorOverworldHell
             (new WorldFeatureOre(BlockOreLapis.variantMap, 6)).place(world, rand, k7, l10, k13);
         }
 
-        d = 0.5D;
-        int k4 = (int)((treeDensityNoise.get((double)x * d, (double)z * d) / 8D + rand.nextDouble() * 4D + 4D) / 3D);
-        int treeDensity = k4;
+        double d = 0.5D;
+        int treeDensity = (int)((treeDensityNoise.get((double)x * d, (double)z * d) / 8D + rand.nextDouble() * 4D + 4D) / 3D);
         if(rand.nextInt(10) == 0)
         {
             treeDensity++;
diff --git a/src/main/java/net/minecraft/core/world/generate/chunk/perlin/overworld/retro/ChunkDecoratorOverworldRetro.java b/src/main/java/net/minecraft/core/world/generate/chunk/perlin/overworld/retro/ChunkDecoratorOverworldRetro.java
index 183992307..27628e349 100644
--- a/src/main/java/net/minecraft/core/world/generate/chunk/perlin/overworld/retro/ChunkDecoratorOverworldRetro.java
+++ b/src/main/java/net/minecraft/core/world/generate/chunk/perlin/overworld/retro/ChunkDecoratorOverworldRetro.java
@@ -53,7 +53,6 @@ public class ChunkDecoratorOverworldRetro
         long l1 = (rand.nextLong() / 2L) * 2L + 1L;
         long l2 = (rand.nextLong() / 2L) * 2L + 1L;
         rand.setSeed((long) chunkX * l1 + (long) chunkZ * l2 ^ world.getRandomSeed());
-        double d = 0.25D;
         for (int i1 = 0; i1 < 8; i1++)
         {
             int i4 = k + rand.nextInt(16) + 8;
@@ -126,7 +125,7 @@ public class ChunkDecoratorOverworldRetro
             (new WorldFeatureOre(BlockOreDiamond.variantMap, 7)).place(world, rand, i6, j8, i13);
         }
 
-        d = 0.5D;
+        double d = 0.5D;
         int l3 = (int)((treeDensityNoise.get((double)k * d, (double)l * d) / 8D + rand.nextDouble() * 4D + 4D) / 3D);
         if (l3 < 0)
         {
diff --git a/src/main/java/net/minecraft/core/world/generate/chunk/perlin/paradise/DensityGeneratorParadise.java b/src/main/java/net/minecraft/core/world/generate/chunk/perlin/paradise/DensityGeneratorParadise.java
index 9840773f8..ce4c77ee4 100644
--- a/src/main/java/net/minecraft/core/world/generate/chunk/perlin/paradise/DensityGeneratorParadise.java
+++ b/src/main/java/net/minecraft/core/world/generate/chunk/perlin/paradise/DensityGeneratorParadise.java
@@ -13,8 +13,8 @@ public class DensityGeneratorParadise
     private final PerlinNoise minLimitNoise;
     private final PerlinNoise maxLimitNoise;
     private final PerlinNoise mainNoise;
-    private final PerlinNoise scaleNoise;
-    private final PerlinNoise depthNoise;
+//    private final PerlinNoise scaleNoise;
+//    private final PerlinNoise depthNoise;
 
     public DensityGeneratorParadise(World world)
     {
@@ -23,8 +23,8 @@ public class DensityGeneratorParadise
         minLimitNoise = new PerlinNoise(world.getRandomSeed(), 16, 0);
         maxLimitNoise = new PerlinNoise(world.getRandomSeed(), 16, 16);
         mainNoise = new PerlinNoise(world.getRandomSeed(), 8, 32);
-        scaleNoise = new PerlinNoise(world.getRandomSeed(), 10, 48);
-        depthNoise = new PerlinNoise(world.getRandomSeed(), 16, 58);
+//        scaleNoise = new PerlinNoise(world.getRandomSeed(), 10, 48);
+//        depthNoise = new PerlinNoise(world.getRandomSeed(), 16, 58);
     }
 
     @Override
@@ -45,30 +45,30 @@ public class DensityGeneratorParadise
         final double mainNoiseScaleY = 120;
         final double mainNoiseScaleZ = 80;
 
-        final double scaleNoiseScaleX = 1.121;
-        final double scaleNoiseScaleZ = 1.121;
+//        final double scaleNoiseScaleX = 1.121;
+//        final double scaleNoiseScaleZ = 1.121;
 
-        final double depthNoiseScaleX = 200;
-        final double depthNoiseScaleZ = 200;
+//        final double depthNoiseScaleX = 200;
+//        final double depthNoiseScaleZ = 200;
 
-        final double depthBaseSize = (terrainHeight / 16D) + 0.5D;
+//        final double depthBaseSize = (terrainHeight / 16D) + 0.5D;
 
         final double coordScale = 684.412D / 4;
         final double heightScale = 684.412D / 2;
 
-        final double heightStretch = 4;
+//        final double heightStretch = 4;
 
         final double upperLimitScale = 512;
         final double lowerLimitScale = 512;
 
         // uses temp and humidity to alter terrain shape.
-        double[] scaleArray = scaleNoise.get(null, x, z, xSize, zSize, scaleNoiseScaleX, scaleNoiseScaleZ);
-        double[] depthArray = depthNoise.get(null, x, z, xSize, zSize, depthNoiseScaleX, depthNoiseScaleZ);
+//        double[] scaleArray = scaleNoise.get(null, x, z, xSize, zSize, scaleNoiseScaleX, scaleNoiseScaleZ);
+//        double[] depthArray = depthNoise.get(null, x, z, xSize, zSize, depthNoiseScaleX, depthNoiseScaleZ);
         double[] mainNoiseArray = mainNoise.get(null, x, y, z, xSize, ySize, zSize, coordScale / mainNoiseScaleX, heightScale / mainNoiseScaleY, coordScale / mainNoiseScaleZ);
         double[] minLimitArray = minLimitNoise.get(null, x, y, z, xSize, ySize, zSize, coordScale, heightScale, coordScale);
         double[] maxLimitArray = maxLimitNoise.get(null, x, y, z, xSize, ySize, zSize, coordScale, heightScale, coordScale);
         int mainIndex = 0;
-        int depthScaleIndex = 0;
+//        int depthScaleIndex = 0;
         int xSizeScale = 16 / xSize;
         for(int dx = 0; dx < xSize; dx++)
         {
@@ -86,46 +86,46 @@ public class DensityGeneratorParadise
                 humidity = 1.0D - humidity;
 
                 // Calculate scale
-                double scale = (scaleArray[depthScaleIndex] + 256D) / 512D;
-                scale *= humidity;
-                if(scale > 1.0D)
-                {
-                    scale = 1.0D;
-                }
+//                double scale = (scaleArray[depthScaleIndex] + 256D) / 512D;
+//                scale *= humidity;
+//                if(scale > 1.0D)
+//                {
+//                    scale = 1.0D;
+//                }
 
                 // Calculate depth
-                double depth = depthArray[depthScaleIndex] / 8000D;
-                if(depth < 0.0D)
-                {
-                    depth = -depth * 0.3D;
-                }
-                depth = depth * 3D - 2D;
-
-                if(depth > 1.0D)
-                {
-                    depth = 1.0D;
-                }
-                depth /= 8D;
-                depth = 0.0D;
-                if(scale < 0.0D)
-                {
-                    scale = 0.0D;
-                }
-
-                scale += 0.5D;
-                depth = (depth * (depthBaseSize * 2)) / 16D;
-
-                double offsetY = (double)ySize / 2D;
-                depthScaleIndex++;
+//                double depth = depthArray[depthScaleIndex] / 8000D;
+//                if(depth < 0.0D)
+//                {
+//                    depth = -depth * 0.3D;
+//                }
+//                depth = depth * 3D - 2D;
+
+//                if(depth > 1.0D)
+//                {
+//                    depth = 1.0D;
+//                }
+//                depth /= 8D;
+//                depth = 0.0D;
+//                if(scale < 0.0D)
+//                {
+//                    scale = 0.0D;
+//                }
+
+//                scale += 0.5D;
+//                depth = (depth * (depthBaseSize * 2)) / 16D;
+
+//                double offsetY = (double)ySize / 2D;
+//                depthScaleIndex++;
 
                 for(int dy = 0; dy < ySize; dy++)
                 {
                     double density = 0.0D;
-                    double densityOffset = (((double)dy - offsetY) * heightStretch) / scale;
-                    if(densityOffset < 0.0D)
-                    {
-                        densityOffset *= -1D;
-                    }
+//                    double densityOffset = (((double)dy - offsetY) * heightStretch) / scale;
+//                    if(densityOffset < 0.0D)
+//                    {
+//                        densityOffset *= -1D;
+//                    }
                     double minDensity = minLimitArray[mainIndex] / upperLimitScale;
                     double maxDensity = maxLimitArray[mainIndex] / lowerLimitScale;
                     double mainDensity = (mainNoiseArray[mainIndex] / 10D + 1.0D) / 2D;
diff --git a/src/main/java/net/minecraft/core/world/generate/chunk/skyblock/ChunkGeneratorSkyblockNether.java b/src/main/java/net/minecraft/core/world/generate/chunk/skyblock/ChunkGeneratorSkyblockNether.java
index ae6bc8bc7..348b4ef84 100644
--- a/src/main/java/net/minecraft/core/world/generate/chunk/skyblock/ChunkGeneratorSkyblockNether.java
+++ b/src/main/java/net/minecraft/core/world/generate/chunk/skyblock/ChunkGeneratorSkyblockNether.java
@@ -3,7 +3,6 @@ package net.minecraft.core.world.generate.chunk.skyblock;
 import net.minecraft.core.block.Blocks;
 import net.minecraft.core.world.World;
 import net.minecraft.core.world.chunk.Chunk;
-import net.minecraft.core.world.generate.chunk.ChunkDecorator;
 import net.minecraft.core.world.generate.chunk.ChunkGenerator;
 import net.minecraft.core.world.generate.chunk.ChunkGeneratorResult;
 
diff --git a/src/main/java/net/minecraft/core/world/generate/feature/WorldFeature.java b/src/main/java/net/minecraft/core/world/generate/feature/WorldFeature.java
index 1428331ae..56b069bac 100644
--- a/src/main/java/net/minecraft/core/world/generate/feature/WorldFeature.java
+++ b/src/main/java/net/minecraft/core/world/generate/feature/WorldFeature.java
@@ -4,9 +4,6 @@ import net.minecraft.core.world.World;
 
 import java.util.Random;
 
-// Referenced classes of package net.minecraft.src:
-//            World
-
 public abstract class WorldFeature
 {
 
diff --git a/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureAlgae.java b/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureAlgae.java
index 046289f85..5f9af8da6 100644
--- a/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureAlgae.java
+++ b/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureAlgae.java
@@ -1,15 +1,11 @@
 package net.minecraft.core.world.generate.feature;
 
-import net.minecraft.core.block.Block;
 import net.minecraft.core.block.Blocks;
 import net.minecraft.core.block.material.Material;
 import net.minecraft.core.world.World;
 
 import java.util.Random;
 
-// Referenced classes of package net.minecraft.src:
-//            WorldGenerator, World, Block, BlockFlower
-
 public class WorldFeatureAlgae extends WorldFeature
 {
 
diff --git a/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureCactus.java b/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureCactus.java
index cdc4fc961..12d59dc55 100644
--- a/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureCactus.java
+++ b/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureCactus.java
@@ -1,14 +1,10 @@
 package net.minecraft.core.world.generate.feature;
 
-import net.minecraft.core.block.Block;
 import net.minecraft.core.block.Blocks;
 import net.minecraft.core.world.World;
 
 import java.util.Random;
 
-// Referenced classes of package net.minecraft.src:
-//            WorldGenerator, World, Block
-
 public class WorldFeatureCactus extends WorldFeature
 {
 
diff --git a/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureClay.java b/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureClay.java
index 2744a41a7..69fdb2ff3 100644
--- a/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureClay.java
+++ b/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureClay.java
@@ -8,10 +8,6 @@ import net.minecraft.core.world.World;
 
 import java.util.Random;
 
-// Referenced classes of package net.minecraft.src:
-//            WorldGenerator, Block, World, Material,
-//            MathHelper
-
 public class WorldFeatureClay extends WorldFeature
 {
     private int clayBlockId;
diff --git a/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureDeadBush.java b/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureDeadBush.java
index 2fa2c29c7..cdf7e68df 100644
--- a/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureDeadBush.java
+++ b/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureDeadBush.java
@@ -6,10 +6,6 @@ import net.minecraft.core.world.World;
 
 import java.util.Random;
 
-// Referenced classes of package net.minecraft.src:
-//            WorldGenerator, World, Block, BlockLeaves, 
-//            BlockFlower
-
 public class WorldFeatureDeadBush extends WorldFeature
 {
     private final int blockId;
@@ -22,7 +18,7 @@ public class WorldFeatureDeadBush extends WorldFeature
     @Override
 	public boolean place(World world, Random random, int x, int y, int z)
     {
-        for(int l = 0; ((l = world.getBlockId(x, y, z)) == 0 || Block.blocksList[l] instanceof BlockLeavesBase) && y > 0; y--) { }
+        for(int l; ((l = world.getBlockId(x, y, z)) == 0 || Block.blocksList[l] instanceof BlockLeavesBase) && y > 0; y--) { }
         for(int i1 = 0; i1 < 4; i1++)
         {
             int j1 = (x + random.nextInt(8)) - random.nextInt(8);
diff --git a/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureDungeon.java b/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureDungeon.java
index 4d5e8db7b..56f6880bd 100644
--- a/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureDungeon.java
+++ b/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureDungeon.java
@@ -14,10 +14,6 @@ import net.minecraft.core.block.material.Material;
 
 import java.util.Random;
 
-// Referenced classes of package net.minecraft.src:
-//            WorldGenerator, World, Material, Block, 
-//            TileEntityChest, TileEntityMobSpawner, ItemStack, Item
-
 public class WorldFeatureDungeon extends WorldFeature
 {
 	public int blockIdWalls;
diff --git a/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureFire.java b/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureFire.java
index 61f0b4e85..eb05c08d8 100644
--- a/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureFire.java
+++ b/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureFire.java
@@ -5,9 +5,6 @@ import net.minecraft.core.world.World;
 
 import java.util.Random;
 
-// Referenced classes of package net.minecraft.src:
-//            WorldGenerator, World, Block, BlockFire
-
 public class WorldFeatureFire extends WorldFeature
 {
 
diff --git a/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureFlowers.java b/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureFlowers.java
index 4f12e879d..aaab501e6 100644
--- a/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureFlowers.java
+++ b/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureFlowers.java
@@ -6,9 +6,6 @@ import net.minecraft.core.world.World;
 
 import java.util.Random;
 
-// Referenced classes of package net.minecraft.src:
-//            WorldGenerator, World, Block, BlockFlower
-
 public class WorldFeatureFlowers extends WorldFeature
 {
     private final int plantBlockId;
diff --git a/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureGlowstoneA.java b/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureGlowstoneA.java
index 172e4e42c..559d5976f 100644
--- a/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureGlowstoneA.java
+++ b/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureGlowstoneA.java
@@ -5,9 +5,6 @@ import net.minecraft.core.world.World;
 
 import java.util.Random;
 
-// Referenced classes of package net.minecraft.src:
-//            WorldGenerator, World, Block
-
 public class WorldFeatureGlowstoneA extends WorldFeature
 {
 
diff --git a/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureGlowstoneB.java b/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureGlowstoneB.java
index 737d4e37e..17420a09f 100644
--- a/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureGlowstoneB.java
+++ b/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureGlowstoneB.java
@@ -5,9 +5,6 @@ import net.minecraft.core.world.World;
 
 import java.util.Random;
 
-// Referenced classes of package net.minecraft.src:
-//            WorldGenerator, World, Block
-
 public class WorldFeatureGlowstoneB extends WorldFeature
 {
 
diff --git a/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureGrassPatch.java b/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureGrassPatch.java
index 310080df3..5b85c4b63 100644
--- a/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureGrassPatch.java
+++ b/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureGrassPatch.java
@@ -6,9 +6,6 @@ import net.minecraft.core.world.World;
 
 import java.util.Random;
 
-// Referenced classes of package net.minecraft.src:
-//            WorldGenerator, MathHelper, World, Block
-
 public class WorldFeatureGrassPatch extends WorldFeature
 {
     @MethodParametersAnnotation(names = {"size", "blockToPlace"})
diff --git a/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureLabyrinth.java b/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureLabyrinth.java
index 3924369fd..7d08f4f10 100644
--- a/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureLabyrinth.java
+++ b/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureLabyrinth.java
@@ -19,9 +19,6 @@ import net.minecraft.core.world.biome.Biomes;
 
 import java.util.Random;
 
-// Referenced classes of package net.minecraft.src:
-//            WorldGenerator, World, Material, Block,
-//            TileEntityChest, TileEntityMobSpawner, ItemStack, Item
 public class WorldFeatureLabyrinth extends WorldFeature
 {
     public WorldFeatureLabyrinth()
@@ -399,7 +396,7 @@ public class WorldFeatureLabyrinth extends WorldFeature
 
     private void generateLibrary(World world, Random random, int blockX, int blockY, int blockZ) {
         int size = 10;
-        int sideFacing = random.nextInt(2);
+//        int sideFacing = random.nextInt(2);
         if (blockY < 10)
             return;
         for (int x = blockX - size; x <= blockX + size; x++) {
diff --git a/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureLake.java b/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureLake.java
index 47d50bed8..fd80e4a6d 100644
--- a/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureLake.java
+++ b/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureLake.java
@@ -1,6 +1,5 @@
 package net.minecraft.core.world.generate.feature;
 
-import net.minecraft.core.world.biome.Biome;
 import net.minecraft.core.block.Block;
 import net.minecraft.core.block.Blocks;
 import net.minecraft.core.enums.LightLayer;
@@ -9,10 +8,6 @@ import net.minecraft.core.world.World;
 
 import java.util.Random;
 
-// Referenced classes of package net.minecraft.src:
-//            WorldGenerator, World, Material, Block, 
-//            EnumSkyBlock, GrassBlock
-
 public class WorldFeatureLake extends WorldFeature
 {
     @MethodParametersAnnotation(names = {"liquidId"})
@@ -24,8 +19,8 @@ public class WorldFeatureLake extends WorldFeature
     @Override
 	public boolean place(World world, Random random, int x, int y, int z)
     {
-    	Block liquid = Block.blocksList[liquidId];
-    	Biome biome = world.getBlockBiome(x, y, z);
+//    	Block liquid = Block.blocksList[liquidId];
+//    	Biome biome = world.getBlockBiome(x, y, z);
 
         x -= 8;
         for(z -= 8; y > 0 && world.isAirBlock(x, y, z); y--) { }
diff --git a/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureLiquid.java b/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureLiquid.java
index 57877d595..5f26b11d4 100644
--- a/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureLiquid.java
+++ b/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureLiquid.java
@@ -6,9 +6,6 @@ import net.minecraft.core.world.World;
 
 import java.util.Random;
 
-// Referenced classes of package net.minecraft.src:
-//            WorldGenerator, World, Block
-
 public class WorldFeatureLiquid extends WorldFeature
 {
     @MethodParametersAnnotation(names = {"liquidId"})
diff --git a/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureMeadow.java b/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureMeadow.java
index dfcbdfab3..312d3c7df 100644
--- a/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureMeadow.java
+++ b/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureMeadow.java
@@ -18,7 +18,7 @@ public class WorldFeatureMeadow extends WorldFeature
     @Override
     public boolean place(World world, Random random, int x, int y, int z)
     {
-        for(int l = 0; ((l = world.getBlockId(x, y, z)) == 0 || Block.blocksList[l] instanceof BlockLeavesBase) && y > 0; y--) { }
+        for(int l; ((l = world.getBlockId(x, y, z)) == 0 || Block.blocksList[l] instanceof BlockLeavesBase) && y > 0; y--) { }
         for(int i1 = 0; i1 < 128; i1++)
         {
             int j1 = (x + random.nextInt(8)) - random.nextInt(8);
diff --git a/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureMudPatch.java b/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureMudPatch.java
index fccad9727..3a26d960d 100644
--- a/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureMudPatch.java
+++ b/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureMudPatch.java
@@ -1,6 +1,5 @@
 package net.minecraft.core.world.generate.feature;
 
-import net.minecraft.core.block.Block;
 import net.minecraft.core.block.Blocks;
 import net.minecraft.core.world.World;
 import net.minecraft.core.world.noise.ImprovedNoise;
diff --git a/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureNetherLava.java b/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureNetherLava.java
index 1e51a1207..768152aab 100644
--- a/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureNetherLava.java
+++ b/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureNetherLava.java
@@ -6,9 +6,6 @@ import net.minecraft.core.world.World;
 
 import java.util.Random;
 
-// Referenced classes of package net.minecraft.src:
-//            WorldGenerator, World, Block
-
 public class WorldFeatureNetherLava extends WorldFeature
 {
     private final int blockId;
diff --git a/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureOre.java b/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureOre.java
index bb6220b87..72679bd27 100644
--- a/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureOre.java
+++ b/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureOre.java
@@ -8,9 +8,6 @@ import org.jetbrains.annotations.NotNull;
 import java.util.Map;
 import java.util.Random;
 
-// Referenced classes of package net.minecraft.src:
-//            WorldGenerator, MathHelper, World, Block
-
 public class WorldFeatureOre extends WorldFeature
 {
     private int minableBlockId;
diff --git a/src/main/java/net/minecraft/core/world/generate/feature/WorldFeaturePumpkin.java b/src/main/java/net/minecraft/core/world/generate/feature/WorldFeaturePumpkin.java
index b1b7ba0cc..10c97ea1d 100644
--- a/src/main/java/net/minecraft/core/world/generate/feature/WorldFeaturePumpkin.java
+++ b/src/main/java/net/minecraft/core/world/generate/feature/WorldFeaturePumpkin.java
@@ -1,14 +1,10 @@
 package net.minecraft.core.world.generate.feature;
 
-import net.minecraft.core.block.Block;
 import net.minecraft.core.block.Blocks;
 import net.minecraft.core.world.World;
 
 import java.util.Random;
 
-// Referenced classes of package net.minecraft.src:
-//            WorldGenerator, World, Block, GrassBlock
-
 public class WorldFeaturePumpkin extends WorldFeature
 {
 
diff --git a/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureRichScorchedDirt.java b/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureRichScorchedDirt.java
index ace8cd0bd..d4a65e992 100644
--- a/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureRichScorchedDirt.java
+++ b/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureRichScorchedDirt.java
@@ -1,14 +1,10 @@
 package net.minecraft.core.world.generate.feature;
 
-import net.minecraft.core.block.Block;
 import net.minecraft.core.block.Blocks;
 import net.minecraft.core.world.World;
 
 import java.util.Random;
 
-// Referenced classes of package net.minecraft.src:
-//            WorldGenerator, MathHelper, World, Block
-
 public class WorldFeatureRichScorchedDirt extends WorldFeature
 {
     @MethodParametersAnnotation(names = {"numberOfBlocks"})
diff --git a/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureSpinifexPatch.java b/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureSpinifexPatch.java
index 8404db992..e0cb29cae 100644
--- a/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureSpinifexPatch.java
+++ b/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureSpinifexPatch.java
@@ -7,10 +7,6 @@ import net.minecraft.core.world.World;
 
 import java.util.Random;
 
-// Referenced classes of package net.minecraft.src:
-//            WorldGenerator, World, Block, BlockLeaves,
-//            BlockFlower
-
 public class WorldFeatureSpinifexPatch extends WorldFeature
 {
     @Override
diff --git a/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureSponge.java b/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureSponge.java
index 5fcc33dcc..a6bafd3ab 100644
--- a/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureSponge.java
+++ b/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureSponge.java
@@ -1,14 +1,10 @@
 package net.minecraft.core.world.generate.feature;
 
-import net.minecraft.core.block.Block;
 import net.minecraft.core.block.Blocks;
 import net.minecraft.core.world.World;
 
 import java.util.Random;
 
-// Referenced classes of package net.minecraft.src:
-//            WorldGenerator, World, Block, BlockFlower
-
 public class WorldFeatureSponge extends WorldFeature
 {
 
diff --git a/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureSugarCane.java b/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureSugarCane.java
index e83fd6c4b..b9bd3a0b2 100644
--- a/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureSugarCane.java
+++ b/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureSugarCane.java
@@ -1,15 +1,11 @@
 package net.minecraft.core.world.generate.feature;
 
-import net.minecraft.core.block.Block;
 import net.minecraft.core.block.Blocks;
 import net.minecraft.core.block.material.Material;
 import net.minecraft.core.world.World;
 
 import java.util.Random;
 
-// Referenced classes of package net.minecraft.src:
-//            WorldGenerator, World, Material, Block
-
 public class WorldFeatureSugarCane extends WorldFeature
 {
 
diff --git a/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureSugarCaneTall.java b/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureSugarCaneTall.java
index 316506f46..50907c4ba 100644
--- a/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureSugarCaneTall.java
+++ b/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureSugarCaneTall.java
@@ -1,15 +1,11 @@
 package net.minecraft.core.world.generate.feature;
 
-import net.minecraft.core.block.Block;
 import net.minecraft.core.block.Blocks;
 import net.minecraft.core.block.material.Material;
 import net.minecraft.core.world.World;
 
 import java.util.Random;
 
-// Referenced classes of package net.minecraft.src:
-//            WorldGenerator, World, Material, Block
-
 public class WorldFeatureSugarCaneTall extends WorldFeature
 {
 
diff --git a/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureTallGrass.java b/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureTallGrass.java
index 9be154998..e6fda6c8f 100644
--- a/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureTallGrass.java
+++ b/src/main/java/net/minecraft/core/world/generate/feature/WorldFeatureTallGrass.java
@@ -6,10 +6,6 @@ import net.minecraft.core.world.World;
 
 import java.util.Random;
 
-// Referenced classes of package net.minecraft.src:
-//            WorldGenerator, World, Block, BlockLeaves, 
-//            BlockFlower
-
 public class WorldFeatureTallGrass extends WorldFeature
 {
     private final int blockId;
diff --git a/src/main/java/net/minecraft/core/world/generate/feature/tree/WorldFeatureTreeCherry.java b/src/main/java/net/minecraft/core/world/generate/feature/tree/WorldFeatureTreeCherry.java
index 4d1eb51a5..3f595d0d2 100644
--- a/src/main/java/net/minecraft/core/world/generate/feature/tree/WorldFeatureTreeCherry.java
+++ b/src/main/java/net/minecraft/core/world/generate/feature/tree/WorldFeatureTreeCherry.java
@@ -1,6 +1,5 @@
 package net.minecraft.core.world.generate.feature.tree;
 
-import net.minecraft.core.block.Block;
 import net.minecraft.core.block.Blocks;
 import net.minecraft.core.world.World;
 import net.minecraft.core.world.generate.feature.MethodParametersAnnotation;
diff --git a/src/main/java/net/minecraft/core/world/generate/feature/tree/WorldFeatureTreeFancy.java b/src/main/java/net/minecraft/core/world/generate/feature/tree/WorldFeatureTreeFancy.java
index 846de0eef..ff113af0e 100644
--- a/src/main/java/net/minecraft/core/world/generate/feature/tree/WorldFeatureTreeFancy.java
+++ b/src/main/java/net/minecraft/core/world/generate/feature/tree/WorldFeatureTreeFancy.java
@@ -9,9 +9,6 @@ import net.minecraft.core.world.generate.feature.WorldFeature;
 
 import java.util.Random;
 
-// Referenced classes of package net.minecraft.src:
-//            WorldGenerator, MathHelper, World
-
 public class WorldFeatureTreeFancy extends WorldFeature
 {
 	protected int leavesID;
diff --git a/src/main/java/net/minecraft/core/world/generate/feature/tree/WorldFeatureTreeFancyRainforest.java b/src/main/java/net/minecraft/core/world/generate/feature/tree/WorldFeatureTreeFancyRainforest.java
index 0eb9c3b0f..d4399a950 100644
--- a/src/main/java/net/minecraft/core/world/generate/feature/tree/WorldFeatureTreeFancyRainforest.java
+++ b/src/main/java/net/minecraft/core/world/generate/feature/tree/WorldFeatureTreeFancyRainforest.java
@@ -9,9 +9,6 @@ import net.minecraft.core.world.generate.feature.WorldFeature;
 
 import java.util.Random;
 
-// Referenced classes of package net.minecraft.src:
-//            WorldGenerator, MathHelper, World
-
 public class WorldFeatureTreeFancyRainforest extends WorldFeature
 {
     // TODO these fucking hellish copy pasted fancy tree code classes are the most miserable things to parse
diff --git a/src/main/java/net/minecraft/core/world/generate/feature/tree/WorldFeatureTreeShapeSwamp.java b/src/main/java/net/minecraft/core/world/generate/feature/tree/WorldFeatureTreeShapeSwamp.java
index 3f817920c..c4c6070ff 100644
--- a/src/main/java/net/minecraft/core/world/generate/feature/tree/WorldFeatureTreeShapeSwamp.java
+++ b/src/main/java/net/minecraft/core/world/generate/feature/tree/WorldFeatureTreeShapeSwamp.java
@@ -10,10 +10,6 @@ import net.minecraft.core.world.generate.feature.WorldFeatureAlgae;
 
 import java.util.Random;
 
-// Referenced classes of package net.minecraft.src:
-//            WorldGenerator, World, Block, BlockLeaves,
-//            GrassBlock
-
 public class WorldFeatureTreeShapeSwamp extends WorldFeature
 {
     protected int leavesID;
diff --git a/src/main/java/net/minecraft/core/world/generate/feature/tree/WorldFeatureTreeShrub.java b/src/main/java/net/minecraft/core/world/generate/feature/tree/WorldFeatureTreeShrub.java
index 4f1e981ab..106b96860 100644
--- a/src/main/java/net/minecraft/core/world/generate/feature/tree/WorldFeatureTreeShrub.java
+++ b/src/main/java/net/minecraft/core/world/generate/feature/tree/WorldFeatureTreeShrub.java
@@ -1,7 +1,6 @@
 package net.minecraft.core.world.generate.feature.tree;
 
 import net.minecraft.core.block.Block;
-import net.minecraft.core.block.Blocks;
 import net.minecraft.core.block.tag.BlockTags;
 import net.minecraft.core.world.World;
 import net.minecraft.core.world.generate.feature.MethodParametersAnnotation;
@@ -10,10 +9,6 @@ import net.minecraft.core.world.generate.feature.WorldFeature;
 
 import java.util.Random;
 
-// Referenced classes of package net.minecraft.src:
-//            WorldGenerator, World, Block, BlockLeaves,
-//            GrassBlock
-
 public class WorldFeatureTreeShrub extends WorldFeature
 {
 
diff --git a/src/main/java/net/minecraft/core/world/generate/feature/tree/WorldFeatureTreeTaigaBushy.java b/src/main/java/net/minecraft/core/world/generate/feature/tree/WorldFeatureTreeTaigaBushy.java
index fde431808..f69bc5d11 100644
--- a/src/main/java/net/minecraft/core/world/generate/feature/tree/WorldFeatureTreeTaigaBushy.java
+++ b/src/main/java/net/minecraft/core/world/generate/feature/tree/WorldFeatureTreeTaigaBushy.java
@@ -1,7 +1,6 @@
 package net.minecraft.core.world.generate.feature.tree;
 
 import net.minecraft.core.block.Block;
-import net.minecraft.core.block.Blocks;
 import net.minecraft.core.block.tag.BlockTags;
 import net.minecraft.core.world.World;
 import net.minecraft.core.world.generate.feature.MethodParametersAnnotation;
@@ -9,10 +8,6 @@ import net.minecraft.core.world.generate.feature.WorldFeature;
 
 import java.util.Random;
 
-// Referenced classes of package net.minecraft.src:
-//            WorldGenerator, World, Block, BlockLeaves, 
-//            GrassBlock
-
 public class WorldFeatureTreeTaigaBushy extends WorldFeature
 {
 	protected int leavesID;
diff --git a/src/main/java/net/minecraft/core/world/generate/feature/tree/WorldFeatureTreeTaigaTall.java b/src/main/java/net/minecraft/core/world/generate/feature/tree/WorldFeatureTreeTaigaTall.java
index d1ddbb3ba..74f5ecd1f 100644
--- a/src/main/java/net/minecraft/core/world/generate/feature/tree/WorldFeatureTreeTaigaTall.java
+++ b/src/main/java/net/minecraft/core/world/generate/feature/tree/WorldFeatureTreeTaigaTall.java
@@ -1,7 +1,6 @@
 package net.minecraft.core.world.generate.feature.tree;
 
 import net.minecraft.core.block.Block;
-import net.minecraft.core.block.Blocks;
 import net.minecraft.core.block.tag.BlockTags;
 import net.minecraft.core.world.World;
 import net.minecraft.core.world.generate.feature.MethodParametersAnnotation;
@@ -9,10 +8,6 @@ import net.minecraft.core.world.generate.feature.WorldFeature;
 
 import java.util.Random;
 
-// Referenced classes of package net.minecraft.src:
-//            WorldGenerator, World, Block, BlockLeaves, 
-//            GrassBlock
-
 public class WorldFeatureTreeTaigaTall extends WorldFeature
 {
 	protected int leavesID;
diff --git a/src/main/java/net/minecraft/core/world/generate/feature/tree/WorldFeatureTreeTall.java b/src/main/java/net/minecraft/core/world/generate/feature/tree/WorldFeatureTreeTall.java
index 5f1966761..4c631f893 100644
--- a/src/main/java/net/minecraft/core/world/generate/feature/tree/WorldFeatureTreeTall.java
+++ b/src/main/java/net/minecraft/core/world/generate/feature/tree/WorldFeatureTreeTall.java
@@ -9,10 +9,6 @@ import net.minecraft.core.world.generate.feature.WorldFeature;
 
 import java.util.Random;
 
-// Referenced classes of package net.minecraft.src:
-//            WorldGenerator, World, Block, BlockLeaves,
-//            GrassBlock
-
 public class WorldFeatureTreeTall extends WorldFeature
 {
     protected int leavesID;
diff --git a/src/main/java/net/minecraft/core/world/generate/feature/tree/spooner/WorldFeatureSpoonerTree.java b/src/main/java/net/minecraft/core/world/generate/feature/tree/spooner/WorldFeatureSpoonerTree.java
index 4caefbe22..404504338 100644
--- a/src/main/java/net/minecraft/core/world/generate/feature/tree/spooner/WorldFeatureSpoonerTree.java
+++ b/src/main/java/net/minecraft/core/world/generate/feature/tree/spooner/WorldFeatureSpoonerTree.java
@@ -1,7 +1,6 @@
 package net.minecraft.core.world.generate.feature.tree.spooner;
 
 import net.minecraft.core.block.Block;
-import net.minecraft.core.block.Blocks;
 import net.minecraft.core.block.tag.BlockTags;
 import net.minecraft.core.world.World;
 import net.minecraft.core.world.generate.feature.MethodParametersAnnotation;
diff --git a/src/main/java/net/minecraft/core/world/noise/PerlinNoise.java b/src/main/java/net/minecraft/core/world/noise/PerlinNoise.java
index e0ce807ea..ac319d1e4 100644
--- a/src/main/java/net/minecraft/core/world/noise/PerlinNoise.java
+++ b/src/main/java/net/minecraft/core/world/noise/PerlinNoise.java
@@ -1,6 +1,5 @@
 package net.minecraft.core.world.noise;
 
-import java.util.Arrays;
 import java.util.Random;
 
 public class PerlinNoise
diff --git a/src/main/java/net/minecraft/core/world/save/SaveFormatBase.java b/src/main/java/net/minecraft/core/world/save/SaveFormatBase.java
index c4d85e1b8..6a315fcb0 100644
--- a/src/main/java/net/minecraft/core/world/save/SaveFormatBase.java
+++ b/src/main/java/net/minecraft/core/world/save/SaveFormatBase.java
@@ -1,7 +1,6 @@
 package net.minecraft.core.world.save;
 
 import com.mojang.logging.LogUtils;
-import net.minecraft.client.world.save.SaveHandlerClientSP;
 import net.minecraft.core.lang.I18n;
 import net.minecraft.core.util.helper.MathHelper;
 import com.mojang.nbt.CompoundTag;
diff --git a/src/main/java/net/minecraft/core/world/save/SaveFormats.java b/src/main/java/net/minecraft/core/world/save/SaveFormats.java
index 2c51aa4a9..79e6709e5 100644
--- a/src/main/java/net/minecraft/core/world/save/SaveFormats.java
+++ b/src/main/java/net/minecraft/core/world/save/SaveFormats.java
@@ -1,7 +1,6 @@
 package net.minecraft.core.world.save;
 
 import com.mojang.logging.LogUtils;
-import net.minecraft.core.Global;
 import net.minecraft.core.world.save.legacy.SaveFormatLegacy;
 import net.minecraft.core.world.save.mcregion.SaveFormat19132;
 import net.minecraft.core.world.save.mcregion.SaveFormat19133;
diff --git a/src/main/java/net/minecraft/core/world/save/conversion/ChunkConverter.java b/src/main/java/net/minecraft/core/world/save/conversion/ChunkConverter.java
index 5ed319489..cca61f394 100644
--- a/src/main/java/net/minecraft/core/world/save/conversion/ChunkConverter.java
+++ b/src/main/java/net/minecraft/core/world/save/conversion/ChunkConverter.java
@@ -1,8 +1,5 @@
 package net.minecraft.core.world.save.conversion;
 
-import net.minecraft.core.block.Block;
-import net.minecraft.core.block.Blocks;
-
 public class ChunkConverter
 {
 	/**
diff --git a/src/main/java/net/minecraft/core/world/save/mcregion/RegionFile.java b/src/main/java/net/minecraft/core/world/save/mcregion/RegionFile.java
index 5a6285166..fae1159ed 100644
--- a/src/main/java/net/minecraft/core/world/save/mcregion/RegionFile.java
+++ b/src/main/java/net/minecraft/core/world/save/mcregion/RegionFile.java
@@ -1,7 +1,6 @@
 package net.minecraft.core.world.save.mcregion;
 
 import com.mojang.logging.LogUtils;
-import net.minecraft.core.Global;
 import org.slf4j.Logger;
 
 import java.io.*;
diff --git a/src/main/java/net/minecraft/core/world/save/mcregion/SaveFormat19134.java b/src/main/java/net/minecraft/core/world/save/mcregion/SaveFormat19134.java
index 18404166b..1db296688 100644
--- a/src/main/java/net/minecraft/core/world/save/mcregion/SaveFormat19134.java
+++ b/src/main/java/net/minecraft/core/world/save/mcregion/SaveFormat19134.java
@@ -1,7 +1,6 @@
 package net.minecraft.core.world.save.mcregion;
 
 import net.minecraft.core.world.Dimension;
-import net.minecraft.core.world.save.LevelData;
 import net.minecraft.core.world.save.SaveFormatBase;
 
 import java.io.File;
diff --git a/src/main/java/net/minecraft/core/world/saveddata/SavedData.java b/src/main/java/net/minecraft/core/world/saveddata/SavedData.java
index 710a9c21b..827fe0528 100644
--- a/src/main/java/net/minecraft/core/world/saveddata/SavedData.java
+++ b/src/main/java/net/minecraft/core/world/saveddata/SavedData.java
@@ -1,9 +1,5 @@
 package net.minecraft.core.world.saveddata;
 
-
-// Referenced classes of package net.minecraft.src:
-//            NBTTagCompound
-
 import com.mojang.nbt.CompoundTag;
 
 public abstract class SavedData
diff --git a/src/main/java/net/minecraft/core/world/saveddata/SavedDataStorage.java b/src/main/java/net/minecraft/core/world/saveddata/SavedDataStorage.java
index a33901707..d1558df66 100644
--- a/src/main/java/net/minecraft/core/world/saveddata/SavedDataStorage.java
+++ b/src/main/java/net/minecraft/core/world/saveddata/SavedDataStorage.java
@@ -5,7 +5,6 @@ import com.mojang.nbt.Tag;
 import com.mojang.nbt.CompoundTag;
 import com.mojang.nbt.ShortTag;
 import com.mojang.nbt.NbtIo;
-import net.minecraft.core.Global;
 import net.minecraft.core.world.save.LevelStorage;
 import org.slf4j.Logger;
 
@@ -13,10 +12,6 @@ import java.io.*;
 import java.nio.file.Files;
 import java.util.*;
 
-// Referenced classes of package net.minecraft.src:
-//            MapDataBase, ISaveHandler, CompressedStreamTools, NBTTagCompound, 
-//            NBTBase, NBTTagShort
-
 public class SavedDataStorage
 {
     private static final Logger LOGGER = LogUtils.getLogger();
diff --git a/src/main/java/net/minecraft/core/world/saveddata/maps/ItemMapSavedData.java b/src/main/java/net/minecraft/core/world/saveddata/maps/ItemMapSavedData.java
index b6daf353d..b849176cf 100644
--- a/src/main/java/net/minecraft/core/world/saveddata/maps/ItemMapSavedData.java
+++ b/src/main/java/net/minecraft/core/world/saveddata/maps/ItemMapSavedData.java
@@ -12,10 +12,6 @@ import net.minecraft.core.world.saveddata.SavedData;
 
 import java.util.*;
 
-// Referenced classes of package net.minecraft.src:
-//            MapDataBase, NBTTagCompound, MapInfo, Player,
-//            InventoryPlayer, MapCoord, ItemStack
-
 public class ItemMapSavedData extends SavedData
 {
     public static final byte MAX_SCALE = 4;
diff --git a/src/main/java/net/minecraft/core/world/type/WorldTypeDebug.java b/src/main/java/net/minecraft/core/world/type/WorldTypeDebug.java
index 5d4ba3099..2f97744f3 100644
--- a/src/main/java/net/minecraft/core/world/type/WorldTypeDebug.java
+++ b/src/main/java/net/minecraft/core/world/type/WorldTypeDebug.java
@@ -1,6 +1,5 @@
 package net.minecraft.core.world.type;
 
-import net.minecraft.core.util.phys.Vec3;
 import net.minecraft.core.world.World;
 import net.minecraft.core.world.biome.Biomes;
 import net.minecraft.core.world.biome.provider.BiomeProvider;
diff --git a/src/main/java/net/minecraft/core/world/type/WorldTypeEmpty.java b/src/main/java/net/minecraft/core/world/type/WorldTypeEmpty.java
index 1506c5a9b..be6be9932 100644
--- a/src/main/java/net/minecraft/core/world/type/WorldTypeEmpty.java
+++ b/src/main/java/net/minecraft/core/world/type/WorldTypeEmpty.java
@@ -1,7 +1,6 @@
 package net.minecraft.core.world.type;
 
 import net.minecraft.core.util.helper.MathHelper;
-import net.minecraft.core.util.phys.Vec3;
 import net.minecraft.core.world.World;
 import net.minecraft.core.world.biome.Biomes;
 import net.minecraft.core.world.biome.provider.BiomeProvider;
diff --git a/src/main/java/net/minecraft/core/world/weather/WeatherClear.java b/src/main/java/net/minecraft/core/world/weather/WeatherClear.java
index 8a3f4a9cb..1c1ffa3b5 100644
--- a/src/main/java/net/minecraft/core/world/weather/WeatherClear.java
+++ b/src/main/java/net/minecraft/core/world/weather/WeatherClear.java
@@ -1,12 +1,5 @@
 package net.minecraft.core.world.weather;
 
-import net.minecraft.core.world.World;
-import net.minecraft.core.block.Block;
-import net.minecraft.core.block.Blocks;
-import net.minecraft.core.world.chunk.Chunk;
-
-import java.util.Random;
-
 public class WeatherClear extends Weather
 {
 	public WeatherClear(int id)
diff --git a/src/main/java/net/minecraft/core/world/weather/WeatherManager.java b/src/main/java/net/minecraft/core/world/weather/WeatherManager.java
index 819bf4333..cba665564 100644
--- a/src/main/java/net/minecraft/core/world/weather/WeatherManager.java
+++ b/src/main/java/net/minecraft/core/world/weather/WeatherManager.java
@@ -6,8 +6,6 @@ import net.minecraft.core.util.helper.MathHelper;
 import net.minecraft.core.world.World;
 import net.minecraft.core.world.season.Season;
 
-import java.util.Random;
-
 public class WeatherManager {
     private final World world;
 
@@ -27,7 +25,7 @@ public class WeatherManager {
         this.currentWeather = currentWeather;
         this.nextWeather = nextWeather;
         this.weatherDuration = weatherDuration;
-        this.weatherIntensity = weatherIntensity;
+//        this.weatherIntensity = weatherIntensity; // TODO investigate why we even have a weatherIntensity assignment if it never actually gets used
         this.weatherPower = weatherPower;
 
         if (nextWeather != null) {
diff --git a/src/main/java/net/minecraft/core/world/weather/WeatherRain.java b/src/main/java/net/minecraft/core/world/weather/WeatherRain.java
index af3d5cccd..b130c85a7 100644
--- a/src/main/java/net/minecraft/core/world/weather/WeatherRain.java
+++ b/src/main/java/net/minecraft/core/world/weather/WeatherRain.java
@@ -1,11 +1,5 @@
 package net.minecraft.core.world.weather;
 
-import net.minecraft.core.world.World;
-import net.minecraft.core.block.Block;
-import net.minecraft.core.block.Blocks;
-
-import java.util.Random;
-
 public class WeatherRain extends Weather
 {
 
diff --git a/src/main/java/net/minecraft/datagen/RecipesGenerator.java b/src/main/java/net/minecraft/datagen/RecipesGenerator.java
index 49ce6206b..ed4dc625f 100644
--- a/src/main/java/net/minecraft/datagen/RecipesGenerator.java
+++ b/src/main/java/net/minecraft/datagen/RecipesGenerator.java
@@ -13,7 +13,6 @@ import net.minecraft.datagen.recipeBuilders.RecipeBuilder;
 import java.io.File;
 import java.io.FileReader;
 import java.io.IOException;
-import java.nio.file.Files;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
diff --git a/src/main/java/net/minecraft/datagen/WorkbenchGenerator.java b/src/main/java/net/minecraft/datagen/WorkbenchGenerator.java
index 03b35a1b8..712d8e3fa 100644
--- a/src/main/java/net/minecraft/datagen/WorkbenchGenerator.java
+++ b/src/main/java/net/minecraft/datagen/WorkbenchGenerator.java
@@ -1,6 +1,5 @@
 package net.minecraft.datagen;
 
-import net.minecraft.core.block.Block;
 import net.minecraft.core.block.Blocks;
 import net.minecraft.core.data.registry.Registries;
 import net.minecraft.core.data.registry.recipe.RecipeSymbol;
diff --git a/src/main/java/net/minecraft/datagen/recipeBuilders/RecipeBuilderBlastFurnace.java b/src/main/java/net/minecraft/datagen/recipeBuilders/RecipeBuilderBlastFurnace.java
index 1c2682c01..c3df7cdcc 100644
--- a/src/main/java/net/minecraft/datagen/recipeBuilders/RecipeBuilderBlastFurnace.java
+++ b/src/main/java/net/minecraft/datagen/recipeBuilders/RecipeBuilderBlastFurnace.java
@@ -1,6 +1,5 @@
 package net.minecraft.datagen.recipeBuilders;
 
-import net.minecraft.core.block.Block;
 import net.minecraft.core.block.Blocks;
 import net.minecraft.core.data.registry.recipe.RecipeGroup;
 import net.minecraft.core.data.registry.recipe.RecipeSymbol;
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
index ef17ed199..9ec06012b 100644
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
@@ -7,9 +7,11 @@ import net.minecraft.core.Global;
 import net.minecraft.core.MinecraftAccessor;
 import net.minecraft.core.achievement.stat.StatList;
 import net.minecraft.core.block.Blocks;
+import net.minecraft.core.block.entity.TileEntityDispatcher;
 import net.minecraft.core.data.DataLoader;
 import net.minecraft.core.data.legacy.LegacyWorldTypes;
 import net.minecraft.core.data.registry.Registries;
+import net.minecraft.core.entity.EntityDispatcher;
 import net.minecraft.core.entity.SkinVariantList;
 import net.minecraft.core.item.Items;
 import net.minecraft.core.lang.I18n;
@@ -169,6 +171,8 @@ public class MinecraftServer
         Blocks.init();
         Items.init();
         Dimension.init();
+        EntityDispatcher.init();
+        TileEntityDispatcher.init();
         CommandHelper.init();
 
         LOGGER.info("Loading properties");
diff --git a/src/main/java/net/minecraft/server/gui/GuiStatsComponent.java b/src/main/java/net/minecraft/server/gui/GuiStatsComponent.java
index 58cfa30c0..49d42de60 100644
--- a/src/main/java/net/minecraft/server/gui/GuiStatsComponent.java
+++ b/src/main/java/net/minecraft/server/gui/GuiStatsComponent.java
@@ -3,14 +3,9 @@ package net.minecraft.server.gui;
 import net.minecraft.core.net.NetworkManager;
 
 import java.awt.*;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
 import javax.swing.JComponent;
 import javax.swing.Timer;
 
-// Referenced classes of package net.minecraft.src:
-//            GuiStatsListener, NetworkManager
-
 public class GuiStatsComponent extends JComponent
 {
     private final int[] memoryUse;
diff --git a/src/main/java/net/minecraft/server/gui/ServerGui.java b/src/main/java/net/minecraft/server/gui/ServerGui.java
index 9f2d1b9f9..99a94b259 100644
--- a/src/main/java/net/minecraft/server/gui/ServerGui.java
+++ b/src/main/java/net/minecraft/server/gui/ServerGui.java
@@ -1,11 +1,6 @@
 package net.minecraft.server.gui;
 
 import java.awt.*;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.awt.event.FocusAdapter;
-import java.awt.event.FocusEvent;
-import java.awt.event.FocusListener;
 import java.awt.event.WindowAdapter;
 import java.awt.event.WindowEvent;
 
diff --git a/src/main/java/net/minecraft/server/net/NetworkListenThread.java b/src/main/java/net/minecraft/server/net/NetworkListenThread.java
index ee12f199c..ca2ee6863 100644
--- a/src/main/java/net/minecraft/server/net/NetworkListenThread.java
+++ b/src/main/java/net/minecraft/server/net/NetworkListenThread.java
@@ -13,10 +13,6 @@ import net.minecraft.server.net.handler.PacketHandlerServer;
 import net.minecraft.server.MinecraftServer;
 import org.slf4j.Logger;
 
-
-// Referenced classes of package net.minecraft.src:
-//            NetworkAcceptThread, PacketHandlerLogin, NetworkManager, PacketHandlerServer
-
 public class NetworkListenThread
 {
     private static final Logger LOGGER = LogUtils.getLogger();
diff --git a/src/main/java/net/minecraft/server/net/PlayerHash.java b/src/main/java/net/minecraft/server/net/PlayerHash.java
index 2f091caf9..09aed40c1 100644
--- a/src/main/java/net/minecraft/server/net/PlayerHash.java
+++ b/src/main/java/net/minecraft/server/net/PlayerHash.java
@@ -1,9 +1,5 @@
 package net.minecraft.server.net;
 
-
-// Referenced classes of package net.minecraft.src:
-//            PlayerHashEntry
-
 public class PlayerHash
 {
 
diff --git a/src/main/java/net/minecraft/server/net/PlayerHashEntry.java b/src/main/java/net/minecraft/server/net/PlayerHashEntry.java
index 42ff0829f..f8dc13245 100644
--- a/src/main/java/net/minecraft/server/net/PlayerHashEntry.java
+++ b/src/main/java/net/minecraft/server/net/PlayerHashEntry.java
@@ -1,9 +1,5 @@
 package net.minecraft.server.net;
 
-
-// Referenced classes of package net.minecraft.src:
-//            PlayerHash
-
 class PlayerHashEntry
 {
 
diff --git a/src/main/java/net/minecraft/server/net/handler/PacketHandlerLogin.java b/src/main/java/net/minecraft/server/net/handler/PacketHandlerLogin.java
index 983210804..636d9d959 100644
--- a/src/main/java/net/minecraft/server/net/handler/PacketHandlerLogin.java
+++ b/src/main/java/net/minecraft/server/net/handler/PacketHandlerLogin.java
@@ -4,6 +4,8 @@ import com.mojang.logging.LogUtils;
 import net.minecraft.core.Global;
 import net.minecraft.core.data.registry.Registries;
 import net.minecraft.core.data.registry.recipe.RecipeEntryBase;
+import net.minecraft.core.entity.EntityDispatcher;
+import net.minecraft.core.sound.SoundTypes;
 import net.minecraft.server.net.command.ServerCommandSource;
 import net.minecraft.core.net.handler.PacketHandler;
 import net.minecraft.core.util.helper.UUIDHelper;
@@ -190,6 +192,12 @@ public class PacketHandlerLogin extends PacketHandler
                 throw new RuntimeException(e);
             }
 
+            for (RecipeEntryBase<?, ?, ?> recipe : Registries.RECIPES.getAllSerializableRecipes()) {
+                player.playerNetServerHandler.sendPacket(new RecipeSyncPacket(recipe,Registries.RECIPES.getAllSerializableRecipes().size()));
+            }
+            player.playerNetServerHandler.sendPacket(new SyncIDsPacket(SyncIDsPacket.DESTINATION_SOUND_IDS, SoundTypes.getSoundIds()));
+            player.playerNetServerHandler.sendPacket(new SyncIDsPacket(SyncIDsPacket.DESTINATION_ENTITY_IDS, EntityDispatcher.getEntityIds()));
+
             packetHandler.sendPacket(new SetSpawnPositionPacket(chunkcoordinates.x, chunkcoordinates.y, chunkcoordinates.z));
             mcServer.playerList.setTime(player, worldserver);
             mcServer.playerList.sendPacketToAllPlayers(new ChatPacket(TextFormatting.YELLOW + player.getDisplayName() + TextFormatting.YELLOW + " joined the game."));
@@ -216,11 +224,6 @@ public class PacketHandlerLogin extends PacketHandler
             player.playerNetServerHandler.sendPacket(new SetHeldObjectPacket(player.id, player.getHeldObject()));
             player.playerNetServerHandler.sendPacket(new SetHotbarOffsetPacket(player.inventory.getHotbarOffset()));
             player.playerNetServerHandler.sendPacket(new SetCarriedItemPacket(player.inventory.getCurrentItemIndex()));
-
-            for (RecipeEntryBase<?, ?, ?> recipe : Registries.RECIPES.getAllSerializableRecipes()) {
-                player.playerNetServerHandler.sendPacket(new RecipeSyncPacket(recipe,Registries.RECIPES.getAllSerializableRecipes().size()));
-            }
-            player.playerNetServerHandler.sendPacket(new SyncIDsPacket());
         }
         finishedProcessing = true;
     }
diff --git a/src/main/java/net/minecraft/server/net/handler/PacketHandlerServer.java b/src/main/java/net/minecraft/server/net/handler/PacketHandlerServer.java
index 51f1dd569..f7dc7e0e7 100644
--- a/src/main/java/net/minecraft/server/net/handler/PacketHandlerServer.java
+++ b/src/main/java/net/minecraft/server/net/handler/PacketHandlerServer.java
@@ -7,6 +7,7 @@ import net.minecraft.core.block.entity.TileEntityFlag;
 import net.minecraft.core.block.entity.TileEntityMobSpawner;
 import net.minecraft.core.block.entity.TileEntitySign;
 import net.minecraft.core.entity.Entity;
+import net.minecraft.core.entity.EntityDispatcher;
 import net.minecraft.core.entity.vehicle.EntityBoat;
 import net.minecraft.core.enums.ArtType;
 import net.minecraft.core.enums.EnumSignPicture;
@@ -18,6 +19,7 @@ import net.minecraft.core.net.ICommandListener;
 import net.minecraft.core.net.NetworkManager;
 import net.minecraft.core.net.command.TextFormatting;
 import net.minecraft.core.player.inventory.container.ContainerInventory;
+import net.minecraft.core.util.collection.NamespaceID;
 import net.minecraft.core.world.World;
 import net.minecraft.server.net.command.ServerCommandSource;
 import net.minecraft.core.net.handler.PacketHandler;
@@ -100,7 +102,8 @@ public class PacketHandlerServer extends PacketHandler
             if (tileentity instanceof TileEntityMobSpawner)
             {
                 TileEntityMobSpawner tileEntityMobSpawner = (TileEntityMobSpawner) tileentity;
-                tileEntityMobSpawner.setMobId(packet.spawnType);
+                NamespaceID namespaceID = EntityDispatcher.idForClass(packet.entityClass);
+                tileEntityMobSpawner.setMobId(namespaceID == null ? "none" : namespaceID.toString());
 
                 tileEntityMobSpawner.setChanged();
                 world.markBlockNeedsUpdate(packet.xPosition, packet.yPosition, packet.zPosition);
diff --git a/src/main/java/net/minecraft/server/player/PlayerManager.java b/src/main/java/net/minecraft/server/player/PlayerManager.java
index 059fa3db1..bfbea731d 100644
--- a/src/main/java/net/minecraft/server/player/PlayerManager.java
+++ b/src/main/java/net/minecraft/server/player/PlayerManager.java
@@ -3,6 +3,7 @@ package net.minecraft.server.player;
 import java.util.ArrayList;
 import java.util.List;
 
+import com.mojang.logging.LogUtils;
 import net.minecraft.core.block.Block;
 import net.minecraft.core.block.entity.TileEntity;
 import net.minecraft.core.net.packet.*;
@@ -12,9 +13,11 @@ import net.minecraft.core.world.chunk.Chunk;
 import net.minecraft.core.world.chunk.ChunkCoordinate;
 import net.minecraft.server.world.WorldServer;
 import net.minecraft.server.MinecraftServer;
+import org.slf4j.Logger;
 
 public class PlayerManager
 {
+    public static final Logger LOGGER = LogUtils.getLogger();
     public final List<PlayerServer> players;
     private final PlayerHash playerInstances;
     private final List<PlayerInstance> playerInstancesToUpdate;
@@ -30,20 +33,16 @@ public class PlayerManager
         players = new ArrayList<>();
         playerInstances = new PlayerHash();
         playerInstancesToUpdate = new ArrayList<>();
-        if(viewRadius > 15)
-        {
+        if(viewRadius > 64) {
             throw new IllegalArgumentException("Too big view radius!");
-        }
-        else if(viewRadius < 3)
-        {
+        } else if (viewRadius > 15) {
+            LOGGER.warn("View radius '{}' is greater then 15, expect possibly extreme hit to performance!", viewRadius);
+        } else if(viewRadius < 3) {
             throw new IllegalArgumentException("Too small view radius!");
         }
-        else
-        {
-            this.viewRadius = viewRadius;
-            this.server = server;
-            this.dimension = dimension;
-        }
+        this.viewRadius = viewRadius;
+        this.server = server;
+        this.dimension = dimension;
     }
 
     public void tick()
@@ -57,7 +56,7 @@ public class PlayerManager
 
     private PlayerInstance getPlayerInstance(int chunkX, int chunkZ, boolean makeNewIfAbsent)
     {
-        long key = (long)chunkX + 0x7fffffffL | (long)chunkZ + 0x7fffffffL << 32;
+        long key = (long)chunkX + Integer.MAX_VALUE | (long)chunkZ + Integer.MAX_VALUE << 32;
         PlayerInstance instance = (PlayerInstance)playerInstances.getValueByKey(key);
         if(instance == null && makeNewIfAbsent)
         {
diff --git a/src/main/java/net/minecraft/server/world/ConvertProgressUpdater.java b/src/main/java/net/minecraft/server/world/ConvertProgressUpdater.java
index 3ef1589bf..155bfa44e 100644
--- a/src/main/java/net/minecraft/server/world/ConvertProgressUpdater.java
+++ b/src/main/java/net/minecraft/server/world/ConvertProgressUpdater.java
@@ -3,9 +3,6 @@ package net.minecraft.server.world;
 import net.minecraft.core.world.ProgressListener;
 import net.minecraft.server.MinecraftServer;
 
-// Referenced classes of package net.minecraft.src:
-//            IProgressUpdate
-
 public class ConvertProgressUpdater
     implements ProgressListener
 {
diff --git a/src/main/java/net/minecraft/server/world/ServerPlayerController.java b/src/main/java/net/minecraft/server/world/ServerPlayerController.java
index 7c6265e21..12dc99d2d 100644
--- a/src/main/java/net/minecraft/server/world/ServerPlayerController.java
+++ b/src/main/java/net/minecraft/server/world/ServerPlayerController.java
@@ -3,11 +3,6 @@ package net.minecraft.server.world;
 
 import net.minecraft.core.block.Block;
 
-// Referenced classes of package net.minecraft.src:
-//            WorldServer, Block, Player, ItemStack,
-//            PlayerServer, BlockUpdatePacket, PacketHandlerServer, InventoryPlayer,
-//            World
-
 import net.minecraft.core.block.entity.TileEntity;
 import net.minecraft.core.entity.player.Player;
 import net.minecraft.core.item.Item;
diff --git a/src/main/java/net/minecraft/server/world/WorldServerMulti.java b/src/main/java/net/minecraft/server/world/WorldServerMulti.java
index 2984ad475..d31ade613 100644
--- a/src/main/java/net/minecraft/server/world/WorldServerMulti.java
+++ b/src/main/java/net/minecraft/server/world/WorldServerMulti.java
@@ -4,9 +4,6 @@ import net.minecraft.core.world.type.WorldType;
 import net.minecraft.server.MinecraftServer;
 import net.minecraft.core.world.save.LevelStorage;
 
-// Referenced classes of package net.minecraft.src:
-//            WorldServer, ISaveHandler
-
 public class WorldServerMulti extends WorldServer
 {
 
diff --git a/src/main/java/org/useless/seedviewer/TestChunkProvider.java b/src/main/java/org/useless/seedviewer/TestChunkProvider.java
index 965e87d40..964ddb241 100644
--- a/src/main/java/org/useless/seedviewer/TestChunkProvider.java
+++ b/src/main/java/org/useless/seedviewer/TestChunkProvider.java
@@ -8,8 +8,6 @@ import org.useless.seedviewer.data.Biome;
 import org.useless.seedviewer.data.Chunk;
 import org.useless.seedviewer.gui.ChunkProvider;
 
-import java.awt.*;
-
 public class TestChunkProvider implements ChunkProvider {
     @Override
     public Chunk getChunk(ChunkLocation location) {
diff --git a/src/main/java/org/useless/seedviewer/bta/BTAComplexChunk.java b/src/main/java/org/useless/seedviewer/bta/BTAComplexChunk.java
index ee8677775..3eaf71ea3 100644
--- a/src/main/java/org/useless/seedviewer/bta/BTAComplexChunk.java
+++ b/src/main/java/org/useless/seedviewer/bta/BTAComplexChunk.java
@@ -9,8 +9,6 @@ import org.useless.seedviewer.collections.ChunkPos3D;
 import org.useless.seedviewer.data.Biome;
 import org.useless.seedviewer.data.Chunk;
 
-import java.awt.*;
-
 public class BTAComplexChunk implements Chunk {
     private final net.minecraft.core.world.chunk.Chunk chunk;
     public BTAComplexChunk(@NotNull net.minecraft.core.world.chunk.Chunk chunk) {
diff --git a/src/main/java/org/useless/seedviewer/bta/BTASimpleChunk.java b/src/main/java/org/useless/seedviewer/bta/BTASimpleChunk.java
index 657415819..b25426067 100644
--- a/src/main/java/org/useless/seedviewer/bta/BTASimpleChunk.java
+++ b/src/main/java/org/useless/seedviewer/bta/BTASimpleChunk.java
@@ -7,8 +7,6 @@ import org.useless.seedviewer.collections.ChunkPos3D;
 import org.useless.seedviewer.data.Biome;
 import org.useless.seedviewer.data.Chunk;
 
-import java.awt.*;
-
 public class BTASimpleChunk implements Chunk {
     private final ChunkLocation location;
     private final BiomeProvider provider;
diff --git a/src/main/java/org/useless/seedviewer/data/Chunk.java b/src/main/java/org/useless/seedviewer/data/Chunk.java
index b3d54c63f..96529440a 100644
--- a/src/main/java/org/useless/seedviewer/data/Chunk.java
+++ b/src/main/java/org/useless/seedviewer/data/Chunk.java
@@ -4,8 +4,6 @@ import net.minecraft.core.world.chunk.ChunkSection;
 import org.useless.seedviewer.collections.ChunkPos2D;
 import org.useless.seedviewer.collections.ChunkPos3D;
 
-import java.awt.*;
-
 public interface Chunk {
     int CHUNK_SIZE_X = net.minecraft.core.world.chunk.Chunk.CHUNK_SIZE_X;
     int CHUNK_SIZE_Y = net.minecraft.core.world.chunk.Chunk.CHUNK_SECTIONS * ChunkSection.SECTION_SIZE_Y;
diff --git a/src/main/java/org/useless/seedviewer/gui/ChunkProvider.java b/src/main/java/org/useless/seedviewer/gui/ChunkProvider.java
index 8493502e4..7466f61b1 100644
--- a/src/main/java/org/useless/seedviewer/gui/ChunkProvider.java
+++ b/src/main/java/org/useless/seedviewer/gui/ChunkProvider.java
@@ -1,7 +1,6 @@
 package org.useless.seedviewer.gui;
 
 import org.useless.seedviewer.collections.ChunkLocation;
-import org.useless.seedviewer.data.Biome;
 import org.useless.seedviewer.data.Chunk;
 
 public interface ChunkProvider {
diff --git a/src/main/java/org/useless/seedviewer/gui/ChunkView.java b/src/main/java/org/useless/seedviewer/gui/ChunkView.java
index 7f330651c..d9d3a667b 100644
--- a/src/main/java/org/useless/seedviewer/gui/ChunkView.java
+++ b/src/main/java/org/useless/seedviewer/gui/ChunkView.java
@@ -92,7 +92,7 @@ public class ChunkView {
                         for (int z = 0; z < Chunk.CHUNK_SIZE_Z; z++) {
                             int depth = waterDepthMapImage.getRGB(x, z) & 0xFF;
 
-                            int shade = 220;
+                            int shade;
                             if (depth == 0) {
                                 int lastHeight;
                                 if (z == 0) {
diff --git a/src/main/resources/assets/minecraft/textures/block/block_steel/bottom.png b/src/main/resources/assets/minecraft/textures/block/block_steel/bottom.png
index 40c5e00ea..043d4b6a9 100644
Binary files a/src/main/resources/assets/minecraft/textures/block/block_steel/bottom.png and b/src/main/resources/assets/minecraft/textures/block/block_steel/bottom.png differ
diff --git a/src/main/resources/assets/minecraft/textures/block/block_steel/side.png b/src/main/resources/assets/minecraft/textures/block/block_steel/side.png
index 69bab0ce2..043d4b6a9 100644
Binary files a/src/main/resources/assets/minecraft/textures/block/block_steel/side.png and b/src/main/resources/assets/minecraft/textures/block/block_steel/side.png differ
diff --git a/src/main/resources/assets/minecraft/textures/block/block_steel/top.png b/src/main/resources/assets/minecraft/textures/block/block_steel/top.png
index 72eea037c..043d4b6a9 100644
Binary files a/src/main/resources/assets/minecraft/textures/block/block_steel/top.png and b/src/main/resources/assets/minecraft/textures/block/block_steel/top.png differ
diff --git a/src/main/resources/assets/minecraft/textures/block/brick_steel.png b/src/main/resources/assets/minecraft/textures/block/brick_steel.png
index 80e4e606f..5f49781e1 100644
Binary files a/src/main/resources/assets/minecraft/textures/block/brick_steel.png and b/src/main/resources/assets/minecraft/textures/block/brick_steel.png differ
diff --git a/src/main/resources/assets/minecraft/textures/block/door/steel/bottom.png b/src/main/resources/assets/minecraft/textures/block/door/steel/bottom.png
index 4b059a7b4..6a2eda942 100644
Binary files a/src/main/resources/assets/minecraft/textures/block/door/steel/bottom.png and b/src/main/resources/assets/minecraft/textures/block/door/steel/bottom.png differ
diff --git a/src/main/resources/assets/minecraft/textures/block/door/steel/frame_top.png b/src/main/resources/assets/minecraft/textures/block/door/steel/frame_top.png
index 5043fbd18..9bc738e0d 100644
Binary files a/src/main/resources/assets/minecraft/textures/block/door/steel/frame_top.png and b/src/main/resources/assets/minecraft/textures/block/door/steel/frame_top.png differ
diff --git a/src/main/resources/assets/minecraft/textures/block/door/steel/top.png b/src/main/resources/assets/minecraft/textures/block/door/steel/top.png
index 6baeacc43..7842f22fb 100644
Binary files a/src/main/resources/assets/minecraft/textures/block/door/steel/top.png and b/src/main/resources/assets/minecraft/textures/block/door/steel/top.png differ
diff --git a/src/main/resources/assets/minecraft/textures/block/glass_steel.png b/src/main/resources/assets/minecraft/textures/block/glass_steel.png
index b4a228f9d..99fcc6b2a 100644
Binary files a/src/main/resources/assets/minecraft/textures/block/glass_steel.png and b/src/main/resources/assets/minecraft/textures/block/glass_steel.png differ
diff --git a/src/main/resources/assets/minecraft/textures/block/trapdoor/steel/side.png b/src/main/resources/assets/minecraft/textures/block/trapdoor/steel/side.png
index 367f60d67..906d645ad 100644
Binary files a/src/main/resources/assets/minecraft/textures/block/trapdoor/steel/side.png and b/src/main/resources/assets/minecraft/textures/block/trapdoor/steel/side.png differ
diff --git a/src/main/resources/assets/minecraft/textures/block/trapdoor/steel/top.png b/src/main/resources/assets/minecraft/textures/block/trapdoor/steel/top.png
index c29eefa55..d830487a8 100644
Binary files a/src/main/resources/assets/minecraft/textures/block/trapdoor/steel/top.png and b/src/main/resources/assets/minecraft/textures/block/trapdoor/steel/top.png differ
