package shedar.mods.ic2.nuclearcontrol.crossmod.bigreactors;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import erogenousbeef.bigreactors.common.multiblock.MultiblockReactor;
import net.minecraft.block.BlockContainer;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.IIcon;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
import shedar.mods.ic2.nuclearcontrol.IC2NuclearControl;
public class BlockActiveReactorInfoFetch extends BlockContainer{
private static IIcon[] blockStates = new IIcon[2];//Reference to 1.8...
private static String textureName = "RFReactorPart";
public BlockActiveReactorInfoFetch() {
super(Material.iron);
this.setHardness(2.0F);
this.setCreativeTab(IC2NuclearControl.tabIC2NC);
this.setBlockName("blockBRPart");
}
@Override
public TileEntity createNewTileEntity(World world, int meta) {
return new TileEntityBlockFetcher();
}
@Override
@SideOnly(Side.CLIENT)
public void registerBlockIcons(IIconRegister iconRegister)
{
this.blockStates[0] = iconRegister.registerIcon("nuclearcontrol:BRBlock/blockReactorPart"); //This is the Default from Big Reactors
this.blockStates[1] = iconRegister.registerIcon("nuclearcontrol:BRBlock/" + textureName); //This is the Mod's Version of the block
}
/*
* Everything written beyond this point is a modified version of E-beef's Code
* In order to be proper: https://github.com/erogenousbeef/BigReactors/blob/master/src/main/java/erogenousbeef/bigreactors/common/multiblock/block/BlockReactorPart.java#L100
*
*/
@Override
public IIcon getIcon(IBlockAccess blockAccess, int x, int y, int z, int side) {
IIcon icon = null;
int metadata = blockAccess.getBlockMetadata(x,y,z);
icon = getMagicIcon(blockAccess, x, y, z, side);
return icon != null ? icon : getIcon(side, metadata);
}
private IIcon getMagicIcon(IBlockAccess blockAccess, int x, int y, int z, int side){
TileEntity te = blockAccess.getTileEntity(x, y, z);
if(te instanceof TileEntityBlockFetcher) {
TileEntityBlockFetcher part = (TileEntityBlockFetcher)te;
if(!isReactorAssembled(part) || isOutwardsSide(part, side)) {
return this.blockStates[1];
}
}
return this.blockStates[0];
}
@Override
public IIcon getIcon(int side, int metadata){
if(side > 1&& (metadata >= 0 && metadata < blockStates.length)) {
return this.blockStates[1];
}
return this.blockStates[0];
}
private boolean isOutwardsSide(TileEntityBlockFetcher part, int side) {
ForgeDirection outDir = part.getOutwardsDir();
return outDir.ordinal() == side;
}
private boolean isReactorAssembled(TileEntityBlockFetcher part) {
MultiblockReactor reactor = part.getReactorController();
return reactor != null && reactor.isAssembled();
}
}