diff --git a/plugin.yml b/plugin.yml index 902515fb2..b9976fe52 100644 --- a/plugin.yml +++ b/plugin.yml @@ -50,6 +50,10 @@ commands: /paste: description: Paste the clipboard's contents usage: / [-ao] + we: + description: WorldEdit commands + usage: / + aliases: ['worldedit'] toggleplace: description: usage: / @@ -295,3 +299,6 @@ commands: /drain: description: Drain a pool usage: / + /version: + description: Get WorldEdit version + usage: / diff --git a/src/com/sk89q/worldedit/ServerInterface.java b/src/com/sk89q/worldedit/ServerInterface.java index 44121cbd8..112ffd8dd 100644 --- a/src/com/sk89q/worldedit/ServerInterface.java +++ b/src/com/sk89q/worldedit/ServerInterface.java @@ -39,4 +39,9 @@ public abstract class ServerInterface { * @return */ public abstract boolean isValidMobType(String type); + + /** + * Reload WorldEdit configuration. + */ + public abstract void reload(); } diff --git a/src/com/sk89q/worldedit/WorldEdit.java b/src/com/sk89q/worldedit/WorldEdit.java index 094e17bce..ad8662cbb 100644 --- a/src/com/sk89q/worldedit/WorldEdit.java +++ b/src/com/sk89q/worldedit/WorldEdit.java @@ -1069,6 +1069,15 @@ public class WorldEdit { public LocalConfiguration getConfiguration() { return config; } + + /** + * Get the server interface. + * + * @return + */ + public ServerInterface getServer() { + return server; + } /** * Get the version. diff --git a/src/com/sk89q/worldedit/bukkit/BukkitServerInterface.java b/src/com/sk89q/worldedit/bukkit/BukkitServerInterface.java index 05cfb918b..32739e9f3 100644 --- a/src/com/sk89q/worldedit/bukkit/BukkitServerInterface.java +++ b/src/com/sk89q/worldedit/bukkit/BukkitServerInterface.java @@ -25,8 +25,10 @@ import com.sk89q.worldedit.ServerInterface; public class BukkitServerInterface extends ServerInterface { public Server server; + public WorldEditPlugin plugin; - public BukkitServerInterface(Server server) { + public BukkitServerInterface(WorldEditPlugin plugin, Server server) { + this.plugin = plugin; this.server = server; } @@ -41,4 +43,9 @@ public class BukkitServerInterface extends ServerInterface { return CreatureType.fromName(type) != null; } + @Override + public void reload() { + plugin.loadConfiguration(); + } + } diff --git a/src/com/sk89q/worldedit/bukkit/WorldEditPlugin.java b/src/com/sk89q/worldedit/bukkit/WorldEditPlugin.java index 08dd8b8df..04b96c61f 100644 --- a/src/com/sk89q/worldedit/bukkit/WorldEditPlugin.java +++ b/src/com/sk89q/worldedit/bukkit/WorldEditPlugin.java @@ -76,7 +76,7 @@ public class WorldEditPlugin extends JavaPlugin { permsListener = new PermissionsResolverServerListener(perms); loadConfiguration(); - server = new BukkitServerInterface(getServer()); + server = new BukkitServerInterface(this, getServer()); controller = new WorldEdit(server, config); api = new WorldEditAPI(this); diff --git a/src/com/sk89q/worldedit/commands/GeneralCommands.java b/src/com/sk89q/worldedit/commands/GeneralCommands.java index 15403c590..42a219177 100644 --- a/src/com/sk89q/worldedit/commands/GeneralCommands.java +++ b/src/com/sk89q/worldedit/commands/GeneralCommands.java @@ -22,6 +22,7 @@ package com.sk89q.worldedit.commands; import com.sk89q.minecraft.util.commands.Command; import com.sk89q.minecraft.util.commands.CommandContext; import com.sk89q.minecraft.util.commands.CommandPermissions; +import com.sk89q.minecraft.util.commands.NestedCommand; import com.sk89q.worldedit.*; import com.sk89q.worldedit.blocks.ItemType; @@ -153,4 +154,14 @@ public class GeneralCommands { player.printError("No items found."); } } + + @Command( + aliases = {"we", "worldedit"}, + desc = "WorldEdit commands" + ) + @NestedCommand({WorldEditCommands.class}) + public static void we(CommandContext args, WorldEdit we, + LocalSession session, LocalPlayer player, EditSession editSession) + throws WorldEditException { + } } diff --git a/src/com/sk89q/worldedit/commands/WorldEditCommands.java b/src/com/sk89q/worldedit/commands/WorldEditCommands.java new file mode 100644 index 000000000..a81b62cfe --- /dev/null +++ b/src/com/sk89q/worldedit/commands/WorldEditCommands.java @@ -0,0 +1,62 @@ +// $Id$ +/* + * WorldEdit + * Copyright (C) 2010, 2011 sk89q + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . +*/ + +package com.sk89q.worldedit.commands; + +import com.sk89q.minecraft.util.commands.Command; +import com.sk89q.minecraft.util.commands.CommandContext; +import com.sk89q.minecraft.util.commands.CommandPermissions; +import com.sk89q.worldedit.EditSession; +import com.sk89q.worldedit.LocalPlayer; +import com.sk89q.worldedit.LocalSession; +import com.sk89q.worldedit.WorldEdit; +import com.sk89q.worldedit.WorldEditException; + +public class WorldEditCommands { + @Command( + aliases = {"version", "ver"}, + usage = "", + desc = "Get WorldEdit version", + min = 0, + max = 0 + ) + public static void version(CommandContext args, WorldEdit we, + LocalSession session, LocalPlayer player, EditSession editSession) + throws WorldEditException { + + player.print("WorldEdit version " + WorldEdit.getVersion()); + player.print("http://www.sk89q.com/projects/worldedit/"); + } + + @Command( + aliases = {"reload"}, + usage = "", + desc = "Reload WorldEdit", + min = 0, + max = 0 + ) + @CommandPermissions({"worldedit.reload"}) + public static void reload(CommandContext args, WorldEdit we, + LocalSession session, LocalPlayer player, EditSession editSession) + throws WorldEditException { + + we.getServer().reload(); + player.print("Configuration reloaded!"); + } +}