Add worlds automatically on object initialization

This commit is contained in:
Daniel Saukel 2016-06-26 00:56:30 +02:00
parent 24fae9da05
commit e2f4a8fe84
5 changed files with 45 additions and 7 deletions

View File

@ -135,6 +135,8 @@ public class EditWorld extends InstanceWorld {
}
FileUtil.removeDirectory(getFolder());
worlds.removeInstance(this);
}
/* Statics */

View File

@ -17,8 +17,6 @@
package io.github.dre2n.dungeonsxl.world;
import io.github.dre2n.commons.util.FileUtil;
import io.github.dre2n.dungeonsxl.DungeonsXL;
import io.github.dre2n.dungeonsxl.config.DungeonConfig;
import io.github.dre2n.dungeonsxl.dungeon.Dungeon;
import io.github.dre2n.dungeonsxl.event.gameworld.GameWorldStartGameEvent;
import io.github.dre2n.dungeonsxl.event.gameworld.GameWorldUnloadEvent;
@ -56,8 +54,6 @@ import org.bukkit.inventory.ItemStack;
*/
public class GameWorld extends InstanceWorld {
static DungeonsXL plugin = DungeonsXL.getInstance();
// Variables
private boolean tutorial;
private boolean isPlaying = false;
@ -343,8 +339,7 @@ public class GameWorld extends InstanceWorld {
*/
public Dungeon getDungeon() {
for (Dungeon dungeon : plugin.getDungeons().getDungeons()) {
DungeonConfig dungeonConfig = dungeon.getConfig();
if (dungeonConfig.getFloors().contains(getName()) || dungeonConfig.getStartFloor().equals(getName()) || dungeonConfig.getEndFloor().equals(getName())) {
if (dungeon.getConfig().containsFloor(getResource())) {
return dungeon;
}
}
@ -401,6 +396,8 @@ public class GameWorld extends InstanceWorld {
plugin.getWorlds().getInstances().remove(this);
plugin.getServer().unloadWorld(getWorld(), true);
FileUtil.removeDirectory(getFolder());
worlds.removeInstance(this);
}
/**

View File

@ -31,6 +31,7 @@ import org.bukkit.World;
public abstract class InstanceWorld {
protected static DungeonsXL plugin = DungeonsXL.getInstance();
protected static Worlds worlds = plugin.getWorlds();
public static String ID_FILE_PREFIX = ".id_";
@ -46,6 +47,8 @@ public abstract class InstanceWorld {
this.folder = folder;
this.world = world;
this.id = id;
worlds.addInstance(this);
}
/* Getters and setters */

View File

@ -60,6 +60,8 @@ public class ResourceWorld {
}
signData = new SignData(signDataFile);
worlds.addResource(this);
}
public ResourceWorld(File folder) {
@ -74,6 +76,8 @@ public class ResourceWorld {
if (signData.exists()) {
this.signData = new SignData(signData);
}
worlds.addResource(this);
}
/* Getters and setters */

View File

@ -35,7 +35,7 @@ public class Worlds {
public Worlds(File folder) {
for (File file : folder.listFiles()) {
if (file.isDirectory()) {
resources.add(new ResourceWorld(file));
new ResourceWorld(file);
}
}
}
@ -86,6 +86,22 @@ public class Worlds {
return resources;
}
/**
* @param resource
* the ResourceWorld to add
*/
public void addResource(ResourceWorld resource) {
resources.add(resource);
}
/**
* @param resource
* the ResourceWorld to remove
*/
public void removeResource(ResourceWorld resource) {
resources.remove(resource);
}
/**
* @return the loaded InstanceWorlds in the world container
*/
@ -93,6 +109,22 @@ public class Worlds {
return instances;
}
/**
* @param instance
* the InstanceWorld to add
*/
public void addInstance(InstanceWorld instance) {
instances.add(instance);
}
/**
* @param instance
* the InstanceWorld to remove
*/
public void removeInstance(InstanceWorld instance) {
instances.remove(instance);
}
/**
* @return the loaded GameWorlds
*/