public boolean handleMaterialAcceleration(AxisAlignedBB var1, Material var2, Entity var3) {
        int var4 = MathHelper.floor_double(var1.minX);
        int var5 = MathHelper.floor_double(var1.maxX + 1.0D);
        int var6 = MathHelper.floor_double(var1.minY);
        int var7 = MathHelper.floor_double(var1.maxY + 1.0D);
        int var8 = MathHelper.floor_double(var1.minZ);
        int var9 = MathHelper.floor_double(var1.maxZ + 1.0D);
        if (!this.checkChunksExist(var4, var6, var8, var5, var7, var9)) {
            return false;
        } else {
            boolean var10 = false;
            Vec3D var11 = Vec3D.createVector(0.0D, 0.0D, 0.0D);

            for (int var12 = var4; var12 < var5; ++var12) {
                for (int var13 = var6; var13 < var7; ++var13) {
                    for (int var14 = var8; var14 < var9; ++var14) {
                        Block var15 = Block.blocksList[this.getBlockId(var12, var13, var14)];
                        if (var15 != null && var15.blockMaterial == var2) {
                            double var16 = (double) ((float) (var13 + 1) - BlockFluid.getFluidHeightPercent(this.getBlockMetadata(var12, var13, var14)));
                            if ((double) var7 >= var16) {
                                var10 = true;
                                var15.velocityToAddToEntity(this, var12, var13, var14, var3, var11);
                            }
                        }
                    }
                }
            }

            if (var11.lengthVector() > 0.0D) {
                var11 = var11.normalize();
                double var18 = 0.014D;
                var3.motionX += var11.xCoord * var18;
                var3.motionY += var11.yCoord * var18;
                var3.motionZ += var11.zCoord * var18;
            }

            return var10;
        }
    }