package zmaster587.advancedRocketry.tile.multiblock;
import java.util.LinkedList;
import java.util.List;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.world.biome.BiomeGenBase;
import net.minecraftforge.common.BiomeManager.BiomeEntry;
import zmaster587.advancedRocketry.api.AdvancedRocketryBlocks;
import zmaster587.advancedRocketry.api.stations.ISpaceObject;
import zmaster587.advancedRocketry.dimension.DimensionManager;
import zmaster587.advancedRocketry.dimension.DimensionProperties;
import zmaster587.advancedRocketry.stations.SpaceObjectManager;
import zmaster587.libVulpes.inventory.TextureResources;
import zmaster587.libVulpes.inventory.modules.ModuleBase;
import zmaster587.libVulpes.inventory.modules.ModuleContainerPan;
import zmaster587.libVulpes.inventory.modules.ModuleImage;
import zmaster587.libVulpes.inventory.modules.ModuleText;
import zmaster587.libVulpes.tile.multiblock.TileMultiPowerConsumer;
import zmaster587.libVulpes.util.IconResource;
public class TileBiomeScanner extends TileMultiPowerConsumer {
private static final Object[][][] structure = new Object[][][]{
{ {null, null, null, null, null},
{null, null, null, null, null},
{null, null, 'c', null, null},
{null, null, null, null, null},
{null, null, null, null, null}},
{ {null, null, null, null, null},
{null, null, null, null, null},
{null, null, AdvancedRocketryBlocks.blockMotor, null, null},
{null, null, null, null, null},
{null, null, null, null, null}},
{ {null,Blocks.iron_block,Blocks.iron_block,Blocks.iron_block,null},
{Blocks.iron_block, Blocks.iron_block, Blocks.iron_block, Blocks.iron_block, Blocks.iron_block},
{Blocks.iron_block, Blocks.iron_block, Blocks.iron_block, Blocks.iron_block, Blocks.iron_block},
{Blocks.iron_block, Blocks.iron_block, Blocks.iron_block, Blocks.iron_block, Blocks.iron_block},
{null,Blocks.iron_block,Blocks.iron_block,Blocks.iron_block,null}},
{ {Blocks.air, Blocks.air, Blocks.air, Blocks.air, Blocks.air},
{Blocks.air, Blocks.air, Blocks.air, Blocks.air, Blocks.air},
{Blocks.air, Blocks.air, Blocks.redstone_block, Blocks.air, Blocks.air},
{Blocks.air, Blocks.air, Blocks.air, Blocks.air, Blocks.air},
{Blocks.air, Blocks.air, Blocks.air, Blocks.air, Blocks.air}}};
@Override
public Object[][][] getStructure() {
return structure;
}
@Override
public List<ModuleBase> getModules(int ID, EntityPlayer player) {
List<ModuleBase> list = new LinkedList<ModuleBase>();//super.getModules(ID, player);
boolean suitable = true;
for(int y = this.yCoord - 4; y > 0; y--) {
if(!worldObj.isAirBlock(this.xCoord, y, this.zCoord)) {
suitable = false;
break;
}
}
if(worldObj.isRemote) {
list.add(new ModuleImage(24, 14, zmaster587.advancedRocketry.inventory.TextureResources.earthCandyIcon));
}
ISpaceObject spaceObject = SpaceObjectManager.getSpaceManager().getSpaceStationFromBlockCoords(this.xCoord, this.zCoord);
if(suitable && SpaceObjectManager.WARPDIMID != spaceObject.getOrbitingPlanetId()) {
DimensionProperties properties = DimensionManager.getInstance().getDimensionProperties(spaceObject.getOrbitingPlanetId());
List<ModuleBase> list2 = new LinkedList<ModuleBase>();
if(properties.isGasGiant()) {
list2.add(new ModuleText(32, 16, "nyehhh, Gassy, ain't it?", 0x202020));
} else {
int i = 0;
if(properties.getId() == 0) {
for(BiomeGenBase biome : BiomeGenBase.getBiomeGenArray()) {
if(biome != null)
list2.add(new ModuleText(32, 16 + 12*(i++), biome.biomeName, 0x202020));
}
}
else
for(BiomeEntry biome : properties.getBiomes()) {
list2.add(new ModuleText(32, 16 + 12*(i++), biome.biome.biomeName, 0x202020));
}
}
//Relying on a bug, is this safe?
ModuleContainerPan pan = new ModuleContainerPan(0, 16, list2, new LinkedList<ModuleBase>(), null, 148, 128, 0, -64, 0, 1000);
list.add(pan);
}
else
list.add(new ModuleText(32, 16, EnumChatFormatting.OBFUSCATED + "Foxes, that is all", 0x202020));
return list;
}
@Override
public AxisAlignedBB getRenderBoundingBox() {
return AxisAlignedBB.getBoundingBox(xCoord -5,yCoord -3, zCoord -5, xCoord +5, yCoord + 3, zCoord + 5);
}
@Override
public String getMachineName() {
return "tile.biomeScanner.name";
}
}