mirror of
https://github.com/EngineHub/WorldGuard.git
synced 2024-10-01 16:17:28 +02:00
Allow the console to load/save all region managers with one command.
This commit is contained in:
parent
75b3082b12
commit
326d53fd09
@ -109,6 +109,7 @@ public void registerEvents() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// unsure if anyone actually started using this yet, but just in case...
|
// unsure if anyone actually started using this yet, but just in case...
|
||||||
|
@Deprecated
|
||||||
public static boolean checkMove(WorldGuardPlugin plugin, Player player, World world, Location from, Location to) {
|
public static boolean checkMove(WorldGuardPlugin plugin, Player player, World world, Location from, Location to) {
|
||||||
return checkMove(plugin, player, from, to); // drop world since it used to be mishandled
|
return checkMove(plugin, player, from, to); // drop world since it used to be mishandled
|
||||||
}
|
}
|
||||||
|
@ -289,17 +289,28 @@ private static ProtectedRegion createRegionFromSelection(Player player, String i
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void commitChanges(CommandSender sender, RegionManager regionManager)
|
||||||
|
throws CommandException {
|
||||||
|
commitChanges(sender, regionManager, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void reloadChanges(CommandSender sender, RegionManager regionManager)
|
||||||
|
throws CommandException {
|
||||||
|
reloadChanges(sender, regionManager, false);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Save the region database.
|
* Save the region database.
|
||||||
*
|
*
|
||||||
* @param sender the sender
|
* @param sender the sender
|
||||||
* @param regionManager the region manager
|
* @param regionManager the region manager
|
||||||
|
* @param silent whether to suppress messages sent to the player
|
||||||
* @throws CommandException throw on an error
|
* @throws CommandException throw on an error
|
||||||
*/
|
*/
|
||||||
private static void commitChanges(CommandSender sender, RegionManager regionManager)
|
private static void commitChanges(CommandSender sender, RegionManager regionManager, boolean silent)
|
||||||
throws CommandException {
|
throws CommandException {
|
||||||
try {
|
try {
|
||||||
if (regionManager.getRegions().size() >= 500) {
|
if (!silent && regionManager.getRegions().size() >= 500) {
|
||||||
sender.sendMessage(ChatColor.GRAY +
|
sender.sendMessage(ChatColor.GRAY +
|
||||||
"Now saving region list to disk... (Taking too long? We're fixing it)");
|
"Now saving region list to disk... (Taking too long? We're fixing it)");
|
||||||
}
|
}
|
||||||
@ -310,16 +321,17 @@ private static void commitChanges(CommandSender sender, RegionManager regionMana
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Save the region database.
|
* Load the region database.
|
||||||
*
|
*
|
||||||
* @param sender the sender
|
* @param sender the sender
|
||||||
* @param regionManager the region manager
|
* @param regionManager the region manager
|
||||||
|
* @param silent whether to suppress messages sent to the player
|
||||||
* @throws CommandException throw on an error
|
* @throws CommandException throw on an error
|
||||||
*/
|
*/
|
||||||
private static void reloadChanges(CommandSender sender, RegionManager regionManager)
|
private static void reloadChanges(CommandSender sender, RegionManager regionManager, boolean silent)
|
||||||
throws CommandException {
|
throws CommandException {
|
||||||
try {
|
try {
|
||||||
if (regionManager.getRegions().size() >= 500) {
|
if (!silent && regionManager.getRegions().size() >= 500) {
|
||||||
sender.sendMessage(ChatColor.GRAY +
|
sender.sendMessage(ChatColor.GRAY +
|
||||||
"Now loading region list from disk... (Taking too long? We're fixing it)");
|
"Now loading region list from disk... (Taking too long? We're fixing it)");
|
||||||
}
|
}
|
||||||
@ -1067,18 +1079,39 @@ public void remove(CommandContext args, CommandSender sender) throws CommandExce
|
|||||||
* @param sender the sender
|
* @param sender the sender
|
||||||
* @throws CommandException any error
|
* @throws CommandException any error
|
||||||
*/
|
*/
|
||||||
@Command(aliases = {"load", "reload"}, usage = "[-w world]", flags = "w:",
|
@Command(aliases = {"load", "reload"},
|
||||||
desc = "Reload regions from file", max = 1)
|
usage = "[world]",
|
||||||
|
desc = "Reload regions from file",
|
||||||
|
flags = "w:")
|
||||||
public void load(CommandContext args, CommandSender sender) throws CommandException {
|
public void load(CommandContext args, CommandSender sender) throws CommandException {
|
||||||
World world = getWorld(args, sender, 'w'); // Get the world
|
World world = null;
|
||||||
|
try {
|
||||||
|
world = getWorld(args, sender, 'w'); // Get the world
|
||||||
|
} catch (CommandException e) {
|
||||||
|
// assume the user wants to reload all worlds
|
||||||
|
}
|
||||||
|
|
||||||
// Check permissions
|
// Check permissions
|
||||||
if (!getPermissionModel(sender).mayForceLoadRegions()) {
|
if (!getPermissionModel(sender).mayForceLoadRegions()) {
|
||||||
throw new CommandPermissionsException();
|
throw new CommandPermissionsException();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (world != null) {
|
||||||
RegionManager regionManager = plugin.getGlobalRegionManager().get(world);
|
RegionManager regionManager = plugin.getGlobalRegionManager().get(world);
|
||||||
|
if (regionManager == null) {
|
||||||
|
throw new CommandException("No region manager exists for world '" + world.getName() + "'.");
|
||||||
|
}
|
||||||
reloadChanges(sender, regionManager);
|
reloadChanges(sender, regionManager);
|
||||||
|
} else {
|
||||||
|
sender.sendMessage(ChatColor.YELLOW + "Loading all region databases... This might take a bit.");
|
||||||
|
for (World w : plugin.getServer().getWorlds()) {
|
||||||
|
RegionManager regionManager = plugin.getGlobalRegionManager().get(w);
|
||||||
|
if (regionManager == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
reloadChanges(sender, regionManager, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
sender.sendMessage(ChatColor.YELLOW + "Region databases loaded.");
|
sender.sendMessage(ChatColor.YELLOW + "Region databases loaded.");
|
||||||
}
|
}
|
||||||
@ -1090,19 +1123,39 @@ public void load(CommandContext args, CommandSender sender) throws CommandExcept
|
|||||||
* @param sender the sender
|
* @param sender the sender
|
||||||
* @throws CommandException any error
|
* @throws CommandException any error
|
||||||
*/
|
*/
|
||||||
@Command(aliases = {"save", "write"}, usage = "[-w world]", flags = "w:",
|
@Command(aliases = {"save", "write"},
|
||||||
desc = "Re-save regions to file", max = 1)
|
usage = "[world]",
|
||||||
|
desc = "Re-save regions to file",
|
||||||
|
flags = "w:")
|
||||||
public void save(CommandContext args, CommandSender sender) throws CommandException {
|
public void save(CommandContext args, CommandSender sender) throws CommandException {
|
||||||
World world = getWorld(args, sender, 'w'); // Get the world
|
World world = null;
|
||||||
|
try {
|
||||||
|
world = getWorld(args, sender, 'w'); // Get the world
|
||||||
|
} catch (CommandException e) {
|
||||||
|
// assume user wants to save all worlds
|
||||||
|
}
|
||||||
|
|
||||||
// Check permissions
|
// Check permissions
|
||||||
if (!getPermissionModel(sender).mayForceSaveRegions()) {
|
if (!getPermissionModel(sender).mayForceSaveRegions()) {
|
||||||
throw new CommandPermissionsException();
|
throw new CommandPermissionsException();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (world != null) {
|
||||||
RegionManager regionManager = plugin.getGlobalRegionManager().get(world);
|
RegionManager regionManager = plugin.getGlobalRegionManager().get(world);
|
||||||
|
if (regionManager == null) {
|
||||||
|
throw new CommandException("No region manager exists for world '" + world.getName() + "'.");
|
||||||
|
}
|
||||||
commitChanges(sender, regionManager);
|
commitChanges(sender, regionManager);
|
||||||
|
} else {
|
||||||
|
sender.sendMessage(ChatColor.YELLOW + "Saving all region databases... This might take a bit.");
|
||||||
|
for (World w : plugin.getServer().getWorlds()) {
|
||||||
|
RegionManager regionManager = plugin.getGlobalRegionManager().get(w);
|
||||||
|
if (regionManager == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
commitChanges(sender, regionManager, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
sender.sendMessage(ChatColor.YELLOW + "Region databases saved.");
|
sender.sendMessage(ChatColor.YELLOW + "Region databases saved.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user