Started Rewriting LinkData

Created NewLinkData and replaced references to the original LinkData.
Moved it to the mod_pocketDim.core package. Added Point4D, an immutable
point type for 3D integer coordinates with an added dimension ID.
This commit is contained in:
SenseiKiwi
2013-08-23 04:12:56 -04:00
parent a1a9e39caa
commit dd9b1f0c65
37 changed files with 332 additions and 222 deletions

View File

@@ -22,8 +22,8 @@ import net.minecraft.world.World;
import StevenDimDoors.mod_pocketDim.DDProperties;
import StevenDimDoors.mod_pocketDim.DimData;
import StevenDimDoors.mod_pocketDim.DungeonGenerator;
import StevenDimDoors.mod_pocketDim.LinkData;
import StevenDimDoors.mod_pocketDim.mod_pocketDim;
import StevenDimDoors.mod_pocketDim.core.NewLinkData;
import StevenDimDoors.mod_pocketDim.dungeon.DungeonSchematic;
import StevenDimDoors.mod_pocketDim.dungeon.pack.DungeonPack;
import StevenDimDoors.mod_pocketDim.dungeon.pack.DungeonPackConfig;
@@ -290,10 +290,10 @@ public class DungeonHelper
return pack;
}
public LinkData createCustomDungeonDoor(World world, int x, int y, int z)
public NewLinkData createCustomDungeonDoor(World world, int x, int y, int z)
{
//Create a link above the specified position. Link to a new pocket dimension.
LinkData link = new LinkData(world.provider.dimensionId, 0, x, y + 1, z, x, y + 1, z, true, 3);
NewLinkData link = new NewLinkData(world.provider.dimensionId, 0, x, y + 1, z, x, y + 1, z, true, 3);
link = dimHelper.instance.createPocket(link, true, false);
//Place a Warp Door linked to that pocket
@@ -530,7 +530,7 @@ public class DungeonHelper
}
}
public void generateDungeonLink(LinkData inbound, DungeonPack pack, Random random)
public void generateDungeonLink(NewLinkData inbound, DungeonPack pack, Random random)
{
DungeonGenerator selection;
DungeonPackConfig config;
@@ -658,7 +658,7 @@ public class DungeonHelper
for (int count = 1; count < maxSize && found; count++)
{
found = false;
for (LinkData link : tailDim.getLinksInDim())
for (NewLinkData link : tailDim.getLinksInDim())
{
DimData neighbor = dimHelper.instance.getDimData(link.destDimID);
if (neighbor.depth == tailDim.depth - 1 && neighbor.dungeonGenerator != null &&
@@ -674,7 +674,7 @@ public class DungeonHelper
return history;
}
private static int getPackDepth(LinkData inbound, DungeonPack pack)
private static int getPackDepth(NewLinkData inbound, DungeonPack pack)
{
//TODO: I've improved this code for the time being. However, searching across links is a flawed approach. A player could
//manipulate the output of this function by setting up links to mislead our algorithm or by removing links.
@@ -688,7 +688,7 @@ public class DungeonHelper
do
{
found = false;
for (LinkData link : tailDim.getLinksInDim())
for (NewLinkData link : tailDim.getLinksInDim())
{
DimData neighbor = dimHelper.instance.getDimData(link.destDimID);
if (neighbor.depth == tailDim.depth - 1 && neighbor.dungeonGenerator != null &&
@@ -728,7 +728,7 @@ public class DungeonHelper
while (dungeons.size() < maxSize && !pendingDimensions.isEmpty())
{
DimData current = pendingDimensions.remove();
for (LinkData link : current.getLinksInDim())
for (NewLinkData link : current.getLinksInDim())
{
DimData child = helper.getDimData(link.destDimID);
if (child.depth == current.depth + 1 && child.dungeonGenerator != null && checked.add(child))

View File

@@ -35,13 +35,13 @@ import net.minecraft.world.chunk.storage.ExtendedBlockStorage;
import net.minecraftforge.common.DimensionManager;
import StevenDimDoors.mod_pocketDim.DDProperties;
import StevenDimDoors.mod_pocketDim.DimData;
import StevenDimDoors.mod_pocketDim.LinkData;
import StevenDimDoors.mod_pocketDim.ObjectSaveInputStream;
import StevenDimDoors.mod_pocketDim.PacketHandler;
import StevenDimDoors.mod_pocketDim.Point3D;
import StevenDimDoors.mod_pocketDim.SchematicLoader;
import StevenDimDoors.mod_pocketDim.TileEntityRift;
import StevenDimDoors.mod_pocketDim.mod_pocketDim;
import StevenDimDoors.mod_pocketDim.core.NewLinkData;
import StevenDimDoors.mod_pocketDim.schematic.BlockRotator;
import StevenDimDoors.mod_pocketDim.world.LimboProvider;
import StevenDimDoors.mod_pocketDim.world.PocketProvider;
@@ -79,7 +79,7 @@ public class dimHelper extends DimensionManager
* HashMap for temporary storage of Link Signature damage hash values. See itemLinkSignature for more details
* @Return
*/
public HashMap<Integer, LinkData> interDimLinkList= new HashMap<Integer,LinkData>();
public HashMap<Integer, NewLinkData> interDimLinkList= new HashMap<Integer,NewLinkData>();
/**
* ArrayList containing all link data not sorted for easy random access, used for random doors and for recreating rifts if they have a block placed over them.
@@ -103,7 +103,7 @@ public class dimHelper extends DimensionManager
}
// GreyMaria: My god, what a mess. Here, let me clean it up a bit.
public Entity teleportEntity(World world, Entity entity, LinkData link) //this beautiful teleport method is based off of xCompWiz's teleport function.
public Entity teleportEntity(World world, Entity entity, NewLinkData link) //this beautiful teleport method is based off of xCompWiz's teleport function.
{
WorldServer oldWorld = (WorldServer)world;
WorldServer newWorld;
@@ -260,7 +260,7 @@ public class dimHelper extends DimensionManager
* @param orientation- the orientation of the door used to teleport, determines player orientation and door placement on arrival
* @Return
*/
public void traverseDimDoor(World world,LinkData linkData, Entity entity)
public void traverseDimDoor(World world,NewLinkData linkData, Entity entity)
{
DDProperties properties = DDProperties.instance();
@@ -355,7 +355,7 @@ public class dimHelper extends DimensionManager
* @return
*/
public LinkData createLink( int locationDimID, int destinationDimID, int locationXCoord, int locationYCoord, int locationZCoord, int destinationXCoord, int destinationYCoord, int destinationZCoord)
public NewLinkData createLink( int locationDimID, int destinationDimID, int locationXCoord, int locationYCoord, int locationZCoord, int destinationXCoord, int destinationYCoord, int destinationZCoord)
{
if(this.getLinkDataFromCoords(locationXCoord, locationYCoord, locationZCoord, locationDimID)!=null)
{
@@ -381,13 +381,13 @@ public class dimHelper extends DimensionManager
* @param linkOrientation
* @return
*/
public LinkData createLink( int locationDimID, int destinationDimID, int locationXCoord, int locationYCoord, int locationZCoord, int destinationXCoord, int destinationYCoord, int destinationZCoord,int linkOrientation)
public NewLinkData createLink( int locationDimID, int destinationDimID, int locationXCoord, int locationYCoord, int locationZCoord, int destinationXCoord, int destinationYCoord, int destinationZCoord,int linkOrientation)
{
LinkData linkData =new LinkData( locationDimID, destinationDimID, locationXCoord, locationYCoord, locationZCoord, destinationXCoord, destinationYCoord ,destinationZCoord,false,linkOrientation);
NewLinkData linkData =new NewLinkData( locationDimID, destinationDimID, locationXCoord, locationYCoord, locationZCoord, destinationXCoord, destinationYCoord ,destinationZCoord,false,linkOrientation);
return this.createLink(linkData);
}
public LinkData createLink(LinkData link)
public NewLinkData createLink(NewLinkData link)
{
DDProperties properties = DDProperties.instance();
@@ -421,11 +421,11 @@ public class dimHelper extends DimensionManager
return link;
}
public int getDestOrientation(LinkData link)
public int getDestOrientation(NewLinkData link)
{
if(link !=null)
{
LinkData destLink = this.getLinkDataFromCoords(link.destXCoord, link.destYCoord, link.destZCoord, link.destDimID);
NewLinkData destLink = this.getLinkDataFromCoords(link.destXCoord, link.destYCoord, link.destZCoord, link.destDimID);
if(destLink!=null)
{
return destLink.linkOrientation;
@@ -443,7 +443,7 @@ public class dimHelper extends DimensionManager
}
}
public void removeLink(LinkData link)
public void removeLink(NewLinkData link)
{
this.removeLink(link.locDimID, link.locXCoord, link.locYCoord, link.locZCoord);
}
@@ -462,7 +462,7 @@ public class dimHelper extends DimensionManager
DimData locationDimData= new DimData(locationDimID, false, 0, locationDimID,locationXCoord,locationYCoord,locationZCoord);
dimHelper.dimList.put(locationDimID, locationDimData);
}
LinkData link = this.getLinkDataFromCoords(locationXCoord, locationYCoord, locationZCoord, locationDimID);
NewLinkData link = this.getLinkDataFromCoords(locationXCoord, locationYCoord, locationZCoord, locationDimID);
dimHelper.instance.getDimData(locationDimID).removeLinkAtCoords(link);
//updates clients that a rift has been removed
if(FMLCommonHandler.instance().getEffectiveSide()==Side.SERVER)
@@ -471,7 +471,7 @@ public class dimHelper extends DimensionManager
this.save();
}
}
public LinkData findNearestRift(World world, int x, int y, int z, int range)
public NewLinkData findNearestRift(World world, int x, int y, int z, int range)
{
return dimHelper.instance.getDimData(world).findNearestRift(world, range, x, y, z);
}
@@ -480,7 +480,7 @@ public class dimHelper extends DimensionManager
* @param world- door
* @param incLink
*/
public void generateDoor(World world, LinkData incLink)
public void generateDoor(World world, NewLinkData incLink)
{
int locX = incLink.locXCoord;
int locY = incLink.locYCoord;
@@ -504,7 +504,7 @@ public class dimHelper extends DimensionManager
{
DimensionManager.initDimension(destinationID);
}
LinkData destLink = this.getLinkDataFromCoords(destX, destY, destZ, destinationID);
NewLinkData destLink = this.getLinkDataFromCoords(destX, destY, destZ, destinationID);
int destOrientation = 0;
if(destLink!=null)
{
@@ -536,7 +536,7 @@ public class dimHelper extends DimensionManager
* @param orientation
* @return
*/
public void generatePocket(LinkData incomingLink)
public void generatePocket(NewLinkData incomingLink)
{
DDProperties properties = DDProperties.instance();
try
@@ -697,10 +697,10 @@ public class dimHelper extends DimensionManager
DeleteFolder.deleteFolder(save);
dimData.hasBeenFilled = false;
dimData.hasDoor = false;
for(LinkData link : dimData.getLinksInDim())
for(NewLinkData link : dimData.getLinksInDim())
{
link.hasGennedDoor = false;
LinkData linkOut = this.getLinkDataFromCoords(link.destXCoord, link.destYCoord, link.destZCoord, link.destDimID);
NewLinkData linkOut = this.getLinkDataFromCoords(link.destXCoord, link.destYCoord, link.destZCoord, link.destDimID);
if (linkOut != null)
{
linkOut.hasGennedDoor = false;
@@ -788,7 +788,7 @@ public class dimHelper extends DimensionManager
* @param orientation- determines the orientation of the entrance link to this dim. Should be the metaData of the door occupying the rift. -1 if no door.
* @return
*/
public LinkData createPocket(LinkData link , boolean isGoingDown, boolean isRandomRift)
public NewLinkData createPocket(NewLinkData link , boolean isGoingDown, boolean isRandomRift)
{
DDProperties properties = DDProperties.instance();
if(dimHelper.getWorld(0)==null)
@@ -821,7 +821,7 @@ public class dimHelper extends DimensionManager
}
if(rand.nextInt(13-depth)==0)
{
LinkData link1=getRandomLinkData(false);
NewLinkData link1=getRandomLinkData(false);
}
}
if(locationDimData.isPocket) //determines the qualites of the pocket dim being created, based on parent dim.
@@ -969,7 +969,7 @@ public class dimHelper extends DimensionManager
try
{
this.interDimLinkList = (HashMap<Integer, LinkData>) comboSave.get("interDimLinkList");
this.interDimLinkList = (HashMap<Integer, NewLinkData>) comboSave.get("interDimLinkList");
}
catch(Exception e)
{
@@ -1020,7 +1020,7 @@ public class dimHelper extends DimensionManager
try
{
this.interDimLinkList=(HashMap<Integer, LinkData>) comboSave.get("interDimLinkList");
this.interDimLinkList=(HashMap<Integer, NewLinkData>) comboSave.get("interDimLinkList");
}
catch(Exception e)
{
@@ -1073,7 +1073,7 @@ public class dimHelper extends DimensionManager
public LinkData getRandomLinkData(boolean allowInPocket)
public NewLinkData getRandomLinkData(boolean allowInPocket)
{
boolean foundRandomDest=false;
int i=0;
@@ -1083,7 +1083,7 @@ public class dimHelper extends DimensionManager
{
i++;
DimData dimData;
ArrayList<LinkData> linksInDim = new ArrayList<LinkData>();
ArrayList<NewLinkData> linksInDim = new ArrayList<NewLinkData>();
for(size--;size>0;)
{
dimData = dimHelper.instance.getDimData((Integer)dimList.keySet().toArray()[rand.nextInt(dimList.keySet().size())]);
@@ -1103,7 +1103,7 @@ public class dimHelper extends DimensionManager
break;
}
LinkData link1 = (LinkData) linksInDim.get(rand.nextInt(linksInDim.size()));
NewLinkData link1 = (NewLinkData) linksInDim.get(rand.nextInt(linksInDim.size()));
if(link1!=null)
{
@@ -1125,7 +1125,7 @@ public class dimHelper extends DimensionManager
* @param link
* @return
*/
public LinkData getLinkDataAtDestination(LinkData link)
public NewLinkData getLinkDataAtDestination(NewLinkData link)
{
return this.getLinkDataFromCoords(link.destXCoord, link.destYCoord, link.destZCoord, link.destDimID);
}
@@ -1144,9 +1144,9 @@ public class dimHelper extends DimensionManager
* @param updateLinksPointingHere
* @return
*/
public boolean moveLinkDataLocation(LinkData link, int x,int y, int z, int dimID, boolean updateLinksPointingHere)
public boolean moveLinkDataLocation(NewLinkData link, int x,int y, int z, int dimID, boolean updateLinksPointingHere)
{
LinkData linkToMove = this.getLinkDataFromCoords(link.locXCoord, link.locYCoord, link.locZCoord, link.locDimID);
NewLinkData linkToMove = this.getLinkDataFromCoords(link.locXCoord, link.locYCoord, link.locZCoord, link.locDimID);
if(linkToMove!=null)
{
int oldX = linkToMove.locXCoord;
@@ -1156,10 +1156,10 @@ public class dimHelper extends DimensionManager
if(updateLinksPointingHere)
{
ArrayList<LinkData> incomingLinks = new ArrayList<LinkData>();
ArrayList<NewLinkData> incomingLinks = new ArrayList<NewLinkData>();
for(DimData dimData : dimHelper.dimList.values())
{
for(LinkData allLink : dimData.getLinksInDim())
for(NewLinkData allLink : dimData.getLinksInDim())
{
if(this.getLinkDataAtDestination(allLink)==linkToMove)
{
@@ -1168,7 +1168,7 @@ public class dimHelper extends DimensionManager
}
}
}
this.createLink(new LinkData(dimID,linkToMove.destDimID,x,y,z,linkToMove.destXCoord,linkToMove.destYCoord,linkToMove.destZCoord,linkToMove.isLocPocket,linkToMove.linkOrientation));
this.createLink(new NewLinkData(dimID,linkToMove.destDimID,x,y,z,linkToMove.destXCoord,linkToMove.destYCoord,linkToMove.destZCoord,linkToMove.isLocPocket,linkToMove.linkOrientation));
if(this.getLinkDataFromCoords(oldX,oldY,oldZ,oldDimID)!=null)
{
@@ -1189,14 +1189,14 @@ public class dimHelper extends DimensionManager
* @param updateLinksAtDestination
* @return
*/
public boolean moveLinkDataDestination(LinkData link, int x, int y, int z, int dimID, boolean updateLinksAtDestination)
public boolean moveLinkDataDestination(NewLinkData link, int x, int y, int z, int dimID, boolean updateLinksAtDestination)
{
LinkData linkToMove = this.getLinkDataFromCoords(link.locXCoord, link.locYCoord, link.locZCoord, link.locDimID);
NewLinkData linkToMove = this.getLinkDataFromCoords(link.locXCoord, link.locYCoord, link.locZCoord, link.locDimID);
if(linkToMove!=null)
{
if(updateLinksAtDestination)
{
LinkData linkAtDestination = this.getLinkDataAtDestination(linkToMove);
NewLinkData linkAtDestination = this.getLinkDataAtDestination(linkToMove);
if(linkAtDestination!=null)
{
this.moveLinkDataLocation(linkAtDestination, x, y, z, dimID, false);
@@ -1207,7 +1207,7 @@ public class dimHelper extends DimensionManager
linkToMove.destYCoord=y;
linkToMove.destZCoord=z;
this.createLink(linkToMove);
LinkData testLink = this.getLinkDataFromCoords(link.locXCoord, link.locYCoord, link.locZCoord, link.locDimID);
NewLinkData testLink = this.getLinkDataFromCoords(link.locXCoord, link.locYCoord, link.locZCoord, link.locDimID);
return true;
}
@@ -1222,7 +1222,7 @@ public class dimHelper extends DimensionManager
* @param par1World
* @return
*/
public LinkData getLinkDataFromCoords(int x, int y, int z, World par1World)
public NewLinkData getLinkDataFromCoords(int x, int y, int z, World par1World)
{
return this.getLinkDataFromCoords(x, y, z, par1World.provider.dimensionId);
}
@@ -1234,7 +1234,7 @@ public class dimHelper extends DimensionManager
* @param worldID
* @return
*/
public LinkData getLinkDataFromCoords(int x, int y, int z, int worldID)
public NewLinkData getLinkDataFromCoords(int x, int y, int z, int worldID)
{
if(dimHelper.dimList.containsKey(worldID))
{
@@ -1261,7 +1261,7 @@ public class dimHelper extends DimensionManager
{
DDProperties properties = DDProperties.instance();
LinkData nearest=null;
NewLinkData nearest=null;
float distance=range+1;
int i=-range;
int j=-range;

View File

@@ -1,6 +1,6 @@
package StevenDimDoors.mod_pocketDim.helpers;
import StevenDimDoors.mod_pocketDim.LinkData;
import StevenDimDoors.mod_pocketDim.core.NewLinkData;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.world.World;
@@ -11,7 +11,7 @@ public class yCoordHelper
{
private static final int MAXIMUM_UNCOVERED_Y = 245;
public static int getFirstUncovered(LinkData pointerLink)
public static int getFirstUncovered(NewLinkData pointerLink)
{
return yCoordHelper.getFirstUncovered(
pointerLink.destDimID,