package com.gudenau.machine.block; import com.google.common.collect.Lists; import com.gudenau.machine.MachinesData; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.block.properties.IProperty; import net.minecraft.block.properties.PropertyDirection; import net.minecraft.block.state.BlockState; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.EntityLivingBase; import net.minecraft.util.BlockPos; import net.minecraft.util.EnumFacing; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.client.model.obj.OBJModel; import net.minecraftforge.common.property.ExtendedBlockState; import net.minecraftforge.common.property.IExtendedBlockState; import net.minecraftforge.common.property.IUnlistedProperty; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; public class BlockEnergyCrystal extends Block { public static final PropertyDirection FACING = PropertyDirection.create("facing"); public BlockEnergyCrystal() { super(Material.glass); setUnlocalizedName(MachinesData.MOD_ID + "_block_energy_crystal"); setDefaultState(blockState.getBaseState().withProperty(FACING, EnumFacing.NORTH)); } @Override public IBlockState onBlockPlaced(World worldIn, BlockPos pos, EnumFacing facing, float hitX, float hitY, float hitZ, int meta, EntityLivingBase placer){ return getDefaultState().withProperty(FACING, facing); } @SideOnly(Side.CLIENT) public IBlockState getStateForEntityRender(IBlockState state){ return getDefaultState().withProperty(FACING, EnumFacing.SOUTH); } @Override public IBlockState getStateFromMeta(int meta){ EnumFacing enumfacing = EnumFacing.getFront(meta); return getDefaultState().withProperty(FACING, enumfacing); } @Override public int getMetaFromState(IBlockState state){ return ((EnumFacing)state.getValue(FACING)).getIndex(); } @Override public boolean isOpaqueCube() { return false; } @Override public boolean isFullCube() { return false; } @Override public IBlockState getExtendedState(IBlockState state, IBlockAccess world, BlockPos pos) { OBJModel.OBJState newState = new OBJModel.OBJState(Lists.newArrayList(OBJModel.Group.ALL), true, null); return ((IExtendedBlockState) state).withProperty(OBJModel.OBJProperty.instance, newState); } @Override public BlockState createBlockState() { return new ExtendedBlockState(this, new IProperty[] { FACING }, new IUnlistedProperty[] { OBJModel.OBJProperty.instance }); } @Override public boolean doesSideBlockRendering(IBlockAccess world, BlockPos pos, EnumFacing face) { return false; } @Override public boolean isBlockSolid(IBlockAccess worldIn, BlockPos pos, EnumFacing side) { return false; } }