/******************************************************************************* * AbyssalCraft * Copyright (c) 2012 - 2017 Shinoow. * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Lesser Public License v3 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/lgpl-3.0.txt * * Contributors: * Shinoow - implementation ******************************************************************************/ package com.shinoow.abyssalcraft.common.blocks; import net.minecraft.block.SoundType; import net.minecraft.block.material.MapColor; 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.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.IStringSerializable; import net.minecraft.util.NonNullList; public class BlockACBrick extends BlockACBasic { public static final PropertyEnum TYPE = PropertyEnum.create("type", BlockACBrick.EnumBrickType.class); public BlockACBrick(int harvestlevel, float hardness, float resistance) { super(Material.ROCK, "pickaxe", harvestlevel, hardness, resistance, SoundType.STONE); setDefaultState(blockState.getBaseState().withProperty(TYPE, EnumBrickType.NORMAL)); } public BlockACBrick(float hardness, float resistance) { super(Material.ROCK, hardness, resistance, SoundType.STONE); setDefaultState(blockState.getBaseState().withProperty(TYPE, EnumBrickType.NORMAL)); } public BlockACBrick(int harvestlevel, float hardness, float resistance, MapColor mapColor) { super(Material.ROCK, "pickaxe", harvestlevel, hardness, resistance, SoundType.STONE, mapColor); setDefaultState(blockState.getBaseState().withProperty(TYPE, EnumBrickType.NORMAL)); } public BlockACBrick(float hardness, float resistance, MapColor mapColor) { super(Material.ROCK, hardness, resistance, SoundType.STONE, mapColor); setDefaultState(blockState.getBaseState().withProperty(TYPE, EnumBrickType.NORMAL)); } @Override public int damageDropped (IBlockState state) { return ((EnumBrickType)state.getValue(TYPE)).getMeta(); } @SuppressWarnings({ "unchecked", "rawtypes" }) @Override public void getSubBlocks(Item par1, CreativeTabs par2CreativeTabs, NonNullList<ItemStack> par3List) { for(int i = 0; i < EnumBrickType.values().length; i++) par3List.add(new ItemStack(par1, 1, i)); } @Override public IBlockState getStateFromMeta(int meta) { return getDefaultState().withProperty(TYPE, EnumBrickType.byMetadata(meta)); } @Override public int getMetaFromState(IBlockState state) { return ((EnumBrickType)state.getValue(TYPE)).getMeta(); } @Override protected BlockStateContainer createBlockState() { return new BlockStateContainer.Builder(this).add(TYPE).build(); } public enum EnumBrickType implements IStringSerializable { NORMAL(0, "normal"), CHISELED(1, "chiseled"), CRACKED(2, "cracked"); private static final BlockACBrick.EnumBrickType[] META_LOOKUP = new BlockACBrick.EnumBrickType[values().length]; private int meta; private String name; private EnumBrickType(int meta, String name) { this.meta = meta; this.name = name; } public static BlockACBrick.EnumBrickType byMetadata(int meta) { if (meta < 0 || meta >= META_LOOKUP.length) meta = 0; return META_LOOKUP[meta]; } @Override public String getName() { return name; } public int getMeta() { return meta; } @Override public String toString() { return getName(); } static { for(BlockACBrick.EnumBrickType type : values()) META_LOOKUP[type.getMeta()] = type; } } }