From 4ef2edfc5b3ee855faec909d5354095909d9fcf3 Mon Sep 17 00:00:00 2001 From: Rigby Date: Sat, 4 Jun 2011 06:46:21 +0100 Subject: [PATCH] Implemented WorldUnloadEvent and unloadWorld(). --- src/main/java/org/bukkit/Server.java | 18 ++++++++++++++++ src/main/java/org/bukkit/event/Event.java | 4 ++++ .../org/bukkit/event/world/WorldListener.java | 7 +++++++ .../bukkit/event/world/WorldUnloadEvent.java | 21 +++++++++++++++++++ .../bukkit/plugin/java/JavaPluginLoader.java | 7 +++++++ 5 files changed, 57 insertions(+) create mode 100644 src/main/java/org/bukkit/event/world/WorldUnloadEvent.java diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java index c0bb9fe1..3ea7e634 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java @@ -190,6 +190,24 @@ public interface Server { */ public World createWorld(String name, World.Environment environment, long seed, ChunkGenerator generator); + /** + * Unloads a world with the given name. + * + * @param name Name of the world to unload + * @param save Whether to save the chunks before unloading. + * @return Whether the action was Successful + */ + public boolean unloadWorld(String name, boolean save); + + /** + * Unloads the given world. + * + * @param world The world to unload + * @param save Whether to save the chunks before unloading. + * @return Whether the action was Successful + */ + public boolean unloadWorld(World world, boolean save); + /** * Gets the world with the given name * diff --git a/src/main/java/org/bukkit/event/Event.java b/src/main/java/org/bukkit/event/Event.java index f48a0b4c..6b517143 100644 --- a/src/main/java/org/bukkit/event/Event.java +++ b/src/main/java/org/bukkit/event/Event.java @@ -479,6 +479,10 @@ public abstract class Event implements Serializable { * Called when a World is loaded */ WORLD_LOAD (Category.WORLD), + /** + * Called when a World is unloaded + */ + WORLD_UNLOAD (Category.WORLD), /** * ENTITY EVENTS diff --git a/src/main/java/org/bukkit/event/world/WorldListener.java b/src/main/java/org/bukkit/event/world/WorldListener.java index 0363820a..47cfabf4 100644 --- a/src/main/java/org/bukkit/event/world/WorldListener.java +++ b/src/main/java/org/bukkit/event/world/WorldListener.java @@ -57,6 +57,13 @@ public class WorldListener implements Listener { throw new AuthorNagException("onWorldLoad has been replaced with a new signature, (WorldLoadEvent)"); } + /** + * Called when a World is unloaded + * + * @param event Relevant event details + */ + public void onWorldUnload(WorldUnloadEvent event) { } + // TODO: Remove after RB @Deprecated public void onWorldLoad(WorldEvent event) {} @Deprecated public void onWorldSave(WorldEvent event) {} diff --git a/src/main/java/org/bukkit/event/world/WorldUnloadEvent.java b/src/main/java/org/bukkit/event/world/WorldUnloadEvent.java new file mode 100644 index 00000000..e781db00 --- /dev/null +++ b/src/main/java/org/bukkit/event/world/WorldUnloadEvent.java @@ -0,0 +1,21 @@ +package org.bukkit.event.world; + +import org.bukkit.World; +import org.bukkit.event.Cancellable; + +public class WorldUnloadEvent extends WorldEvent implements Cancellable { + + private boolean isCancelled; + + public WorldUnloadEvent(World world) { + super(Type.WORLD_UNLOAD, world); + } + + public boolean isCancelled() { + return this.isCancelled; + } + + public void setCancelled(boolean cancel) { + this.isCancelled = cancel; + } +} diff --git a/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java b/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java index 72742cbd..8194311a 100644 --- a/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java +++ b/src/main/java/org/bukkit/plugin/java/JavaPluginLoader.java @@ -555,6 +555,13 @@ public final class JavaPluginLoader implements PluginLoader { } }; + case WORLD_UNLOAD: + return new EventExecutor() { + public void execute(Listener listener, Event event) { + ((WorldListener) listener).onWorldUnload((WorldUnloadEvent) event); + } + }; + // Painting Events case PAINTING_PLACE: return new EventExecutor() {