Advertisement
Guest User

Untitled

a guest
Mar 13th, 2018
149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.46 KB | None | 0 0
  1. package com.mart.solar.common.blocks.base;
  2.  
  3. import com.mart.solar.common.items.blocks.ItemBlockEnum;
  4. import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
  5. import net.minecraft.block.Block;
  6. import net.minecraft.block.material.Material;
  7. import net.minecraft.block.properties.PropertyEnum;
  8. import net.minecraft.block.state.BlockStateContainer;
  9. import net.minecraft.block.state.IBlockState;
  10. import net.minecraft.creativetab.CreativeTabs;
  11. import net.minecraft.item.ItemBlock;
  12. import net.minecraft.item.ItemStack;
  13. import net.minecraft.util.IStringSerializable;
  14. import net.minecraft.util.NonNullList;
  15.  
  16. public class BlockEnum<E extends Enum<E> & IStringSerializable> extends Block implements ISolarBlock{
  17. private final E[] types;
  18. private final PropertyEnum<E> property;
  19. private final BlockStateContainer realStateContainer;
  20.  
  21. public BlockEnum(Material material, Class<E> enumClass, String propName) {
  22. super(material);
  23.  
  24. this.types = enumClass.getEnumConstants();
  25. this.property = PropertyEnum.create(propName, enumClass);
  26. this.realStateContainer = createStateContainer();
  27. setDefaultState(getBlockState().getBaseState());
  28. }
  29.  
  30. public BlockEnum(Material material, Class<E> enumClass) {
  31. this(material, enumClass, "type");
  32. }
  33.  
  34.  
  35. @Override
  36. public final BlockStateContainer getBlockState() {
  37. return realStateContainer;
  38. }
  39.  
  40. @Override
  41. public IBlockState getStateFromMeta(int meta) {
  42. return getDefaultState().withProperty(property, types[meta]);
  43. }
  44.  
  45. @Override
  46. public int getMetaFromState(IBlockState state) {
  47. return state.getValue(property).ordinal();
  48. }
  49.  
  50. @Override
  51. public int damageDropped(IBlockState state) {
  52. return getMetaFromState(state);
  53. }
  54.  
  55. @Override
  56. public void getSubBlocks(CreativeTabs tab, NonNullList<ItemStack> subBlocks) {
  57. for (E type : types)
  58. subBlocks.add(new ItemStack(this, 1, type.ordinal()));
  59. }
  60.  
  61. protected BlockStateContainer createStateContainer() {
  62. return new BlockStateContainer.Builder(this).add(property).build();
  63. }
  64.  
  65. @Override
  66. public ItemBlock getItem() {
  67. return new ItemBlockEnum<>(this);
  68. }
  69.  
  70.  
  71. public E[] getTypes() {
  72. return types;
  73. }
  74.  
  75. public PropertyEnum<E> getProperty() {
  76. return property;
  77. }
  78.  
  79. public BlockStateContainer getRealStateContainer() {
  80. return realStateContainer;
  81. }
  82. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement