diff --git a/StevenDimDoors/mod_pocketDim/commands/CommandEndDungeonCreation.java b/StevenDimDoors/mod_pocketDim/commands/CommandEndDungeonCreation.java index d17ef4cf..584114fb 100644 --- a/StevenDimDoors/mod_pocketDim/commands/CommandEndDungeonCreation.java +++ b/StevenDimDoors/mod_pocketDim/commands/CommandEndDungeonCreation.java @@ -1,13 +1,11 @@ package StevenDimDoors.mod_pocketDim.commands; -import java.util.regex.Pattern; +import java.io.File; import net.minecraft.command.CommandBase; import net.minecraft.command.ICommandSender; import net.minecraft.entity.player.EntityPlayer; import StevenDimDoors.mod_pocketDim.DDProperties; -import StevenDimDoors.mod_pocketDim.DungeonGenerator; -import StevenDimDoors.mod_pocketDim.mod_pocketDim; import StevenDimDoors.mod_pocketDim.helpers.DungeonHelper; public class CommandEndDungeonCreation extends CommandBase @@ -34,14 +32,14 @@ public class CommandEndDungeonCreation extends CommandBase if (!dungeonHelper.customDungeonStatus.containsKey(player.worldObj.provider.dimensionId)) { - if(var2.length<2) + if (var2.length < 2) { player.sendChatToPlayer("Must have started dungeon creation, use argument OVERRIDE to export anyway"); return; } - else if(!var2[1].contains("OVERRIDE")) + else if (!var2[1].contains("OVERRIDE")) { player.sendChatToPlayer("Must have started dungeon creation, use argument OVERRIDE to export anyway"); return; @@ -63,14 +61,22 @@ public class CommandEndDungeonCreation extends CommandBase //Check that the dungeon name is valid to prevent directory traversal and other forms of abuse if (DungeonHelper.NamePattern.matcher(var2[0]).matches()) { - DungeonGenerator newDungeon = dungeonHelper.exportDungeon(player.worldObj, x, y, z, properties.CustomSchematicDirectory + "/" + var2[0] + ".schematic"); - player.sendChatToPlayer("created dungeon schematic in " + properties.CustomSchematicDirectory + "/" + var2[0]+".schematic"); - - if (dungeonHelper.customDungeonStatus.containsKey(player.worldObj.provider.dimensionId) && !player.worldObj.isRemote) + String exportPath = properties.CustomSchematicDirectory + "/" + var2[0] + ".schematic"; + if (dungeonHelper.exportDungeon(player.worldObj, x, y, z, exportPath)) { - // mod_pocketDim.dungeonHelper.customDungeonStatus.remove(player.worldObj.provider.dimensionId); - // dimHelper.instance.teleportToPocket(player.worldObj, mod_pocketDim.dungeonHelper.customDungeonStatus.get(player.worldObj.provider.dimensionId), player); - + player.sendChatToPlayer("Saved dungeon schematic in " + exportPath); + dungeonHelper.registerCustomDungeon(new File(exportPath)); + + if (dungeonHelper.customDungeonStatus.containsKey(player.worldObj.provider.dimensionId) && !player.worldObj.isRemote) + { + // mod_pocketDim.dungeonHelper.customDungeonStatus.remove(player.worldObj.provider.dimensionId); + // dimHelper.instance.teleportToPocket(player.worldObj, mod_pocketDim.dungeonHelper.customDungeonStatus.get(player.worldObj.provider.dimensionId), player); + + } + } + else + { + player.sendChatToPlayer("Failed to save dungeon schematic!"); } } else diff --git a/StevenDimDoors/mod_pocketDim/helpers/DungeonHelper.java b/StevenDimDoors/mod_pocketDim/helpers/DungeonHelper.java index 5f236d17..b05ed70f 100644 --- a/StevenDimDoors/mod_pocketDim/helpers/DungeonHelper.java +++ b/StevenDimDoors/mod_pocketDim/helpers/DungeonHelper.java @@ -352,7 +352,7 @@ public class DungeonHelper } } - public DungeonGenerator exportDungeon(World world, int xI, int yI, int zI, String file) + public boolean exportDungeon(World world, int xI, int yI, int zI, String exportPath) { int xMin; int yMin; @@ -366,9 +366,8 @@ public class DungeonHelper yMin=yMax=yI; zMin=zMax=zI; - for(int count=0;count<50;count++) + for (int count = 0; count < 50; count++) { - if(world.getBlockId(xMin, yI, zI)!=properties.PermaFabricBlockID) { xMin--; @@ -492,17 +491,16 @@ public class DungeonHelper CompoundTag schematicTag = new CompoundTag("Schematic", schematic); try { - NBTOutputStream stream = new NBTOutputStream(new FileOutputStream(file)); + NBTOutputStream stream = new NBTOutputStream(new FileOutputStream(exportPath)); stream.writeTag(schematicTag); stream.close(); + return true; } catch(Exception e) { e.printStackTrace(); + return false; } - this.registerCustomDungeon(new File(file)); - - return new DungeonGenerator(0, file, true); } public void generateDungeonlink(LinkData incoming)