Added the ability to handle unknown worlds at server start.

(GM will create the data files for any worlds it finds which are not
in the config.yml)
This commit is contained in:
ElgarL 2011-10-01 21:07:39 +01:00
parent 0e867df195
commit 3030093907
2 changed files with 29 additions and 8 deletions

View file

@ -32,4 +32,6 @@ v 1.2:
- GM will now create all relevant world data files for non mirrored worlds. - GM will now create all relevant world data files for non mirrored worlds.
(for all worlds named in config.yml) (for all worlds named in config.yml)
- Attempt to stop GM wiping groups/users yml's on a bad shut down. - Attempt to stop GM wiping groups/users yml's on a bad shut down.
- Added event handling to manage new world creation at runtime. - Added event handling to manage new world creation at runtime.
- Added the ability to handle unknown worlds at server start.
(GM will create the data files for any worlds it finds which are not in the config.yml)

View file

@ -21,6 +21,7 @@ import org.anjocaido.groupmanager.dataholder.WorldDataHolder;
import org.anjocaido.groupmanager.dataholder.OverloadedWorldHolder; import org.anjocaido.groupmanager.dataholder.OverloadedWorldHolder;
import org.anjocaido.groupmanager.permissions.AnjoPermissionsHandler; import org.anjocaido.groupmanager.permissions.AnjoPermissionsHandler;
import org.anjocaido.groupmanager.utils.Tasks; import org.anjocaido.groupmanager.utils.Tasks;
import org.bukkit.World;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
/** /**
@ -70,21 +71,39 @@ public class WorldsHolder {
} }
private void initialWorldLoading() { private void initialWorldLoading() {
//LOAD EVERY WORLD POSSIBLE //Load the default world
loadWorld(serverDefaultWorldName); loadWorld(serverDefaultWorldName);
defaultWorld = worldsData.get(serverDefaultWorldName); defaultWorld = worldsData.get(serverDefaultWorldName);
} }
private void loadAllSearchedWorlds() { private void loadAllSearchedWorlds() {
/*
* Read all known worlds from Bukkit
* Create the data files if they don't already exist,
* and they are not mirrored.
*/
for (World world: plugin.getServer().getWorlds())
if ((!worldsData.containsKey(world.getName().toLowerCase()))
&& (!mirrors.containsKey(world.getName().toLowerCase())))
setupWorldFolder(world.getName());
/*
* Loop over all folders within the worlds folder
* and attempt to load the world data
*/
for (File folder : worldsFolder.listFiles()) { for (File folder : worldsFolder.listFiles()) {
if (folder.isDirectory()) if (folder.isDirectory()) {
GroupManager.logger.info("World Found: " + folder.getName()); GroupManager.logger.info("World Found: " + folder.getName());
if (worldsData.containsKey(folder.getName().toLowerCase())) { /*
continue; * don't load any worlds which are already loaded
} * or mirrored worlds that don't need data.
if (folder.isDirectory()) { */
loadWorld(folder.getName()); if (worldsData.containsKey(folder.getName().toLowerCase())
|| mirrors.containsKey(folder.getName().toLowerCase())) {
continue;
}
loadWorld(folder.getName());
} }
} }
} }