mirror of
https://github.com/Multiverse/Multiverse-Core.git
synced 2024-11-22 10:36:06 +01:00
Document WorldManager.java
This commit is contained in:
parent
1b42a25ccb
commit
f9481db5a6
@ -22,7 +22,6 @@ import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.Event;
|
||||
import org.bukkit.event.Event.Priority;
|
||||
import org.bukkit.event.player.PlayerTeleportEvent;
|
||||
import org.bukkit.plugin.PluginManager;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
import org.bukkit.util.config.Configuration;
|
||||
@ -265,7 +264,7 @@ public class MultiverseCore extends JavaPlugin implements LoggablePlugin {
|
||||
}
|
||||
|
||||
try {
|
||||
this.worldManager.propigateConfigFile();
|
||||
this.worldManager.propagateConfigFile();
|
||||
log(Level.INFO, "- World Config -- Loaded");
|
||||
} catch (Exception e) {
|
||||
log(Level.INFO, "- Failed to load worlds.yml");
|
||||
|
@ -17,6 +17,11 @@ import org.bukkit.util.config.Configuration;
|
||||
import com.onarandombox.MultiverseCore.MVWorld;
|
||||
import com.onarandombox.MultiverseCore.MultiverseCore;
|
||||
|
||||
/**
|
||||
* Public facing API to add/remove Multiverse worlds.
|
||||
*
|
||||
* @author fernferret, Rigby90
|
||||
*/
|
||||
public class WorldManager {
|
||||
private MultiverseCore plugin;
|
||||
private PurgeWorlds worldPurger;
|
||||
@ -24,7 +29,7 @@ public class WorldManager {
|
||||
private Configuration configWorlds = null;
|
||||
|
||||
public WorldManager(MultiverseCore core) {
|
||||
|
||||
|
||||
this.plugin = core;
|
||||
this.worlds = new HashMap<String, MVWorld>();
|
||||
this.worldPurger = new PurgeWorlds(this.plugin);
|
||||
@ -34,9 +39,13 @@ public class WorldManager {
|
||||
* Add a new World to the Multiverse Setup.
|
||||
* <p/>
|
||||
* Isn't there a prettier way to do this??!!?!?!
|
||||
*
|
||||
*
|
||||
* @param name World Name
|
||||
* @param env Environment Type
|
||||
* @param seedString The seed in the form of a string. If the seed is a Long, it will be interpreted as such.
|
||||
* @param generator The Custom generator plugin to use.
|
||||
*
|
||||
* @return True if the world is added, false if not.
|
||||
*/
|
||||
public boolean addWorld(String name, Environment env, String seedString, String generator) {
|
||||
plugin.log(Level.FINE, "Adding world with: " + name + ", " + env.toString() + ", " + seedString + ", " + generator);
|
||||
@ -65,9 +74,7 @@ public class WorldManager {
|
||||
this.plugin.log(Level.WARNING, "Could not find plugin: " + generatorName);
|
||||
} else {
|
||||
this.plugin.log(Level.WARNING, "Found plugin: " + generatorName + ", but did not find generatorID: " + generatorID);
|
||||
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -101,11 +108,25 @@ public class WorldManager {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Verifies that a given Plugin generator string exists.
|
||||
*
|
||||
* @param generator The name of the generator plugin. This should be something like CleanRoomGenerator.
|
||||
* @return True if the plugin exists and is enabled, false if not.
|
||||
*/
|
||||
private boolean pluginExists(String generator) {
|
||||
Plugin plugin = this.plugin.getServer().getPluginManager().getPlugin(generator);
|
||||
return plugin != null;
|
||||
return plugin != null && plugin.isEnabled();
|
||||
}
|
||||
|
||||
/**
|
||||
* Test if a given chunk generator is valid.
|
||||
*
|
||||
* @param generator The generator name.
|
||||
* @param generatorID The generator id.
|
||||
* @param worldName The worldName to use as the default.
|
||||
* @return A {@link ChunkGenerator} or null
|
||||
*/
|
||||
private ChunkGenerator getChunkGenerator(String generator, String generatorID, String worldName) {
|
||||
if (generator == null) {
|
||||
return null;
|
||||
@ -122,7 +143,7 @@ public class WorldManager {
|
||||
|
||||
/**
|
||||
* Remove the world from the Multiverse list and from the config
|
||||
*
|
||||
*
|
||||
* @param name The name of the world to remove
|
||||
* @return True if success, false if failure.
|
||||
*/
|
||||
@ -138,10 +159,10 @@ public class WorldManager {
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Remove the world from the Multiverse list
|
||||
*
|
||||
*
|
||||
* @param name The name of the world to remove
|
||||
* @return True if success, false if failure.
|
||||
*/
|
||||
@ -160,10 +181,10 @@ public class WorldManager {
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Remove the world from the Multiverse list, from the config and deletes the folder
|
||||
*
|
||||
*
|
||||
* @param name The name of the world to remove
|
||||
* @return True if success, false if failure.
|
||||
*/
|
||||
@ -217,11 +238,23 @@ public class WorldManager {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Unload a world from Multiverse
|
||||
*
|
||||
* @param name Name of the world to unload
|
||||
* @param safely Perform this safely. Set to True to save world files before unloading.
|
||||
* @return True if the world was unloaded, false if not.
|
||||
*/
|
||||
private boolean unloadWorld(String name, boolean safely) {
|
||||
this.removePlayersFromWorld(name);
|
||||
return this.plugin.getServer().unloadWorld(name, safely);
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes all players from the specified world.
|
||||
*
|
||||
* @param name World to remove players from.
|
||||
*/
|
||||
private void removePlayersFromWorld(String name) {
|
||||
World w = this.plugin.getServer().getWorld(name);
|
||||
if (w != null) {
|
||||
@ -234,10 +267,21 @@ public class WorldManager {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a list of all the worlds Multiverse knows about.
|
||||
*
|
||||
* @return A list of {@link MVWorld}.
|
||||
*/
|
||||
public Collection<MVWorld> getMVWorlds() {
|
||||
return this.worlds.values();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a {@link MVWorld} if it exists, and null if it does not. This will search name AND alias.
|
||||
*
|
||||
* @param name The name or alias of the world to get.
|
||||
* @return A {@link MVWorld} or null.
|
||||
*/
|
||||
public MVWorld getMVWorld(String name) {
|
||||
if (this.worlds.containsKey(name)) {
|
||||
return this.worlds.get(name);
|
||||
@ -245,6 +289,12 @@ public class WorldManager {
|
||||
return this.getMVWorldByAlias(name);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a {@link MVWorld} if it exists, and null if it does not. This will search ONLY alias.
|
||||
*
|
||||
* @param alias The alias of the world to get.
|
||||
* @return A {@link MVWorld} or null.
|
||||
*/
|
||||
private MVWorld getMVWorldByAlias(String alias) {
|
||||
for (MVWorld w : this.worlds.values()) {
|
||||
if (w.getAlias().equalsIgnoreCase(alias)) {
|
||||
@ -254,19 +304,25 @@ public class WorldManager {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks to see if the given name is a valid {@link MVWorld}
|
||||
*
|
||||
* @param name The name or alias of the world to check.
|
||||
* @return True if the world exists, false if not.
|
||||
*/
|
||||
public boolean isMVWorld(String name) {
|
||||
return (this.worlds.containsKey(name) || isMVWorldAlias(name));
|
||||
}
|
||||
|
||||
/**
|
||||
* This method ONLY checks the alias of each world.
|
||||
*
|
||||
* @param name
|
||||
* @return
|
||||
*
|
||||
* @param alias The alias of the world to check.
|
||||
* @return True if the world exists, false if not.
|
||||
*/
|
||||
private boolean isMVWorldAlias(String name) {
|
||||
private boolean isMVWorldAlias(String alias) {
|
||||
for (MVWorld w : this.worlds.values()) {
|
||||
if (w.getAlias().equalsIgnoreCase(name)) {
|
||||
if (w.getAlias().equalsIgnoreCase(alias)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@ -274,6 +330,8 @@ public class WorldManager {
|
||||
}
|
||||
/**
|
||||
* Load the Worlds & Settings from the configuration file.
|
||||
*
|
||||
* @param forceLoad If set to true, this will perform a total reset and not just load new worlds.
|
||||
*/
|
||||
public void loadWorlds(boolean forceLoad) {
|
||||
// Basic Counter to count how many Worlds we are loading.
|
||||
@ -314,9 +372,9 @@ public class WorldManager {
|
||||
String environment = this.configWorlds.getString("worlds." + worldKey + ".environment", "NORMAL"); // Grab the Environment as a String.
|
||||
String seedString = this.configWorlds.getString("worlds." + worldKey + ".seed", "");
|
||||
|
||||
String generatorstring = this.configWorlds.getString("worlds." + worldKey + ".generator");
|
||||
String generatorString = this.configWorlds.getString("worlds." + worldKey + ".generator");
|
||||
|
||||
addWorld(worldKey, this.plugin.getEnvFromString(environment), seedString, generatorstring);
|
||||
addWorld(worldKey, this.plugin.getEnvFromString(environment), seedString, generatorString);
|
||||
|
||||
// Increment the world count
|
||||
count++;
|
||||
@ -327,16 +385,30 @@ public class WorldManager {
|
||||
this.plugin.log(Level.INFO, count + " - World(s) loaded.");
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the World Purger.
|
||||
*
|
||||
* @return A valid {@link PurgeWorlds}.
|
||||
*/
|
||||
public PurgeWorlds getWorldPurger() {
|
||||
return this.worldPurger;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Load the config from a file.
|
||||
*
|
||||
* @param file The file to load.
|
||||
* @return A loaded configuration.
|
||||
*/
|
||||
public Configuration loadWorldConfig(File file) {
|
||||
this.configWorlds = new Configuration(file);
|
||||
return this.configWorlds;
|
||||
}
|
||||
|
||||
public void propigateConfigFile() {
|
||||
|
||||
/**
|
||||
* Reload the Config File
|
||||
*/
|
||||
public void propagateConfigFile() {
|
||||
this.configWorlds.load();
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user