protected final void func_180701_a(
      World world, int x, int z, int p_180701_4_, int p_180701_5_, ChunkPrimer primer) {
    this.func_143027_a(world);

    if (!this.structureMap.containsKey(ChunkPos.toLong(x, z))) {
      if (this.canSpawnStructureAtCoords(x, z)) {
        StructureStart start = this.getStructureStart(x, z);
        this.structureMap.put(ChunkPos.toLong(x, z), start);
        this.addStructureStart(x, z, start);
      }
    }
  }
  private void func_143027_a(World world) {
    if (this.itemData == null) {
      this.itemData = world.loadItemData(MapGenStructureData.class, this.getStructureName());

      if (this.itemData == null) {
        this.itemData = new MapGenStructureData(this.getStructureName());
        world.setItemData(this.getStructureName(), this.itemData);
      } else {
        NBTTagCompound var2 = this.itemData.getTag();

        for (String var4 : var2.getKeySet()) {
          NBTBase var5 = var2.getTag(var4);

          if (var5.getType() == 10) {
            NBTTagCompound var6 = (NBTTagCompound) var5;

            if (var6.hasKey("ChunkX") && var6.hasKey("ChunkZ")) {
              int x = var6.getInteger("ChunkX");
              int z = var6.getInteger("ChunkZ");
              StructureStart var9 = MapGenStructureIO.func_143035_a(var6);

              if (var9 != null) {
                this.structureMap.put(ChunkPos.toLong(x, z), var9);
              }
            }
          }
        }
      }
    }
  }