Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.mart.solar.common.blocks.base;
- import com.mart.solar.common.items.blocks.ItemBlockEnum;
- import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
- import net.minecraft.block.Block;
- import net.minecraft.block.material.Material;
- import net.minecraft.block.properties.PropertyEnum;
- import net.minecraft.block.state.BlockStateContainer;
- import net.minecraft.block.state.IBlockState;
- import net.minecraft.creativetab.CreativeTabs;
- import net.minecraft.item.ItemBlock;
- import net.minecraft.item.ItemStack;
- import net.minecraft.util.IStringSerializable;
- import net.minecraft.util.NonNullList;
- public class BlockEnum<E extends Enum<E> & IStringSerializable> extends Block implements ISolarBlock{
- private final E[] types;
- private final PropertyEnum<E> property;
- private final BlockStateContainer realStateContainer;
- public BlockEnum(Material material, Class<E> enumClass, String propName) {
- super(material);
- this.types = enumClass.getEnumConstants();
- this.property = PropertyEnum.create(propName, enumClass);
- this.realStateContainer = createStateContainer();
- setDefaultState(getBlockState().getBaseState());
- }
- public BlockEnum(Material material, Class<E> enumClass) {
- this(material, enumClass, "type");
- }
- @Override
- public final BlockStateContainer getBlockState() {
- return realStateContainer;
- }
- @Override
- public IBlockState getStateFromMeta(int meta) {
- return getDefaultState().withProperty(property, types[meta]);
- }
- @Override
- public int getMetaFromState(IBlockState state) {
- return state.getValue(property).ordinal();
- }
- @Override
- public int damageDropped(IBlockState state) {
- return getMetaFromState(state);
- }
- @Override
- public void getSubBlocks(CreativeTabs tab, NonNullList<ItemStack> subBlocks) {
- for (E type : types)
- subBlocks.add(new ItemStack(this, 1, type.ordinal()));
- }
- protected BlockStateContainer createStateContainer() {
- return new BlockStateContainer.Builder(this).add(property).build();
- }
- @Override
- public ItemBlock getItem() {
- return new ItemBlockEnum<>(this);
- }
- public E[] getTypes() {
- return types;
- }
- public PropertyEnum<E> getProperty() {
- return property;
- }
- public BlockStateContainer getRealStateContainer() {
- return realStateContainer;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement