package ihl.items_blocks; import ic2.api.tile.IWrenchable; import ic2.core.IC2; import ic2.core.IHasGui; import ic2.core.item.tool.ItemToolCutter; import ihl.IHLCreativeTab; import ihl.IHLMod; import ihl.IHLModInfo; import ihl.flexible_cable.BatterySwitchUnitTileEntity; import ihl.flexible_cable.IronWorkbenchTileEntity; import ihl.flexible_cable.RectifierTransformerUnitTileEntity; import ihl.interfaces.IEnergyNetNode; import ihl.interfaces.IMultiPowerCableHolder; import ihl.processing.chemistry.ChemicalReactorTileEntity; import ihl.processing.chemistry.CryogenicDistillerTileEntity; import ihl.processing.chemistry.ElectrolysisBathTileEntity; import ihl.processing.chemistry.FluidizedBedReactorTileEntity; import ihl.processing.chemistry.FractionatorBottomTileEntity; import ihl.processing.chemistry.FractionatorCoverTileEntity; import ihl.processing.chemistry.FractionatorSectionTileEntity; import ihl.processing.chemistry.GaedesMercuryRotaryPumpTileEntity; import ihl.processing.chemistry.LabElectrolyzerTileEntity; import ihl.processing.chemistry.LeadOvenTileEntity; import ihl.processing.chemistry.LoomTileEntity; import ihl.processing.chemistry.PaperMachineTileEntity; import ihl.processing.chemistry.RefluxCondenserTileEntity; import ihl.processing.metallurgy.AchesonFurnanceTileEntity; import ihl.processing.metallurgy.CoilerTileEntity; import ihl.processing.metallurgy.DetonationSprayingMachineTileEntity; import ihl.processing.metallurgy.ExtruderTileEntity; import ihl.processing.metallurgy.GasWeldingStationTileEntity; import ihl.processing.metallurgy.ImpregnatingMachineTileEntity; import ihl.processing.metallurgy.LathePart1TileEntity; import ihl.processing.metallurgy.LathePart2TileEntity; import ihl.processing.metallurgy.MuffleFurnanceTileEntity; import ihl.processing.metallurgy.RollingMachinePart1TileEntity; import ihl.processing.metallurgy.RollingMachinePart2TileEntity; import ihl.processing.metallurgy.VulcanizationExtrudingMoldTileEntity; import ihl.processing.metallurgy.WireMillTileEntity; import ihl.processing.metallurgy.WoodenRollingMachinePart1TileEntity; import ihl.processing.metallurgy.WoodenRollingMachinePart2TileEntity; import ihl.utils.IHLUtils; import java.util.ArrayList; import java.util.List; import net.minecraft.block.Block; import net.minecraft.block.ITileEntityProvider; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.IIcon; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; public class MachineBaseBlock extends Block implements ITileEntityProvider{ MachineType type; private static List instances = new ArrayList(); @SideOnly(Side.CLIENT) IIcon textureSide, textureBack, textureFrontMuffleFurnance, textureTop, textureTopAchesonFurnance, textureTopGoldFurnace, textureFrontGoldFurnace, textureSideGoldFurnace, textureFrontCryogenicDistiller, textureTopCryogenicDistiller, textureBackCryogenicDistiller, textureFrontChemicalReactor, textureLeftMachineCasing, textureTopMachineCasing, textureRightMachineCasing, textureFrontMachineCasing, textureFrontPaperMachine, textureBackMachineCasing, bronzeTubTop, bronzeTubSide, steel, redPaint, greenPaint, rubberInsulatedCase, powerPort; public MachineBaseBlock(MachineType type1) { super(Material.iron); this.type=type1; this.setCreativeTab(IHLCreativeTab.tab); this.setBlockName(type.unlocalizedName); this.setHardness(2F); this.setResistance(1F); instances.add(this); } @Override public void onNeighborBlockChange(World world, int x, int y, int z, Block block) { if(IC2.platform.isSimulating()) { TileEntity te = world.getTileEntity(x,y,z); if(world.getBlock(x, y+1, z)==Blocks.fire) { if(te instanceof DetonationSprayingMachineTileEntity) { ((DetonationSprayingMachineTileEntity)te).operate(); world.setBlockToAir(x, y+1, z); } } } } @Override public void onBlockPreDestroy(World world, int x, int y, int z, int meta) { if(!world.isRemote) { TileEntity te = world.getTileEntity(x, y, z); if(te!=null) { if(te instanceof IEnergyNetNode) { IEnergyNetNode ate = (IEnergyNetNode) te; ate.removeAttachedChains(); } if(te instanceof IMultiPowerCableHolder) { IMultiPowerCableHolder ate = (IMultiPowerCableHolder) te; ate.removeAttachedChains(); } if(te instanceof IronWorkbenchTileEntity) { IronWorkbenchTileEntity iwb=(IronWorkbenchTileEntity) te; iwb.dropContents(); } else if(te instanceof IInventory) { IInventory inventory = (IInventory)te; for(int i = 0; i< inventory.getSizeInventory();i++) { if(inventory.getStackInSlot(i)!=null)world.spawnEntityInWorld(new EntityItem(world, x, y+1, z, inventory.getStackInSlot(i))); } } } } super.onBlockPreDestroy(world, x, y, z, meta); } @SuppressWarnings("rawtypes") @Override public void addCollisionBoxesToList(World world, int x, int y, int z, AxisAlignedBB aabb, List list, Entity entity) { switch(this.type) { case BronzeTub: this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.1F, 1.0F); super.addCollisionBoxesToList(world, x, y, z, aabb, list, entity); this.setBlockBounds(0.0F, 0.0F, 0.0F, 0.1F, 1.0F, 1.0F); super.addCollisionBoxesToList(world, x, y, z, aabb, list, entity); this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 0.1F); super.addCollisionBoxesToList(world, x, y, z, aabb, list, entity); this.setBlockBounds(0.9F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); super.addCollisionBoxesToList(world, x, y, z, aabb, list, entity); this.setBlockBounds(0.0F, 0.0F, 0.9F, 1.0F, 1.0F, 1.0F); super.addCollisionBoxesToList(world, x, y, z, aabb, list, entity); this.setBlockBoundsForItemRender(); break; default: super.addCollisionBoxesToList(world, x, y, z, aabb, list, entity); break; } } @Override public void setBlockBoundsForItemRender() { this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); } public static void init() { MachineType[] var1 = MachineType.values(); for(int i=0;i teclass1, boolean isNormalBlock1,ItemStack itemDroppedOnBlockDestroy1) { unlocalizedName=unlocalizedName1; teclass=teclass1; isNormalBlock=isNormalBlock1; if(isNormalBlock) { specialBlockRendererId=0; } else { specialBlockRendererId=-2; } itemDroppedOnBlockDestroy=itemDroppedOnBlockDestroy1; } MachineType(String unlocalizedName1, Class teclass1, boolean isNormalBlock1,boolean hasSpecialBlockRenderer1, ItemStack itemDroppedOnBlockDestroy1) { unlocalizedName=unlocalizedName1; teclass=teclass1; isNormalBlock=isNormalBlock1; hasSpecialBlockRenderer=hasSpecialBlockRenderer1; itemDroppedOnBlockDestroy=itemDroppedOnBlockDestroy1; } public String unlocalizedName; Class teclass; boolean isNormalBlock=true; boolean hasSpecialBlockRenderer=false; int specialBlockRendererId=-2; ItemStack itemDroppedOnBlockDestroy; } @Override public int getRenderType() { if(this.type.hasSpecialBlockRenderer) { return IHLMod.proxy.shareBlockRendererByMachineType(this.type); } return this.type.specialBlockRendererId; } @Override public boolean isOpaqueCube() { return this.type==null?false:this.type.isNormalBlock; } @Override public boolean renderAsNormalBlock() { return this.type.isNormalBlock; } @SideOnly(Side.CLIENT) public IIcon getAdditionalIconsForBlockRenderer(int flag) { switch(this.type) { case BronzeTub: return this.bronzeTubSide; default: return this.blockIcon; } } }