diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/ConnectionHandler.java b/src/main/java/StevenDimDoors/mod_pocketDim/ConnectionHandler.java index 9a8a17a2..156ecce0 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/ConnectionHandler.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/ConnectionHandler.java @@ -1,17 +1,11 @@ package StevenDimDoors.mod_pocketDim; -import java.io.ByteArrayOutputStream; -import java.io.DataOutputStream; -import java.io.IOException; - -import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.network.INetworkManager; import net.minecraft.network.NetLoginHandler; import net.minecraft.network.packet.NetHandler; import net.minecraft.network.packet.Packet1Login; import net.minecraft.network.packet.Packet250CustomPayload; import net.minecraft.server.MinecraftServer; -import net.minecraft.server.integrated.IntegratedServer; import net.minecraftforge.common.DimensionManager; import net.minecraftforge.common.network.ForgePacket; import net.minecraftforge.common.network.packet.DimensionRegisterPacket; @@ -65,7 +59,8 @@ public class ConnectionHandler implements IConnectionHandler @Override public void playerLoggedIn(Player player, NetHandler netHandler, INetworkManager manager) { - PocketManager.getDimwatcher().onCreated(new ClientDimData(PocketManager.getDimensionData(0))); + // Hax... please don't do this! >_< + PocketManager.getDimwatcher().onCreated(new ClientDimData(PocketManager.createDimensionDataDangerously(0))); } } \ No newline at end of file diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/EventHookContainer.java b/src/main/java/StevenDimDoors/mod_pocketDim/EventHookContainer.java index e40d7c2b..1f91b952 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/EventHookContainer.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/EventHookContainer.java @@ -236,7 +236,7 @@ public class EventHookContainer Chunk chunk = event.getChunk(); if (!chunk.worldObj.isRemote && PocketManager.isLoaded()) { - NewDimData dimension = PocketManager.getDimensionData(chunk.worldObj); + NewDimData dimension = PocketManager.createDimensionData(chunk.worldObj); for (DimLink link : dimension.getChunkLinks(chunk.xPosition, chunk.zPosition)) { regenerator.scheduleSlowRegeneration(link); diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/blocks/BlockGoldDimDoor.java b/src/main/java/StevenDimDoors/mod_pocketDim/blocks/BlockGoldDimDoor.java index 3feb0755..d9ca897e 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/blocks/BlockGoldDimDoor.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/blocks/BlockGoldDimDoor.java @@ -25,7 +25,7 @@ public class BlockGoldDimDoor extends BaseDimDoor { if (!world.isRemote && world.getBlockId(x, y - 1, z) == this.blockID) { - NewDimData dimension = PocketManager.getDimensionData(world); + NewDimData dimension = PocketManager.createDimensionData(world); DimLink link = dimension.getLink(x, y, z); if (link == null) { diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/blocks/DimensionalDoor.java b/src/main/java/StevenDimDoors/mod_pocketDim/blocks/DimensionalDoor.java index 3537a778..fc4f7091 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/blocks/DimensionalDoor.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/blocks/DimensionalDoor.java @@ -22,7 +22,7 @@ public class DimensionalDoor extends BaseDimDoor { if (!world.isRemote && world.getBlockId(x, y - 1, z) == this.blockID) { - NewDimData dimension = PocketManager.getDimensionData(world); + NewDimData dimension = PocketManager.createDimensionData(world); DimLink link = dimension.getLink(x, y, z); if (link == null) { diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/blocks/TransTrapdoor.java b/src/main/java/StevenDimDoors/mod_pocketDim/blocks/TransTrapdoor.java index d2eda146..52be329c 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/blocks/TransTrapdoor.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/blocks/TransTrapdoor.java @@ -76,7 +76,7 @@ public class TransTrapdoor extends BlockTrapDoor implements IDimDoor, ITileEntit { if (!world.isRemote) { - NewDimData dimension = PocketManager.getDimensionData(world); + NewDimData dimension = PocketManager.createDimensionData(world); DimLink link = dimension.getLink(x, y, z); if (link == null && dimension.isPocketDimension()) { diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/blocks/TransientDoor.java b/src/main/java/StevenDimDoors/mod_pocketDim/blocks/TransientDoor.java index 0eac6317..9f56a63d 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/blocks/TransientDoor.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/blocks/TransientDoor.java @@ -64,7 +64,7 @@ public class TransientDoor extends BaseDimDoor { if (!world.isRemote && world.getBlockId(x, y - 1, z) == this.blockID) { - NewDimData dimension = PocketManager.getDimensionData(world); + NewDimData dimension = PocketManager.createDimensionData(world); DimLink link = dimension.getLink(x, y, z); if (link == null && dimension.isPocketDimension()) { diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/blocks/UnstableDoor.java b/src/main/java/StevenDimDoors/mod_pocketDim/blocks/UnstableDoor.java index 6f14c667..3a82941f 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/blocks/UnstableDoor.java +++ b/src/main/java/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); + NewDimData dimension = PocketManager.createDimensionData(world); dimension.createLink(x, y, z, LinkTypes.RANDOM,world.getBlockMetadata(x, y - 1, z)); } } diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/blocks/WarpDoor.java b/src/main/java/StevenDimDoors/mod_pocketDim/blocks/WarpDoor.java index f860f6e7..c9ed904d 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/blocks/WarpDoor.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/blocks/WarpDoor.java @@ -22,7 +22,7 @@ public class WarpDoor extends BaseDimDoor { if (!world.isRemote && world.getBlockId(x, y - 1, z) == this.blockID) { - NewDimData dimension = PocketManager.getDimensionData(world); + NewDimData dimension = PocketManager.createDimensionData(world); DimLink link = dimension.getLink(x, y, z); if (link == null && dimension.isPocketDimension()) { diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/commands/CommandCreateDungeonRift.java b/src/main/java/StevenDimDoors/mod_pocketDim/commands/CommandCreateDungeonRift.java index 686b5d36..588457e3 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/commands/CommandCreateDungeonRift.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/commands/CommandCreateDungeonRift.java @@ -61,7 +61,7 @@ public class CommandCreateDungeonRift extends DDCommandBase // Check if we found any matches if (result != null) { - dimension = PocketManager.getDimensionData(sender.worldObj); + dimension = PocketManager.createDimensionData(sender.worldObj); link = dimension.createLink(x, y + 1, z, LinkTypes.DUNGEON, orientation); if (PocketBuilder.generateSelectedDungeonPocket(link, mod_pocketDim.properties, result)) { diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/commands/CommandCreateRandomRift.java b/src/main/java/StevenDimDoors/mod_pocketDim/commands/CommandCreateRandomRift.java index 646fda32..201279bd 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/commands/CommandCreateRandomRift.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/commands/CommandCreateRandomRift.java @@ -53,7 +53,7 @@ public class CommandCreateRandomRift extends DDCommandBase if (command.length == 0) { - dimension = PocketManager.getDimensionData(sender.worldObj); + dimension = PocketManager.createDimensionData(sender.worldObj); link = dimension.createLink(x, y + 1, z, LinkTypes.DUNGEON, orientation); sender.worldObj.setBlock(x, y + 1, z,mod_pocketDim.blockRift.blockID, 0, 3); sendChat(sender, "Created a rift to a random dungeon."); @@ -69,7 +69,7 @@ public class CommandCreateRandomRift extends DDCommandBase // Check if we found any matches if (result != null) { - dimension = PocketManager.getDimensionData(sender.worldObj); + dimension = PocketManager.createDimensionData(sender.worldObj); link = dimension.createLink(x, y + 1, z, LinkTypes.DUNGEON, orientation); if (PocketBuilder.generateSelectedDungeonPocket(link, mod_pocketDim.properties, result)) { diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/commands/CommandDeleteRifts.java b/src/main/java/StevenDimDoors/mod_pocketDim/commands/CommandDeleteRifts.java index cc1a1a14..9a508570 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/commands/CommandDeleteRifts.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/commands/CommandDeleteRifts.java @@ -63,7 +63,7 @@ public class CommandDeleteRifts extends DDCommandBase int y; int z; Point4D location; - NewDimData dimension = PocketManager.getDimensionData(targetDimension); + NewDimData dimension = PocketManager.createDimensionData(world); ArrayList links = dimension.getAllLinks(); for (DimLink link : links) { diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/commands/CommandTeleportPlayer.java b/src/main/java/StevenDimDoors/mod_pocketDim/commands/CommandTeleportPlayer.java index b02222f5..b001c7a9 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/commands/CommandTeleportPlayer.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/commands/CommandTeleportPlayer.java @@ -80,7 +80,6 @@ public class CommandTeleportPlayer extends DDCommandBase else { dimensionID = targetPlayer.worldObj.provider.dimensionId; - // SenseiKiwi: Will not be used, but I prefer not to leave 'world' as null world = targetPlayer.worldObj; } @@ -95,7 +94,7 @@ public class CommandTeleportPlayer extends DDCommandBase if (command.length == 2) { // Check if the destination is a pocket dimension - dimension = PocketManager.getDimensionData(dimensionID); + dimension = PocketManager.createDimensionData(world); if (dimension.isPocketDimension()) { // The destination is a pocket dimension. diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/core/DDTeleporter.java b/src/main/java/StevenDimDoors/mod_pocketDim/core/DDTeleporter.java index debd31aa..0c29491d 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/core/DDTeleporter.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/core/DDTeleporter.java @@ -227,7 +227,7 @@ public class DDTeleporter && blockID != properties.GoldenDimensionalDoorID) { //Return the pocket's orientation instead - return PocketManager.getDimensionData(door.getDimension()).orientation(); + return PocketManager.createDimensionData(world).orientation(); } //Return the orientation portion of its metadata @@ -294,7 +294,7 @@ public class DDTeleporter // to prevent us from doing bad things. Moreover, no dimension is being created, so if we ever // tie code to that, it could cause confusing bugs. // No hacky for you! ~SenseiKiwi - PocketManager.getDimwatcher().onCreated(new ClientDimData(PocketManager.getDimensionData(destination.getDimension()))); + PocketManager.getDimwatcher().onCreated(new ClientDimData(PocketManager.createDimensionData(newWorld))); // Set the new dimension and inform the client that it's moving to a new world. player.dimension = destination.getDimension(); @@ -552,7 +552,7 @@ public class DDTeleporter // To avoid loops, don't generate a destination if the player is // already in a non-pocket dimension. - NewDimData current = PocketManager.getDimensionData(link.link.point.getDimension()); + NewDimData current = PocketManager.getDimensionData(link.source().getDimension()); if (current.isPocketDimension()) { Point4D source = link.source(); @@ -606,9 +606,10 @@ public class DDTeleporter } } } + private static boolean generateSafeExit(DimLink link, DDProperties properties) { - NewDimData current = PocketManager.getDimensionData(link.link.point.getDimension()); + NewDimData current = PocketManager.getDimensionData(link.source().getDimension()); return generateSafeExit(current.root(), link, properties); } @@ -619,7 +620,7 @@ public class DDTeleporter // There is a chance of choosing the Nether first before other root dimensions // to compensate for servers with many Mystcraft ages or other worlds. - NewDimData current = PocketManager.getDimensionData(link.link.point.getDimension()); + NewDimData current = PocketManager.getDimensionData(link.source().getDimension()); ArrayList roots = PocketManager.getRootDimensions(); int shiftChance = START_ROOT_SHIFT_CHANCE + ROOT_SHIFT_CHANCE_PER_LEVEL * (current.packDepth() - 1); @@ -627,11 +628,11 @@ public class DDTeleporter { if (current.root().id() != OVERWORLD_DIMENSION_ID && random.nextInt(MAX_OVERWORLD_EXIT_CHANCE) < OVERWORLD_EXIT_CHANCE) { - return generateSafeExit(PocketManager.getDimensionData(OVERWORLD_DIMENSION_ID), link, properties); + return generateSafeExit(PocketManager.createDimensionDataDangerously(OVERWORLD_DIMENSION_ID), link, properties); } if (current.root().id() != NETHER_DIMENSION_ID && random.nextInt(MAX_NETHER_EXIT_CHANCE) < NETHER_EXIT_CHANCE) { - return generateSafeExit(PocketManager.getDimensionData(NETHER_DIMENSION_ID), link, properties); + return generateSafeExit(PocketManager.createDimensionDataDangerously(NETHER_DIMENSION_ID), link, properties); } for (int attempts = 0; attempts < 10; attempts++) { @@ -735,7 +736,7 @@ 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,orientation); + DimLink reverse = destinationDim.createLink(x, y + 2, z, LinkTypes.REVERSE, orientation); sourceDim.setLinkDestination(reverse, source.getX(), source.getY(), source.getZ()); // Set up the warp door at the destination diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/core/PocketManager.java b/src/main/java/StevenDimDoors/mod_pocketDim/core/PocketManager.java index a509c383..39d5cf36 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/core/PocketManager.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/core/PocketManager.java @@ -163,15 +163,15 @@ public class PocketManager public void onCreated(ClientLinkData link) { Point4D source = link.point; - NewDimData dimension = getDimensionData(source.getDimension()); - dimension.createLink(source.getX(), source.getY(), source.getZ(), LinkTypes.CLIENT_SIDE,link.orientation); + NewDimData dimension = createDimensionData(source.getDimension()); + dimension.createLink(source.getX(), source.getY(), source.getZ(), LinkTypes.CLIENT_SIDE, link.orientation); } @Override public void onDeleted(ClientLinkData link) { Point4D source = link.point; - getDimensionData(source.getDimension()).deleteLink(source); + createDimensionData(source.getDimension()).deleteLink(source); } } @@ -270,7 +270,6 @@ public class PocketManager public static boolean registerPackedDimData(PackedDimData packedData) { - InnerDimData dimData; //register roots if(packedData.ID==packedData.ParentID) @@ -290,7 +289,7 @@ public class PocketManager dimData = new InnerDimData(packedData.ID, test,true, packedData.IsDungeon, linkWatcher); dimData.isFilled=packedData.IsFilled; dimData.origin = new Point4D(packedData.Origin.getX(),packedData.Origin.getY(),packedData.Origin.getZ(),packedData.ID); - dimData.root=PocketManager.getDimensionData(packedData.RootID); + dimData.root = PocketManager.createDimensionData(packedData.RootID); if(packedData.DungeonData!=null) { @@ -412,9 +411,7 @@ public class PocketManager * loads the dim data from the saved hashMap. Also handles compatibility with old saves, see OldSaveHandler */ private static void loadInternal() - { - //System.out.println(!FMLCommonHandler.instance().getSide().isClient()); - + { File saveDir = DimensionManager.getCurrentSaveRootDirectory(); if (saveDir != null) { @@ -501,23 +498,19 @@ public class PocketManager return world; } - public static NewDimData registerDimension(World world) - { - return registerDimension(world.provider.dimensionId, null, false, false); - } - public static NewDimData registerPocket(NewDimData parent, boolean isDungeon) { if (parent == null) { throw new IllegalArgumentException("parent cannot be null. A pocket dimension must always have a parent dimension."); } - + DDProperties properties = DDProperties.instance(); int dimensionID = DimensionManager.getNextFreeDimId(); DimensionManager.registerDimension(dimensionID, properties.PocketProviderID); return registerDimension(dimensionID, (InnerDimData) parent, true, isDungeon); } + /** * Registers a dimension with DD but NOT with forge. * @param dimensionID @@ -548,16 +541,16 @@ public class PocketManager } @SideOnly(Side.CLIENT) - private static NewDimData registerClientDimension(int dimensionID, int rootID) + protected static NewDimData registerClientDimension(int dimensionID, int rootID) { - System.out.println("Registered dim "+dimensionID+" on the client."); - // No need to raise events heres since this code should only run on the client side - // getDimensionData() always handles root dimensions properly, even if the weren't defined before + // No need to raise events heres since this code should only run on the + // client side. createDimensionData() always handles root dimensions + // properly, even if they weren't defined before. - // SenseiKiwi: I'm a little worried about how getDimensionData will raise + // SenseiKiwi: I'm a little worried about how createDimensionData will raise // an event when it creates any root dimensions... Needs checking later. - InnerDimData root = (InnerDimData) getDimensionData(rootID); + InnerDimData root = (InnerDimData) createDimensionData(rootID); InnerDimData dimension; if (rootID != dimensionID) @@ -573,7 +566,7 @@ public class PocketManager { dimension = root; } - if(dimension.isPocketDimension()&&!DimensionManager.isDimensionRegistered(dimension.id())) + if (dimension.isPocketDimension() && !DimensionManager.isDimensionRegistered(dimension.id())) { //Im registering pocket dims here. I *think* we can assume that if its a pocket and we are //registering its dim data, we also need to register it with forge. @@ -584,26 +577,29 @@ public class PocketManager } return dimension; } - - public static NewDimData getDimensionData(World world) - { - return getDimensionData(world.provider.dimensionId); - } - + public static NewDimData getDimensionData(int dimensionID) { - //Retrieve the data for a dimension. If we don't have a record for that dimension, - //assume it's a non-pocket dimension that hasn't been initialized with us before - //and create a NewDimData instance for it. - //Any pocket dimension must be listed with PocketManager to have a dimension ID - //assigned, so it's safe to assume that any unknown dimensions don't belong to us. + return PocketManager.dimensionData.get(dimensionID); + } - //FIXME: What's the point of this condition? Most calls to this function will crash anyway! ~SenseiKiwi - if(PocketManager.dimensionData == null) - { - System.out.println("Something odd happend during shutdown"); - return null; - } + public static NewDimData createDimensionData(World world) + { + return createDimensionData(world.provider.dimensionId); + } + + public static NewDimData createDimensionDataDangerously(int dimensionID) + { + // Same as createDimensionData(int), but public. Meant to discourage anyone from + // using it unless absolutely needed! We'll probably phase this out eventually. + return createDimensionData(dimensionID); + } + + protected static NewDimData createDimensionData(int dimensionID) + { + // Retrieve the data for a dimension. If we don't have a record for that dimension, + // assume it's a non-pocket dimension that hasn't been initialized with us before + // and create a NewDimData instance for it. NewDimData dimension = PocketManager.dimensionData.get(dimensionID); if (dimension == null) { diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/dungeon/DungeonSchematic.java b/src/main/java/StevenDimDoors/mod_pocketDim/dungeon/DungeonSchematic.java index 7a443fc7..07231c55 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/dungeon/DungeonSchematic.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/dungeon/DungeonSchematic.java @@ -247,7 +247,7 @@ public class DungeonSchematic extends Schematic { world.setBlockTileEntity(pocketPoint.getX(), pocketPoint.getY(), pocketPoint.getZ(), TileEntity.createAndLoadEntity(tileTag)); } - setUpDungeon(PocketManager.getDimensionData(world), world, pocketCenter, turnAngle, entryLink, random, properties, blockSetter); + setUpDungeon(PocketManager.createDimensionData(world), world, pocketCenter, turnAngle, entryLink, random, properties, blockSetter); } private void setUpDungeon(NewDimData dimension, World world, Point3D pocketCenter, int turnAngle, DimLink entryLink, Random random, DDProperties properties, IBlockSetter blockSetter) diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/helpers/DungeonHelper.java b/src/main/java/StevenDimDoors/mod_pocketDim/helpers/DungeonHelper.java index 1605202f..a4aae506 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/helpers/DungeonHelper.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/helpers/DungeonHelper.java @@ -263,7 +263,7 @@ public class DungeonHelper public DimLink createCustomDungeonDoor(World world, int x, int y, int z) { //Create a link above the specified position. Link to a new pocket dimension. - NewDimData dimension = PocketManager.getDimensionData(world); + NewDimData dimension = PocketManager.createDimensionData(world); DimLink link = dimension.createLink(x, y + 1, z, LinkTypes.POCKET, 3); //Place a Warp Door linked to that pocket diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/items/ItemRiftSignature.java b/src/main/java/StevenDimDoors/mod_pocketDim/items/ItemRiftSignature.java index 84dbde65..48121fd6 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/items/ItemRiftSignature.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/items/ItemRiftSignature.java @@ -74,7 +74,7 @@ public class ItemRiftSignature extends Item // 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); + NewDimData destinationDimension = PocketManager.createDimensionData(world); DimLink link = sourceDimension.createLink(source.getX(), source.getY(), source.getZ(), LinkTypes.NORMAL,source.getOrientation()); DimLink reverse = destinationDimension.createLink(x, adjustedY, z, LinkTypes.NORMAL,orientation); destinationDimension.setLinkDestination(link, x, adjustedY, z); @@ -99,7 +99,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, adjustedY, z,orientation, PocketManager.getDimensionData(world)); + setSource(stack, x, adjustedY, z, orientation, PocketManager.createDimensionData(world)); mod_pocketDim.sendChat(player,("Location Stored in Rift Signature")); world.playSoundAtEntity(player,mod_pocketDim.modid+":riftStart", 0.6f, 1); } diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/items/ItemStabilizedRiftSignature.java b/src/main/java/StevenDimDoors/mod_pocketDim/items/ItemStabilizedRiftSignature.java index c06d5984..94f4acbf 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/items/ItemStabilizedRiftSignature.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/items/ItemStabilizedRiftSignature.java @@ -53,7 +53,7 @@ public class ItemStabilizedRiftSignature extends ItemRiftSignature { // Yes, it's initialized. NewDimData sourceDimension = PocketManager.getDimensionData(source.getDimension()); - NewDimData destinationDimension = PocketManager.getDimensionData(world); + NewDimData destinationDimension = PocketManager.createDimensionData(world); DimLink reverse = destinationDimension.getLink(x, adjustedY, z); DimLink link; @@ -104,7 +104,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, adjustedY, z, orientation, PocketManager.getDimensionData(world)); + setSource(stack, x, adjustedY, z, orientation, PocketManager.createDimensionData(world)); mod_pocketDim.sendChat(player, "Location Stored in Stabilized Rift Signature"); world.playSoundAtEntity(player, "mods.DimDoors.sfx.riftStart", 0.6f, 1); } @@ -129,7 +129,7 @@ public class ItemStabilizedRiftSignature extends ItemRiftSignature if (source != null) { NewDimData sourceDimension = PocketManager.getDimensionData(source.getDimension()); - NewDimData destinationDimension = PocketManager.getDimensionData(world); + NewDimData destinationDimension = PocketManager.createDimensionData(world); DimLink reverse = destinationDimension.getLink(x, adjustedY, z); DimLink link; diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/items/itemRiftRemover.java b/src/main/java/StevenDimDoors/mod_pocketDim/items/itemRiftRemover.java index c95b4725..e1ecef90 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/items/itemRiftRemover.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/items/itemRiftRemover.java @@ -54,7 +54,7 @@ public class itemRiftRemover extends Item int hx = hit.blockX; int hy = hit.blockY; int hz = hit.blockZ; - NewDimData dimension = PocketManager.getDimensionData(world); + NewDimData dimension = PocketManager.createDimensionData(world); DimLink link = dimension.getLink(hx, hy, hz); if (world.getBlockId(hx, hy, hz) == mod_pocketDim.blockRift.blockID && link != null && player.canPlayerEdit(hx, hy, hz, hit.sideHit, stack)) @@ -85,7 +85,7 @@ public class itemRiftRemover extends Item y = hit.blockY; z = hit.blockZ; - NewDimData dimension = PocketManager.getDimensionData(world); + NewDimData dimension = PocketManager.createDimensionData(world); DimLink link = dimension.getLink(x, y, z); if (world.getBlockId(x, y, z) == mod_pocketDim.blockRift.blockID && link != null && player.canPlayerEdit(x, y, z, side, stack)) diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/saving/DDSaveHandler.java b/src/main/java/StevenDimDoors/mod_pocketDim/saving/DDSaveHandler.java index 3a7bb701..a0d214c5 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/saving/DDSaveHandler.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/saving/DDSaveHandler.java @@ -189,7 +189,7 @@ public class DDSaveHandler { if(packedLink.parent.equals(fakePoint)) { - NewDimData data = PocketManager.getDimensionData(packedLink.source.getDimension()); + NewDimData data = PocketManager.createDimensionDataDangerously(packedLink.source.getDimension()); int linkType = packedLink.tail.linkType; if((linkType < LinkTypes.ENUM_MIN || linkType > LinkTypes.ENUM_MAX) && linkType != LinkTypes.CLIENT_SIDE) @@ -201,7 +201,7 @@ public class DDSaveHandler Point4D destination = packedLink.tail.destination; if(destination!=null) { - PocketManager.getDimensionData(destination.getDimension()).setLinkDestination(link, destination.getX(),destination.getY(),destination.getZ()); + PocketManager.createDimensionDataDangerously(destination.getDimension()).setLinkDestination(link, destination.getX(),destination.getY(),destination.getZ()); } unpackedLinks.add(packedLink); } @@ -213,7 +213,7 @@ public class DDSaveHandler { for(PackedLinkData packedLink : linksToUnpack) { - NewDimData data = PocketManager.getDimensionData(packedLink.source.getDimension()); + NewDimData data = PocketManager.createDimensionDataDangerously(packedLink.source.getDimension()); if(data.getLink(packedLink.parent)!=null) { data.createChildLink(packedLink.source.getX(), packedLink.source.getY(), packedLink.source.getZ(), data.getLink(packedLink.parent)); diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/tileentities/TileEntityDimDoorGold.java b/src/main/java/StevenDimDoors/mod_pocketDim/tileentities/TileEntityDimDoorGold.java index 093c1e8e..6b9696e6 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/tileentities/TileEntityDimDoorGold.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/tileentities/TileEntityDimDoorGold.java @@ -46,7 +46,7 @@ public class TileEntityDimDoorGold extends TileEntityDimDoor implements IChunkLo // link associated with it. if (!worldObj.isRemote) { - NewDimData dimension = PocketManager.getDimensionData(worldObj); + NewDimData dimension = PocketManager.createDimensionData(worldObj); // Check whether a ticket has already been assigned to this door if (chunkTicket == null) diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/tileentities/TileEntityRift.java b/src/main/java/StevenDimDoors/mod_pocketDim/tileentities/TileEntityRift.java index 62bb62bf..cf6df983 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/tileentities/TileEntityRift.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/tileentities/TileEntityRift.java @@ -137,7 +137,7 @@ public class TileEntityRift extends DDTileEntityBase private void closeRift() { - NewDimData dimension = PocketManager.getDimensionData(worldObj); + NewDimData dimension = PocketManager.createDimensionData(worldObj); if (closeTimer == CLOSING_PERIOD / 2) { for (DimLink riftLink : dimension.findRiftsInRange(worldObj, 6, xCoord, yCoord, zCoord)) @@ -167,7 +167,7 @@ public class TileEntityRift extends DDTileEntityBase public boolean updateNearestRift() { Point4D previousNearest = nearestRiftLocation; - DimLink nearestRiftLink = PocketManager.getDimensionData(worldObj).findNearestRift( + DimLink nearestRiftLink = PocketManager.createDimensionData(worldObj).findNearestRift( worldObj, RIFT_INTERACTION_RANGE, xCoord, yCoord, zCoord); nearestRiftLocation = (nearestRiftLink == null) ? null : nearestRiftLink.source(); @@ -221,7 +221,7 @@ public class TileEntityRift extends DDTileEntityBase return; } - NewDimData dimension = PocketManager.getDimensionData(worldObj); + NewDimData dimension = PocketManager.createDimensionData(worldObj); DimLink link = dimension.getLink(xCoord, yCoord, zCoord); if (link.childCount() >= MAX_CHILD_LINKS || countAncestorLinks(link) >= MAX_ANCESTOR_LINKS) diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/world/PocketBuilder.java b/src/main/java/StevenDimDoors/mod_pocketDim/world/PocketBuilder.java index 515fbee6..fb295250 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/world/PocketBuilder.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/world/PocketBuilder.java @@ -3,6 +3,7 @@ package StevenDimDoors.mod_pocketDim.world; import java.util.Random; import net.minecraft.block.Block; +import net.minecraft.item.ItemDoor; import net.minecraft.util.MathHelper; import net.minecraft.world.World; import net.minecraft.world.chunk.Chunk; @@ -21,7 +22,6 @@ import StevenDimDoors.mod_pocketDim.dungeon.DungeonSchematic; import StevenDimDoors.mod_pocketDim.dungeon.pack.DungeonPackConfig; import StevenDimDoors.mod_pocketDim.helpers.DungeonHelper; import StevenDimDoors.mod_pocketDim.helpers.yCoordHelper; -import StevenDimDoors.mod_pocketDim.items.ItemDimensionalDoor; import StevenDimDoors.mod_pocketDim.schematic.BlockRotator; import StevenDimDoors.mod_pocketDim.util.Pair; import StevenDimDoors.mod_pocketDim.util.Point4D; @@ -40,87 +40,6 @@ public class PocketBuilder private PocketBuilder() { } - /** - * Method that takes an arbitrary link into a dungeon pocket and tries to regenerate it. First uses the origin to find that link, - * then uses that link to find the link that originally created the dungeon. If it cant find any of these, it - * instead makes the link that lead to this point into an exit door style link, sending the player to the overworld. - * @param dimension The dungeon to be regenerated - * @param linkIn The link leading somewhere into the dungeon. - * @param properties - * @return - */ - - public static boolean regenerateDungeonPocket(NewDimData dimension, DimLink linkIn, DDProperties properties) - { - if (linkIn == null) - { - throw new IllegalArgumentException("link cannot be null."); - } - if (properties == null) - { - throw new IllegalArgumentException("properties cannot be null."); - } - //The link that is at the origin of the dungeon - DimLink originLink = dimension.getLink(dimension.origin()); - Point4D oldLinkPos = linkIn.source(); - if(originLink==null) - { - int orientation = linkIn.orientation(); - originLink=dimension.createLink(oldLinkPos, LinkTypes.SAFE_EXIT, (orientation+2)%4); - return false; - } - //The link that originally created the dungeon on the way in - DimLink incomingLink = PocketManager.getLink(originLink.destination()); - if(incomingLink==null||incomingLink.linkType()!=LinkTypes.DUNGEON||!(originLink.linkType()==LinkTypes.REVERSE)) - { - int orientation = linkIn.orientation(); - dimension.deleteLink(originLink); - dimension.createLink(oldLinkPos, LinkTypes.SAFE_EXIT, (orientation+2)%4); - return false; - } - NewDimData parent = PocketManager.getDimensionData(incomingLink.source().getDimension()); - - if (!dimension.isDungeon()) - { - throw new IllegalArgumentException("destination must be dungeon"); - } - if (dimension.isFilled()) - { - throw new IllegalArgumentException("destination must be empty"); - } - if (!dimension.isInitialized()) - { - throw new IllegalArgumentException("destination must already exist"); - } - - try - { - //Load a world - World world = PocketManager.loadDimension(dimension.id()); - - if (world == null || world.provider == null) - { - System.err.println("Could not initialize dimension for a dungeon!"); - return false; - } - - DungeonSchematic schematic = loadAndValidateDungeon(dimension.dungeon(), properties); - if (schematic == null) - { - return false; - } - Point3D destination = new Point3D(incomingLink.destination()); - schematic.copyToWorld(world, destination, originLink.orientation(), incomingLink, random, properties, false); - dimension.setFilled(true); - return true; - } - catch (Exception e) - { - e.printStackTrace(); - return false; - } - } - private static boolean buildDungeonPocket(DungeonData dungeon, NewDimData dimension, DimLink link, DungeonSchematic schematic, World world, DDProperties properties) { //Calculate the destination point @@ -479,7 +398,7 @@ public class PocketBuilder //Build the door int doorOrientation = BlockRotator.transformMetadata(BlockRotator.EAST_DOOR_METADATA, orientation - BlockRotator.EAST_DOOR_METADATA + 2, properties.DimensionalDoorID); - ItemDimensionalDoor.placeDoorBlock(world, x, y - 1, z, doorOrientation, doorBlock); + ItemDoor.placeDoorBlock(world, x, y - 1, z, doorOrientation, doorBlock); } private static void buildBox(World world, int centerX, int centerY, int centerZ, int radius, int blockID, boolean placeTnt, int nonTntWeight) diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/world/PocketGenerator.java b/src/main/java/StevenDimDoors/mod_pocketDim/world/PocketGenerator.java index 22996776..df99d038 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/world/PocketGenerator.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/world/PocketGenerator.java @@ -68,7 +68,7 @@ public class PocketGenerator extends ChunkProviderGenerate @Override public List getPossibleCreatures(EnumCreatureType var1, int var2, int var3, int var4) { - NewDimData dimension = PocketManager.getDimensionData(this.worldObj); + NewDimData dimension = PocketManager.createDimensionData(this.worldObj); if (dimension != null && dimension.dungeon() != null && !dimension.dungeon().isOpen()) { return this.worldObj.getBiomeGenForCoords(var2, var3).getSpawnableList(var1); diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/world/PocketProvider.java b/src/main/java/StevenDimDoors/mod_pocketDim/world/PocketProvider.java index 08924d82..910d0fbc 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/world/PocketProvider.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/world/PocketProvider.java @@ -7,7 +7,6 @@ import net.minecraft.world.WorldProvider; import net.minecraft.world.biome.WorldChunkManagerHell; import net.minecraft.world.chunk.IChunkProvider; import net.minecraftforge.client.IRenderHandler; -import net.minecraftforge.common.DimensionManager; import StevenDimDoors.mod_pocketDim.CloudRenderBlank; import StevenDimDoors.mod_pocketDim.mod_pocketDim; import StevenDimDoors.mod_pocketDim.config.DDProperties; @@ -103,11 +102,8 @@ public class PocketProvider extends WorldProvider { respawnDim = PocketManager.getDimensionData(this.dimensionId).root().id(); } - - if (DimensionManager.getWorld(respawnDim) == null) - { - DimensionManager.initDimension(respawnDim); - } + // TODO: Are we sure we need to load the dimension as well? Why can't the game handle that? + PocketManager.loadDimension(respawnDim); return respawnDim; } diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/world/fortresses/ComponentNetherGateway.java b/src/main/java/StevenDimDoors/mod_pocketDim/world/fortresses/ComponentNetherGateway.java index db6ef448..8a63b40a 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/world/fortresses/ComponentNetherGateway.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/world/fortresses/ComponentNetherGateway.java @@ -154,7 +154,7 @@ public class ComponentNetherGateway extends StructureComponent if (bounds.isVecInside(x, y, z) && bounds.isVecInside(x, y + 1, z)) { orientation = this.getMetadataWithOffset(Block.doorWood.blockID, 1); - dimension = PocketManager.getDimensionData(world); + dimension = PocketManager.createDimensionData(world); link = dimension.getLink(x, y + 1, z); if (link == null) { diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/world/gateways/BaseSchematicGateway.java b/src/main/java/StevenDimDoors/mod_pocketDim/world/gateways/BaseSchematicGateway.java index 6eaa0dab..c94554d1 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/world/gateways/BaseSchematicGateway.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/world/gateways/BaseSchematicGateway.java @@ -44,7 +44,7 @@ public abstract class BaseSchematicGateway extends BaseGateway this.generateRandomBits(world, x, y, z); // Generate a dungeon link in the door - PocketManager.getDimensionData(world).createLink(x, y + doorLocation.getY(), z, LinkTypes.DUNGEON, orientation); + PocketManager.createDimensionData(world).createLink(x, y + doorLocation.getY(), z, LinkTypes.DUNGEON, orientation); return true; } diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/world/gateways/GatewayGenerator.java b/src/main/java/StevenDimDoors/mod_pocketDim/world/gateways/GatewayGenerator.java index dfd855a3..19b4ba45 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/world/gateways/GatewayGenerator.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/world/gateways/GatewayGenerator.java @@ -106,7 +106,7 @@ public class GatewayGenerator implements IWorldGenerator //Create a link. If this is not the first time, create a child link and connect it to the first link. if (link == null) { - dimension = PocketManager.getDimensionData(world); + dimension = PocketManager.createDimensionData(world); link = dimension.createLink(x, y + 1, z, LinkTypes.DUNGEON,0); } else diff --git a/src/main/java/StevenDimDoors/mod_pocketDim/world/gateways/GatewayLimbo.java b/src/main/java/StevenDimDoors/mod_pocketDim/world/gateways/GatewayLimbo.java index cb50437d..665dbd88 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDim/world/gateways/GatewayLimbo.java +++ b/src/main/java/StevenDimDoors/mod_pocketDim/world/gateways/GatewayLimbo.java @@ -30,7 +30,7 @@ public class GatewayLimbo extends BaseGateway world.setBlock(x, y + 1, z - 1, blockID, 0, 3); world.setBlock(x, y + 1, z + 1, blockID, 0, 3); - PocketManager.getDimensionData(world).createLink(x, y + 2, z, LinkTypes.DUNGEON, 0); + PocketManager.createDimensionData(world).createLink(x, y + 2, z, LinkTypes.DUNGEON, 0); ItemDoor.placeDoorBlock(world, x, y + 1, z, 0, mod_pocketDim.transientDoor); return true; } diff --git a/src/main/java/StevenDimDoors/mod_pocketDimClient/ClosingRiftFX.java b/src/main/java/StevenDimDoors/mod_pocketDimClient/ClosingRiftFX.java index 2ea32391..a36d77c8 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDimClient/ClosingRiftFX.java +++ b/src/main/java/StevenDimDoors/mod_pocketDimClient/ClosingRiftFX.java @@ -100,7 +100,7 @@ public class ClosingRiftFX extends EntityFX float var15 = (float)(this.prevPosZ + (this.posZ - this.prevPosZ) * par2 - interpPosZ); float var16 = 0.8F; - if (PocketManager.getDimensionData(worldObj).isPocketDimension()) + if (PocketManager.createDimensionData(worldObj).isPocketDimension()) { var16 = 0.4F; } diff --git a/src/main/java/StevenDimDoors/mod_pocketDimClient/GoggleRiftFX.java b/src/main/java/StevenDimDoors/mod_pocketDimClient/GoggleRiftFX.java index 069d58ff..9845af8e 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDimClient/GoggleRiftFX.java +++ b/src/main/java/StevenDimDoors/mod_pocketDimClient/GoggleRiftFX.java @@ -54,7 +54,7 @@ public class GoggleRiftFX extends EntityFireworkSparkFX float var15 = (float)(this.prevPosZ + (this.posZ - this.prevPosZ) * par2 - interpPosZ); float var16 = .0F; - if (PocketManager.getDimensionData(worldObj).isPocketDimension()) + if (PocketManager.createDimensionData(worldObj).isPocketDimension()) { var16 = .7F; } diff --git a/src/main/java/StevenDimDoors/mod_pocketDimClient/RiftFX.java b/src/main/java/StevenDimDoors/mod_pocketDimClient/RiftFX.java index 7f4dc941..f564180c 100644 --- a/src/main/java/StevenDimDoors/mod_pocketDimClient/RiftFX.java +++ b/src/main/java/StevenDimDoors/mod_pocketDimClient/RiftFX.java @@ -111,7 +111,7 @@ public class RiftFX extends EntityFX float f13 = (float)(this.prevPosZ + (this.posZ - this.prevPosZ) * par2 - interpPosZ); float f14 = 0F; - if (PocketManager.getDimensionData(worldObj).isPocketDimension()) + if (PocketManager.createDimensionData(worldObj).isPocketDimension()) { f14 = 0.7F; }