From 05c78126859231a68e199dc34613689bd0978e2f Mon Sep 17 00:00:00 2001 From: Foghrye4 Date: Mon, 11 Apr 2016 19:44:54 +0300 Subject: Initial commit --- ihl/items_blocks/MachineBaseBlock.java | 880 +++++++++++++++++++++++++++++++++ 1 file changed, 880 insertions(+) create mode 100644 ihl/items_blocks/MachineBaseBlock.java (limited to 'ihl/items_blocks/MachineBaseBlock.java') diff --git a/ihl/items_blocks/MachineBaseBlock.java b/ihl/items_blocks/MachineBaseBlock.java new file mode 100644 index 0000000..0cb10cb --- /dev/null +++ b/ihl/items_blocks/MachineBaseBlock.java @@ -0,0 +1,880 @@ +package ihl.items_blocks; + +import ic2.api.tile.IWrenchable; +import ic2.core.IC2; +import ic2.core.IHasGui; +import ic2.core.item.tool.ItemToolCutter; +import ic2.core.item.tool.ItemToolWrench; +import ihl.IHLCreativeTab; +import ihl.IHLMod; +import ihl.IHLModInfo; +import ihl.collector.GlassBoxTileEntity; +import ihl.datanet.RedstoneSignalConverterTileEntity; +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.VacuumInductionMeltingFurnaceTileEntity; +import ihl.processing.metallurgy.VulcanizationExtrudingMoldTileEntity; +import ihl.processing.metallurgy.WireMillTileEntity; +import ihl.processing.metallurgy.WoodenRollingMachinePart1TileEntity; +import ihl.processing.metallurgy.WoodenRollingMachinePart2TileEntity; +import ihl.tunneling_shield.HydrotransportPulpRegeneratorTileEntity; +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.Item; +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); + } + } + if(te instanceof RedstoneSignalConverterTileEntity) + { + RedstoneSignalConverterTileEntity rscte = (RedstoneSignalConverterTileEntity) te; + rscte.linksOrInventoryChanged=true; + } + } + } + + + @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))); + } + } + if(te instanceof RedstoneSignalConverterTileEntity) + { + RedstoneSignalConverterTileEntity rsce = (RedstoneSignalConverterTileEntity)te; + rsce.removeAttachedChains(); + } + } + } + super.onBlockPreDestroy(world, x, y, z, meta); + } + + @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; + case GlassBox: + 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; + case RedstoneSignalConverter: + this.setBlockBounds(0.2F, 0.2F, 0.2F, 0.8F, 0.8F, 0.8F); + super.addCollisionBoxesToList(world, x, y, z, aabb, list, entity); + 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); + } + + @Override + public void setBlockBoundsBasedOnState(IBlockAccess blockAccess, int x, int y, int z) + { + int facing = 3; + TileEntity te = blockAccess.getTileEntity(x, y, z); + if(te!=null && te instanceof IWrenchable) + { + IWrenchable tebh = (IWrenchable) te; + facing=tebh.getFacing(); + } + switch(this.type) + { + case VacuumInductionMeltingFurnace: + switch(facing) + { + case 0: + this.setBlockBounds(-1.0F, -2.0F, 0.0F, 2.0F, 1.0F, 3.0F); + break; + case 1: + this.setBlockBounds(-1.0F, 0.0F, 0.0F, 2.0F, 3.0F, 3.0F); + break; + case 2: + this.setBlockBounds(-1.0F, 0.0F, -2.0F, 2.0F, 3.0F, 1.0F); + break; + case 3: + this.setBlockBounds(-1.0F, 0.0F, 0.0F, 2.0F, 3.0F, 3.0F); + break; + case 4: + this.setBlockBounds(-2.0F, 0.0F, -1.0F, 1.0F, 3.0F, 2.0F); + break; + case 5: + this.setBlockBounds(0.0F, 0.0F, -1.0F, 3.0F, 3.0F, 2.0F); + break; + default: + break; + } + break; + default: + super.setBlockBoundsBasedOnState(blockAccess, x, y, z); + break; + } + } + + public static void init() + { + MachineType[] var1 = MachineType.values(); + for(int i=0;i