diff --git a/src/main/java/net/minecraft/server/BlockDispenser.java b/src/main/java/net/minecraft/server/BlockDispenser.java
index 66d0b141b0..7a0231f785 100644
--- a/src/main/java/net/minecraft/server/BlockDispenser.java
+++ b/src/main/java/net/minecraft/server/BlockDispenser.java
@@ -1,7 +1,6 @@
 package net.minecraft.server;
 
 import java.util.Random;
-
 import org.bukkit.craftbukkit.CraftServer;
 import org.bukkit.craftbukkit.CraftWorld;
 import org.bukkit.craftbukkit.block.CraftBlock;
@@ -12,8 +11,8 @@ import org.bukkit.event.block.BlockInteractEvent;
 public class BlockDispenser extends BlockContainer {
 
     protected BlockDispenser(int i) {
-        super(i, Material.d);
-        bh = 45;
+        super(i, Material.STONE);
+        this.textureId = 45;
     }
 
     public int b() {
@@ -21,52 +20,46 @@ public class BlockDispenser extends BlockContainer {
     }
 
     public int a(int i, Random random) {
-        return Block.P.bi;
+        return Block.DISPENSER.id;
     }
 
     public void e(World world, int i, int j, int k) {
         super.e(world, i, j, k);
-        g(world, i, j, k);
+        this.g(world, i, j, k);
     }
 
     private void g(World world, int i, int j, int k) {
-        int l = world.a(i, j, k - 1);
-        int i1 = world.a(i, j, k + 1);
-        int j1 = world.a(i - 1, j, k);
-        int k1 = world.a(i + 1, j, k);
-        byte byte0 = 3;
+        int l = world.getTypeId(i, j, k - 1);
+        int i1 = world.getTypeId(i, j, k + 1);
+        int j1 = world.getTypeId(i - 1, j, k);
+        int k1 = world.getTypeId(i + 1, j, k);
+        byte b0 = 3;
 
         if (Block.o[l] && !Block.o[i1]) {
-            byte0 = 3;
+            b0 = 3;
         }
+
         if (Block.o[i1] && !Block.o[l]) {
-            byte0 = 2;
+            b0 = 2;
         }
+
         if (Block.o[j1] && !Block.o[k1]) {
-            byte0 = 5;
+            b0 = 5;
         }
+
         if (Block.o[k1] && !Block.o[j1]) {
-            byte0 = 4;
+            b0 = 4;
         }
-        world.c(i, j, k, ((int) (byte0)));
+
+        world.c(i, j, k, b0);
     }
 
     public int a(int i) {
-        if (i == 1) {
-            return bh + 17;
-        }
-        if (i == 0) {
-            return bh + 17;
-        }
-        if (i == 3) {
-            return bh + 1;
-        } else {
-            return bh;
-        }
+        return i == 1 ? this.textureId + 17 : (i == 0 ? this.textureId + 17 : (i == 3 ? this.textureId + 1 : this.textureId));
     }
 
-    public boolean a(World world, int i, int j, int k, EntityPlayer entityplayer) {
-        if (world.z) {
+    public boolean a(World world, int i, int j, int k, EntityHuman entityhuman) {
+        if (world.isStatic) {
             return true;
         } else {
             // CraftBukkit start - Interact Dispenser
@@ -74,8 +67,8 @@ public class BlockDispenser extends BlockContainer {
             CraftServer server = ((WorldServer) world).getServer();
             Type eventType = Type.BLOCK_INTERACT;
             CraftBlock block = (CraftBlock) craftWorld.getBlockAt(i, j, k);
-            LivingEntity who = (entityplayer == null)?null:(LivingEntity)entityplayer.getBukkitEntity();
-            
+            LivingEntity who = (entityhuman == null)?null:(LivingEntity)entityhuman.getBukkitEntity();
+
             BlockInteractEvent bie = new BlockInteractEvent(eventType, block, who);
             server.getPluginManager().callEvent(bie);
 
@@ -83,116 +76,123 @@ public class BlockDispenser extends BlockContainer {
                 return true;
             }
             // CraftBukkit end
-        	
-            TileEntityDispenser tileentitydispenser = (TileEntityDispenser) world.m(i, j, k);
+            
+            TileEntityDispenser tileentitydispenser = (TileEntityDispenser) world.getTileEntity(i, j, k);
 
-            entityplayer.a(tileentitydispenser);
+            entityhuman.a(tileentitydispenser);
             return true;
         }
     }
 
     private void b(World world, int i, int j, int k, Random random) {
-        int l = world.b(i, j, k);
+        int l = world.getData(i, j, k);
         float f = 0.0F;
         float f1 = 0.0F;
 
         if (l == 3) {
             f1 = 1.0F;
         } else if (l == 2) {
-            f1 = -1F;
+            f1 = -1.0F;
         } else if (l == 5) {
             f = 1.0F;
         } else {
-            f = -1F;
+            f = -1.0F;
         }
-        TileEntityDispenser tileentitydispenser = (TileEntityDispenser) world.m(i, j, k);
+
+        TileEntityDispenser tileentitydispenser = (TileEntityDispenser) world.getTileEntity(i, j, k);
         ItemStack itemstack = tileentitydispenser.e();
-        double d = (double) i + (double) f * 0.5D + 0.5D;
+        double d0 = (double) i + (double) f * 0.5D + 0.5D;
         double d1 = (double) j + 0.5D;
         double d2 = (double) k + (double) f1 * 0.5D + 0.5D;
 
         if (itemstack == null) {
-            world.a(i, j, k, "random.click", 1.0F, 1.2F);
+            world.a((double) i, (double) j, (double) k, "random.click", 1.0F, 1.2F);
         } else {
-            if (itemstack.c == Item.j.ba) {
-                EntityArrow entityarrow = new EntityArrow(world, d, d1, d2);
+            double d3;
 
-                entityarrow.a(f, 0.10000000149011612D, f1, 1.1F, 6F);
-                world.a(((Entity) (entityarrow)));
-                world.a(i, j, k, "random.bow", 1.0F, 1.2F);
-            } else if (itemstack.c == Item.aN.ba) {
-                EntityEgg entityegg = new EntityEgg(world, d, d1, d2);
+            if (itemstack.id == Item.ARROW.id) {
+                EntityArrow entityarrow = new EntityArrow(world, d0, d1, d2);
 
-                entityegg.a(f, 0.10000000149011612D, f1, 1.1F, 6F);
-                world.a(((Entity) (entityegg)));
-                world.a(i, j, k, "random.bow", 1.0F, 1.2F);
-            } else if (itemstack.c == Item.aB.ba) {
-                EntitySnowball entitysnowball = new EntitySnowball(world, d, d1, d2);
+                entityarrow.a((double) f, 0.10000000149011612D, (double) f1, 1.1F, 6.0F);
+                world.a((Entity) entityarrow);
+                world.a((double) i, (double) j, (double) k, "random.bow", 1.0F, 1.2F);
+            } else if (itemstack.id == Item.EGG.id) {
+                EntityEgg entityegg = new EntityEgg(world, d0, d1, d2);
 
-                entitysnowball.a(f, 0.10000000149011612D, f1, 1.1F, 6F);
-                world.a(((Entity) (entitysnowball)));
-                world.a(i, j, k, "random.bow", 1.0F, 1.2F);
+                entityegg.a((double) f, 0.10000000149011612D, (double) f1, 1.1F, 6.0F);
+                world.a((Entity) entityegg);
+                world.a((double) i, (double) j, (double) k, "random.bow", 1.0F, 1.2F);
+            } else if (itemstack.id == Item.SNOW_BALL.id) {
+                EntitySnowball entitysnowball = new EntitySnowball(world, d0, d1, d2);
+
+                entitysnowball.a((double) f, 0.10000000149011612D, (double) f1, 1.1F, 6.0F);
+                world.a((Entity) entitysnowball);
+                world.a((double) i, (double) j, (double) k, "random.bow", 1.0F, 1.2F);
             } else {
-                EntityItem entityitem = new EntityItem(world, d, d1 - 0.29999999999999999D, d2, itemstack);
-                double d3 = random.nextDouble() * 0.10000000000000001D + 0.20000000000000001D;
+                EntityItem entityitem = new EntityItem(world, d0, d1 - 0.3D, d2, itemstack);
 
-                entityitem.s = (double) f * d3;
-                entityitem.t = 0.20000000298023224D;
-                entityitem.u = (double) f1 * d3;
-                entityitem.s += random.nextGaussian() * 0.0074999998323619366D * 6D;
-                entityitem.t += random.nextGaussian() * 0.0074999998323619366D * 6D;
-                entityitem.u += random.nextGaussian() * 0.0074999998323619366D * 6D;
-                world.a(((Entity) (entityitem)));
-                world.a(i, j, k, "random.click", 1.0F, 1.0F);
+                d3 = random.nextDouble() * 0.1D + 0.2D;
+                entityitem.motX = (double) f * d3;
+                entityitem.motY = 0.20000000298023224D;
+                entityitem.motZ = (double) f1 * d3;
+                entityitem.motX += random.nextGaussian() * 0.007499999832361937D * 6.0D;
+                entityitem.motY += random.nextGaussian() * 0.007499999832361937D * 6.0D;
+                entityitem.motZ += random.nextGaussian() * 0.007499999832361937D * 6.0D;
+                world.a((Entity) entityitem);
+                world.a((double) i, (double) j, (double) k, "random.click", 1.0F, 1.0F);
             }
-            for (int i1 = 0; i1 < 10; i1++) {
-                double d4 = random.nextDouble() * 0.20000000000000001D + 0.01D;
-                double d5 = d + (double) f * 0.01D + (random.nextDouble() - 0.5D) * (double) f1 * 0.5D;
-                double d6 = d1 + (random.nextDouble() - 0.5D) * 0.5D;
-                double d7 = d2 + (double) f1 * 0.01D + (random.nextDouble() - 0.5D) * (double) f * 0.5D;
-                double d8 = (double) f * d4 + random.nextGaussian() * 0.01D;
-                double d9 = -0.029999999999999999D + random.nextGaussian() * 0.01D;
-                double d10 = (double) f1 * d4 + random.nextGaussian() * 0.01D;
 
-                world.a("smoke", d5, d6, d7, d8, d9, d10);
+            for (int i1 = 0; i1 < 10; ++i1) {
+                d3 = random.nextDouble() * 0.2D + 0.01D;
+                double d4 = d0 + (double) f * 0.01D + (random.nextDouble() - 0.5D) * (double) f1 * 0.5D;
+                double d5 = d1 + (random.nextDouble() - 0.5D) * 0.5D;
+                double d6 = d2 + (double) f1 * 0.01D + (random.nextDouble() - 0.5D) * (double) f * 0.5D;
+                double d7 = (double) f * d3 + random.nextGaussian() * 0.01D;
+                double d8 = -0.03D + random.nextGaussian() * 0.01D;
+                double d9 = (double) f1 * d3 + random.nextGaussian() * 0.01D;
+
+                world.a("smoke", d4, d5, d6, d7, d8, d9);
             }
         }
     }
 
     public void b(World world, int i, int j, int k, int l) {
-        if (l > 0 && Block.m[l].c()) {
+        if (l > 0 && Block.byId[l].c()) {
             boolean flag = world.p(i, j, k) || world.p(i, j + 1, k);
 
             if (flag) {
-                world.i(i, j, k, bi);
+                world.i(i, j, k, this.id);
             }
         }
     }
 
     public void a(World world, int i, int j, int k, Random random) {
         if (world.p(i, j, k) || world.p(i, j + 1, k)) {
-            b(world, i, j, k, random);
+            this.b(world, i, j, k, random);
         }
     }
 
     protected TileEntity a_() {
-        return ((TileEntity) (new TileEntityDispenser()));
+        return new TileEntityDispenser();
     }
 
     public void a(World world, int i, int j, int k, EntityLiving entityliving) {
-        int l = MathHelper.b((double) ((entityliving.v * 4F) / 360F) + 0.5D) & 3;
+        int l = MathHelper.b((double) (entityliving.yaw * 4.0F / 360.0F) + 0.5D) & 3;
 
         if (l == 0) {
             world.c(i, j, k, 2);
         }
+
         if (l == 1) {
             world.c(i, j, k, 5);
         }
+
         if (l == 2) {
             world.c(i, j, k, 3);
         }
+
         if (l == 3) {
             world.c(i, j, k, 4);
         }
     }
-}
+}
\ No newline at end of file