When entities are on the edge of for example a trapdoor or slab, and their hitbox extends outside the trapdoor or slab and then you try to push the entity with a boat by riding it the entity doesn't get pushed, even though both hitboxes clearly collide. After looking in the code it clearly looks like a bug.
Code Analysis
(yarn mappings: net.minecraft.entity.vehicle boatEntity.java)
@Override public void pushAwayFrom(Entity arg) { if (arg instanceof BoatEntity) { if (arg.getBoundingBox().minY < this.getBoundingBox().maxY) { super.pushAwayFrom(arg); } } else if (arg.getBoundingBox().minY <= this.getBoundingBox().minY) { super.pushAwayFrom(arg); } }
As you can see when a boat and a non boat entity collide it only pushes the entity if the bottom of hitbox from the boat is on the same height, or higher than the bottom of the hitbox from the entity, as can bee seen in the following line:
else if (arg.getBoundingBox().minY <= this.getBoundingBox().minY)
This seems very unintntional and it would be very easily fixed by changing that line to
else if (arg.getBoundingBox().minY <= this.getBoundingBox().maxY)