package resonantinduction.old.transport.crafting; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IconRegister; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.Icon; import net.minecraft.world.World; import resonantinduction.core.prefab.block.BlockMachine; import resonantinduction.old.transport.ResonantInductionTransport; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; /** * Advanced tiering of a crafting table adding advanced features such as visual crafting, and auto * crafting. Original idea by Infinite * * @author DarkGuardsman */ public class BlockCraftingTable extends BlockMachine { @SideOnly(Side.CLIENT) private Icon workbenchIconTop; @SideOnly(Side.CLIENT) private Icon workbenchIconFront; public BlockCraftingTable() { super(ResonantInductionTransport.CONFIGURATION, "CraftingTable", Material.rock); } @Override @SideOnly(Side.CLIENT) public Icon getIcon(int par1, int par2) { return par1 == 1 ? this.workbenchIconTop : (par1 == 0 ? Block.planks.getBlockTextureFromSide(par1) : (par1 != 2 && par1 != 4 ? this.blockIcon : this.workbenchIconFront)); } @Override @SideOnly(Side.CLIENT) public void registerIcons(IconRegister par1IconRegister) { this.blockIcon = par1IconRegister.registerIcon(this.getTextureName() + "_side"); this.workbenchIconTop = par1IconRegister.registerIcon(this.getTextureName() + "_top"); this.workbenchIconFront = par1IconRegister.registerIcon(this.getTextureName() + "_front"); } @Override public TileEntity createNewTileEntity(World world) { return new TileEntityCraftingTable(); } @Override public TileEntity createTileEntity(World world, int metadata) { if (metadata >= 0 && metadata < CraftingTables.values().length) { CraftingTables table = CraftingTables.values()[metadata]; if (table.enabled && table.tileClass != null) { try { return table.tileClass.newInstance(); } catch (Exception e) { e.printStackTrace(); } } } return super.createTileEntity(world, metadata); } public static enum CraftingTables { /** Upgraded wooden crafting table, stores items, and contains a small inventory */ ADVANCED(), /** Stone version of the advanced, renders end result of crafting on surface */ STONE(), /** Iron version of stone adding ability to repair armor */ IRON(), /** Upgraded version of the iron allowing repair of tools, as well upgrades of tools */ STEEL(), /** First work bench that can be combined with robotics to auto craft items */ AUTOMATED(), /** Crafting table that allows large long term projects to be made one item at a time */ PROJECT(), /** Crafting table that allows industrial machines to be crafted */ INDUSTRIAL(), /** * Crafting table that allows advanced electronics to be crafted, also allows electronic * devices to be designed */ ELECTRONICS(), /** Upgraded auto table that can use blueprints, works faster, and do some cool tricks */ INDUSTRIAL_AUTOMATED(), /** Auto crafting version of the electronics table, allows autocrafting of custom devices */ ELECTRONICS_AUTOMATED(), /** Auto crafting table that allows long term projects to be made one item at a time */ AUTOMATED_PROJECT(); public final boolean enabled; public Class tileClass = null; private CraftingTables() { this(false); } private CraftingTables(boolean enabled) { this.enabled = enabled; } } }