In normal boats and minecarts, shulkers use a custom height offset so that they do not intersect their vehicle. This override is defined within Yarn mappings' ShulkerEntity#getHeightOffset:
@Override
public double getHeightOffset() {
EntityType<?> entityType = this.getVehicle().getType();
if (entityType == EntityType.BOAT || entityType == EntityType.MINECART) {
return 0.1875 - this.getVehicle().getMountedHeightOffset();
}
return super.getHeightOffset();
}In case it isn't obvious, boats aren't boats with chests. That's actually not that obvious, but boats are the entity type minecraft:boat, while boats with chests are the entity type minecraft:chest_boat. As such, for boats with chests, entityType == EntityType.BOAT is false (and of course, in case it isn't obvious, boats aren't minecarts).
This problem is easily fixed by expanding the vehicle check. For example:
Checking for the entity type
minecraft:chest_boatas wellAn entity type tag!
Checking
entityType instanceof BoatEntity, which both boats and boats with chests satisfy
The last proposed solution is ideal since modded boats otherwise need to solve this same issue.
I can also confirm this behavior.
You can execute the following commands to observe this issue.