mirror of
https://github.com/EngineHub/WorldGuard.git
synced 2024-09-30 07:37:31 +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...
|
||||
@Deprecated
|
||||
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
|
||||
}
|
||||
|
@ -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.
|
||||
*
|
||||
* @param sender the sender
|
||||
* @param regionManager the region manager
|
||||
* @param silent whether to suppress messages sent to the player
|
||||
* @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 {
|
||||
try {
|
||||
if (regionManager.getRegions().size() >= 500) {
|
||||
if (!silent && regionManager.getRegions().size() >= 500) {
|
||||
sender.sendMessage(ChatColor.GRAY +
|
||||
"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 regionManager the region manager
|
||||
* @param silent whether to suppress messages sent to the player
|
||||
* @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 {
|
||||
try {
|
||||
if (regionManager.getRegions().size() >= 500) {
|
||||
if (!silent && regionManager.getRegions().size() >= 500) {
|
||||
sender.sendMessage(ChatColor.GRAY +
|
||||
"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
|
||||
* @throws CommandException any error
|
||||
*/
|
||||
@Command(aliases = {"load", "reload"}, usage = "[-w world]", flags = "w:",
|
||||
desc = "Reload regions from file", max = 1)
|
||||
@Command(aliases = {"load", "reload"},
|
||||
usage = "[world]",
|
||||
desc = "Reload regions from file",
|
||||
flags = "w:")
|
||||
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
|
||||
if (!getPermissionModel(sender).mayForceLoadRegions()) {
|
||||
throw new CommandPermissionsException();
|
||||
}
|
||||
|
||||
RegionManager regionManager = plugin.getGlobalRegionManager().get(world);
|
||||
reloadChanges(sender, regionManager);
|
||||
if (world != null) {
|
||||
RegionManager regionManager = plugin.getGlobalRegionManager().get(world);
|
||||
if (regionManager == null) {
|
||||
throw new CommandException("No region manager exists for world '" + world.getName() + "'.");
|
||||
}
|
||||
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.");
|
||||
}
|
||||
@ -1090,19 +1123,39 @@ public void load(CommandContext args, CommandSender sender) throws CommandExcept
|
||||
* @param sender the sender
|
||||
* @throws CommandException any error
|
||||
*/
|
||||
@Command(aliases = {"save", "write"}, usage = "[-w world]", flags = "w:",
|
||||
desc = "Re-save regions to file", max = 1)
|
||||
@Command(aliases = {"save", "write"},
|
||||
usage = "[world]",
|
||||
desc = "Re-save regions to file",
|
||||
flags = "w:")
|
||||
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
|
||||
if (!getPermissionModel(sender).mayForceSaveRegions()) {
|
||||
throw new CommandPermissionsException();
|
||||
}
|
||||
|
||||
RegionManager regionManager = plugin.getGlobalRegionManager().get(world);
|
||||
commitChanges(sender, regionManager);
|
||||
|
||||
if (world != null) {
|
||||
RegionManager regionManager = plugin.getGlobalRegionManager().get(world);
|
||||
if (regionManager == null) {
|
||||
throw new CommandException("No region manager exists for world '" + world.getName() + "'.");
|
||||
}
|
||||
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.");
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user