package minefantasy.mf2.block.basic; import java.util.List; import java.util.Random; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; /** * This is suppose to be a generic class for creating blocks with subtypes, but its not working; * as items they are fine, but placing the block in the world does not work. Leaving this for * not, but its not used. * * @author BlackJar72 * */ public class BasicMetadataBlockMF extends BasicBlockMF { private final String NAME; private final int NUMBER; @SideOnly(Side.CLIENT) private IIcon[] icons; public BasicMetadataBlockMF(String name, Material material, Class itemBlock, int number) { super(name, material, null); NUMBER = number; NAME = name; GameRegistry.registerBlock(this, itemBlock, NAME); } public BasicMetadataBlockMF(String name, Material material, Class itemBlock, int number, Object drop) { super(material); NUMBER = number; NAME = name; setBlockName(NAME); if(material == Material.rock) { this.setHarvestLevel("pickaxe", 0); } setItemDropped(drop); this.setCreativeTab(CreativeTabs.tabBlock); } @Override @SideOnly(Side.CLIENT) @SuppressWarnings({"unchecked", "rawtypes"}) public void getSubBlocks(Item item, CreativeTabs tabs, List list) { for(int i = 0; i < NUMBER; i++) { list.add(new ItemStack(item, 1, i)); } } @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister iReg) { icons = new IIcon[NUMBER]; for(int i=0; i < NUMBER; i++) { icons[i] = iReg.registerIcon("minefantasy2:basic/" + NAME + i); } } @Override @SideOnly(Side.CLIENT) public IIcon getIcon(int p1, int meta) { return icons[meta]; } private void setItemDropped(Object item) { if(item == null) { drop = Item.getItemFromBlock(this); } else { if(drop instanceof Item) { drop = item; } else if(drop instanceof Block) { drop = Item.getItemFromBlock((Block) drop); } else { // failsafe drop = Item.getItemFromBlock(this); } } } @Override public Item getItemDropped(int meta, Random rand, int i) { return (Item)drop; } @Override public int damageDropped(int meta) { return meta; } }