Yeah I'll definitely take another look at it. I want to implement the fact that when you try to chop down a 5 blocks high tree, it takes 5 * log hardness. Right now, I implemented it as so in the TrunkBlock class:
@Override
public float getBlockHardness(BlockState blockState, IBlockReader worldIn, BlockPos blockPos) {
return localTreeHeight(worldIn, blockPos) * super.blockHardness;
}
When the destruction propagation *is vertical*, the tree size is easy to compute, but if I add horizontal/diagonal propagation, I have to make sure that I don't count any log twice, and I think that one of your methods could solve that problem !
But anyway, my main issue right now is to have the vanilla trees use my TrunkBlock instead of vanilla <wood>_LOG Block. I think I could manage it by creating a custom Feature tree for each occurring tree in the calls to Biome#addFeature and somehow replace all of these occurrences but I don't know how yet