下面列出了org.bukkit.Bukkit#unloadWorld ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
public void unLoadMap()
{
//World tpworld = Bukkit.getWorlds().size() > 0 ? Bukkit.getWorlds().get(0) : null;
World tpworld = Game.LobbyMap != null ? Game.LobbyMap.getWorld() : null;
if(tpworld == null)
tpworld = Bukkit.getWorlds().size() > 0 ? Bukkit.getWorlds().get(0) : null;
for(Player p : Bukkit.getOnlinePlayers())
{
if(p.getWorld().getName().equals(this.getWorldName()))
{
if(tpworld != null)
p.teleport(tpworld.getSpawnLocation());
else
p.kickPlayer("Unloading the world and we dont want you to get trapped or glitched!");
}
}
this.unregisterListeners();
boolean b = Bukkit.unloadWorld(super.getWorldName(), false);
Bukkit.getLogger().info("[Annihilation] "+super.getNiceWorldName()+" was unloaded successfully: "+b);
// try
// {
// FileUtils.deleteDirectory(this.mapDirec);
// FileUtils.copyDirectory(this.tempDirec, this.mapDirec);
// FileUtils.deleteDirectory(this.tempDirec);
// }
// catch (IOException e)
// {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
}
/**
* Delete this instance.
*/
@Override
public void delete() {
InstanceWorldUnloadEvent event = new InstanceWorldUnloadEvent(this);
Bukkit.getPluginManager().callEvent(event);
if (event.isCancelled()) {
return;
}
kickAllPlayers();
Bukkit.unloadWorld(getWorld(), /* SPIGOT-5225 */ !Version.isAtLeast(Version.MC1_14_4));
FileUtil.removeDir(getFolder());
plugin.getInstanceCache().remove(this);
}
/**
* Creates the "raw" world that is copied for new instances.
*/
public static void createRaw() {
WorldCreator rawCreator = WorldCreator.name(".raw");
rawCreator.type(WorldType.FLAT);
rawCreator.generateStructures(false);
World world = rawCreator.createWorld();
File worldFolder = new File(Bukkit.getWorldContainer(), ".raw");
FileUtil.copyDir(worldFolder, RAW, DungeonsXL.EXCLUDED_FILES);
Bukkit.unloadWorld(world, /* SPIGOT-5225 */ !Version.isAtLeast(Version.MC1_14_4));
FileUtil.removeDir(worldFolder);
}
@Override
public void delete(boolean save) {
EditWorldUnloadEvent event = new EditWorldUnloadEvent(this, true);
Bukkit.getPluginManager().callEvent(event);
if (event.isCancelled()) {
return;
}
kickAllPlayers();
if (save) {
getResource().getSignData().serializeSigns(signs.values());
Bukkit.unloadWorld(getWorld(), true);
new BukkitRunnable() {
@Override
public void run() {
getResource().clearFolder();
FileUtil.copyDir(getFolder(), getResource().getFolder(), DungeonsXL.EXCLUDED_FILES);
DResourceWorld.deleteUnusedFiles(getResource().getFolder());
FileUtil.removeDir(getFolder());
}
}.runTaskLaterAsynchronously(plugin, plugin.getMainConfig().getEditInstanceRemovalDelay() * 20L);
}
if (!save) {
Bukkit.unloadWorld(getWorld(), /* SPIGOT-5225 */ !Version.isAtLeast(Version.MC1_14_4));
new BukkitRunnable() {
@Override
public void run() {
FileUtil.removeDir(getFolder());
}
}.runTaskLaterAsynchronously(plugin, plugin.getMainConfig().getEditInstanceRemovalDelay() * 20L);
}
getResource().editWorld = null;
plugin.getInstanceCache().remove(this);
}
public void cycleAndMakeMatch() {
if (repositoryManager.getRotation().getNext().equals(cycle.getMap())) {
repositoryManager.getRotation().move();
}
World oldMatchWorld = matchWorld == null ? null : matchWorld.get();
cycle.run();
if (match != null) match.unregisterModules();
this.match = new Match(cycle.getUuid(), cycle.getMap(), repositoryManager.getRepo(cycle.getMap()));
this.match.registerModules();
Cardinal.getInstance().getLogger().info(this.match.getModules().size() + " modules loaded.");
Bukkit.getServer().getPluginManager().callEvent(new CycleCompleteEvent(match));
cycle = new Cycle(repositoryManager.getRotation().getNext(), UUID.randomUUID(), this);
Bukkit.unloadWorld(oldMatchWorld, true);
}
@Override
public void save() {
EditWorldSaveEvent event = new EditWorldSaveEvent(this);
Bukkit.getPluginManager().callEvent(event);
if (event.isCancelled()) {
return;
}
plugin.setLoadingWorld(true);
Map<Player, Double[]> players = new HashMap<>();
getWorld().getPlayers().forEach(p -> players.put(p,
new Double[]{
p.getLocation().getX(),
p.getLocation().getY(),
p.getLocation().getZ(),
new Double(p.getLocation().getYaw()),
new Double(p.getLocation().getPitch())
}
));
kickAllPlayers();
getResource().editWorld = null;
plugin.getInstanceCache().remove(this);
getResource().getSignData().serializeSigns(signs.values());
Bukkit.unloadWorld(getWorld(), true);
new ProgressBar(players.keySet(), plugin.getMainConfig().getEditInstanceRemovalDelay()) {
@Override
public void onFinish() {
getResource().clearFolder();
FileUtil.copyDir(getFolder(), getResource().getFolder(), DungeonsXL.EXCLUDED_FILES);
DResourceWorld.deleteUnusedFiles(getResource().getFolder());
FileUtil.removeDir(getFolder());
plugin.setLoadingWorld(false);
EditWorld newEditWorld = getResource().getOrInstantiateEditWorld(true);
players.keySet().forEach(p -> {
if (p.isOnline()) {
new DEditPlayer(plugin, p, newEditWorld);
Double[] coords = players.get(p);
p.teleport(new Location(newEditWorld.getWorld(), coords[0], coords[1], coords[2], coords[3].floatValue(), coords[4].floatValue()));
}
});
}
}.send(plugin);
}
/**
* Unloads a local world
*
* @param name the world to load
* @throws WorldException if the world is not found or something else goes wrong
*/
public void unloadLocalWorld(@Nonnull String name) {
log.finer("Unloading world " + name);
Bukkit.unloadWorld(name, false);
}