diff options
Diffstat (limited to 'src/main/java/kr/syeyoung/dungeonsguide/roomedit/panes/GeneralEditPane.java')
-rwxr-xr-x | src/main/java/kr/syeyoung/dungeonsguide/roomedit/panes/GeneralEditPane.java | 285 |
1 files changed, 0 insertions, 285 deletions
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/roomedit/panes/GeneralEditPane.java b/src/main/java/kr/syeyoung/dungeonsguide/roomedit/panes/GeneralEditPane.java deleted file mode 100755 index 1133a8a9..00000000 --- a/src/main/java/kr/syeyoung/dungeonsguide/roomedit/panes/GeneralEditPane.java +++ /dev/null @@ -1,285 +0,0 @@ -/* - * Dungeons Guide - The most intelligent Hypixel Skyblock Dungeons Mod - * Copyright (C) 2021 cyoung06 - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published - * by the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <https://www.gnu.org/licenses/>. - */ - -package kr.syeyoung.dungeonsguide.roomedit.panes; - -import kr.syeyoung.dungeonsguide.DungeonsGuide; -import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoom; -import kr.syeyoung.dungeonsguide.dungeon.roomfinder.DungeonRoomInfoRegistry; -import kr.syeyoung.dungeonsguide.roomedit.EditingContext; -import kr.syeyoung.dungeonsguide.gui.MPanel; -import kr.syeyoung.dungeonsguide.gui.elements.*; -import kr.syeyoung.dungeonsguide.roomprocessor.ProcessorFactory; -import net.minecraft.block.Block; -import net.minecraft.block.state.IBlockState; -import net.minecraft.client.Minecraft; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagList; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.BlockPos; -import net.minecraft.util.ChatComponentText; - -import java.awt.*; -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 final DungeonRoom dungeonRoom; - - private final MLabelAndElement uuid; - private final MLabelAndElement name; - private final MLabelAndElement secrets; - - private final MLabelAndElement shape; - private final MLabelAndElement rotation; - private final MLabelAndElement shape2; - - private MButton save; - private final MButton end; - private final MButton schematic; - - private final MLabelAndElement roomProcessor; - - public GeneralEditPane(final DungeonRoom dungeonRoom) { - this.dungeonRoom = dungeonRoom; - { - MLabel la; - uuid = new MLabelAndElement("Room UUID: ", la = new MLabel()); - la.setText(dungeonRoom.getDungeonRoomInfo().getUuid().toString()); - uuid.setBounds(new Rectangle(0,0,getBounds().width, 20)); - add(uuid); - } - { - MTextField la = new MTextField() { - @Override - public void edit(String str) { - dungeonRoom.getDungeonRoomInfo().setName(str); - } - }; - name = new MLabelAndElement("Room Name: ", la); - la.setText(dungeonRoom.getDungeonRoomInfo().getName()); - name.setBounds(new Rectangle(0,20,getBounds().width, 20)); - add(name); - } - { - final MIntegerSelectionButton la = new MIntegerSelectionButton(dungeonRoom.getDungeonRoomInfo().getTotalSecrets()); - la.setOnUpdate(new Runnable() { - @Override - public void run() { - dungeonRoom.getDungeonRoomInfo().setTotalSecrets(la.getData()); - } - }); - secrets = new MLabelAndElement("Room Secrets: ", la); - secrets.setBounds(new Rectangle(0,40,getBounds().width, 20)); - add(secrets); - } - - { - MLabel la; - shape = new MLabelAndElement("Room Shape: ", la = new MLabel()); - la.setText(dungeonRoom.getDungeonRoomInfo().getShape()+""); - shape.setBounds(new Rectangle(0,60,getBounds().width, 20)); - add(shape); - } - - { - MLabel la; - rotation = new MLabelAndElement("Found Room Rotation: ", la = new MLabel()); - la.setText(dungeonRoom.getRoomMatcher().getRotation()+""); - rotation.setBounds(new Rectangle(0,80,getBounds().width, 20)); - add(rotation); - } - { - MLabel la; - shape2 = new MLabelAndElement("Found Room Shape: ", la = new MLabel()); - la.setText(dungeonRoom.getShape()+""); - shape2.setBounds(new Rectangle(0,100,getBounds().width, 20)); - add(shape2); - } - { - final MStringSelectionButton mStringSelectionButton = new MStringSelectionButton(new ArrayList<String>(ProcessorFactory.getProcessors()), dungeonRoom.getDungeonRoomInfo().getProcessorId()); - roomProcessor = new MLabelAndElement("Room Processor: ", mStringSelectionButton); - roomProcessor.setBounds(new Rectangle(0,120,getBounds().width, 20)); - add(roomProcessor); - - mStringSelectionButton.setOnUpdate(new Runnable() { - @Override - public void run() { - dungeonRoom.getDungeonRoomInfo().setProcessorId(mStringSelectionButton.getSelected()); - dungeonRoom.updateRoomProcessor(); - } - }); - } - { - end = new MButton(); - end.setText("End Editing Session"); - end.setOnActionPerformed(new Runnable() { - @Override - public void run() { - EditingContext.endEditingSession(); - } - }); - end.setBackgroundColor(Color.green); - end.setBounds(new Rectangle(0,140,getBounds().width, 20)); - add(end); - } - { - schematic = new MButton(); - schematic.setText("Save Schematic"); - schematic.setOnActionPerformed(new Runnable() { - @Override - public void run() { - try { - NBTTagCompound nbtTagCompound2 = createNBT(); - - File f=new File(DungeonsGuide.getDungeonsGuide().getConfigDir(), "schematics/"+ - dungeonRoom.getDungeonRoomInfo().getName()+"-"+dungeonRoom.getDungeonRoomInfo().getUuid().toString()+"-"+ UUID.randomUUID()+".schematic"); - - 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(); - } - - } - }); - schematic.setBackgroundColor(Color.orange); - schematic.setBounds(new Rectangle(0,180,getBounds().width, 20)); - add(schematic); - } - { - if (dungeonRoom.getDungeonRoomInfo().isRegistered()) return; - save = new MButton(); - save.setText("Save RoomData"); - save.setOnActionPerformed(new Runnable() { - @Override - public void run() { - DungeonRoomInfoRegistry.register(dungeonRoom.getDungeonRoomInfo()); - remove(save); - } - }); - save.setBackgroundColor(Color.green); - save.setBounds(new Rectangle(0,10,getBounds().width, 20)); - add(save); - } - } - - @Override - public void resize(int parentWidth, int parentHeight) { - this.setBounds(new Rectangle(5,5,parentWidth-10,parentHeight-10)); - } - - @Override - public void onBoundsUpdate() { - if (save != null) - save.setBounds(new Rectangle(0,160,getBounds().width, 20)); - end.setBounds(new Rectangle(1,140,getBounds().width-2, 20)); - if (schematic != null) - schematic.setBounds(new Rectangle(0,180,getBounds().width, 20)); - } - - private NBTTagCompound createNBT() { - NBTTagCompound compound = new NBTTagCompound(); - compound.setShort("Width", (short) (dungeonRoom.getMax().getX() - dungeonRoom.getMin().getX() + 1)); - compound.setShort("Height", (short) 255); - compound.setShort("Length", (short) (dungeonRoom.getMax().getZ() - dungeonRoom.getMin().getZ() + 1)); - int size =compound.getShort("Width") * compound.getShort("Height") * compound.getShort("Length"); - - byte[] blocks = new byte[size]; - byte[] meta = new byte[size]; - byte[] extra = new byte[size]; - byte[] extranibble = new byte[(int) Math.ceil(size / 2.0)]; - - boolean extraEx = false; - NBTTagList tileEntitiesList = new NBTTagList(); - for (int x = 0; x < compound.getShort("Width"); x++) { - for (int y = 0; y < compound.getShort("Height"); y++) { - for (int z = 0; z < compound.getShort("Length"); z++) { - int index = x + (y * compound.getShort("Length") + z) * compound.getShort("Width"); - BlockPos pos = dungeonRoom.getRelativeBlockPosAt(x,y - 70,z); - IBlockState blockState = dungeonRoom.getContext().getWorld().getBlockState(pos); - boolean acc = dungeonRoom.canAccessRelative(x,z); - int id = Block.getIdFromBlock(blockState.getBlock()); - blocks[index] = acc ? (byte) id : 0; - meta[index] = acc ? (byte) blockState.getBlock().getMetaFromState(blockState) : 0; - if ((extra[index] = (byte) ((acc ? id : 0) >> 8)) > 0) { - extraEx = true; - } - - if (blockState.getBlock().hasTileEntity(blockState)) { - TileEntity tileEntity = dungeonRoom.getContext().getWorld().getTileEntity(pos); - try { - final NBTTagCompound tileEntityCompound = new NBTTagCompound(); - tileEntity.writeToNBT(tileEntityCompound); - tileEntitiesList.appendTag(tileEntityCompound); - } catch (final Exception e) { - final BlockPos tePos = tileEntity.getPos(); - - blocks[index] = (byte) 7; - meta[index] = 0; - extra[index] = 0; - } - } - } - } - } - for (int i = 0; i < extranibble.length; i++) { - if (i * 2 + 1 < extra.length) { - extranibble[i] = (byte) ((extra[i * 2 + 0] << 4) | extra[i * 2 + 1]); - } else { - extranibble[i] = (byte) (extra[i * 2 + 0] << 4); - } - } - - - compound.setByteArray("Blocks", blocks); - compound.setByteArray("Data", meta); - compound.setString("Materials", "Alpha"); - if (extraEx) { - compound.setByteArray("AddBlocks", extranibble); - } - compound.setTag("Entities", new NBTTagList()); - compound.setTag("TileEntities", tileEntitiesList); - - return compound; - } -} |