package micdoodle8.mods.galacticraft.core.world.gen;
import net.minecraft.init.Blocks;
import net.minecraft.tileentity.TileEntityMobSpawner;
import net.minecraft.util.BlockPos;
import net.minecraft.util.EnumFacing;
import net.minecraft.world.World;
import net.minecraft.world.gen.structure.StructureBoundingBox;
import net.minecraft.world.gen.structure.StructureComponent;
import java.util.Random;
public abstract class StructureComponentGC extends StructureComponent
{
public StructureComponentGC(int var1)
{
super(var1);
}
public static StructureBoundingBox getComponentToAddBoundingBox(int x, int y, int z, int lengthOffset, int heightOffset, int widthOffset, int length, int height, int width, EnumFacing coordBaseMode)
{
if (coordBaseMode != null)
{
switch (SwitchEnumFacing.field_176064_a[coordBaseMode.ordinal()])
{
case 0:
return new StructureBoundingBox(x + lengthOffset, y + heightOffset, z + widthOffset, x + length + lengthOffset, y + height + heightOffset, z + width + widthOffset);
case 1:
return new StructureBoundingBox(x - width + widthOffset, y + heightOffset, z + lengthOffset, x + widthOffset, y + height + heightOffset, z + length + lengthOffset);
case 2:
return new StructureBoundingBox(x - length - lengthOffset, y + heightOffset, z - width - widthOffset, x - lengthOffset, y + height + heightOffset, z - widthOffset);
case 3:
return new StructureBoundingBox(x + widthOffset, y + heightOffset, z - length, x + width + widthOffset, y + height + heightOffset, z + lengthOffset);
}
}
return new StructureBoundingBox(x + lengthOffset, y + heightOffset, z + widthOffset, x + length + lengthOffset, y + height + heightOffset, z + width + widthOffset);
}
protected void placeSpawnerAtCurrentPosition(World var1, Random var2, int var3, int var4, int var5, String var6, StructureBoundingBox var7)
{
final int var8 = this.getXWithOffset(var3, var5);
final int var9 = this.getYWithOffset(var4);
final int var10 = this.getZWithOffset(var3, var5);
BlockPos pos = new BlockPos(var8, var9, var10);
if (var7.isVecInside(pos) && var1.getBlockState(pos).getBlock() != Blocks.mob_spawner)
{
var1.setBlockState(pos, Blocks.mob_spawner.getDefaultState(), 2);
final TileEntityMobSpawner var11 = (TileEntityMobSpawner) var1.getTileEntity(pos);
if (var11 != null)
{
var11.getSpawnerBaseLogic().setEntityName(var6);
}
}
}
protected int[] offsetTowerCoords(int var1, int var2, int var3, int var4, int var5)
{
final int var6 = this.getXWithOffset(var1, var3);
final int var7 = this.getYWithOffset(var2);
final int var8 = this.getZWithOffset(var1, var3);
return var5 == 0 ? new int[] { var6 + 1, var7 - 1, var8 - var4 / 2 } : var5 == 1 ? new int[] { var6 + var4 / 2, var7 - 1, var8 + 1 } : var5 == 2 ? new int[] { var6 - 1, var7 - 1, var8 + var4 / 2 } : var5 == 3 ? new int[] { var6 - var4 / 2, var7 - 1, var8 - 1 } : new int[] { var1, var2, var3 };
}
public int[] getOffsetAsIfRotated(int[] var1, EnumFacing var2)
{
final EnumFacing var3 = coordBaseMode;
final int[] var4 = new int[3];
this.coordBaseMode = var2;
var4[0] = this.getXWithOffset(var1[0], var1[2]);
var4[1] = this.getYWithOffset(var1[1]);
var4[2] = this.getZWithOffset(var1[0], var1[2]);
this.coordBaseMode = var3;
return var4;
}
@Override
protected int getXWithOffset(int var1, int var2)
{
switch (coordBaseMode.getHorizontalIndex())
{
case 0:
return this.boundingBox.minX + var1;
case 1:
return this.boundingBox.maxX - var2;
case 2:
return this.boundingBox.maxX - var1;
case 3:
return this.boundingBox.minX + var2;
default:
return var1;
}
}
@Override
protected int getZWithOffset(int var1, int var2)
{
switch (coordBaseMode.getHorizontalIndex())
{
case 0:
return this.boundingBox.minZ + var2;
case 1:
return this.boundingBox.minZ + var1;
case 2:
return this.boundingBox.maxZ - var2;
case 3:
return this.boundingBox.maxZ - var1;
default:
return var2;
}
}
@Override
protected int getYWithOffset(int var1)
{
return super.getYWithOffset(var1);
}
protected static class SwitchEnumFacing
{
protected static int[] field_176064_a = new int[EnumFacing.values().length];
static
{
try
{
field_176064_a[EnumFacing.NORTH.ordinal()] = 1;
}
catch (NoSuchFieldError var4)
{
}
try
{
field_176064_a[EnumFacing.SOUTH.ordinal()] = 2;
}
catch (NoSuchFieldError var3)
{
}
try
{
field_176064_a[EnumFacing.WEST.ordinal()] = 3;
}
catch (NoSuchFieldError var2)
{
}
try
{
field_176064_a[EnumFacing.EAST.ordinal()] = 4;
}
catch (NoSuchFieldError var1)
{
}
}
}
}