Mojira Archive
MC-103452

Structure blocks don't load passenger entities

The bug

When you have an entity riding another entity, and save it in a structure, only the bottom entity gets saved.

How to reproduce

  1. Save a structure which includes an entity riding another entity
  2. Load the structure
  3. Notice how the structure only loads the bottom entity.

Notes

  • Reloading the world does not fix the issue
  • I am not playing on peaceful mode.

Code analysis

Based on 1.11 decompiled using MCP 9.35 rc1

This happens because the method net.minecraft.world.gen.structure.template.Template.addEntitiesToWorld(World, BlockPos, Mirror, Rotation, StructureBoundingBox) calls the method net.minecraft.entity.EntityList.createEntityFromNBT(NBTTagCompound, World) to create the entity. However, this method cannot load Passengers entities. Instead the method net.minecraft.world.chunk.storage.AnvilChunkLoader.readWorldEntityPos(NBTTagCompound, World, double, double, double, boolean) could be called with the vector values and true to only try to spawn the entity but don't force it.

Edit: The passengers have to get a new random UUID as well, therefor this method cannot be used.