package net.minecraft.world.gen.layer;
public class GenLayerZoom extends GenLayer
{
private static final String __OBFID = "CL_00000572";
public GenLayerZoom(long p_i2134_1_, GenLayer p_i2134_3_)
{
super(p_i2134_1_);
super.parent = p_i2134_3_;
}
/**
* Returns a list of integer values generated by this layer. These may be interpreted as temperatures, rainfall
* amounts, or biomeList[] indices based on the particular GenLayer subclass.
*
* @param areaX The x-position of the area
* @param areaY The y-position of the area
* @param areaWidth The width of the area
* @param areaHeight The height of the area
*/
public int[] getInts(int areaX, int areaY, int areaWidth, int areaHeight)
{
int i1 = areaX >> 1;
int j1 = areaY >> 1;
int k1 = (areaWidth >> 1) + 2;
int l1 = (areaHeight >> 1) + 2;
int[] aint = this.parent.getInts(i1, j1, k1, l1);
int i2 = k1 - 1 << 1;
int j2 = l1 - 1 << 1;
int[] aint1 = IntCache.getIntCache(i2 * j2);
int l2;
for (int k2 = 0; k2 < l1 - 1; ++k2)
{
l2 = (k2 << 1) * i2;
int i3 = 0;
int j3 = aint[i3 + 0 + (k2 + 0) * k1];
for (int k3 = aint[i3 + 0 + (k2 + 1) * k1]; i3 < k1 - 1; ++i3)
{
this.initChunkSeed((long)(i3 + i1 << 1), (long)(k2 + j1 << 1));
int l3 = aint[i3 + 1 + (k2 + 0) * k1];
int i4 = aint[i3 + 1 + (k2 + 1) * k1];
aint1[l2] = j3;
aint1[l2++ + i2] = this.selectRandom(new int[] {j3, k3});
aint1[l2] = this.selectRandom(new int[] {j3, l3});
aint1[l2++ + i2] = this.selectModeOrRandom(j3, l3, k3, i4);
j3 = l3;
k3 = i4;
}
}
int[] aint2 = IntCache.getIntCache(areaWidth * areaHeight);
for (l2 = 0; l2 < areaHeight; ++l2)
{
System.arraycopy(aint1, (l2 + (areaY & 1)) * i2 + (areaX & 1), aint2, l2 * areaWidth, areaWidth);
}
return aint2;
}
/**
* Magnify a layer. Parms are seed adjustment, layer, number of times to magnify
*/
public static GenLayer magnify(long p_75915_0_, GenLayer p_75915_2_, int p_75915_3_)
{
Object object = p_75915_2_;
for (int k = 0; k < p_75915_3_; ++k)
{
object = new GenLayerZoom(p_75915_0_ + (long)k, (GenLayer)object);
}
return (GenLayer)object;
}
}