diff --git a/StevenDimDoors/mod_pocketDim/blocks/BlockGoldDimDoor.java b/StevenDimDoors/mod_pocketDim/blocks/BlockGoldDimDoor.java index 38b9fc7..9089d0e 100644 --- a/StevenDimDoors/mod_pocketDim/blocks/BlockGoldDimDoor.java +++ b/StevenDimDoors/mod_pocketDim/blocks/BlockGoldDimDoor.java @@ -30,7 +30,7 @@ public class BlockGoldDimDoor extends BaseDimDoor implements IDimDoor DimLink link = dimension.getLink(x, y, z); if (link == null) { - dimension.createLink(x, y, z, LinkTypes.POCKET); + dimension.createLink(x, y, z, LinkTypes.POCKET,world.getBlockMetadata(x, y - 1, z)); } } diff --git a/StevenDimDoors/mod_pocketDim/blocks/DimensionalDoor.java b/StevenDimDoors/mod_pocketDim/blocks/DimensionalDoor.java index eea7b05..4722543 100644 --- a/StevenDimDoors/mod_pocketDim/blocks/DimensionalDoor.java +++ b/StevenDimDoors/mod_pocketDim/blocks/DimensionalDoor.java @@ -26,7 +26,7 @@ public class DimensionalDoor extends BaseDimDoor DimLink link = dimension.getLink(x, y, z); if (link == null) { - dimension.createLink(x, y, z, LinkTypes.POCKET); + dimension.createLink(x, y, z, LinkTypes.POCKET,world.getBlockMetadata(x, y - 1, z)); } } diff --git a/StevenDimDoors/mod_pocketDim/blocks/TransientDoor.java b/StevenDimDoors/mod_pocketDim/blocks/TransientDoor.java index 174631b..1a1232b 100644 --- a/StevenDimDoors/mod_pocketDim/blocks/TransientDoor.java +++ b/StevenDimDoors/mod_pocketDim/blocks/TransientDoor.java @@ -71,7 +71,7 @@ public class TransientDoor extends BaseDimDoor DimLink link = dimension.getLink(x, y, z); if (link == null && dimension.isPocketDimension()) { - dimension.createLink(x, y, z, LinkTypes.SAFE_EXIT); + dimension.createLink(x, y, z, LinkTypes.SAFE_EXIT,world.getBlockMetadata(x, y - 1, z)); } } } diff --git a/StevenDimDoors/mod_pocketDim/blocks/UnstableDoor.java b/StevenDimDoors/mod_pocketDim/blocks/UnstableDoor.java index 8bcf00e..cf2b699 100644 --- a/StevenDimDoors/mod_pocketDim/blocks/UnstableDoor.java +++ b/StevenDimDoors/mod_pocketDim/blocks/UnstableDoor.java @@ -21,7 +21,7 @@ public class UnstableDoor extends BaseDimDoor if (!world.isRemote && world.getBlockId(x, y - 1, z) == this.blockID) { NewDimData dimension = PocketManager.getDimensionData(world); - dimension.createLink(x, y, z, LinkTypes.RANDOM); + dimension.createLink(x, y, z, LinkTypes.RANDOM,world.getBlockMetadata(x, y - 1, z)); } } @Override diff --git a/StevenDimDoors/mod_pocketDim/blocks/WarpDoor.java b/StevenDimDoors/mod_pocketDim/blocks/WarpDoor.java index ef75d8b..f8861a5 100644 --- a/StevenDimDoors/mod_pocketDim/blocks/WarpDoor.java +++ b/StevenDimDoors/mod_pocketDim/blocks/WarpDoor.java @@ -25,7 +25,7 @@ public class WarpDoor extends BaseDimDoor DimLink link = dimension.getLink(x, y, z); if (link == null && dimension.isPocketDimension()) { - dimension.createLink(x, y, z, LinkTypes.SAFE_EXIT); + dimension.createLink(x, y, z, LinkTypes.SAFE_EXIT,world.getBlockMetadata(x, y - 1, z)); } } } diff --git a/StevenDimDoors/mod_pocketDim/core/DDTeleporter.java b/StevenDimDoors/mod_pocketDim/core/DDTeleporter.java index 09bcebc..03703de 100644 --- a/StevenDimDoors/mod_pocketDim/core/DDTeleporter.java +++ b/StevenDimDoors/mod_pocketDim/core/DDTeleporter.java @@ -15,6 +15,7 @@ import net.minecraft.network.packet.Packet41EntityEffect; import net.minecraft.network.packet.Packet43Experience; import net.minecraft.network.packet.Packet9Respawn; import net.minecraft.potion.PotionEffect; +import net.minecraft.tileentity.TileEntity; import net.minecraft.util.MathHelper; import net.minecraft.world.World; import net.minecraft.world.WorldServer; @@ -22,11 +23,13 @@ import net.minecraftforge.common.DimensionManager; import StevenDimDoors.mod_pocketDim.DDProperties; import StevenDimDoors.mod_pocketDim.Point3D; import StevenDimDoors.mod_pocketDim.mod_pocketDim; +import StevenDimDoors.mod_pocketDim.blocks.BlockRift; import StevenDimDoors.mod_pocketDim.blocks.IDimDoor; import StevenDimDoors.mod_pocketDim.helpers.yCoordHelper; import StevenDimDoors.mod_pocketDim.items.BaseItemDoor; import StevenDimDoors.mod_pocketDim.items.ItemDimensionalDoor; import StevenDimDoors.mod_pocketDim.schematic.BlockRotator; +import StevenDimDoors.mod_pocketDim.tileentities.TileEntityDimDoor; import StevenDimDoors.mod_pocketDim.util.Point4D; import StevenDimDoors.mod_pocketDim.world.PocketBuilder; import cpw.mods.fml.common.registry.GameRegistry; @@ -447,7 +450,6 @@ public class DDTeleporter { return; } - if (link.linkType() == LinkTypes.RANDOM) { Point4D randomDestination = getRandomDestination(); @@ -459,6 +461,7 @@ public class DDTeleporter } else { + buildExitDoor(door, link, DDProperties.instance()); entity = teleportEntity(entity, link.destination(), link.linkType() != LinkTypes.UNSAFE_EXIT); entity.worldObj.playSoundEffect(entity.posX, entity.posY, entity.posZ, "mob.endermen.portal", 1.0F, 1.0F); } @@ -563,6 +566,38 @@ public class DDTeleporter return false; } + private static void buildExitDoor(Block door,DimLink link, DDProperties prop) + { + World startWorld = PocketManager.loadDimension(link.source().getDimension()); + World destWorld = PocketManager.loadDimension(link.destination().getDimension()); + TileEntity doorTE = startWorld.getBlockTileEntity(link.source().getX(), link.source().getY(), link.source.getZ()); + if(doorTE instanceof TileEntityDimDoor) + { + if((TileEntityDimDoor.class.cast(doorTE).hasGennedPair)) + { + return; + } + TileEntityDimDoor.class.cast(doorTE).hasGennedPair=true; + Block blockToReplace = Block.blocksList[destWorld.getBlockId(link.destination().getX(), link.destination().getY(), link.destination().getZ())]; + + if(!destWorld.isAirBlock(link.destination().getX(), link.destination().getY(), link.destination().getZ())) + { + if(!blockToReplace.isBlockReplaceable(destWorld, link.destination().getX(), link.destination().getY(), link.destination().getZ())) + { + return; + } + } + + BaseItemDoor.placeDoorBlock(destWorld, link.destination().getX(), link.destination().getY()-1, link.destination().getZ(),link.getDestinationOrientation(), door); + TileEntity doorDestTE = startWorld.getBlockTileEntity(link.destination().getX(), link.destination().getY(), link.destination().getZ()); + + if(doorDestTE instanceof TileEntityDimDoor) + { + TileEntityDimDoor.class.cast(doorDestTE).hasGennedPair=true; + + } + } + } private static boolean generateSafeExit(DimLink link, DDProperties properties) { NewDimData current = PocketManager.getDimensionData(link.source.getDimension()); @@ -647,12 +682,12 @@ public class DDTeleporter } // Create a reverse link for returning + int orientation = getDestinationOrientation(source, properties); NewDimData sourceDim = PocketManager.getDimensionData(link.source().getDimension()); - DimLink reverse = destinationDim.createLink(x, y + 2, z, LinkTypes.REVERSE); + DimLink reverse = destinationDim.createLink(x, y + 2, z, LinkTypes.REVERSE,orientation); sourceDim.setDestination(reverse, source.getX(), source.getY(), source.getZ()); // Set up the warp door at the destination - int orientation = getDestinationOrientation(source, properties); orientation = BlockRotator.transformMetadata(orientation, 2, properties.WarpDoorID); ItemDimensionalDoor.placeDoorBlock(world, x, y + 1, z, orientation, mod_pocketDim.warpDoor); diff --git a/StevenDimDoors/mod_pocketDim/core/DimLink.java b/StevenDimDoors/mod_pocketDim/core/DimLink.java index cdf25a6..10cba75 100644 --- a/StevenDimDoors/mod_pocketDim/core/DimLink.java +++ b/StevenDimDoors/mod_pocketDim/core/DimLink.java @@ -10,10 +10,12 @@ public abstract class DimLink protected Point4D source; protected DimLink parent; protected LinkTail tail; + protected int orientation; protected List children; - protected DimLink(Point4D source, DimLink parent) + protected DimLink(Point4D source, DimLink parent, int orientation) { + this.orientation=orientation; this.parent = parent; this.source = source; this.tail = parent.tail; @@ -21,13 +23,13 @@ public abstract class DimLink parent.children.add(this); } - protected DimLink(Point4D source, int linkType) + protected DimLink(Point4D source, int linkType, int orientation) { if (linkType < LinkTypes.ENUM_MIN || linkType > LinkTypes.ENUM_MAX && linkType != LinkTypes.CLIENT_SIDE) { throw new IllegalArgumentException("The specified link type is invalid."); } - + this.orientation = orientation; this.parent = null; this.source = source; this.tail = new LinkTail(linkType, null); @@ -43,7 +45,10 @@ public abstract class DimLink { return tail.getDestination(); } - + public int getDestinationOrientation() + { + return PocketManager.getLink(source.getX(), source.getY(), source.getZ(), source.getDimension()).orientation(); + } public boolean hasDestination() { return (tail.getDestination() != null); @@ -68,6 +73,10 @@ public abstract class DimLink { return tail.getLinkType(); } + public int orientation() + { + return orientation; + } public String toString() { diff --git a/StevenDimDoors/mod_pocketDim/core/LinkTail.java b/StevenDimDoors/mod_pocketDim/core/LinkTail.java index 5513600..887f97e 100644 --- a/StevenDimDoors/mod_pocketDim/core/LinkTail.java +++ b/StevenDimDoors/mod_pocketDim/core/LinkTail.java @@ -28,4 +28,5 @@ class LinkTail public void setLinkType(int linkType) { this.linkType = linkType; } + } diff --git a/StevenDimDoors/mod_pocketDim/core/NewDimData.java b/StevenDimDoors/mod_pocketDim/core/NewDimData.java index a480333..c0c272a 100644 --- a/StevenDimDoors/mod_pocketDim/core/NewDimData.java +++ b/StevenDimDoors/mod_pocketDim/core/NewDimData.java @@ -17,14 +17,14 @@ public abstract class NewDimData { private static class InnerDimLink extends DimLink { - public InnerDimLink(Point4D source, DimLink parent) + public InnerDimLink(Point4D source, DimLink parent,int orientation) { - super(source, parent); + super(source, parent,orientation); } - public InnerDimLink(Point4D source, int linkType) + public InnerDimLink(Point4D source, int linkType, int orientation) { - super(source, linkType); + super(source, linkType,orientation); } public void setDestination(int x, int y, int z, NewDimData dimension) @@ -236,19 +236,22 @@ public abstract class NewDimData { return Math.abs(i) + Math.abs(j) + Math.abs(k); } - public DimLink createLink(int x, int y, int z, int linkType) { - return createLink(new Point4D(x, y, z, id), linkType); + return createLink(new Point4D(x, y, z, id), linkType,-1); + } + public DimLink createLink(int x, int y, int z, int linkType,int orientation) + { + return createLink(new Point4D(x, y, z, id), linkType,orientation); } - private DimLink createLink(Point4D source, int linkType) + private DimLink createLink(Point4D source, int linkType,int orientation) { //Return an existing link if there is one to avoid creating multiple links starting at the same point. InnerDimLink link = linkMapping.get(source); if (link == null) { - link = new InnerDimLink(source, linkType); + link = new InnerDimLink(source, linkType,orientation); linkMapping.put(source, link); linkList.add(link); } @@ -279,7 +282,7 @@ public abstract class NewDimData InnerDimLink link = linkMapping.get(source); if (link == null) { - link = new InnerDimLink(source, parent); + link = new InnerDimLink(source, parent, parent.orientation); linkMapping.put(source, link); linkList.add(link); diff --git a/StevenDimDoors/mod_pocketDim/dungeon/DungeonSchematic.java b/StevenDimDoors/mod_pocketDim/dungeon/DungeonSchematic.java index 1d2664b..053008f 100644 --- a/StevenDimDoors/mod_pocketDim/dungeon/DungeonSchematic.java +++ b/StevenDimDoors/mod_pocketDim/dungeon/DungeonSchematic.java @@ -238,12 +238,12 @@ public class DungeonSchematic extends Schematic { filler.apply(world, minCorner, maxCorner); //Set up entrance door rift - createEntranceReverseLink(dimension, pocketCenter, entryLink); + createEntranceReverseLink(dimension, pocketCenter, entryLink, world); //Set up link data for dimensional doors for (Point3D location : dimensionalDoorLocations) { - createDimensionalDoorLink(dimension, location, entranceDoorLocation, turnAngle, pocketCenter); + createDimensionalDoorLink(dimension, location, entranceDoorLocation, turnAngle, pocketCenter,world); } //Set up link data for exit door @@ -285,9 +285,10 @@ public class DungeonSchematic extends Schematic { } } - private static void createEntranceReverseLink(NewDimData dimension, Point3D pocketCenter, DimLink entryLink) + private static void createEntranceReverseLink(NewDimData dimension, Point3D pocketCenter, DimLink entryLink,World world) { - DimLink reverseLink = dimension.createLink(pocketCenter.getX(), pocketCenter.getY(), pocketCenter.getZ(), LinkTypes.REVERSE); + int orientation = world.getBlockMetadata(pocketCenter.getX(), pocketCenter.getY()-1, pocketCenter.getZ()); + DimLink reverseLink = dimension.createLink(pocketCenter.getX(), pocketCenter.getY(), pocketCenter.getZ(), LinkTypes.REVERSE,orientation); Point4D destination = entryLink.source(); NewDimData prevDim = PocketManager.getDimensionData(destination.getDimension()); prevDim.setDestination(reverseLink, destination.getX(), destination.getY(), destination.getZ()); @@ -295,10 +296,12 @@ public class DungeonSchematic extends Schematic { private static void createExitDoorLink(World world, NewDimData dimension, Point3D point, Point3D entrance, int rotation, Point3D pocketCenter) { + //Transform the door's location to the pocket coordinate system Point3D location = point.clone(); BlockRotator.transformPoint(location, entrance, rotation, pocketCenter); - dimension.createLink(location.getX(), location.getY(), location.getZ(), LinkTypes.DUNGEON_EXIT); + int orientation = world.getBlockMetadata(location.getX(), location.getY()-1, location.getZ()); + dimension.createLink(location.getX(), location.getY(), location.getZ(), LinkTypes.DUNGEON_EXIT,orientation); //Replace the sandstone block under the exit door with the same block as the one underneath it int x = location.getX(); int y = location.getY() - 3; @@ -311,12 +314,14 @@ public class DungeonSchematic extends Schematic { } } - private static void createDimensionalDoorLink(NewDimData dimension, Point3D point, Point3D entrance, int rotation, Point3D pocketCenter) + private static void createDimensionalDoorLink(NewDimData dimension, Point3D point, Point3D entrance, int rotation, Point3D pocketCenter,World world) { //Transform the door's location to the pocket coordinate system Point3D location = point.clone(); BlockRotator.transformPoint(location, entrance, rotation, pocketCenter); - dimension.createLink(location.getX(), location.getY(), location.getZ(), LinkTypes.DUNGEON); + int orientation = world.getBlockMetadata(location.getX(), location.getY()-1, location.getZ()); + + dimension.createLink(location.getX(), location.getY(), location.getZ(), LinkTypes.DUNGEON,orientation); } private static void spawnMonolith(World world, Point3D point, Point3D entrance, int rotation, Point3D pocketCenter, boolean canSpawn) diff --git a/StevenDimDoors/mod_pocketDim/helpers/DungeonHelper.java b/StevenDimDoors/mod_pocketDim/helpers/DungeonHelper.java index cebfefb..78963fc 100644 --- a/StevenDimDoors/mod_pocketDim/helpers/DungeonHelper.java +++ b/StevenDimDoors/mod_pocketDim/helpers/DungeonHelper.java @@ -279,7 +279,7 @@ public class DungeonHelper { //Create a link above the specified position. Link to a new pocket dimension. NewDimData dimension = PocketManager.getDimensionData(world); - DimLink link = dimension.createLink(x, y + 1, z, LinkTypes.POCKET); + DimLink link = dimension.createLink(x, y + 1, z, LinkTypes.POCKET,3); //Place a Warp Door linked to that pocket ItemDimensionalDoor.placeDoorBlock(world, x, y, z, 3, mod_pocketDim.warpDoor); diff --git a/StevenDimDoors/mod_pocketDim/items/ItemRiftBlade.java b/StevenDimDoors/mod_pocketDim/items/ItemRiftBlade.java index 857a7d8..b51950c 100644 --- a/StevenDimDoors/mod_pocketDim/items/ItemRiftBlade.java +++ b/StevenDimDoors/mod_pocketDim/items/ItemRiftBlade.java @@ -114,10 +114,9 @@ public class ItemRiftBlade extends ItemSword var2.zCoord*=cooef; double var5 = holder.posX - var2.xCoord; double var9 = holder.posZ - var2.zCoord; - double var7 =holder.worldObj.getHeightValue(MathHelper.floor_double(var5), MathHelper.floor_double(var9)); - if((Math.abs((holder.posY - var2.yCoord)-var7)>2)) - { - var7 = MathHelper.floor_double(holder.posY - var2.yCoord) ; + + + double var7 = MathHelper.floor_double(holder.posY - var2.yCoord) ; int var14 = MathHelper.floor_double(var5); int var15 = MathHelper.floor_double(var7); @@ -127,7 +126,7 @@ public class ItemRiftBlade extends ItemSword var15++; } var7=var15; - } + holder.setPositionAndUpdate(var5, var7, var9); holder.playSound("mob.endermen.portal", 1.0F, 1.0F); diff --git a/StevenDimDoors/mod_pocketDim/items/ItemRiftSignature.java b/StevenDimDoors/mod_pocketDim/items/ItemRiftSignature.java index aae42db..aef4919 100644 --- a/StevenDimDoors/mod_pocketDim/items/ItemRiftSignature.java +++ b/StevenDimDoors/mod_pocketDim/items/ItemRiftSignature.java @@ -7,6 +7,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.MathHelper; import net.minecraft.world.World; import net.minecraftforge.common.DimensionManager; import StevenDimDoors.mod_pocketDim.mod_pocketDim; @@ -66,14 +67,15 @@ public class ItemRiftSignature extends Item return true; } - Point4D source = getSource(stack); + Point4DOrientation source = getSource(stack); + int orientation = MathHelper.floor_double((double) ((player.rotationYaw + 180.0F) * 4.0F / 360.0F) - 0.5D) & 3; if (source != null) { //The link was used before and already has an endpoint stored. Create links connecting the two endpoints. NewDimData sourceDimension = PocketManager.getDimensionData(source.getDimension()); NewDimData destinationDimension = PocketManager.getDimensionData(world); - DimLink link = sourceDimension.createLink(source.getX(), source.getY(), source.getZ(), LinkTypes.NORMAL); - DimLink reverse = destinationDimension.createLink(x, y, z, LinkTypes.NORMAL); + DimLink link = sourceDimension.createLink(source.getX(), source.getY(), source.getZ(), LinkTypes.NORMAL,source.getOrientation()); + DimLink reverse = destinationDimension.createLink(x, y, z, LinkTypes.NORMAL,orientation); destinationDimension.setDestination(link, x, y, z); sourceDimension.setDestination(reverse, source.getX(), source.getY(), source.getZ()); @@ -102,7 +104,7 @@ public class ItemRiftSignature extends Item else { //The link signature has not been used. Store its current target as the first location. - setSource(stack, x, y, z, PocketManager.getDimensionData(world)); + setSource(stack, x, y, z,orientation, PocketManager.getDimensionData(world)); player.sendChatToPlayer("Location Stored in Rift Signature"); world.playSoundAtEntity(player,"mods.DimDoors.sfx.riftStart", 0.6f, 1); } @@ -116,7 +118,7 @@ public class ItemRiftSignature extends Item @SideOnly(Side.CLIENT) public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) { - Point4D source = getSource(par1ItemStack); + Point4DOrientation source = getSource(par1ItemStack); if (source != null) { par3List.add("Leads to (" + source.getX() + ", " + source.getY() + ", " + source.getZ() + ") at dimension #" + source.getDimension()); @@ -129,13 +131,14 @@ public class ItemRiftSignature extends Item } } - public static void setSource(ItemStack itemStack, int x, int y, int z, NewDimData dimension) + public static void setSource(ItemStack itemStack, int x, int y, int z, int orientation, NewDimData dimension) { NBTTagCompound tag = new NBTTagCompound(); tag.setInteger("linkX", x); tag.setInteger("linkY", y); tag.setInteger("linkZ", z); + tag.setInteger("orientation", orientation); tag.setInteger("linkDimID", dimension.id()); itemStack.setTagCompound(tag); @@ -149,11 +152,12 @@ public class ItemRiftSignature extends Item tag.removeTag("linkX"); tag.removeTag("linkY"); tag.removeTag("linkZ"); + tag.removeTag("orientation"); tag.removeTag("linkDimID"); itemStack.setItemDamage(0); } - public static Point4D getSource(ItemStack itemStack) + public static Point4DOrientation getSource(ItemStack itemStack) { if (itemStack.getItemDamage() != 0) { @@ -164,15 +168,52 @@ public class ItemRiftSignature extends Item Integer x = tag.getInteger("linkX"); Integer y = tag.getInteger("linkY"); Integer z = tag.getInteger("linkZ"); + Integer orientation = tag.getInteger("orientation"); Integer dimID = tag.getInteger("linkDimID"); if (x != null && y != null && z != null && dimID != null) { - return new Point4D(x, y, z, dimID); + return new Point4DOrientation(x, y, z,orientation, dimID); } } itemStack.setItemDamage(0); } return null; } + + static class Point4DOrientation + { + private Point4D point; + private int orientation; + Point4DOrientation(int x, int y, int z, int orientation, int dimID) + { + this.point= new Point4D(x,y,z,dimID); + this.orientation=orientation; + } + + int getX() + { + return point.getX(); + } + + int getY() + { + return point.getY(); + } + + int getZ() + { + return point.getZ(); + } + + int getDimension() + { + return point.getDimension(); + } + int getOrientation() + { + return orientation; + } + } } + diff --git a/StevenDimDoors/mod_pocketDim/items/ItemStabilizedRiftSignature.java b/StevenDimDoors/mod_pocketDim/items/ItemStabilizedRiftSignature.java index 0e37b6b..a58cfff 100644 --- a/StevenDimDoors/mod_pocketDim/items/ItemStabilizedRiftSignature.java +++ b/StevenDimDoors/mod_pocketDim/items/ItemStabilizedRiftSignature.java @@ -6,6 +6,7 @@ import net.minecraft.client.renderer.texture.IconRegister; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.util.MathHelper; import net.minecraft.world.World; import net.minecraftforge.common.DimensionManager; import StevenDimDoors.mod_pocketDim.mod_pocketDim; @@ -46,7 +47,8 @@ public class ItemStabilizedRiftSignature extends ItemRiftSignature } // Check if the Stabilized Rift Signature has been initialized - Point4D source = getSource(stack); + Point4DOrientation source = getSource(stack); + int orientation = MathHelper.floor_double((double) ((player.rotationYaw + 180.0F) * 4.0F / 360.0F) - 0.5D) & 3; if (source != null) { // Yes, it's initialized. Check if the player is in creative @@ -60,8 +62,8 @@ public class ItemStabilizedRiftSignature extends ItemRiftSignature //The link was used before and already has an endpoint stored. Create links connecting the two endpoints. NewDimData sourceDimension = PocketManager.getDimensionData(source.getDimension()); NewDimData destinationDimension = PocketManager.getDimensionData(world); - DimLink link = sourceDimension.createLink(source.getX(), source.getY(), source.getZ(), LinkTypes.NORMAL); - DimLink reverse = destinationDimension.createLink(x, y, z, LinkTypes.NORMAL); + DimLink link = sourceDimension.createLink(source.getX(), source.getY(), source.getZ(), LinkTypes.NORMAL,source.getOrientation()); + DimLink reverse = destinationDimension.createLink(x, y, z, LinkTypes.NORMAL,orientation); destinationDimension.setDestination(link, x, y, z); sourceDimension.setDestination(reverse, source.getX(), source.getY(), source.getZ()); @@ -89,7 +91,7 @@ public class ItemStabilizedRiftSignature extends ItemRiftSignature else { //The link signature has not been used. Store its current target as the first location. - setSource(stack, x, y, z, PocketManager.getDimensionData(world)); + setSource(stack, x, y, z, orientation, PocketManager.getDimensionData(world)); player.sendChatToPlayer("Location Stored in Rift Signature"); world.playSoundAtEntity(player,"mods.DimDoors.sfx.riftStart", 0.6f, 1); } @@ -104,7 +106,7 @@ public class ItemStabilizedRiftSignature extends ItemRiftSignature @Override public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) { - Point4D source = getSource(par1ItemStack); + Point4DOrientation source = getSource(par1ItemStack); if (source != null) { par3List.add("Leads to (" + source.getX() + ", " + source.getY() + ", " + source.getZ() + ") at dimension #" + source.getDimension()); diff --git a/StevenDimDoors/mod_pocketDim/mod_pocketDim.java b/StevenDimDoors/mod_pocketDim/mod_pocketDim.java index c43d73d..c8802e6 100644 --- a/StevenDimDoors/mod_pocketDim/mod_pocketDim.java +++ b/StevenDimDoors/mod_pocketDim/mod_pocketDim.java @@ -174,7 +174,7 @@ public class mod_pocketDim transientDoor = new TransientDoor(properties.TransientDoorID, Material.iron, properties).setHardness(1.0F) .setUnlocalizedName("transientDoor"); goldDimDoor = new BlockGoldDimDoor(properties.GoldDimDoorID, Material.iron, properties).setHardness(1.0F) .setUnlocalizedName("dimDoorGold"); - goldDoor = new BlockDoorGold(properties.GoldDoorID, Material.iron, properties).setLightValue(1.0F).setHardness(0.1F).setUnlocalizedName("doorGold"); + goldDoor = new BlockDoorGold(properties.GoldDoorID, Material.iron, properties).setHardness(0.1F).setUnlocalizedName("doorGold"); blockDimWall = new BlockDimWall(properties.FabricBlockID, 0, Material.iron).setLightValue(1.0F).setHardness(0.1F).setUnlocalizedName("blockDimWall"); blockDimWallPerm = (new BlockDimWallPerm(properties.PermaFabricBlockID, 0, Material.iron)).setLightValue(1.0F).setBlockUnbreakable().setResistance(6000000.0F).setUnlocalizedName("blockDimWallPerm"); warpDoor = new WarpDoor(properties.WarpDoorID, Material.wood, properties).setHardness(1.0F) .setUnlocalizedName("dimDoorWarp"); diff --git a/StevenDimDoors/mod_pocketDim/tileentities/TileEntityDimDoor.java b/StevenDimDoors/mod_pocketDim/tileentities/TileEntityDimDoor.java index 240782f..eb43d24 100644 --- a/StevenDimDoors/mod_pocketDim/tileentities/TileEntityDimDoor.java +++ b/StevenDimDoors/mod_pocketDim/tileentities/TileEntityDimDoor.java @@ -13,6 +13,7 @@ public class TileEntityDimDoor extends TileEntity public int orientation; public boolean hasExit; public boolean isDungeonChainLink; + public boolean hasGennedPair=false; @@ -45,6 +46,8 @@ public class TileEntityDimDoor extends TileEntity this.isDungeonChainLink = nbt.getBoolean("isDungeonChainLink"); + this.hasGennedPair = nbt.getBoolean("hasGennedPair"); + @@ -69,6 +72,7 @@ public class TileEntityDimDoor extends TileEntity nbt.setBoolean("isDungeonChainLink", isDungeonChainLink); - + nbt.setBoolean("hasGennedPair", hasGennedPair); + } } diff --git a/resources/mods/DimDoors/sfx/monk.ogg b/resources/mods/DimDoors/sfx/monk.ogg index 73e69b4..a725f5f 100644 Binary files a/resources/mods/DimDoors/sfx/monk.ogg and b/resources/mods/DimDoors/sfx/monk.ogg differ diff --git a/resources/mods/DimDoors/sfx/monkLarge.ogg b/resources/mods/DimDoors/sfx/monkLarge.ogg new file mode 100644 index 0000000..73e69b4 Binary files /dev/null and b/resources/mods/DimDoors/sfx/monkLarge.ogg differ