Started packing save data. At least it writes
This commit is contained in:
@@ -60,7 +60,10 @@ public class Point3D implements Serializable {
|
|||||||
{
|
{
|
||||||
return new Point3D(x, y, z);
|
return new Point3D(x, y, z);
|
||||||
}
|
}
|
||||||
|
public int[] toIntArray()
|
||||||
|
{
|
||||||
|
return new int[]{x,y,z};
|
||||||
|
}
|
||||||
public boolean equals(Point3D other)
|
public boolean equals(Point3D other)
|
||||||
{
|
{
|
||||||
if (other == null)
|
if (other == null)
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import java.io.File;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import cpw.mods.fml.common.FMLCommonHandler;
|
import cpw.mods.fml.common.FMLCommonHandler;
|
||||||
|
|
||||||
@@ -13,12 +14,15 @@ import net.minecraft.world.World;
|
|||||||
import net.minecraft.world.WorldServer;
|
import net.minecraft.world.WorldServer;
|
||||||
import net.minecraftforge.common.DimensionManager;
|
import net.minecraftforge.common.DimensionManager;
|
||||||
import StevenDimDoors.mod_pocketDim.DDProperties;
|
import StevenDimDoors.mod_pocketDim.DDProperties;
|
||||||
|
import StevenDimDoors.mod_pocketDim.Point3D;
|
||||||
import StevenDimDoors.mod_pocketDim.mod_pocketDim;
|
import StevenDimDoors.mod_pocketDim.mod_pocketDim;
|
||||||
import StevenDimDoors.mod_pocketDim.helpers.Compactor;
|
import StevenDimDoors.mod_pocketDim.helpers.Compactor;
|
||||||
import StevenDimDoors.mod_pocketDim.helpers.DeleteFolder;
|
import StevenDimDoors.mod_pocketDim.helpers.DeleteFolder;
|
||||||
import StevenDimDoors.mod_pocketDim.saving.DDSaveHandler;
|
import StevenDimDoors.mod_pocketDim.saving.DDSaveHandler;
|
||||||
import StevenDimDoors.mod_pocketDim.saving.IPackable;
|
import StevenDimDoors.mod_pocketDim.saving.IPackable;
|
||||||
import StevenDimDoors.mod_pocketDim.saving.PackedDimData;
|
import StevenDimDoors.mod_pocketDim.saving.PackedDimData;
|
||||||
|
import StevenDimDoors.mod_pocketDim.saving.PackedLinkData;
|
||||||
|
import StevenDimDoors.mod_pocketDim.saving.PackedLinkTail;
|
||||||
import StevenDimDoors.mod_pocketDim.util.Point4D;
|
import StevenDimDoors.mod_pocketDim.util.Point4D;
|
||||||
import StevenDimDoors.mod_pocketDim.watcher.ClientDimData;
|
import StevenDimDoors.mod_pocketDim.watcher.ClientDimData;
|
||||||
import StevenDimDoors.mod_pocketDim.watcher.IUpdateSource;
|
import StevenDimDoors.mod_pocketDim.watcher.IUpdateSource;
|
||||||
@@ -89,8 +93,51 @@ public class PocketManager
|
|||||||
@Override
|
@Override
|
||||||
public PackedDimData pack()
|
public PackedDimData pack()
|
||||||
{
|
{
|
||||||
|
ArrayList<Integer> ChildIDs = new ArrayList<Integer>();
|
||||||
|
ArrayList<PackedLinkData> Links = new ArrayList<PackedLinkData>();
|
||||||
|
ArrayList<PackedLinkTail> Tails = new ArrayList<PackedLinkTail>();
|
||||||
|
//Make a list of children
|
||||||
|
for(NewDimData data : this.children)
|
||||||
|
{
|
||||||
|
ChildIDs.add(data.id);
|
||||||
|
}
|
||||||
|
for(DimLink link:this.links())
|
||||||
|
{
|
||||||
|
ArrayList<Point3D> children = new ArrayList<Point3D>();
|
||||||
|
Point3D parentPoint = new Point3D(-1,-1,-1);
|
||||||
|
if(link.parent!=null)
|
||||||
|
{
|
||||||
|
parentPoint=link.parent.source.toPoint3D();
|
||||||
|
}
|
||||||
|
|
||||||
|
for(DimLink childLink : link.children)
|
||||||
|
{
|
||||||
|
children.add(childLink.source().toPoint3D());
|
||||||
|
}
|
||||||
|
PackedLinkTail tail = new PackedLinkTail(link.tail.getDestination(),link.tail.getLinkType());
|
||||||
|
Links.add(new PackedLinkData(link.source,parentPoint,tail,link.orientation,children));
|
||||||
|
|
||||||
|
PackedLinkTail tempTail = new PackedLinkTail(link.tail.getDestination(),link.tail.getLinkType());
|
||||||
|
if(Tails.contains(tempTail))
|
||||||
|
{
|
||||||
|
Tails.add(tempTail);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
int parentID=this.id;
|
||||||
|
Point3D originPoint=new Point3D(0,0,0);
|
||||||
|
if(this.parent!=null)
|
||||||
|
{
|
||||||
|
parentID = this.parent.id;
|
||||||
|
}
|
||||||
|
if(this.origin!=null)
|
||||||
|
{
|
||||||
|
originPoint=this.origin.toPoint3D();
|
||||||
|
}
|
||||||
|
return new PackedDimData(this.id, depth, this.packDepth, parentID, this.root().id(), orientation,
|
||||||
|
isDungeon, isFilled, originPoint, ChildIDs, Links, Tails);
|
||||||
// FIXME: IMPLEMENTATION PLZTHX
|
// FIXME: IMPLEMENTATION PLZTHX
|
||||||
return null;
|
//I tried
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -75,6 +75,7 @@ public class DDSaveHandler
|
|||||||
String basePath = DimensionManager.getCurrentSaveRootDirectory() + "/DimensionalDoors/data/";
|
String basePath = DimensionManager.getCurrentSaveRootDirectory() + "/DimensionalDoors/data/";
|
||||||
File basePathFile = new File(basePath);
|
File basePathFile = new File(basePath);
|
||||||
Files.createParentDirs(basePathFile);
|
Files.createParentDirs(basePathFile);
|
||||||
|
basePathFile.mkdir();
|
||||||
basePathFile = null;
|
basePathFile = null;
|
||||||
basePath += "dim_";
|
basePath += "dim_";
|
||||||
|
|
||||||
@@ -101,7 +102,7 @@ public class DDSaveHandler
|
|||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
System.err.println("Could not save data for dimension #" + dimension.name() + ". The following error occurred:");
|
System.err.println("Could not save data for dimension #" + dimension.name() + ". The following error occurred:");
|
||||||
printException(e, false);
|
printException(e, true);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,19 +1,47 @@
|
|||||||
package StevenDimDoors.mod_pocketDim.saving;
|
package StevenDimDoors.mod_pocketDim.saving;
|
||||||
|
|
||||||
|
import java.io.BufferedReader;
|
||||||
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
|
import java.io.InputStreamReader;
|
||||||
import java.io.OutputStream;
|
import java.io.OutputStream;
|
||||||
|
import java.io.OutputStreamWriter;
|
||||||
|
import java.io.PrintWriter;
|
||||||
|
import java.io.UnsupportedEncodingException;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
import scala.Char;
|
||||||
|
|
||||||
|
import com.google.gson.Gson;
|
||||||
|
import com.google.gson.GsonBuilder;
|
||||||
|
import com.google.gson.JsonObject;
|
||||||
|
import com.google.gson.stream.JsonWriter;
|
||||||
|
|
||||||
|
import StevenDimDoors.mod_pocketDim.Point3D;
|
||||||
import StevenDimDoors.mod_pocketDim.util.BaseConfigurationProcessor;
|
import StevenDimDoors.mod_pocketDim.util.BaseConfigurationProcessor;
|
||||||
import StevenDimDoors.mod_pocketDim.util.ConfigurationProcessingException;
|
import StevenDimDoors.mod_pocketDim.util.ConfigurationProcessingException;
|
||||||
|
import StevenDimDoors.mod_pocketDim.util.Point4D;
|
||||||
|
|
||||||
public class DimDataProcessor extends BaseConfigurationProcessor<PackedDimData>
|
public class DimDataProcessor extends BaseConfigurationProcessor<PackedDimData>
|
||||||
{
|
{
|
||||||
|
private static final String dimID = "DIM_ID";
|
||||||
|
private static final String depth = "DEPTH";
|
||||||
|
private static final String children = "CHILDREN_DIM_IDS";
|
||||||
|
private static final String linkTails = "LINK_TAILS";
|
||||||
|
private static final String filled = "IS_FILLED";
|
||||||
|
private static final String isDungeon = "IS_DUNGEON";
|
||||||
|
private static final String orientation = "ORIENTATION";
|
||||||
|
private static final String parentID = "PARENT_DIM_ID";
|
||||||
|
private static final String rootID = "ROOT_DIM_ID";
|
||||||
|
private static final String packDepth = "PACK_DEPTH";
|
||||||
|
private static final String links = "LINKS";
|
||||||
|
private static final String origin = "ORIGIN_POINT";
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PackedDimData readFromStream(InputStream inputStream)
|
public PackedDimData readFromStream(InputStream inputStream)
|
||||||
throws ConfigurationProcessingException
|
throws ConfigurationProcessingException
|
||||||
{
|
{
|
||||||
// TODO Auto-generated method stub
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -21,8 +49,20 @@ public class DimDataProcessor extends BaseConfigurationProcessor<PackedDimData>
|
|||||||
public void writeToStream(OutputStream outputStream, PackedDimData data)
|
public void writeToStream(OutputStream outputStream, PackedDimData data)
|
||||||
throws ConfigurationProcessingException
|
throws ConfigurationProcessingException
|
||||||
{
|
{
|
||||||
|
GsonBuilder gsonBuilder = new GsonBuilder();
|
||||||
|
Gson gson = gsonBuilder.setPrettyPrinting().create();
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
outputStream.write(gson.toJson(data).getBytes("UTF-8"));
|
||||||
|
outputStream.close();
|
||||||
|
}
|
||||||
|
catch (IOException e)
|
||||||
|
{
|
||||||
|
// TODO Auto-generated catch block
|
||||||
|
throw new ConfigurationProcessingException();
|
||||||
|
}
|
||||||
// TODO Auto-generated method stub
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,5 @@
|
|||||||
|
package StevenDimDoors.mod_pocketDim.saving;
|
||||||
|
|
||||||
|
public class PackedDungeonData {
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,6 +1,25 @@
|
|||||||
package StevenDimDoors.mod_pocketDim.saving;
|
package StevenDimDoors.mod_pocketDim.saving;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import StevenDimDoors.mod_pocketDim.Point3D;
|
||||||
|
import StevenDimDoors.mod_pocketDim.core.DimLink;
|
||||||
|
import StevenDimDoors.mod_pocketDim.util.Point4D;
|
||||||
|
|
||||||
public class PackedLinkData
|
public class PackedLinkData
|
||||||
{
|
{
|
||||||
|
public final Point4D source;
|
||||||
|
public final Point3D parent;
|
||||||
|
public final PackedLinkTail tail;
|
||||||
|
public final int orientation;
|
||||||
|
public final List<Point3D> children;
|
||||||
|
|
||||||
|
public PackedLinkData(Point4D source, Point3D parent, PackedLinkTail tail, int orientation, List<Point3D> children)
|
||||||
|
{
|
||||||
|
this.source=source;
|
||||||
|
this.parent=parent;
|
||||||
|
this.tail=tail;
|
||||||
|
this.orientation=orientation;
|
||||||
|
this.children=children;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,16 @@
|
|||||||
package StevenDimDoors.mod_pocketDim.saving;
|
package StevenDimDoors.mod_pocketDim.saving;
|
||||||
|
|
||||||
|
import StevenDimDoors.mod_pocketDim.util.Point4D;
|
||||||
|
|
||||||
public class PackedLinkTail
|
public class PackedLinkTail
|
||||||
{
|
{
|
||||||
|
public final Point4D destination;
|
||||||
|
public final int linkType;
|
||||||
|
|
||||||
|
public PackedLinkTail(Point4D destination, int linkType)
|
||||||
|
{
|
||||||
|
this.destination=destination;
|
||||||
|
this.linkType=linkType;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,9 +4,12 @@ import java.io.DataInputStream;
|
|||||||
import java.io.DataOutputStream;
|
import java.io.DataOutputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
|
import StevenDimDoors.mod_pocketDim.Point3D;
|
||||||
|
|
||||||
|
|
||||||
public final class Point4D implements Comparable<Point4D>
|
public final class Point4D implements Comparable<Point4D>
|
||||||
{
|
{
|
||||||
|
|
||||||
private final int x;
|
private final int x;
|
||||||
private final int y;
|
private final int y;
|
||||||
private final int z;
|
private final int z;
|
||||||
@@ -136,6 +139,14 @@ public final class Point4D implements Comparable<Point4D>
|
|||||||
return equals((Point4D) obj);
|
return equals((Point4D) obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Point3D toPoint3D()
|
||||||
|
{
|
||||||
|
return new Point3D(this.x,this.y,this.z);
|
||||||
|
}
|
||||||
|
public int[] toIntArray()
|
||||||
|
{
|
||||||
|
return new int[]{x,y,z,dimension};
|
||||||
|
}
|
||||||
public boolean equals(Point4D other)
|
public boolean equals(Point4D other)
|
||||||
{
|
{
|
||||||
if (this == other)
|
if (this == other)
|
||||||
|
|||||||
BIN
StevenDimDoors/mod_pocketDim/util/gson-2.2.4-sources.jar
Normal file
BIN
StevenDimDoors/mod_pocketDim/util/gson-2.2.4-sources.jar
Normal file
Binary file not shown.
BIN
StevenDimDoors/mod_pocketDim/util/gson-2.2.4.jar
Normal file
BIN
StevenDimDoors/mod_pocketDim/util/gson-2.2.4.jar
Normal file
Binary file not shown.
Reference in New Issue
Block a user