diff --git a/src/main/java/mcjty/xnet/blocks/cables/ConnectorBlock.java b/src/main/java/mcjty/xnet/blocks/cables/ConnectorBlock.java index 8144b7c0..3c3bdddb 100644 --- a/src/main/java/mcjty/xnet/blocks/cables/ConnectorBlock.java +++ b/src/main/java/mcjty/xnet/blocks/cables/ConnectorBlock.java @@ -25,6 +25,7 @@ import net.minecraft.block.Block; import net.minecraft.block.ITileEntityProvider; import net.minecraft.block.material.Material; +import net.minecraft.block.state.BlockFaceShape; import net.minecraft.block.state.IBlockState; import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.client.renderer.block.statemap.StateMapperBase; @@ -369,6 +370,22 @@ public boolean shouldSideBeRendered(IBlockState blockState, IBlockAccess blockAc } } + @Override + public BlockFaceShape getBlockFaceShape(IBlockAccess worldIn, IBlockState state, BlockPos pos, EnumFacing face) { + IBlockState mimicBlock = getMimicBlock(worldIn, pos); + if (mimicBlock != null) { + return mimicBlock.getBlockFaceShape(worldIn, pos, face); + } + + ConnectorType connectorType = getConnectorType(state.getValue(COLOR), worldIn, pos, face); + if (connectorType == ConnectorType.CABLE) { + return BlockFaceShape.CENTER_SMALL; + } else if (connectorType == ConnectorType.BLOCK) { + return BlockFaceShape.CENTER_BIG; + } + return BlockFaceShape.UNDEFINED; + } + @Override @SideOnly(Side.CLIENT) public boolean canRenderInLayer(IBlockState state, BlockRenderLayer layer) { diff --git a/src/main/java/mcjty/xnet/blocks/cables/NetCableBlock.java b/src/main/java/mcjty/xnet/blocks/cables/NetCableBlock.java index 36de8446..84c4dec0 100644 --- a/src/main/java/mcjty/xnet/blocks/cables/NetCableBlock.java +++ b/src/main/java/mcjty/xnet/blocks/cables/NetCableBlock.java @@ -5,6 +5,7 @@ import mcjty.xnet.blocks.generic.GenericCableBlock; import net.minecraft.block.Block; import net.minecraft.block.material.Material; +import net.minecraft.block.state.BlockFaceShape; import net.minecraft.block.state.IBlockState; import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.client.renderer.block.statemap.StateMapperBase; @@ -80,4 +81,11 @@ protected ConnectorType getConnectorType(@Nonnull CableColor color, IBlockAccess } } + @Override + public BlockFaceShape getBlockFaceShape(IBlockAccess worldIn, IBlockState state, BlockPos pos, EnumFacing face) { + if (getConnectorType(state.getValue(COLOR), worldIn, pos, face) == ConnectorType.CABLE) { + return BlockFaceShape.CENTER_SMALL; + } + return BlockFaceShape.UNDEFINED; + } } diff --git a/src/main/java/mcjty/xnet/blocks/facade/FacadeBlock.java b/src/main/java/mcjty/xnet/blocks/facade/FacadeBlock.java index c2aa9d06..9a5aafbe 100644 --- a/src/main/java/mcjty/xnet/blocks/facade/FacadeBlock.java +++ b/src/main/java/mcjty/xnet/blocks/facade/FacadeBlock.java @@ -7,6 +7,7 @@ import mcjty.xnet.init.ModBlocks; import net.minecraft.block.ITileEntityProvider; import net.minecraft.block.material.Material; +import net.minecraft.block.state.BlockFaceShape; import net.minecraft.block.state.IBlockState; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.block.model.ModelResourceLocation; @@ -150,6 +151,14 @@ public boolean shouldSideBeRendered(IBlockState blockState, IBlockAccess blockAc } @Override + public BlockFaceShape getBlockFaceShape(IBlockAccess worldIn, IBlockState state, BlockPos pos, EnumFacing face) { + IBlockState mimicBlock = getMimicBlock(worldIn, pos); + if (mimicBlock != null) { + return mimicBlock.getBlockFaceShape(worldIn, pos, face); + } + return super.getBlockFaceShape(worldIn, state, pos, face); + } + @SideOnly(Side.CLIENT) public boolean canRenderInLayer(IBlockState state, BlockRenderLayer layer) { return true; // delegated to FacadeBakedModel#getQuads