package com.bergerkiller.bukkit.common.server; import java.io.File; import java.util.ArrayList; import java.util.Collection; import java.util.Locale; import org.bukkit.Bukkit; import com.bergerkiller.bukkit.common.internal.CommonPlugin; import com.bergerkiller.bukkit.common.utils.StreamUtil; public abstract class CommonServerBase implements CommonServer { @Override public Collection<String> getLoadableWorlds() { File[] files = Bukkit.getWorldContainer().listFiles(); Collection<String> rval = new ArrayList<String>(files.length); for (String worldName : Bukkit.getWorldContainer().list()) { if (isLoadableWorld(worldName)) { rval.add(worldName); } } return rval; } @Override public File getWorldFolder(String worldName) { return StreamUtil.getFileIgnoreCase(Bukkit.getWorldContainer(), worldName); } @Override public boolean isLoadableWorld(String worldName) { if (Bukkit.getWorld(worldName) != null) { return true; } File worldFolder = getWorldFolder(worldName); if (!worldFolder.isDirectory()) { return false; } if (new File(worldFolder, "level.dat").exists()) { return true; } // Check whether there are any valid region files in the folder File regionFolder = getWorldRegionFolder(worldName); if (regionFolder != null) { for (String fileName : regionFolder.list()) { if (fileName.toLowerCase(Locale.ENGLISH).endsWith(".mca")) { return true; } } } return false; } @Override public File getWorldRegionFolder(String worldName) { File mainFolder = getWorldFolder(worldName); // Overworld File tmp = new File(mainFolder, "region"); if (tmp.exists()) { return tmp; } // Nether tmp = new File(mainFolder, "DIM-1" + File.pathSeparator + "region"); if (tmp.exists()) { return tmp; } // The End tmp = new File(mainFolder, "DIM1" + File.pathSeparator + "region"); if (tmp.exists()) { return tmp; } // Unknown??? return null; } @Override public void enable(CommonPlugin plugin) { } @Override public void disable(CommonPlugin plugin) { } }