как теперь получить список предметов и шалкере

Версия Minecraft
1.20.6
API
Fabric
был значит такой код
Java:
public record ShulkerInfo(String name, Type type, int color, int slot, List<ItemStack> stacks) {

    public static ShulkerInfo create(ItemStack stack, int slot) {
        if (!(stack.getItem() instanceof BlockItem) || !(((BlockItem) stack.getItem()).getBlock() instanceof ShulkerBoxBlock)) return null;
        ShulkerBoxBlock block = (ShulkerBoxBlock) ((BlockItem) stack.getItem()).getBlock();
        List<ItemStack> items = DefaultedList.ofSize(27, ItemStack.EMPTY);

        NbtCompound nbt = stack.getOrCreateNbt().contains("BlockEntityTag", 10)
            ? stack.getNbt().getCompound("BlockEntityTag") : stack.getNbt();

        Type type = Type.COMPACT;

        if (!Modules.get().get(InventoryInfoModule.class).compact.get()) type = Type.FULL;

        if (nbt.contains("Items", 9)) {
            Item unstackable = null;
            NbtList nbt2 = nbt.getList("Items", 10);
            for (int i = 0; i < nbt2.size(); i++) {
                int slot2 = nbt2.getCompound(i).contains("Slot", 99) ? nbt2.getCompound(i).getByte("Slot") : i;
                ItemStack item = ItemStack.fromNbt(nbt2.getCompound(i));
                items.set(slot2, item);
                if (item.getMaxCount() == 1) {
                    if (unstackable != null && !item.getItem().equals(unstackable)) type = Type.FULL;
                    unstackable = item.getItem();
                }
            }
        }

        if (type == Type.COMPACT) {
            Map<Item, Integer> map = new HashMap<>();
            for (ItemStack item : items) {
                if (item.isEmpty()) continue;
                map.compute(item.getItem(), (k, v) -> {
                    if (v == null) return item.getCount();
                    return v + item.getCount();
                });
            }
            items.clear();
            int k = 0;
            for (Map.Entry<Item, Integer> entry : map.entrySet()) {
                items.set(k, new ItemStack(entry.getKey(), entry.getValue()));
                k++;
            }
        }

        int color = -1;
        if (block.getColor() != null) {
            float[] components = block.getColor().getColorComponents();
            color = new Color(components[0], components[1], components[2]).hashCode();
        }

        return new ShulkerInfo(stack.getName().getString(), type, color, slot, items);
    }

}

все работало как следует на версии до 1.20.4. Решил собрать мод под версию 1.20.6 и случилась беда, собственно теперь itemStack не содержит nbt и как теперь оттуда братьсписок item-ов
 
Вместо нбт у предметов, с версии 1.20.5, теперь компоненты. Так что, чтобы получить данные блок энтити из предмета, надо использовать stack.get(DataComponentTypes.BLOCK_ENTITY_DATA); . Вот тут можно об этом подробнее почитать, в разделе Item Components Fabric for Minecraft 1.20.5 & 1.20.6
 
Сверху