From dddabe30cc02567877cd97b2c67016052b38d438 Mon Sep 17 00:00:00 2001 From: iceBear67 Date: Mon, 6 Jan 2025 20:15:01 +0800 Subject: [PATCH] Support reading litematic regions' name --- .../io/ib67/sfcraft/util/LitematicConverter.java | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/src/main/java/io/ib67/sfcraft/util/LitematicConverter.java b/src/main/java/io/ib67/sfcraft/util/LitematicConverter.java index 2723c9c..509362e 100644 --- a/src/main/java/io/ib67/sfcraft/util/LitematicConverter.java +++ b/src/main/java/io/ib67/sfcraft/util/LitematicConverter.java @@ -29,25 +29,21 @@ public class LitematicConverter implements AutoCloseable { @SneakyThrows public void read( - BiConsumer schematicOutput + BiConsumer schematicOutput ) { if (root != null) throw new IllegalStateException("Litematica file is already read"); root = NbtIo.readCompressed(input, sizeTracker).getCompound(NBT_LITEMATICA_ROOT); var dataVersion = root.getInt("MinecraftDataVersion"); - var regionsNbt = root.getList("Regions", NbtElement.COMPOUND_TYPE); + var regionsNbt = root.getCompound("Regions"); var i = 0; - for (NbtElement nbtElement : regionsNbt) { - var compound = (NbtCompound) nbtElement; + for (String regionName : regionsNbt.getKeys()) { + var compound = regionsNbt.getCompound(regionName); var j = i++; var schematic = convertRegionToSchematic(dataVersion, compound); - schematicOutput.accept(j, schematic); + schematicOutput.accept(regionName, schematic); } } - /** - * @param region region - * @return a path to temp file. - */ private NbtCompound convertRegionToSchematic(int dataVersion, NbtCompound region) { var worldEditTag = new NbtCompound();