Yes I looked.
package fr.chokearth.dog.object.block.base;
import net.minecraft.block.material.Material;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.properties.PropertyEnum;
import net.minecraft.block.state.BlockFaceShape;
import net.minecraft.block.state.BlockStateContainer;
import net.minecraft.block.state.IBlockState;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.IStringSerializable;
import net.minecraft.util.NonNullList;
import net.minecraft.util.Rotation;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import javax.annotation.Nullable;
import java.util.List;
public class BlockBase4_4 extends BlockBase {
public static final PropertyEnum<EnumFacing> FACING = PropertyEnum.<EnumFacing>create("facing", EnumFacing.class);
private boolean fullBlock = true;
private double axisAlignedBBTab[] = new double[6];
private NonNullList<double[]> collisionTab = NonNullList.<double[]>withSize(2, new double[6]);
public BlockBase4_4(String name, Material material, CreativeTabs tabs) {
super(name, material, tabs);
this.setDefaultState(this.blockState.getBaseState().withProperty(FACING, EnumFacing.NORTH));
this.collisionTab = null;
}
public BlockBase4_4(String name, Material material, CreativeTabs tabs, boolean fullBlock, double[] axisAlignedBBTab) {
super(name, material, tabs, fullBlock, axisAlignedBBTab);
this.setDefaultState(this.blockState.getBaseState().withProperty(FACING, EnumFacing.NORTH));
this.fullBlock = fullBlock;
this.axisAlignedBBTab = axisAlignedBBTab;
this.collisionTab.set(0, new double[]{0, 0.8125, 0.40625, 1, 1, 0.59375});
this.collisionTab.set(1, new double[]{0.40625, 0, 0.40625, 0.59375, 0.8125, 0.59375});
}
public BlockBase4_4(String name, Material material, CreativeTabs tabs, boolean fullBlock, double[] axisAlignedBBTab, NonNullList<double[]> collisionTab) {
super(name, material, tabs, fullBlock, axisAlignedBBTab);
this.setDefaultState(this.blockState.getBaseState().withProperty(FACING, EnumFacing.NORTH));
this.fullBlock = fullBlock;
this.axisAlignedBBTab = axisAlignedBBTab;
this.collisionTab = collisionTab;
}
@Override
public IBlockState getStateForPlacement(World worldIn, BlockPos pos, EnumFacing facing, float hitX, float hitY, float hitZ, int meta, EntityLivingBase placer) {
IBlockState iblockstate = super.getStateForPlacement(worldIn, pos, facing, hitX, hitY, hitZ, meta, placer);
iblockstate = iblockstate.withProperty(FACING, facing.getOpposite());
System.out.println(iblockstate.getValue(FACING));
return iblockstate;
}
@Override
public IBlockState getStateFromMeta(int meta) {
IBlockState iblockstate = this.getDefaultState().withProperty(FACING, EnumFacing.getFront(meta));
return iblockstate;
}
@Override
public int getMetaFromState(IBlockState state) {
int i = ((EnumFacing) state.getValue(FACING)).getIndex();
return i;
}
@Override
public IBlockState withRotation(IBlockState state, Rotation rot) {
return state.withProperty(FACING, rot.rotate((EnumFacing) state.getValue(FACING)));
}
@Override
protected BlockStateContainer createBlockState() {
return new BlockStateContainer(this, new IProperty[]{FACING});
}
@Override
public boolean isFullBlock(IBlockState state) {
return fullBlock;
}
@Override
public boolean isOpaqueCube(IBlockState state) {
return fullBlock;
}
@Override
public BlockFaceShape getBlockFaceShape(IBlockAccess worldIn, IBlockState state, BlockPos pos, EnumFacing face) {
if (face == EnumFacing.NORTH) return BlockFaceShape.SOLID;
return BlockFaceShape.UNDEFINED;
}
@Override
public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess source, BlockPos pos) {
return new AxisAlignedBB(axisAlignedBBTab[0], axisAlignedBBTab[1], axisAlignedBBTab[2], axisAlignedBBTab[3], axisAlignedBBTab[4], axisAlignedBBTab[5]);
}
@Override
public boolean isSideSolid(IBlockState base_state, IBlockAccess world, BlockPos pos, EnumFacing side) {
return false;
}
@Override
public boolean isPassable(IBlockAccess worldIn, BlockPos pos) {
return true;
}
@Override
public void addCollisionBoxToList(IBlockState state, World worldIn, BlockPos pos, AxisAlignedBB entityBox, List<AxisAlignedBB> collidingBoxes, @Nullable Entity entityIn, boolean isActualState) {
for (int i = 0; i < collisionTab.size(); i++)
addCollisionBoxToList(pos, entityBox, collidingBoxes, new AxisAlignedBB(collisionTab.get(i)[0], collisionTab.get(i)[1], collisionTab.get(i)[2], collisionTab.get(i)[3], collisionTab.get(i)[4], collisionTab.get(i)[5]));
}
@Override
@SideOnly(Side.CLIENT)
public boolean shouldSideBeRendered(IBlockState blockState, IBlockAccess blockAccess, BlockPos pos, EnumFacing side) {
return true;
}
}