Improved DungeonHelper
Separated exportDungeon() from registerCustomDungeon() - exporting a dungeon no longer automatically registers it. Also changed exportDungeon() so that it returns a boolean indicating success or failure, instead of an instance of DungeonGenerator that was never being used. I modified CommandEndDungeonCreation so that it can warn you if exporting the dungeon failed (if exportDungeon() returned false), and also, to register the dungeon after it's exported since it's no longer automatic.
This commit is contained in:
parent
a95b282814
commit
61297c3a3a
2 changed files with 23 additions and 19 deletions
|
@ -1,13 +1,11 @@
|
||||||
package StevenDimDoors.mod_pocketDim.commands;
|
package StevenDimDoors.mod_pocketDim.commands;
|
||||||
|
|
||||||
import java.util.regex.Pattern;
|
import java.io.File;
|
||||||
|
|
||||||
import net.minecraft.command.CommandBase;
|
import net.minecraft.command.CommandBase;
|
||||||
import net.minecraft.command.ICommandSender;
|
import net.minecraft.command.ICommandSender;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import StevenDimDoors.mod_pocketDim.DDProperties;
|
import StevenDimDoors.mod_pocketDim.DDProperties;
|
||||||
import StevenDimDoors.mod_pocketDim.DungeonGenerator;
|
|
||||||
import StevenDimDoors.mod_pocketDim.mod_pocketDim;
|
|
||||||
import StevenDimDoors.mod_pocketDim.helpers.DungeonHelper;
|
import StevenDimDoors.mod_pocketDim.helpers.DungeonHelper;
|
||||||
|
|
||||||
public class CommandEndDungeonCreation extends CommandBase
|
public class CommandEndDungeonCreation extends CommandBase
|
||||||
|
@ -63,8 +61,11 @@ public class CommandEndDungeonCreation extends CommandBase
|
||||||
//Check that the dungeon name is valid to prevent directory traversal and other forms of abuse
|
//Check that the dungeon name is valid to prevent directory traversal and other forms of abuse
|
||||||
if (DungeonHelper.NamePattern.matcher(var2[0]).matches())
|
if (DungeonHelper.NamePattern.matcher(var2[0]).matches())
|
||||||
{
|
{
|
||||||
DungeonGenerator newDungeon = dungeonHelper.exportDungeon(player.worldObj, x, y, z, properties.CustomSchematicDirectory + "/" + var2[0] + ".schematic");
|
String exportPath = properties.CustomSchematicDirectory + "/" + var2[0] + ".schematic";
|
||||||
player.sendChatToPlayer("created dungeon schematic in " + properties.CustomSchematicDirectory + "/" + var2[0]+".schematic");
|
if (dungeonHelper.exportDungeon(player.worldObj, x, y, z, exportPath))
|
||||||
|
{
|
||||||
|
player.sendChatToPlayer("Saved dungeon schematic in " + exportPath);
|
||||||
|
dungeonHelper.registerCustomDungeon(new File(exportPath));
|
||||||
|
|
||||||
if (dungeonHelper.customDungeonStatus.containsKey(player.worldObj.provider.dimensionId) && !player.worldObj.isRemote)
|
if (dungeonHelper.customDungeonStatus.containsKey(player.worldObj.provider.dimensionId) && !player.worldObj.isRemote)
|
||||||
{
|
{
|
||||||
|
@ -74,6 +75,11 @@ public class CommandEndDungeonCreation extends CommandBase
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
|
player.sendChatToPlayer("Failed to save dungeon schematic!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
player.sendChatToPlayer("Invalid schematic name. Please use only letters, numbers, and underscores.");
|
player.sendChatToPlayer("Invalid schematic name. Please use only letters, numbers, and underscores.");
|
||||||
}
|
}
|
||||||
|
|
|
@ -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 xMin;
|
||||||
int yMin;
|
int yMin;
|
||||||
|
@ -368,7 +368,6 @@ public class DungeonHelper
|
||||||
|
|
||||||
for (int count = 0; count < 50; count++)
|
for (int count = 0; count < 50; count++)
|
||||||
{
|
{
|
||||||
|
|
||||||
if(world.getBlockId(xMin, yI, zI)!=properties.PermaFabricBlockID)
|
if(world.getBlockId(xMin, yI, zI)!=properties.PermaFabricBlockID)
|
||||||
{
|
{
|
||||||
xMin--;
|
xMin--;
|
||||||
|
@ -492,17 +491,16 @@ public class DungeonHelper
|
||||||
CompoundTag schematicTag = new CompoundTag("Schematic", schematic);
|
CompoundTag schematicTag = new CompoundTag("Schematic", schematic);
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
NBTOutputStream stream = new NBTOutputStream(new FileOutputStream(file));
|
NBTOutputStream stream = new NBTOutputStream(new FileOutputStream(exportPath));
|
||||||
stream.writeTag(schematicTag);
|
stream.writeTag(schematicTag);
|
||||||
stream.close();
|
stream.close();
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
catch(Exception e)
|
catch(Exception e)
|
||||||
{
|
{
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
this.registerCustomDungeon(new File(file));
|
|
||||||
|
|
||||||
return new DungeonGenerator(0, file, true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void generateDungeonlink(LinkData incoming)
|
public void generateDungeonlink(LinkData incoming)
|
||||||
|
|
Loading…
Reference in a new issue