package tasteslikebleach.tcm.blocks; import java.util.Random; import net.minecraft.block.BlockLog; import net.minecraft.block.SoundType; import net.minecraft.block.material.Material; import net.minecraft.block.properties.IProperty; import net.minecraft.block.properties.PropertyEnum; import net.minecraft.block.state.BlockStateContainer; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.EntityLivingBase; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.EnumFacing; import net.minecraft.util.ResourceLocation; import net.minecraft.util.Rotation; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import tasteslikebleach.tcm.Reference; public class BlockBananaLog extends BlockLog { public static final PropertyEnum AXIS = PropertyEnum.create("axis", EnumFacing.Axis.class); public BlockBananaLog(String unlocalizedName) { this.setSoundType(SoundType.WOOD); this.setHardness(2.0F); this.setDefaultState(this.blockState.getBaseState().withProperty(AXIS, EnumFacing.Axis.Y)); this.setUnlocalizedName(unlocalizedName); this.setRegistryName(new ResourceLocation(Reference.MODID, unlocalizedName)); } @Override public Item getItemDropped(IBlockState state, Random rand, int fortune){ return Item.getItemFromBlock(this); } @Override protected BlockStateContainer createBlockState(){ return new BlockStateContainer(this, new IProperty[] {AXIS}); } @Override public IBlockState getStateForPlacement(World worldIn, BlockPos pos, EnumFacing facing, float hitX, float hitY, float hitZ, int meta, EntityLivingBase placer) { return this.getStateFromMeta(meta).withProperty(AXIS, fromFacingAxis(facing.getAxis())); } @Override public IBlockState withRotation(IBlockState state, Rotation rot) { switch (rot) { case COUNTERCLOCKWISE_90: case CLOCKWISE_90: switch ((EnumFacing.Axis)state.getValue(AXIS)) { case X: return state.withProperty(AXIS, EnumFacing.Axis.Z); case Z: return state.withProperty(AXIS, EnumFacing.Axis.X); default: return state; } default: return state; } } public static EnumFacing.Axis fromFacingAxis(EnumFacing.Axis axis) { switch (axis) { case X: return EnumFacing.Axis.X; case Y: return EnumFacing.Axis.Y; case Z: return EnumFacing.Axis.Z; default: return EnumFacing.Axis.X; } } }