diff --git a/src/main/java/net/minecraft/client/render/ItemRenderer.java b/src/main/java/net/minecraft/client/render/ItemRenderer.java
index 3ee5a3986..5045e1200 100644
--- a/src/main/java/net/minecraft/client/render/ItemRenderer.java
+++ b/src/main/java/net/minecraft/client/render/ItemRenderer.java
@@ -115,7 +115,7 @@ public class ItemRenderer
             GL11.glTranslatef(5.6F, 0.0F, 0.0F);
             EntityRenderer<? extends Entity> render = EntityRenderDispatcher.instance.getRenderer(mc.thePlayer);
             PlayerRenderer renderplayer = (PlayerRenderer)render;
-            renderplayer.drawFirstPersonHand(mc.thePlayer);
+            renderplayer.drawFirstPersonHand(mc.thePlayer, false);
         }
         GL11.glPopMatrix();
         GL11.glDisable(32826 /*GL_RESCALE_NORMAL_EXT*/);
diff --git a/src/main/java/net/minecraft/client/render/entity/PlayerRenderer.java b/src/main/java/net/minecraft/client/render/entity/PlayerRenderer.java
index 004cf0cdd..8f398c0fe 100644
--- a/src/main/java/net/minecraft/client/render/entity/PlayerRenderer.java
+++ b/src/main/java/net/minecraft/client/render/entity/PlayerRenderer.java
@@ -235,7 +235,7 @@ public class PlayerRenderer extends LivingRenderer<EntityPlayer>
         GL11.glScalef(f1, f1, f1);
     }
 
-    public void drawFirstPersonHand(EntityPlayer player)
+    public void drawFirstPersonHand(EntityPlayer player, boolean isLeft)
     {
         mainModel = player.slimModel ? modelSlim : modelThick;
         modelBipedMain = player.slimModel ? modelSlim : modelThick;
@@ -243,10 +243,18 @@ public class PlayerRenderer extends LivingRenderer<EntityPlayer>
         modelBipedMain.onGround = 0.0F;
         modelBipedMain.isRiding = false;
         modelBipedMain.setRotationAngles(0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F);
-        modelBipedMain.bipedRightArm.render(0.0625F);
+        if (isLeft){
+            modelBipedMain.bipedLeftArm.render(0.0625F);
+        } else {
+            modelBipedMain.bipedRightArm.render(0.0625F);
+        }
         if (modelBipedMain instanceof ModelPlayer)
         {
-            ((ModelPlayer)modelBipedMain).bipedRightArmOverlay.render(0.0625F);
+            if (isLeft){
+                ((ModelPlayer)modelBipedMain).bipedLeftArmOverlay.render(0.0625F);
+            } else {
+                ((ModelPlayer)modelBipedMain).bipedRightArmOverlay.render(0.0625F);
+            }
         }
     }
 
