Posted June 12, 20187 yr Hello, I make a block like a fence, but when I approach, the block pushes me away.
June 12, 20187 yr Did you look at the code for BlockFence? Did you look at what they do for collision bounding box? Edited June 12, 20187 yr by jabelar Check out my tutorials here: http://jabelarminecraft.blogspot.com/
June 12, 20187 yr Author 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; } }
June 12, 20187 yr 6 hours ago, Chokearth said: private boolean fullBlock = true; Could this be your problem?
June 14, 20187 yr Author Okay, I found, I was using isFullBlock () instead of isFullCube (). Edited June 14, 20187 yr by Chokearth
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.