package com.zpig333.runesofwizardry.block;
import net.minecraft.block.Block;
import net.minecraft.block.BlockFalling;
import net.minecraft.block.SoundType;
import net.minecraft.block.material.Material;
import net.minecraft.block.properties.PropertyInteger;
import net.minecraft.block.state.BlockStateContainer;
import net.minecraft.block.state.IBlockState;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.BlockRenderLayer;
import net.minecraft.util.NonNullList;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.fml.common.registry.GameRegistry;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import com.zpig333.runesofwizardry.api.IDust;
import com.zpig333.runesofwizardry.api.IDustStorageBlock;
public abstract class ADustStorageBlock extends BlockFalling implements IDustStorageBlock {
public ADustStorageBlock(Material mat,String modID){
super(mat);
setHardness(0.5F);
setCreativeTab(getIDust().creativeTab());
setSoundType(SoundType.SAND);
setHarvestLevel("shovel", 0);
setUnlocalizedName(modID+"_"+getName());
ResourceLocation loc = new ResourceLocation(modID,getName());
GameRegistry.register(this,loc);
DustStorageItemBlock ib = new DustStorageItemBlock(this);
GameRegistry.register(ib, loc);
}
/* (non-Javadoc)
* @see com.zpig333.runesofwizardry.api.IDustStorageBlock#getInstance()
*/
@Override
public Block getInstance() {
return this;
}
/* (non-Javadoc)
* @see com.zpig333.runesofwizardry.api.IDustStorageBlock#getIDust()
*/
@Override
public abstract IDust getIDust();
/* (non-Javadoc)
* @see com.zpig333.runesofwizardry.api.IDustStorageBlock#getName()
*/
@Override
public String getName(){
return getIDust().getName() + "_storage";
}
//this block has 1 property: the meta value
public static final PropertyInteger PROPERTYMETA = PropertyInteger.create("meta",0,15);
@Deprecated
@Override
public IBlockState getStateFromMeta(int meta) {
return this.getDefaultState().withProperty(PROPERTYMETA, meta);
}
@Override
public int getMetaFromState(IBlockState state) {
return state.getValue(PROPERTYMETA);
}
@Override
protected BlockStateContainer createBlockState() {
return new BlockStateContainer(this, PROPERTYMETA);
}
// create a list of the subBlocks available for this block, i.e. one for each colour
// ignores facings, because the facing is calculated when we place the item.
// - used to populate items for the creative inventory
// - the "metadata" value of the block is set to the colours metadata
@Override
@SideOnly(Side.CLIENT)
public void getSubBlocks(Item itemIn, CreativeTabs tab, NonNullList<ItemStack> list)
{
NonNullList<ItemStack> dusts = NonNullList.create();
this.getIDust().getSubItems(itemIn, tab, dusts);
for(ItemStack i:dusts){
list.add(new ItemStack(itemIn,1,i.getMetadata()));
}
}
/* (non-Javadoc)
* @see net.minecraft.block.Block#damageDropped(net.minecraft.block.state.IBlockState)
*/
@Override
public int damageDropped(IBlockState state) {
return state.getValue(PROPERTYMETA);
}
/* (non-Javadoc)
* @see net.minecraft.block.Block#getBlockLayer()
*/
@Override
public BlockRenderLayer getBlockLayer() {
return BlockRenderLayer.CUTOUT;
}
}