From d0799c3b1b385260d62d97d1a6fe1f1e8e841806 Mon Sep 17 00:00:00 2001 From: Managarmr Date: Wed, 25 Apr 2018 01:42:04 +0100 Subject: [PATCH 1/2] Made cable faces UNDEFINED --- .../java/mcjty/xnet/blocks/generic/GenericCableBlock.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/java/mcjty/xnet/blocks/generic/GenericCableBlock.java b/src/main/java/mcjty/xnet/blocks/generic/GenericCableBlock.java index a60a913e..4993ea64 100644 --- a/src/main/java/mcjty/xnet/blocks/generic/GenericCableBlock.java +++ b/src/main/java/mcjty/xnet/blocks/generic/GenericCableBlock.java @@ -25,6 +25,7 @@ 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.client.renderer.block.model.ModelResourceLocation; @@ -310,6 +311,11 @@ public boolean shouldSideBeRendered(IBlockState blockState, IBlockAccess blockAc return false; } + @Override + public BlockFaceShape getBlockFaceShape(IBlockAccess worldIn, IBlockState state, BlockPos pos, EnumFacing face) { + return BlockFaceShape.UNDEFINED; + } + @Override public boolean isBlockNormalCube(IBlockState blockState) { return false; From 7c93a301a4423aec151c5035c2b37820fe873755 Mon Sep 17 00:00:00 2001 From: Managarmr Date: Mon, 30 Apr 2018 02:45:02 +0100 Subject: [PATCH 2/2] Cables now return blockFaceShape based on connections When disguised return value from mimicked block. --- .../xnet/blocks/cables/ConnectorBlock.java | 17 +++++++++++++++++ .../mcjty/xnet/blocks/cables/NetCableBlock.java | 8 ++++++++ .../mcjty/xnet/blocks/facade/FacadeBlock.java | 9 +++++++++ .../xnet/blocks/generic/GenericCableBlock.java | 6 ------ 4 files changed, 34 insertions(+), 6 deletions(-) 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 diff --git a/src/main/java/mcjty/xnet/blocks/generic/GenericCableBlock.java b/src/main/java/mcjty/xnet/blocks/generic/GenericCableBlock.java index 4993ea64..a60a913e 100644 --- a/src/main/java/mcjty/xnet/blocks/generic/GenericCableBlock.java +++ b/src/main/java/mcjty/xnet/blocks/generic/GenericCableBlock.java @@ -25,7 +25,6 @@ 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.client.renderer.block.model.ModelResourceLocation; @@ -311,11 +310,6 @@ public boolean shouldSideBeRendered(IBlockState blockState, IBlockAccess blockAc return false; } - @Override - public BlockFaceShape getBlockFaceShape(IBlockAccess worldIn, IBlockState state, BlockPos pos, EnumFacing face) { - return BlockFaceShape.UNDEFINED; - } - @Override public boolean isBlockNormalCube(IBlockState blockState) { return false;