Major Improvements to DungeonHelper, Minor Bug Fixes and Tweaks #25
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user