When you set the BlockState you will use IBlockAccess#setBlockState(BlockPos, IBlockState). To get the IBlockState you will do Block#getDefaultState() which you will set to something in your constructor, but if you want to use a different value than the default you do Block#getDefaultState().withProperty(IProperty, value). The IProperty must be the same instance you used for setting the Default and the BlockStateContainer, if you do not change the value with a IBlockState.withProperty then it will stay at it's default value. It will decrease if you manually change it in the state, and not change the state though this will only happen on the side you change it on so it is better to do it in the way described above also know as changing the state. I recommend a Forge BlockState JSON for this; read about it here.