@Override /** Updates the blocks bounds based on its current state. Args: world, x, y, z */ public void setBlockBoundsBasedOnState(IBlockAccess blockAccess, int x, int y, int z) { if (!rayTracing) { TEBase TE = getTileEntity(blockAccess, x, y, z); if (TE != null) { int slopeID = TE.getData(); Slope slope = Slope.slopesList[slopeID]; switch (slope.getPrimaryType()) { case PRISM: case PRISM_1P: case PRISM_2P: case PRISM_3P: case PRISM_4P: if (slope.isPositive) { setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.5F, 1.0F); } else { setBlockBounds(0.0F, 0.5F, 0.0F, 1.0F, 1.0F, 1.0F); } break; default: setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); break; } } } }
@Override /** Returns whether sides share faces based on sloping property and face shape. */ protected boolean shareFaces( TEBase TE_adj, TEBase TE_src, ForgeDirection side_adj, ForgeDirection side_src) { if (TE_adj.getBlockType() == this) { Slope slope_src = Slope.slopesList[TE_src.getData()]; Slope slope_adj = Slope.slopesList[TE_adj.getData()]; if (!slope_adj.hasSide(side_adj)) { return false; } else if (slope_src.getFaceBias(side_src) == slope_adj.getFaceBias(side_adj)) { return true; } else { return false; } } return super.shareFaces(TE_adj, TE_src, side_adj, side_src); }