diff --git a/src/main/java/net/minecraft/client/render/item/model/ItemModelMap.java b/src/main/java/net/minecraft/client/render/item/model/ItemModelMap.java
index 702fa5510..810d2da78 100644
--- a/src/main/java/net/minecraft/client/render/item/model/ItemModelMap.java
+++ b/src/main/java/net/minecraft/client/render/item/model/ItemModelMap.java
@@ -59,19 +59,23 @@ public class ItemModelMap extends ItemModelStandard {
         // Render both player arms
         mc.renderEngine.loadDownloadableTexture(mc.thePlayer.skinURL, mc.thePlayer.getEntityTexture(), PlayerSkinParser.instance);
         PlayerRenderer playerRenderer = (PlayerRenderer) (EntityRenderer<? extends Entity>) EntityRenderDispatcher.instance.getRenderer(mc.thePlayer);
-        for(int side = -1; side < 2; side += 2)
-        {
-            GL11.glPushMatrix();
 
-            GL11.glTranslatef(-0F, -0.6F, 1.1F * side);
-            GL11.glRotatef(-45 * side, 1.0F, 0.0F, 0.0F);
-            GL11.glRotatef(-90F, 0.0F, 0.0F, 1.0F);
-            GL11.glRotatef(59F, 0.0F, 0.0F, 1.0F);
-            GL11.glRotatef(-65 * side, 0.0F, 1.0F, 0.0F);
+        GL11.glPushMatrix();
+        GL11.glTranslatef(-0F, -0.6F, -1.1F);
+        GL11.glRotatef(180, 0, 1, 0);
+        GL11.glRotatef(-45, 1.0F, 0.0F, 0.0F);
+        GL11.glRotatef(90F - 59F, 0.0F, 0.0F, 1.0F);
+        GL11.glRotatef(65, 0.0F, 1.0F, 0.0F);
+        playerRenderer.drawFirstPersonHand(mc.thePlayer, true);
+        GL11.glPopMatrix();
+        GL11.glPushMatrix();
+        GL11.glTranslatef(-0F, -0.6F, 1.1F);
+        GL11.glRotatef(-45, 1.0F, 0.0F, 0.0F);
+        GL11.glRotatef(-90F + 59F, 0.0F, 0.0F, 1.0F);
+        GL11.glRotatef(-65, 0.0F, 1.0F, 0.0F);
+        playerRenderer.drawFirstPersonHand(mc.thePlayer, false);
+        GL11.glPopMatrix();
 
-            playerRenderer.drawFirstPersonHand(mc.thePlayer);
-            GL11.glPopMatrix();
-        }
 
         final float f_val3 = MathHelper.sin(swingProgress * swingProgress * MathHelper.PI);
         final float f_val4 = MathHelper.sin(MathHelper.sqrt_float(swingProgress) * MathHelper.PI);
diff --git a/src/main/java/net/minecraft/core/block/BlockMushroom.java b/src/main/java/net/minecraft/core/block/BlockMushroom.java
index e39672385..4e5a0394c 100644
--- a/src/main/java/net/minecraft/core/block/BlockMushroom.java
+++ b/src/main/java/net/minecraft/core/block/BlockMushroom.java
@@ -23,16 +23,16 @@ public class BlockMushroom extends BlockFlower
     {
         if(rand.nextInt(100) == 0)
         {
-            int l = (x + rand.nextInt(3)) - 1;
-            int i1 = (y + rand.nextInt(2)) - rand.nextInt(2);
-            int j1 = (z + rand.nextInt(3)) - 1;
-            if(world.isAirBlock(l, i1, j1) && canBlockStay(world, l, i1, j1))
+            int x1 = (z + rand.nextInt(3)) - 1;
+            int randY = (y + rand.nextInt(2)) - rand.nextInt(2);
+            int z1 = (x + rand.nextInt(3)) - 1;
+            if(world.isAirBlock(x1, randY, z1) && canBlockStay(world, x1, randY, z1))
             {
-                x += rand.nextInt(3) - 1;
-                z += rand.nextInt(3) - 1;
-                if(world.isAirBlock(l, i1, j1) && canBlockStay(world, l, i1, j1))
+                int x2 = x + rand.nextInt(3) - 1;
+                int z2 = z + rand.nextInt(3) - 1;
+                if(world.isAirBlock(x2, randY, z2) && canBlockStay(world, x2, randY, z2))
                 {
-                    world.setBlockWithNotify(l, i1, j1, id);
+                    world.setBlockWithNotify(x2, randY, z2, id);
                 }
             }
         }
diff --git a/src/main/java/net/minecraft/core/net/command/commands/SummonCommand.java b/src/main/java/net/minecraft/core/net/command/commands/SummonCommand.java
index 9e1949f63..a931a08ee 100644
--- a/src/main/java/net/minecraft/core/net/command/commands/SummonCommand.java
+++ b/src/main/java/net/minecraft/core/net/command/commands/SummonCommand.java
@@ -98,6 +98,7 @@ public class SummonCommand extends Command{
 		try {
 			return entityClass.getConstructor(World.class).newInstance(world);
 		}catch (Exception e) {
+			e.printStackTrace();
 			throw new CommandError("Could not create Entity!");
 		}
 	}
diff --git a/src/main/java/net/minecraft/core/world/ExplosionCannonball.java b/src/main/java/net/minecraft/core/world/ExplosionCannonball.java
index 02bff9f40..ff06bc095 100644
--- a/src/main/java/net/minecraft/core/world/ExplosionCannonball.java
+++ b/src/main/java/net/minecraft/core/world/ExplosionCannonball.java
@@ -84,7 +84,8 @@ public class ExplosionCannonball extends Explosion{
         int l1 = MathHelper.floor_double(explosionY + (double)explosionSize + 1.0D);
         int i2 = MathHelper.floor_double(explosionZ - (double)explosionSize - 1.0D);
         int j2 = MathHelper.floor_double(explosionZ + (double)explosionSize + 1.0D);
-        List<Entity> list = worldObj.getEntitiesWithinAABBExcludingEntity(exploder, AABB.getBoundingBoxFromPool(k, k1, i2, i1, l1, j2));
+//        List<Entity> list = worldObj.getEntitiesWithinAABBExcludingEntity(exploder, AABB.getBoundingBoxFromPool(k, k1, i2, i1, l1, j2));
+        List<Entity> list = worldObj.getEntitiesWithinAABB(Entity.class, AABB.getBoundingBoxFromPool(k, k1, i2, i1, l1, j2)); // Cannon balls can explode their owners
         Vec3d vec3d = Vec3d.createVector(explosionX, explosionY, explosionZ);
         for(int k2 = 0; k2 < list.size(); k2++)
         {
diff --git a/src/main/java/net/minecraft/core/world/chunk/reader/ChunkReaderVersion1.java b/src/main/java/net/minecraft/core/world/chunk/reader/ChunkReaderVersion1.java
index 7cfe0229d..0cf3a3dac 100644
--- a/src/main/java/net/minecraft/core/world/chunk/reader/ChunkReaderVersion1.java
+++ b/src/main/java/net/minecraft/core/world/chunk/reader/ChunkReaderVersion1.java
@@ -198,8 +198,12 @@ public class ChunkReaderVersion1
                         if (oldBiomeId < 0) {
                             newBiomes[ChunkSection.makeBiomeIndex(x, y, z)] = oldBiomeId;
                         } else {
-                            byte newBiomeId = (byte) Registries.BIOMES.getNumericIdOfItem(Registries.BIOMES.getItem(biomeRegistry.get((int) oldBiomeId)));
-                            newBiomes[ChunkSection.makeBiomeIndex(x, y, z)] = newBiomeId;
+                            try {
+                                byte newBiomeId = (byte) Registries.BIOMES.getNumericIdOfItem(Registries.BIOMES.getItem(biomeRegistry.get((int) oldBiomeId)));
+                                newBiomes[ChunkSection.makeBiomeIndex(x, y, z)] = newBiomeId;
+                            } catch (NullPointerException n){
+                                newBiomes[ChunkSection.makeBiomeIndex(x, y, z)] = -1;
+                            }
                         }
                     }
                 }
diff --git a/src/main/java/net/minecraft/core/world/chunk/reader/ChunkReaderVersion2.java b/src/main/java/net/minecraft/core/world/chunk/reader/ChunkReaderVersion2.java
index 60ab39fbd..56ebfc663 100644
--- a/src/main/java/net/minecraft/core/world/chunk/reader/ChunkReaderVersion2.java
+++ b/src/main/java/net/minecraft/core/world/chunk/reader/ChunkReaderVersion2.java
@@ -144,7 +144,11 @@ public class ChunkReaderVersion2
             for (int i = 0; i < biomeMap.length; i++) {
                 byte oldBiomeId = biomeMap[i];
                 if (oldBiomeId >= 0) {
-                    biomeMap[i] = (byte) Registries.BIOMES.getNumericIdOfItem(Registries.BIOMES.getItem(biomeRegistry.get((int) oldBiomeId)));
+                    try {
+                        biomeMap[i] = (byte) Registries.BIOMES.getNumericIdOfItem(Registries.BIOMES.getItem(biomeRegistry.get((int) oldBiomeId)));
+                    } catch (NullPointerException n){
+                        biomeMap[i] = -1;
+                    }
                 }
             }
         }
