Returns:
            dict: In the form { (item_id, metadata) -> [(x, y, amount), ...] }

def ingredient_positions(self):
        """
        Returns:
            dict: In the form { (item_id, metadata) -> [(x, y, amount), ...] }
        """
        positions = defaultdict(list)
        for y, row in enumerate(self.in_shape):
            for x, (item_id, metadata, amount) in enumerate(row):
                positions[(item_id, metadata)].append((x, y, amount))
        return positions