@Override
    public int[] getInts(int par1, int par2, int par3, int par4)
    {
        int[] var5 = this.parent.getInts(par1, par2, par3, par4);
        int[] var6 = IntCache.getIntCache(par3 * par4);

        for (int var7 = 0; var7 < par4; ++var7)
        {
            for (int var8 = 0; var8 < par3; ++var8)
            {
                this.initChunkSeed(var8 + par1, var7 + par2);
                int var9 = var5[var8 + var7 * par3];
                int var10 = (var9 & 3840) >> 8;
                var9 &= -3841;

                // Random biome distribution
                if (isBiomeOceanic(var9))
                {
                    var6[var8 + var7 * par3] = var9;
                }
                else if (var9 == BiomeGenBase.mushroomIsland.biomeID)
                {
                    var6[var8 + var7 * par3] = var9;
                }
                else if (var9 >= 1 && var9 <= 4)
                {
                    var6[var8 + var7 * par3] = biomeRandomizer.randomBiome(this).biomeID;
                }
                else
                {
                    var6[var8 + var7 * par3] = BiomeGenBase.mushroomIsland.biomeID;
                }
            }
        }

        return var6;
    }