From e429287b83904d4d0576c3cf292a85eabb48c888 Mon Sep 17 00:00:00 2001 From: syeyoung Date: Fri, 26 Feb 2021 14:57:15 +0900 Subject: schematics bruh --- .../commands/CommandDungeonsGuide.java | 41 ++++++++++++++++++++++ .../roomedit/panes/GeneralEditPane.java | 31 +++++++++++++--- 2 files changed, 67 insertions(+), 5 deletions(-) (limited to 'src/main/java/kr/syeyoung') diff --git a/src/main/java/kr/syeyoung/dungeonsguide/commands/CommandDungeonsGuide.java b/src/main/java/kr/syeyoung/dungeonsguide/commands/CommandDungeonsGuide.java index b53917ee..e329beb6 100644 --- a/src/main/java/kr/syeyoung/dungeonsguide/commands/CommandDungeonsGuide.java +++ b/src/main/java/kr/syeyoung/dungeonsguide/commands/CommandDungeonsGuide.java @@ -16,20 +16,25 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.entity.EntityPlayerSP; import net.minecraft.command.CommandBase; import net.minecraft.command.ICommandSender; +import net.minecraft.nbt.CompressedStreamTools; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ChatComponentText; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.common.gameevent.TickEvent; +import net.minecraftforge.fml.relauncher.ReflectionHelper; import javax.crypto.BadPaddingException; import javax.crypto.IllegalBlockSizeException; import javax.crypto.NoSuchPaddingException; import java.awt.*; import java.io.*; +import java.lang.reflect.Method; import java.security.*; import java.security.cert.CertificateException; import java.text.SimpleDateFormat; import java.util.Date; +import java.util.zip.GZIPOutputStream; public class CommandDungeonsGuide extends CommandBase { @Override @@ -191,6 +196,42 @@ public class CommandDungeonsGuide extends CommandBase { } catch (Throwable t) { t.printStackTrace(); } +// } else if (args[0].equals("fixschematic")) { +// File root = new File(e.getDungeonsGuide().getConfigDir(), "schematics"); +// Method method = null; +// try { +// method = NBTTagCompound.class.getDeclaredMethod("write", DataOutput.class); +// method.setAccessible(true); +// } catch (NoSuchMethodException e) { +// e.printStackTrace(); +// return; +// } +// for (File f : root.listFiles()) { +// try { +// NBTTagCompound nbtTagCompound = CompressedStreamTools.readCompressed(new FileInputStream(f)); +// if (nbtTagCompound.getKeySet().isEmpty()) { +// System.out.println("ah"); +// return; +// } +// nbtTagCompound.setString("Materials","Alpha"); +// FileOutputStream fos = new FileOutputStream(f); +// DataOutputStream dataoutputstream = new DataOutputStream(new BufferedOutputStream(new GZIPOutputStream(fos))); +// +// try +// { +// dataoutputstream.writeByte(nbtTagCompound.getId()); +// +// dataoutputstream.writeUTF("Schematic"); +// method.invoke(nbtTagCompound, dataoutputstream); +// } +// finally +// { +// dataoutputstream.close(); +// } +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } } else { sender.addChatMessage(new ChatComponentText("§eDungeons Guide §7:: §e/dg §7-§fOpens configuration gui")); sender.addChatMessage(new ChatComponentText("§eDungeons Guide §7:: §e/dg gui §7-§fOpens configuration gui")); diff --git a/src/main/java/kr/syeyoung/dungeonsguide/roomedit/panes/GeneralEditPane.java b/src/main/java/kr/syeyoung/dungeonsguide/roomedit/panes/GeneralEditPane.java index f4450bd2..c23d7c0d 100755 --- a/src/main/java/kr/syeyoung/dungeonsguide/roomedit/panes/GeneralEditPane.java +++ b/src/main/java/kr/syeyoung/dungeonsguide/roomedit/panes/GeneralEditPane.java @@ -18,9 +18,11 @@ import net.minecraft.util.BlockPos; import net.minecraft.util.ChatComponentText; import java.awt.*; -import java.io.File; +import java.io.*; +import java.lang.reflect.Method; import java.util.ArrayList; import java.util.UUID; +import java.util.zip.GZIPOutputStream; public class GeneralEditPane extends MPanel { private DungeonRoom dungeonRoom; @@ -130,13 +132,32 @@ public class GeneralEditPane extends MPanel { public void run() { try { NBTTagCompound nbtTagCompound2 = createNBT(); - NBTTagCompound real = new NBTTagCompound(); - real.setTag("Schematic", nbtTagCompound2); File f=new File(e.getDungeonsGuide().getConfigDir(), "schematics/"+ dungeonRoom.getDungeonRoomInfo().getName()+"-"+dungeonRoom.getDungeonRoomInfo().getUuid().toString()+"-"+ UUID.randomUUID()+".schematic"); - CompressedStreamTools.write(nbtTagCompound2, f); + Method method = null; + try { + method = NBTTagCompound.class.getDeclaredMethod("write", DataOutput.class); + method.setAccessible(true); + } catch (NoSuchMethodException e) { + e.printStackTrace(); + return; + } + FileOutputStream fos = new FileOutputStream(f); + DataOutputStream dataoutputstream = new DataOutputStream(new BufferedOutputStream(new GZIPOutputStream(fos))); + + try + { + dataoutputstream.writeByte(nbtTagCompound2.getId()); + + dataoutputstream.writeUTF("Schematic"); + method.invoke(nbtTagCompound2, dataoutputstream); + } + finally + { + dataoutputstream.close(); + } Minecraft.getMinecraft().thePlayer.addChatMessage(new ChatComponentText("§eDungeons Guide §7:: §fSaved to "+f.getName())); } catch (Throwable e) { e.printStackTrace(); @@ -235,7 +256,7 @@ public class GeneralEditPane extends MPanel { compound.setByteArray("Blocks", blocks); compound.setByteArray("Data", meta); - compound.setString("Materials", "Classic"); + compound.setString("Materials", "Alpha"); if (extraEx) { compound.setByteArray("AddBlocks", extranibble); } -- cgit