diff --git a/src/main/java/net/minecraft/client/entity/player/LocalPlayer.java b/src/main/java/net/minecraft/client/entity/player/LocalPlayer.java
index 95b814880..6f7cb3f0c 100644
--- a/src/main/java/net/minecraft/client/entity/player/LocalPlayer.java
+++ b/src/main/java/net/minecraft/client/entity/player/LocalPlayer.java
@@ -91,13 +91,7 @@ public class LocalPlayer extends Player
             return super.getBb();
         }
     }
-
-    @Override
-    public void move(double xd, double yd, double zd)
-    {
-        super.move(xd, yd, zd);
-    }
-
+    
     @Override
     public void updateAI()
     {
diff --git a/src/main/java/net/minecraft/client/render/dynamictexture/DynamicTextureFireflyJar.java b/src/main/java/net/minecraft/client/render/dynamictexture/DynamicTextureFireflyJar.java
index 2244aeaab..6368a69bd 100644
--- a/src/main/java/net/minecraft/client/render/dynamictexture/DynamicTextureFireflyJar.java
+++ b/src/main/java/net/minecraft/client/render/dynamictexture/DynamicTextureFireflyJar.java
@@ -2,7 +2,6 @@ package net.minecraft.client.render.dynamictexture;
 
 import net.minecraft.client.render.texture.stitcher.IconCoordinate;
 import net.minecraft.client.render.texturepack.TexturePackException;
-import net.minecraft.client.util.helper.Textures;
 import net.minecraft.core.util.helper.MathHelper;
 
 import java.awt.image.BufferedImage;
@@ -13,11 +12,12 @@ public class DynamicTextureFireflyJar extends DynamicTexture {
 
 	public DynamicTextureFireflyJar(IconCoordinate texture) {
         super(texture);
-		BufferedImage image = Textures.readImage(mc.texturePackList.getResourceAsStream(texture.getImageSource()));
+		BufferedImage image = texture.getImageStorage();
 		if(image == null) {
 			throw new TexturePackException("Could not load image!");
 		}
-		this.originalData = new byte[image.getWidth() * image.getHeight() * 4];
+        texture.setDimension(image.getWidth(), image.getHeight());
+        this.originalData = new byte[texture.getArea() * 4];
 
 		for(int x = 0; x < texture.width; x++) {
 			for(int y = 0; y < texture.height; y++) {
diff --git a/src/main/java/net/minecraft/client/render/texture/stitcher/AtlasStitcher.java b/src/main/java/net/minecraft/client/render/texture/stitcher/AtlasStitcher.java
index 681dc91be..f8c9aa240 100644
--- a/src/main/java/net/minecraft/client/render/texture/stitcher/AtlasStitcher.java
+++ b/src/main/java/net/minecraft/client/render/texture/stitcher/AtlasStitcher.java
@@ -3,6 +3,7 @@ package net.minecraft.client.render.texture.stitcher;
 import java.awt.AlphaComposite;
 import java.awt.Graphics2D;
 import java.awt.image.BufferedImage;
+import java.io.IOException;
 import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.Collections;
@@ -161,7 +162,16 @@ public class AtlasStitcher extends Texture {
             if(image == null) {
                 TexturePack pack = mc.texturePackList.getHighestPriorityTexturePackWithFile(coordinate.sourceImage);
                 if (pack != null) {
-                    image = Textures.readImage(pack.getResourceAsStream(coordinate.sourceImage));
+                    for (int attempt = 0; attempt < 3; attempt++) {
+                        try {
+                            image = Textures.readImageUnhandled(pack.getResourceAsStream(coordinate.sourceImage));
+                            if (image != null) break;
+                        } catch (IOException io) {
+                            io.printStackTrace();
+                        } catch (Exception e) {
+                            e.printStackTrace();
+                        }
+                    }
                     String metaPath = coordinate.sourceImage + ".mcmeta";
                     if (pack.hasFile(metaPath)) {
                         try (InputStream stream = pack.getResourceAsStream(metaPath)){
diff --git a/src/main/java/net/minecraft/client/util/helper/Textures.java b/src/main/java/net/minecraft/client/util/helper/Textures.java
index 35adcecde..923ae46fe 100644
--- a/src/main/java/net/minecraft/client/util/helper/Textures.java
+++ b/src/main/java/net/minecraft/client/util/helper/Textures.java
@@ -9,6 +9,7 @@ import java.awt.Graphics2D;
 import java.awt.RenderingHints;
 import java.awt.image.BufferedImage;
 import java.io.File;
+import java.io.IOException;
 import java.io.InputStream;
 import java.nio.ByteBuffer;
 import java.util.List;
@@ -48,14 +49,22 @@ public class Textures {
 	public static BufferedImage readImage(InputStream stream) {
 		if(stream == null) return missingTexture;
 		try {
-			BufferedImage bufferedimage = ImageIO.read(stream);
-			return bufferedimage;
+            return ImageIO.read(stream);
 		}catch (Exception e) {
 			return null;
 		}finally {
 			try {
 				stream.close();
-			}catch (Exception e) {} 
+			}catch (Exception ignored) {}
+		}
+	}
+
+	public static BufferedImage readImageUnhandled(InputStream stream) throws IOException {
+		if(stream == null) return missingTexture;
+		try {
+			return ImageIO.read(stream);
+		} finally {
+			stream.close();
 		}
 	}
 
diff --git a/src/main/java/net/minecraft/core/block/BaseLayerBlock.java b/src/main/java/net/minecraft/core/block/BaseLayerBlock.java
index 4a08a9568..1fc4fe512 100644
--- a/src/main/java/net/minecraft/core/block/BaseLayerBlock.java
+++ b/src/main/java/net/minecraft/core/block/BaseLayerBlock.java
@@ -14,8 +14,7 @@ import java.util.function.Supplier;
 
 public abstract class BaseLayerBlock extends Block
 {
-    private Supplier<Integer> idSupplier = null;
-	public int fullBlockID = -1;
+    private Supplier<Integer> idSupplier = () -> -1;
 	
 	public BaseLayerBlock(String key, String namespaceId, int id, Material material)
     {
@@ -23,10 +22,6 @@ public abstract class BaseLayerBlock extends Block
         setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.125F, 1.0F);
         setBlockItem(() -> new LayerBlockItem(this));
     }
-    @Override
-    public void initializeBlock() {
-        fullBlockID = idSupplier.get();
-    }
     public BaseLayerBlock setFullBlockID(Supplier<Integer> idSupplier)
     {
     	this.idSupplier = idSupplier;
@@ -59,4 +54,7 @@ public abstract class BaseLayerBlock extends Block
         float f = (float)(2 * (1 + l)) / 16F;
         setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, f, 1.0F);
     }
+    public int getFullBlockID() {
+        return idSupplier.get();
+    }
 }
diff --git a/src/main/java/net/minecraft/core/block/EdibleBlock.java b/src/main/java/net/minecraft/core/block/EdibleBlock.java
index 15b1d0610..4063780e4 100644
--- a/src/main/java/net/minecraft/core/block/EdibleBlock.java
+++ b/src/main/java/net/minecraft/core/block/EdibleBlock.java
@@ -13,7 +13,6 @@ import org.jetbrains.annotations.NotNull;
 import java.util.function.Supplier;
 
 public abstract class EdibleBlock extends Block {
-    public Item item;
     @NotNull
     private final Supplier<Item> itemSupplier;
     public int maxBites;
@@ -27,17 +26,13 @@ public abstract class EdibleBlock extends Block {
         this.itemSupplier = dropItemSupplier;
         setTicking(true);
     }
-    @Override
-    public void initializeBlock() {
-        this.item = itemSupplier.get();
-    }
 
     @Override
     public ItemStack[] getBreakResult(World world, EnumDropCause dropCause, int x, int y, int z, int meta, BlockEntity blockEntity)
     {
         if (dropCause == EnumDropCause.PICK_BLOCK || meta == 0)
         {
-            return new ItemStack[]{new ItemStack(item)};
+            return new ItemStack[]{new ItemStack(itemSupplier.get())};
         }
 
         return null;
diff --git a/src/main/java/net/minecraft/core/block/FireflyLanternBlock.java b/src/main/java/net/minecraft/core/block/FireflyLanternBlock.java
index 8a5c9d853..2e71e6a92 100644
--- a/src/main/java/net/minecraft/core/block/FireflyLanternBlock.java
+++ b/src/main/java/net/minecraft/core/block/FireflyLanternBlock.java
@@ -20,7 +20,6 @@ import java.util.function.Supplier;
 
 public class FireflyLanternBlock extends Block{
 
-    public Item item;
     private final Supplier<Item> itemSupplier;
     private final FireflyClusterMob.FireflyColor color;
 
@@ -30,10 +29,6 @@ public class FireflyLanternBlock extends Block{
         this.itemSupplier = itemSupplier;
         setBlockBounds(0.3125f, 0, 0.3125f, 1 - 0.3125f, 0.5f, 1 - 0.3125f);
     }
-    @Override
-    public void initializeBlock() {
-        this.item = itemSupplier.get();
-    }
 
     @Override
     public AABB getCollisionBoundingBoxFromPool(WorldSource world, int x, int y, int z)
@@ -91,7 +86,7 @@ public class FireflyLanternBlock extends Block{
         world.playSoundAtEntity(player, player, "random.pop", 0.2F, 0.5f);
         if (!world.isClientSide)
         {
-            world.dropItem(x, y, z, new ItemStack(item, 1, 0));
+            world.dropItem(x, y, z, new ItemStack(itemSupplier.get(), 1, 0));
         }
 
         return true;
@@ -140,7 +135,7 @@ public class FireflyLanternBlock extends Block{
             case PICK_BLOCK:
             case SILK_TOUCH:
             case WORLD:
-                return new ItemStack[] { new ItemStack(this.item) };
+                return new ItemStack[] { new ItemStack(this.itemSupplier.get()) };
             default:
                 return null;
         }
diff --git a/src/main/java/net/minecraft/core/block/JarBlock.java b/src/main/java/net/minecraft/core/block/JarBlock.java
index df15ce8e5..82b78b608 100644
--- a/src/main/java/net/minecraft/core/block/JarBlock.java
+++ b/src/main/java/net/minecraft/core/block/JarBlock.java
@@ -19,17 +19,12 @@ import java.util.function.Supplier;
 
 public class JarBlock extends EntityBlock {
 
-    public Item item;
     private final Supplier<Item> itemSupplier;
     public JarBlock(String key, String namespaceId, int id, @NotNull Supplier<Item> itemSupplier) {
         super(key, namespaceId, id, Material.glass);
         setBlockBounds(0.3125f, 0, 0.3125f, 1 - 0.3125f, 0.375f, 1 - 0.3125f);
         this.itemSupplier = itemSupplier;
     }
-    @Override
-    public void initializeBlock() {
-        this.item = itemSupplier.get();
-    }
 
     @Override
     public boolean canPlaceBlockAt(World world, int x, int y, int z)
@@ -78,7 +73,7 @@ public class JarBlock extends EntityBlock {
                 world.setBlockWithNotify(x, y, z, 0);
                 world.playSoundAtEntity(player, player, "random.pop", 0.2F, 0.5f);
                 if (!world.isClientSide) {
-                    world.dropItem(x, y, z, new ItemStack(item, 1, 0));
+                    world.dropItem(x, y, z, new ItemStack(itemSupplier.get(), 1, 0));
                 }
             } else {
                 FlowerJarBlockEntity tileEntity = (FlowerJarBlockEntity) world.getBlockEntity(x, y, z);
@@ -112,7 +107,7 @@ public class JarBlock extends EntityBlock {
             case PICK_BLOCK:
             case SILK_TOUCH:
             case WORLD:
-                return new ItemStack[] { new ItemStack(this.item) };
+                return new ItemStack[] { new ItemStack(this.itemSupplier.get()) };
             default:
                 return null;
         }
diff --git a/src/main/java/net/minecraft/core/block/StoneBlock.java b/src/main/java/net/minecraft/core/block/StoneBlock.java
index 0b34f12fc..6450e2d0c 100644
--- a/src/main/java/net/minecraft/core/block/StoneBlock.java
+++ b/src/main/java/net/minecraft/core/block/StoneBlock.java
@@ -14,19 +14,14 @@ import java.util.Random;
 import java.util.function.Supplier;
 
 public class StoneBlock extends Block {
-	
-	public Block cobblestone;
-	private final Supplier<Block> blockSupplier;
+
+	private final Supplier<Block> cobblestoneSupplier;
 
 	public StoneBlock(String key, String namespaceId, int id, Supplier<Block> cobbleStoneSupplier, Material material) {
 		super(key, namespaceId, id, material);
-		this.blockSupplier = cobbleStoneSupplier;
+		this.cobblestoneSupplier = cobbleStoneSupplier;
 	}
 
-	@Override
-	public void initializeBlock() {
-		this.cobblestone = blockSupplier.get();
-	}
 	@Override
 	public void harvestBlock(World world, Player player, int x, int y, int z, int meta, BlockEntity blockEntity)
 	{
@@ -60,7 +55,7 @@ public class StoneBlock extends Block {
 			case WORLD:
 			case EXPLOSION:
 			case PROPER_TOOL:
-				return new ItemStack[] { new ItemStack(cobblestone) };
+				return new ItemStack[] { new ItemStack(cobblestoneSupplier.get()) };
 			case PICK_BLOCK:
 			case SILK_TOUCH:
 				return new ItemStack[] { new ItemStack(this) };
diff --git a/src/main/java/net/minecraft/core/entity/Entity.java b/src/main/java/net/minecraft/core/entity/Entity.java
index 697ebb05d..172db6565 100644
--- a/src/main/java/net/minecraft/core/entity/Entity.java
+++ b/src/main/java/net/minecraft/core/entity/Entity.java
@@ -3,6 +3,8 @@ package net.minecraft.core.entity;
 import java.util.List;
 import java.util.Random;
 
+import org.jetbrains.annotations.Nullable;
+
 import com.mojang.nbt.CompoundTag;
 import com.mojang.nbt.DoubleTag;
 import com.mojang.nbt.FloatTag;
@@ -27,7 +29,6 @@ import net.minecraft.core.util.phys.Vec3;
 import net.minecraft.core.world.IVehicle;
 import net.minecraft.core.world.World;
 import net.minecraft.core.world.data.SynchedEntityData;
-import org.jetbrains.annotations.Nullable;
 
 public abstract class Entity
     implements IVehicle
@@ -399,101 +400,109 @@ public abstract class Entity
         {
         	onGround = false;
             bb.move(xd, yd, zd);
-            this.x = (bb.minX + bb.maxX) / 2D;
-            this.y = (bb.minY + (double) heightOffset) - (double) ySlideOffset;
-            this.z = (bb.minZ + bb.maxZ) / 2D;
+            this.x = (bb.minX + bb.maxX) / 2.0;
+            this.y = (bb.minY + heightOffset) - ySlideOffset;
+            this.z = (bb.minZ + bb.maxZ) / 2.0;
             return;
         }
-        ySlideOffset *= 0.4F;
+        ySlideOffset *= 0.4f;
         double d3 = this.x;
         double d4 = this.z;
         if(stuck)
         {
             stuck = false;
-            xd *= 0.25D;
-            yd *= 0.05D;
-            zd *= 0.25D;
-            this.xd = 0.0D;
-            this.yd = 0.0D;
-            this.zd = 0.0D;
+            xd *= 0.25;
+            yd *= 0.05;
+            zd *= 0.25;
+            this.xd = 0.0;
+            this.yd = 0.0;
+            this.zd = 0.0;
         }
         double oldXd = xd;
         double oldYd = yd;
         double oldZd = zd;
         AABB bbCopy = bb.copy();
-        boolean sneakingOnGround = onGround && isSneaking();
-        if(sneakingOnGround)
-        {
-            double maxSneakOverhang = 0.05D;
-            for (; xd != 0.0 && this.world.getCubes(this, bb.cloneMove(xd, -1D, 0.0D)).size() == 0; oldXd = xd)
-            {
-                if(xd < maxSneakOverhang && xd >= -maxSneakOverhang)
-                {
-                    xd = 0.0D;
-                    continue;
-                }
-
-                if(xd > 0.0D)
-                {
-                    xd -= maxSneakOverhang;
-                }
-                else
-                {
-                    xd += maxSneakOverhang;
-                }
-            }
-            for (; zd != 0.0D && world.getCubes(this, bb.cloneMove(0.0D, -1D, zd)).size() == 0; oldZd = zd)
-            {
-                if(zd < maxSneakOverhang && zd >= -maxSneakOverhang)
-                {
-                    zd = 0.0D;
-                    continue;
-                }
-
-                if(zd > 0.0D)
-                {
-                    zd -= maxSneakOverhang;
-                }
-                else
-                {
-                    zd += maxSneakOverhang;
-                }
-            }
-        }
-
-        List<AABB> cubes = world.getCubes(this, bb.expand(xd, yd, zd));
-        for (AABB aabb : cubes)
-        {
-            yd = aabb.clipYCollide(bb, yd);
-        }
-
-        bb.move(0.0D, yd, 0.0D);
-        if(!slide && oldYd != yd)
-        {
-            xd = yd = zd = 0.0D;
-        }
-        boolean flag1 = onGround || oldYd != yd && oldYd < 0.0D;
-        for (AABB aabb : cubes)
-        {
-            xd = aabb.clipXCollide(bb, xd);
-        }
-
-        bb.move(xd, 0.0D, 0.0D);
-        if(!slide && oldXd != xd)
-        {
-            xd = yd = zd = 0.0D;
-        }
-        for (AABB aabb : cubes)
-        {
-            zd = aabb.clipZCollide(bb, zd);
-        }
-
-        bb.move(0.0D, 0.0D, zd);
-        if(!slide && oldZd != zd)
-        {
-            xd = yd = zd = 0.0D;
+        
+        double bbWidth = bb.maxX - bb.minX - 0.05;
+        if(isSneaking()) {
+			if(xd != 0.0) {
+				AABB floor = AABB.getTemporaryBB(bb.minX, bb.minY - 1.0, bb.minZ, bb.maxX, bb.minY, bb.maxZ).expand(xd, 0.0, 0.0);
+				List<AABB> collidingBoxes = world.getCubes(this, floor);
+				if(collidingBoxes.size() > 0) {
+					double limitX = 0.0;
+					for(int i=0; i < collidingBoxes.size(); i++) {
+						AABB bb1 = collidingBoxes.get(i);
+						if(xd < 0.0) {
+							limitX = Math.min(limitX, bb1.minX - bbWidth - bb.minX);
+						}else {
+							limitX = Math.max(limitX, bb1.maxX + bbWidth - bb.maxX);
+						}
+					}
+					if(xd < 0.0) {
+						oldXd = xd = Math.max(xd, limitX);
+					}else {
+						oldXd = xd = Math.min(xd, limitX);
+					}
+				}
+			}
+			if(zd != 0.0) {
+				AABB floor = AABB.getTemporaryBB(bb.minX, bb.minY - 1.0, bb.minZ, bb.maxX, bb.minY, bb.maxZ).expand(0.0, 0.0, zd);
+				List<AABB> collidingBoxes = world.getCubes(this, floor);
+				if(collidingBoxes.size() > 0) {
+					double limitZ = 0.0;
+					for(int i=0; i < collidingBoxes.size(); i++) {
+						AABB bb1 = collidingBoxes.get(i);
+						if(zd < 0.0) {
+							limitZ = Math.min(limitZ, bb1.minZ - bbWidth - bb.minZ);
+						}else {
+							limitZ = Math.max(limitZ, bb1.maxZ + bbWidth - bb.maxZ);
+						}
+					}
+					if(zd < 0.0) {
+						oldZd = zd = Math.max(zd, limitZ);
+					}else {
+						oldZd = zd = Math.min(zd, limitZ);
+					}
+				}
+			}
         }
-        if(footSize > 0.0F && flag1 && (sneakingOnGround || ySlideOffset < 0.05F) && (oldXd != xd || oldZd != zd))
+        
+		List<AABB> cubes = world.getCubes(this, bb.expand(xd, yd, zd));
+		
+		// Check collision on Y Axis
+		for(int i = 0; i < cubes.size(); i++) {
+			yd = cubes.get(i).clipYCollide(bb, yd);
+		}
+
+		bb.move(0.0, yd, 0.0);
+		if(!slide && oldYd != yd) {
+			xd = yd = zd = 0.0;
+		}
+		
+		// Check collision on X Axis
+		for(int i = 0; i < cubes.size(); i++) {
+			xd = cubes.get(i).clipXCollide(bb, xd);
+		}
+
+		bb.move(xd, 0.0D, 0.0D);
+		if(!slide && oldXd != xd) {
+			xd = yd = zd = 0.0;
+		}
+		
+		// Check collision on Z Axis
+		for(int i = 0; i < cubes.size(); i++) {
+			zd = cubes.get(i).clipZCollide(bb, zd);
+		}
+		bb.move(0.0D, 0.0D, zd);
+		if(!slide && oldZd != zd) {
+			xd = yd = zd = 0.0;
+		}
+
+		boolean touchedGround = onGround || oldYd != yd && oldYd < 0.0;
+		boolean touchedWall = oldXd != xd || oldZd != zd;
+		
+		// Handle steps
+        if(footSize > 0.0f && touchedGround && touchedWall && (isSneaking() || ySlideOffset < 0.05f))
         {
             double oldX = xd;
             double oldY = yd;
@@ -504,8 +513,8 @@ public abstract class Entity
             AABB axisalignedbb1 = bb.copy();
             bb.setBB(bbCopy);
             List<AABB> list1 = world.getCubes(this, bb.expand(xd, 0.0, zd));
-            for (AABB aabb : list1) {
-                yd = aabb.clipYCollide(bb, yd);
+            for (int i = 0; i < list1.size(); i++) {
+                yd = list1.get(i).clipYCollide(bb, yd);
             }
 
             bb.move(0.0D, yd, 0.0D);
@@ -513,8 +522,8 @@ public abstract class Entity
             {
                 xd = yd = zd = 0.0D;
             }
-            for (AABB aabb : list1) {
-                xd = aabb.clipXCollide(bb, xd);
+            for (int i = 0; i < list1.size(); i++) {
+                xd = list1.get(i).clipXCollide(bb, xd);
             }
 
             bb.move(xd, 0.0D, 0.0D);
@@ -522,8 +531,8 @@ public abstract class Entity
             {
                 xd = yd = zd = 0.0D;
             }
-            for (AABB aabb : list1) {
-                zd = aabb.clipZCollide(bb, zd);
+            for (int i = 0; i < list1.size(); i++) {
+                zd = list1.get(i).clipZCollide(bb, zd);
             }
 
             bb.move(0.0D, 0.0D, zd);
@@ -577,7 +586,7 @@ public abstract class Entity
         }
         double d10 = this.x - d3;
         double d12 = this.z - d4;
-        if(makeStepSound() && !sneakingOnGround && vehicle == null) {
+        if(makeStepSound() && !isSneaking() && vehicle == null) {
             walkDist += (double) MathHelper.sqrt(d10 * d10 + d12 * d12) * 0.6;
             
             // Tiny bounding box
diff --git a/src/main/java/net/minecraft/core/item/block/LayerBlockItem.java b/src/main/java/net/minecraft/core/item/block/LayerBlockItem.java
index 3ccbb592f..c18181e8b 100644
--- a/src/main/java/net/minecraft/core/item/block/LayerBlockItem.java
+++ b/src/main/java/net/minecraft/core/item/block/LayerBlockItem.java
@@ -64,9 +64,9 @@ public class LayerBlockItem extends BlockItem
 			}
 			else
 			{
-				if (blockLayer.fullBlockID != -1)
+				if (blockLayer.getFullBlockID() != -1)
 				{
-					world.setBlockAndMetadataWithNotify(blockX, blockY, blockZ, blockLayer.fullBlockID, 0);
+					world.setBlockAndMetadataWithNotify(blockX, blockY, blockZ, blockLayer.getFullBlockID(), 0);
 				}
 				else
 				{
@@ -109,9 +109,9 @@ public class LayerBlockItem extends BlockItem
 			}
 			else
 			{
-				if (blockLayer.fullBlockID != -1)
+				if (blockLayer.getFullBlockID() != -1)
 				{
-					world.setBlockAndMetadataWithNotify(blockX, blockY, blockZ, blockLayer.fullBlockID, 0);
+					world.setBlockAndMetadataWithNotify(blockX, blockY, blockZ, blockLayer.getFullBlockID(), 0);
 				}
 				else
 				{
diff --git a/src/main/java/net/minecraft/core/item/block/LeavesLayerBlockItem.java b/src/main/java/net/minecraft/core/item/block/LeavesLayerBlockItem.java
index 8d69ece0b..cc989411a 100644
--- a/src/main/java/net/minecraft/core/item/block/LeavesLayerBlockItem.java
+++ b/src/main/java/net/minecraft/core/item/block/LeavesLayerBlockItem.java
@@ -63,9 +63,9 @@ public class LeavesLayerBlockItem extends BlockItem
 			}
 			else
 			{
-				if (blockLayer.fullBlockID != -1)
+				if (blockLayer.getFullBlockID() != -1)
 				{
-					world.setBlockAndMetadataWithNotify(blockX, blockY, blockZ, blockLayer.fullBlockID, BaseLeavesBlock.setPermanent(0, true));
+					world.setBlockAndMetadataWithNotify(blockX, blockY, blockZ, blockLayer.getFullBlockID(), BaseLeavesBlock.setPermanent(0, true));
 				}
 				else
 				{
@@ -108,9 +108,9 @@ public class LeavesLayerBlockItem extends BlockItem
 			}
 			else
 			{
-				if (blockLayer.fullBlockID != -1)
+				if (blockLayer.getFullBlockID() != -1)
 				{
-					world.setBlockAndMetadataWithNotify(blockX, blockY, blockZ, blockLayer.fullBlockID, BaseLeavesBlock.setPermanent(0, true));
+					world.setBlockAndMetadataWithNotify(blockX, blockY, blockZ, blockLayer.getFullBlockID(), BaseLeavesBlock.setPermanent(0, true));
 				}
 				else
 				{
