diff --git a/src/main/java/me/youhavetrouble/blockedit/SchematicHandler.java b/src/main/java/me/youhavetrouble/blockedit/SchematicHandler.java index aea36f0..6ada5f8 100644 --- a/src/main/java/me/youhavetrouble/blockedit/SchematicHandler.java +++ b/src/main/java/me/youhavetrouble/blockedit/SchematicHandler.java @@ -1,8 +1,13 @@ package me.youhavetrouble.blockedit; import me.youhavetrouble.blockedit.util.Clipboard; +import net.querz.nbt.io.NBTInputStream; +import net.querz.nbt.io.NamedTag; +import net.querz.nbt.tag.CompoundTag; +import net.querz.nbt.tag.Tag; -import java.io.File; +import java.io.*; +import java.util.zip.GZIPInputStream; public class SchematicHandler { @@ -31,9 +36,25 @@ public class SchematicHandler { /** * Loads a schematic from the schematics directory * @param schematicName Name of the schematic - * @return Clipboard object containing the schematic + * @return Clipboard object containing the schematic. Null if schematic does not exist */ public Clipboard loadSchematic(String schematicName) { + File schematicFile = new File(plugin.getDataFolder(), "schematics/" + schematicName + ".schematic"); + + try (DataInputStream dis = new DataInputStream(new BufferedInputStream(new GZIPInputStream(new FileInputStream(schematicFile))))) { + NamedTag tag = new NBTInputStream(dis).readTag(Tag.DEFAULT_MAX_DEPTH); + + if (tag == null) return null; + if (!(tag.getTag() instanceof CompoundTag compoundTag)) return null; + + plugin.getLogger().info(compoundTag.get("Width").toString()); + plugin.getLogger().info(compoundTag.get("Height").toString()); + plugin.getLogger().info(compoundTag.get("Length").toString()); + + } catch (IOException e) { + return null; + } + return null; }