package net.minecraft.world.gen.layer;
public class GenLayerEdge extends GenLayer
{
private final GenLayerEdge.Mode field_151627_c;
private static final String __OBFID = "CL_00000547";
public GenLayerEdge(long p_i45474_1_, GenLayer p_i45474_3_, GenLayerEdge.Mode p_i45474_4_)
{
super(p_i45474_1_);
this.parent = p_i45474_3_;
this.field_151627_c = p_i45474_4_;
}
/**
* 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)
{
switch (GenLayerEdge.SwitchMode.field_151642_a[this.field_151627_c.ordinal()])
{
case 1:
default:
return this.getIntsCoolWarm(areaX, areaY, areaWidth, areaHeight);
case 2:
return this.getIntsHeatIce(areaX, areaY, areaWidth, areaHeight);
case 3:
return this.getIntsSpecial(areaX, areaY, areaWidth, areaHeight);
}
}
private int[] getIntsCoolWarm(int p_151626_1_, int p_151626_2_, int p_151626_3_, int p_151626_4_)
{
int i1 = p_151626_1_ - 1;
int j1 = p_151626_2_ - 1;
int k1 = 1 + p_151626_3_ + 1;
int l1 = 1 + p_151626_4_ + 1;
int[] aint = this.parent.getInts(i1, j1, k1, l1);
int[] aint1 = IntCache.getIntCache(p_151626_3_ * p_151626_4_);
for (int i2 = 0; i2 < p_151626_4_; ++i2)
{
for (int j2 = 0; j2 < p_151626_3_; ++j2)
{
this.initChunkSeed((long)(j2 + p_151626_1_), (long)(i2 + p_151626_2_));
int k2 = aint[j2 + 1 + (i2 + 1) * k1];
if (k2 == 1)
{
int l2 = aint[j2 + 1 + (i2 + 1 - 1) * k1];
int i3 = aint[j2 + 1 + 1 + (i2 + 1) * k1];
int j3 = aint[j2 + 1 - 1 + (i2 + 1) * k1];
int k3 = aint[j2 + 1 + (i2 + 1 + 1) * k1];
boolean flag = l2 == 3 || i3 == 3 || j3 == 3 || k3 == 3;
boolean flag1 = l2 == 4 || i3 == 4 || j3 == 4 || k3 == 4;
if (flag || flag1)
{
k2 = 2;
}
}
aint1[j2 + i2 * p_151626_3_] = k2;
}
}
return aint1;
}
private int[] getIntsHeatIce(int p_151624_1_, int p_151624_2_, int p_151624_3_, int p_151624_4_)
{
int i1 = p_151624_1_ - 1;
int j1 = p_151624_2_ - 1;
int k1 = 1 + p_151624_3_ + 1;
int l1 = 1 + p_151624_4_ + 1;
int[] aint = this.parent.getInts(i1, j1, k1, l1);
int[] aint1 = IntCache.getIntCache(p_151624_3_ * p_151624_4_);
for (int i2 = 0; i2 < p_151624_4_; ++i2)
{
for (int j2 = 0; j2 < p_151624_3_; ++j2)
{
int k2 = aint[j2 + 1 + (i2 + 1) * k1];
if (k2 == 4)
{
int l2 = aint[j2 + 1 + (i2 + 1 - 1) * k1];
int i3 = aint[j2 + 1 + 1 + (i2 + 1) * k1];
int j3 = aint[j2 + 1 - 1 + (i2 + 1) * k1];
int k3 = aint[j2 + 1 + (i2 + 1 + 1) * k1];
boolean flag = l2 == 2 || i3 == 2 || j3 == 2 || k3 == 2;
boolean flag1 = l2 == 1 || i3 == 1 || j3 == 1 || k3 == 1;
if (flag1 || flag)
{
k2 = 3;
}
}
aint1[j2 + i2 * p_151624_3_] = k2;
}
}
return aint1;
}
private int[] getIntsSpecial(int p_151625_1_, int p_151625_2_, int p_151625_3_, int p_151625_4_)
{
int[] aint = this.parent.getInts(p_151625_1_, p_151625_2_, p_151625_3_, p_151625_4_);
int[] aint1 = IntCache.getIntCache(p_151625_3_ * p_151625_4_);
for (int i1 = 0; i1 < p_151625_4_; ++i1)
{
for (int j1 = 0; j1 < p_151625_3_; ++j1)
{
this.initChunkSeed((long)(j1 + p_151625_1_), (long)(i1 + p_151625_2_));
int k1 = aint[j1 + i1 * p_151625_3_];
if (k1 != 0 && this.nextInt(13) == 0)
{
k1 |= 1 + this.nextInt(15) << 8 & 3840;
}
aint1[j1 + i1 * p_151625_3_] = k1;
}
}
return aint1;
}
public static enum Mode
{
COOL_WARM,
HEAT_ICE,
SPECIAL;
private static final String __OBFID = "CL_00000549";
}
static final class SwitchMode
{
static final int[] field_151642_a = new int[GenLayerEdge.Mode.values().length];
private static final String __OBFID = "CL_00000548";
static
{
try
{
field_151642_a[GenLayerEdge.Mode.COOL_WARM.ordinal()] = 1;
}
catch (NoSuchFieldError var3)
{
;
}
try
{
field_151642_a[GenLayerEdge.Mode.HEAT_ICE.ordinal()] = 2;
}
catch (NoSuchFieldError var2)
{
;
}
try
{
field_151642_a[GenLayerEdge.Mode.SPECIAL.ordinal()] = 3;
}
catch (NoSuchFieldError var1)
{
;
}
}
}
}