Shulkers in boats with chests are lowered
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_boat as well
- An 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.
Created Issue:
Shulkers in boats with chests are lowered
In normal boats and minecarts, shulkers use a custom height offset so that they do not intersect the entity they are mounted on. 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 would easily be fixed by checking for the entity type
{minecraft:chest_boat}, or just checking
{entityType instanceof BoatEntity}, which both boats and boats with chests satisfy. The latter is ideal since modded boats otherwise need to solve this same issue.
In normal boats and minecarts, shulkers use a custom height offset so that they do not intersect the entity they are mounted on. 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 would easily be fixed by checking for the entity type
{minecraft:chest_boat}, or just checking
{entityType instanceof BoatEntity}, which both boats and boats with chests satisfy. The latter is ideal since modded boats otherwise need to solve this same issue.
In normal boats and minecarts, shulkers use a custom height offset so that they do not intersect the entity they are mounted on. 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 would easily be fixed by checking for the entity type minecraft:chest_boat, or just checking entityType instanceof BoatEntity, which both boats and boats with chests satisfy. The latter is ideal since modded boats otherwise need to solve this same issue.
In normal boats and minecarts, shulkers use a custom height offset so that they do not intersect the
entity they are mounted on. 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 would easily be fixed by checking for the entity type minecraft:chest_boat, or just checking entityType instanceof BoatEntity
, which both boats and boats with chests satisfy. The latteris ideal since modded boats otherwise need to solve this same issue.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_boat as well
- An 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.
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_boat as well
- An 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.
relates to
relates to


I can also confirm this behavior. MC-249463.mp4
MC-249463.png
You can execute the following commands to observe this issue.
/summon minecraft:boat ~-2 ~ ~ {Passengers:[{id:"minecraft:shulker"}]}/summon minecraft:chest_boat ~2 ~ ~ {Passengers:[{id:"minecraft:shulker"}]}