From e421987338729e84264e383e24bfa23569475407 Mon Sep 17 00:00:00 2001 From: StevenRS11 Date: Thu, 3 Oct 2013 23:44:50 -0400 Subject: [PATCH] Finished ResetCommand, first pass on blackList --- .../commands/CommandResetDungeons.java | 19 ++++++------- .../mod_pocketDim/core/DDTeleporter.java | 11 ++++++-- .../mod_pocketDim/core/PocketManager.java | 28 ++++++++----------- 3 files changed, 29 insertions(+), 29 deletions(-) diff --git a/StevenDimDoors/mod_pocketDim/commands/CommandResetDungeons.java b/StevenDimDoors/mod_pocketDim/commands/CommandResetDungeons.java index e537261..b7c1bf7 100644 --- a/StevenDimDoors/mod_pocketDim/commands/CommandResetDungeons.java +++ b/StevenDimDoors/mod_pocketDim/commands/CommandResetDungeons.java @@ -36,20 +36,15 @@ public class CommandResetDungeons extends DDCommandBase int dungeonCount = 0; int resetCount = 0; - ArrayList dimIdsToDelete= new ArrayList(); - + ArrayList dimsToDelete = new ArrayList(); for (NewDimData data : PocketManager.getDimensions()) { dungeonCount++; - if(DimensionManager.getWorld(data.id())==null) + if(DimensionManager.getWorld(data.id())==null&&data.isDungeon()) { - if (data.isDungeon()) - { - PocketManager.deleteDimensionFolder(data); - dimIdsToDelete.add(data.id()); - } + dimsToDelete.add(data.id()); } - else + else if(data.isDungeon()) { for(DimLink link : data.links()) { @@ -64,7 +59,11 @@ public class CommandResetDungeons extends DDCommandBase } } } - resetCount = PocketManager.deleteDimensionData(dimIdsToDelete); + for(Integer dimID:dimsToDelete) + { + PocketManager.deletePocket(PocketManager.getDimensionData(dimID), true); + } + //TODO implement blackList //Notify the user of the results diff --git a/StevenDimDoors/mod_pocketDim/core/DDTeleporter.java b/StevenDimDoors/mod_pocketDim/core/DDTeleporter.java index 2dbb3e2..a8db414 100644 --- a/StevenDimDoors/mod_pocketDim/core/DDTeleporter.java +++ b/StevenDimDoors/mod_pocketDim/core/DDTeleporter.java @@ -470,11 +470,16 @@ public class DDTeleporter private static boolean initializeDestination(DimLink link, DDProperties properties, Block door) { - //TODO implement blackList - if (link.hasDestination()) { - return true; + if(PocketManager.isBlackListed(link.destination().getDimension())) + { + link=PocketManager.getDimensionData(link.source().getDimension()).createLink(link.source,LinkTypes.SAFE_EXIT,link.orientation); + } + else + { + return true; + } } // Check the destination type and respond accordingly diff --git a/StevenDimDoors/mod_pocketDim/core/PocketManager.java b/StevenDimDoors/mod_pocketDim/core/PocketManager.java index bbe7822..2e6f124 100644 --- a/StevenDimDoors/mod_pocketDim/core/PocketManager.java +++ b/StevenDimDoors/mod_pocketDim/core/PocketManager.java @@ -148,6 +148,8 @@ public class PocketManager //HashMap that maps all the dimension IDs registered with DimDoors to their DD data. private static HashMap dimensionData = null; + //ArrayList that stores the dimension IDs of any dimension that has been deleted. + private static ArrayList dimensionIDBlackList = null; public static boolean isLoaded() { @@ -172,7 +174,8 @@ public class PocketManager isLoading = true; dimensionData = new HashMap(); rootDimensions = new ArrayList(); - + dimensionIDBlackList = new ArrayList(); + //Register Limbo DDProperties properties = DDProperties.instance(); registerDimension(properties.LimboDimensionID, null, false, false); @@ -197,12 +200,13 @@ public class PocketManager { deleteDimensionFolder(target); } + dimensionIDBlackList.add(dimension.id); deleteDimensionData(dimension.id); return true; } return false; } - public static boolean deleteDimensionFolder(NewDimData target) + private static boolean deleteDimensionFolder(NewDimData target) { InnerDimData dimension = (InnerDimData) target; if (dimension.isPocketDimension() && DimensionManager.getWorld(dimension.id()) == null) @@ -213,7 +217,7 @@ public class PocketManager } return false; } - public static boolean deleteDimensionData(int dimensionID) + private static boolean deleteDimensionData(int dimensionID) { if(dimensionData.containsKey(dimensionID)&& DimensionManager.getWorld(dimensionID) == null) { @@ -229,18 +233,6 @@ public class PocketManager return false; } - public static int deleteDimensionData(ArrayList dimensions) - { - int deletedCount=0; - for(int dimID : dimensions) - { - if(deleteDimensionData(dimID)) - { - deletedCount++; - } - } - return deletedCount; - } private static void registerPockets(DDProperties properties) { for (NewDimData dimension : dimensionData.values()) @@ -377,7 +369,7 @@ public class PocketManager { throw new IllegalArgumentException("Cannot register a dimension with ID = " + dimensionID + " because it has already been registered."); } - + //TODO blacklist stuff probably should happen here InnerDimData dimension = new InnerDimData(dimensionID, parent, isPocket, isDungeon, linkWatcher); dimensionData.put(dimensionID, dimension); if (!dimension.isPocketDimension()) @@ -485,6 +477,10 @@ public class PocketManager } } + public static boolean isBlackListed(int dimensionID) + { + return PocketManager.dimensionIDBlackList.contains(dimensionID); + } public static void registerDimWatcher(IUpdateWatcher watcher) { dimWatcher.registerReceiver(watcher);