Advertisement
HalestormXV

Untitled

Feb 4th, 2018
196
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.56 KB | None | 0 0
  1. package halestormxv.objects.blocks;
  2.  
  3. import halestormxv.RunicSorcery;
  4. import halestormxv.init.BlockInit;
  5. import halestormxv.init.ItemInit;
  6. import halestormxv.objects.blocks.item.ItemBlockVariants;
  7. import halestormxv.util.Logging;
  8. import halestormxv.util.handlers.EnumHandler;
  9. import halestormxv.util.handlers.EnumHandlerStone;
  10. import halestormxv.util.handlers.EnumHandlerWood;
  11. import halestormxv.util.interfaces.IHasModel;
  12. import halestormxv.util.interfaces.IMetaName;
  13. import net.minecraft.block.Block;
  14. import net.minecraft.block.SoundType;
  15. import net.minecraft.block.material.Material;
  16. import net.minecraft.block.properties.IProperty;
  17. import net.minecraft.block.properties.PropertyEnum;
  18. import net.minecraft.block.state.BlockStateContainer;
  19. import net.minecraft.block.state.IBlockState;
  20. import net.minecraft.creativetab.CreativeTabs;
  21. import net.minecraft.entity.player.EntityPlayer;
  22. import net.minecraft.item.Item;
  23. import net.minecraft.item.ItemStack;
  24. import net.minecraft.util.EnumFacing;
  25. import net.minecraft.util.NonNullList;
  26. import net.minecraft.util.math.BlockPos;
  27. import net.minecraft.util.math.RayTraceResult;
  28. import net.minecraft.world.IBlockAccess;
  29. import net.minecraft.world.World;
  30. import net.minecraftforge.common.IPlantable;
  31.  
  32. import java.util.Random;
  33.  
  34. public class BlockStones extends Block implements IMetaName, IHasModel
  35. {
  36.     public static final PropertyEnum<EnumHandlerStone.EnumTypeStone> VARIANT = PropertyEnum.<EnumHandlerStone.EnumTypeStone>create("variant", EnumHandlerStone.EnumTypeStone.class);
  37.  
  38.     private String name;
  39.  
  40.     public BlockStones(String name)
  41.     {
  42.         super(Material.ROCK);
  43.         setUnlocalizedName(name);
  44.         setRegistryName(name);
  45.         setSoundType(SoundType.STONE);
  46.         setHardness(4.0f);
  47.         setDefaultState(this.blockState.getBaseState().withProperty(VARIANT, EnumHandlerStone.EnumTypeStone.LUPRESIUM_SMOOTHSTONE));
  48.         setCreativeTab(RunicSorcery.RUNICSORCERY);
  49.         setHarvestLevel("pickaxe", 1);
  50.  
  51.         this.name = name;
  52.  
  53.         BlockInit.BLOCKS.add(this);
  54.         ItemInit.ITEMS.add(new ItemBlockVariants(this).setRegistryName(this.getRegistryName()));
  55.  
  56.     }
  57.  
  58.     @Override
  59.     public int damageDropped(IBlockState state)
  60.     {
  61.         return ((EnumHandlerStone.EnumTypeStone)state.getValue(VARIANT)).getMeta();
  62.     }
  63.  
  64.     @Override
  65.     public void getSubBlocks(CreativeTabs itemIn, NonNullList<ItemStack> items)
  66.     {
  67.         for(EnumHandlerStone.EnumTypeStone variant : EnumHandlerStone.EnumTypeStone.values())
  68.         {
  69.             items.add(new ItemStack(this, 1, variant.getMeta()));
  70.         }
  71.     }
  72.  
  73.     @Override
  74.     public IBlockState getStateFromMeta(int meta)
  75.     {
  76.         return this.getDefaultState().withProperty(VARIANT, EnumHandlerStone.EnumTypeStone.byMetadata(meta));
  77.     }
  78.  
  79.     @Override
  80.     public int getMetaFromState(IBlockState state)
  81.     {
  82.         return ((EnumHandlerStone.EnumTypeStone)state.getValue(VARIANT)).getMeta();
  83.     }
  84.  
  85.     @Override
  86.     public ItemStack getPickBlock(IBlockState state, RayTraceResult target, World world, BlockPos pos, EntityPlayer player)
  87.     {
  88.         return new ItemStack(Item.getItemFromBlock(this), 1, getMetaFromState(world.getBlockState(pos)));
  89.     }
  90.  
  91.     @Override
  92.     protected BlockStateContainer createBlockState()
  93.     {
  94.         return new BlockStateContainer(this, new IProperty[] {VARIANT});
  95.     }
  96.  
  97.     @Override
  98.     public String getSpecialName(ItemStack stack)
  99.     {
  100.         return EnumHandlerStone.EnumTypeStone.values()[stack.getItemDamage()].getName();
  101.     }
  102.  
  103.     @Override
  104.     public void registerModels()
  105.     {
  106.         for(int i = 0; i < EnumHandlerStone.EnumTypeStone.values().length; i++)
  107.         {
  108.             RunicSorcery.proxy.registerVariantRenderer(Item.getItemFromBlock(this), i, "stone_" + EnumHandlerStone.EnumTypeStone.values()[i].getName(), "inventory");
  109.         }
  110.     }
  111.  
  112.     @Override
  113.     public boolean canSustainPlant(IBlockState state, IBlockAccess world, BlockPos pos, EnumFacing direction, IPlantable plantable)
  114.     {
  115.         return false;
  116.     }
  117.  
  118.     @Override
  119.     public Item getItemDropped(IBlockState state, Random rand, int fortune)
  120.     {
  121.         if (state.getValue(VARIANT) == EnumHandlerStone.EnumTypeStone.LUPRESIUM_SMOOTHSTONE)
  122.         {
  123.             return Item.getItemFromBlock(BlockInit.BLOCK_LUPRESIUM_COBBLE);
  124.         }
  125.         if (state.getValue(VARIANT) == EnumHandlerStone.EnumTypeStone.MYSTIC_SMOOTHSTONE)
  126.         {
  127.             return Item.getItemFromBlock(BlockInit.BLOCK_MYSTIC_COBBLE);
  128.         }
  129.         return Item.getItemFromBlock(this);
  130.     }
  131. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement