package minefantasy.mf2.block.basic; import java.util.HashMap; import java.util.List; import java.util.Random; import cpw.mods.fml.common.registry.GameRegistry; import minefantasy.mf2.MineFantasyII; import minefantasy.mf2.material.BaseMaterialMF; import net.minecraft.block.Block; import net.minecraft.block.BlockStairs; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemBlockWithMetadata; import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; import net.minecraft.world.World; public class ConstructionBlockMF extends Block { public IIcon[] m_icons = new IIcon[4]; public static final String[] m_names = new String[] {"", "_cobblestone", "_brick", "_pavement"}; public Block[] stairblocks = new Block[4]; public ConstructionBlockMF(String unlocName) { this(unlocName, new String[] {"", "_cobblestone", "_brick", "_pavement"}); } public ConstructionBlockMF(String unlocName, String... types) { this(unlocName, Material.rock, types); } public ConstructionBlockMF(String unlocName, Material material, String... types) { super(material); this.setBlockName(unlocName); this.setCreativeTab(CreativeTabs.tabBlock); GameRegistry.registerBlock(this, ItemConstBlock.class, unlocName); for(int i = 0; i < m_names.length; i ++) { GameRegistry.registerBlock(stairblocks[i] = new StairsConstBlock(unlocName + m_names[i] + "_stair", this, i).setHardness(1.5F).setResistance(10F), unlocName + m_names[i] + "_stair"); } setHardness(1.5F); setResistance(10F); if(material == Material.rock) { setHarvestLevel("pickaxe", 0); } addConstructRecipes(); } @Override public Block setHardness(float level) { if(stairblocks != null) { for(Block stairblock : stairblocks) stairblock.setHardness(level); } return super.setHardness(level); } @Override public Block setResistance(float level) { if(stairblocks != null) { for(Block stairblock : stairblocks) stairblock.setResistance(level); } return super.setResistance(level); } //public Item getItemDropped(int meta, Random rand, int i) { return null; }; public void addConstructRecipes() { GameRegistry.addSmelting(new ItemStack(this, 1, 1), new ItemStack(this, 1, 0), 0); GameRegistry.addRecipe(new ItemStack(this, 4, 3), new Object[] { "XX", "XX", 'X', new ItemStack(this, 1, 1) }); GameRegistry.addRecipe(new ItemStack(this, 4, 2), new Object[] { "X X", " ", "X X", 'X', new ItemStack(this, 1, 1) }); GameRegistry.addRecipe(new ItemStack(this, 1, 1), new Object[] { "X", 'X', new ItemStack(this, 1, 2) }); GameRegistry.addRecipe(new ItemStack(this, 1, 1), new Object[] { "X", 'X', new ItemStack(this, 1, 3) }); for(int i = 0; i < 4; i++) GameRegistry.addRecipe(new ItemStack(stairblocks[i], 4), new Object[] { " X", " XX", "XXX", 'X', new ItemStack(this, 1, i) }); } @Override public int damageDropped(int meta) { if(meta == 0)return 1; return meta; } @Override public void registerBlockIcons(IIconRegister register) { m_icons[0] = register.registerIcon(MineFantasyII.MODID + ":" + "basic/" + getUnlocalizedName().substring(5)); m_icons[1] = register.registerIcon(MineFantasyII.MODID + ":" + "basic/" + getUnlocalizedName().substring(5) + "_cobblestone"); m_icons[2] = register.registerIcon(MineFantasyII.MODID + ":" + "basic/" + getUnlocalizedName().substring(5) + "_brick"); m_icons[3] = register.registerIcon(MineFantasyII.MODID + ":" + "basic/" + getUnlocalizedName().substring(5) + "_pavement"); } public String getUnlocalizedName(ItemStack itemstack) { return getUnlocalizedName() + "." + m_names[itemstack.getItemDamage()]; } @Override public void getSubBlocks(Item item, CreativeTabs tab, List list) { for(int i = 0; i < 4; i++) { list.add(new ItemStack(item, 1, i)); } } @Override public IIcon getIcon(int side, int meta) { switch(meta) { case 0: return m_icons[0]; case 1: return m_icons[1]; case 2: return m_icons[2]; case 3: return m_icons[3]; default: return blockIcon; } } public static class StairsConstBlock extends BlockStairs { private final Block base; public StairsConstBlock(String unlocalizedName, Block baseBlock, int metaOfBaseBlock) { super(baseBlock, metaOfBaseBlock); this.setBlockName(unlocalizedName); this.setCreativeTab(CreativeTabs.tabBlock); this.setLightOpacity(0);//They seem to render shadows funny this.base = baseBlock; } public void addRecipe() { GameRegistry.addRecipe(new ItemStack(this, 4), new Object[]{ "B ", "BB ", "BBB", 'B', this.base }); } public StairsConstBlock(String unlocalizedName, Block baseBlock) { this(unlocalizedName, baseBlock, 0); } public Block register(String name) { GameRegistry.registerBlock(this, name); return this; } } public static class ItemConstBlock extends ItemBlockWithMetadata { public ItemConstBlock(Block block) { super(block, block); } @Override public String getUnlocalizedName(ItemStack stack) { switch (stack.getItemDamage()) { case 1: return this.getUnlocalizedName() + "_cobblestone"; case 2: return this.getUnlocalizedName() + "_brick"; case 3: return this.getUnlocalizedName() + "_pavement"; default: return this.getUnlocalizedName(); } } @Override public int getMetadata(int d) { return d; } } }