I'm working on some path finding code, in which I want to be able to get the collision box for a certain block (or more specifically the maxY component of the collision box. Minecraft's path finding code uses
blockaccess.getBlockState(blockpos).getBoundingBox(blockaccess, blockpos)
however this doesn't give correct results for fences since their bounding box is smaller than their actual collision box, with maxY of 1.0 instead of the 1.5 I would expect. The following also does not work (returns 1.0 for maxY)
blockaccess.getBlockState(blockpos).getCollisionBoundingBox(blockaccess, blockpos)
For context, the reason I want to get the maxY component is to determine if a result from findPathOptions is reversible, and could be traversed either way. Currently I have this:
public static boolean reversible(PathPoint first, PathPoint second, CorePathingData data){
BlockPos firstBlockPos = (new BlockPos(first.x, first.y, first.z)).down();
BlockPos secondBlockPos = (new BlockPos(second.x, second.y, second.z)).down();
double realFirstY = (double) first.y - (1.0D - data.world.getBlockState(firstBlockPos).getBoundingBox(data.world, firstBlockPos).maxY);
double realSecondY = (double) second.y - (1.0D - data.world.getBlockState(secondBlockPos).getBoundingBox(data.world, secondBlockPos).maxY);
return Math.abs(realFirstY - realSecondY) <= 1;
}
however this doesn't work for fences. How can I get the collision box of the block at a certain BlockPos? (Or is there an obvious better way to implement the reversible function?)