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.GoldChimneyKneeTileEntity; import ihl.processing.chemistry.LabElectrolyzerTileEntity; import ihl.processing.chemistry.LeadOvenTileEntity; import ihl.processing.chemistry.LoomTileEntity; import ihl.processing.chemistry.PaperMachineTileEntity; import ihl.processing.chemistry.PrecipitatorCondenserTileEntity; 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, frequencyGeneratorBack, frequencyGeneratorBottom, frequencyGeneratorFront, frequencyGeneratorLeft, frequencyGeneratorRight, frequencyGeneratorTop, bronzeTubTop, bronzeTubSide, glassBoxTop, glassBoxSide, glassBoxBottom, glassBoxInnerSide, glassBoxInnerBottom, vacuumInductionMeltingFurnaceFront, vacuumInductionMeltingFurnaceBack, vacuumInductionMeltingFurnaceLeft, vacuumInductionMeltingFurnaceRight, hydrotransportPulpRegeneratorFront, hydrotransportPulpRegeneratorBack, redstoneSignalConverterEmitterSide, redstoneSignalConverterEmptySide, redstoneSignalConverterSensorSide, 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; } } }