@Command( aliases = {"reload"}, desc = "Reload WorldGuard configuration", max = 0) @CommandPermissions({"worldguard.reload"}) public void reload(CommandContext args, CommandSender sender) throws CommandException { LoggerToChatHandler handler = null; Logger minecraftLogger = null; if (sender instanceof Player) { handler = new LoggerToChatHandler(sender); handler.setLevel(Level.ALL); minecraftLogger = Logger.getLogger("Minecraft"); minecraftLogger.addHandler(handler); } try { plugin.getGlobalStateManager().unload(); plugin.getGlobalRegionManager().unload(); plugin.getGlobalStateManager().load(); plugin.getGlobalRegionManager().preload(); WGBukkit.cleanCache(); sender.sendMessage("WorldGuard configuration reloaded."); } catch (Throwable t) { sender.sendMessage("Error while reloading: " + t.getMessage()); } finally { if (minecraftLogger != null) { minecraftLogger.removeHandler(handler); } } }
public void deleteRegion(Player player, String[] args) { if (args.length != 2) { player.sendMessage(ChatColor.RED + "Wrong usage. /pr help"); return; } String id = "icp_" + player.getName() + "_" + args[1]; World world = player.getWorld(); LocalPlayer localPlayer = plugin.wrapPlayer(player); RegionManager mgr = plugin.getGlobalRegionManager().get(world); ProtectedRegion region = mgr.getRegion(id); if (region == null) { player.sendMessage(ChatColor.RED + "Could not find a region by that name."); return; } if (region.isOwner(localPlayer)) { mgr.removeRegion(id); player.sendMessage(ChatColor.YELLOW + "Region " + args[1] + " removed."); try { mgr.save(); } catch (IOException e) { player.sendMessage( ChatColor.RED + "(shouldn't happen) Failed to write regions file: " + e.getMessage()); } } }
/** * Checks if a block is protected by WorldGuard. * * @param block Bukkit block object to check * @return boolean of wheather it's protected */ public static boolean isBlockProtected(Block block) { return (hasWG && wg.getGlobalRegionManager() .get(block.getWorld()) .getApplicableRegions(BukkitUtil.toVector(block.getLocation())) .size() > 0) || (hasResidence && Residence.getResidenceManager().getByLoc(block.getLocation()) != null); }
/** * Checks to see whether a flag is allowed. * * @param flag * @param loc * @return */ public boolean allows(StateFlag flag, Location loc) { World world = loc.getWorld(); WorldConfiguration worldConfig = config.get(world); if (!worldConfig.useRegions) { return true; } RegionManager mgr = plugin.getGlobalRegionManager().get(world); return mgr.getApplicableRegions(toVector(loc)).allows(flag); }
public void checkRegion(Player sender, String[] args) { if (!sender.hasPermission("iceprotect.buy")) { sender.sendMessage(ChatColor.RED + "You don't have permission!"); return; } if (args.length != 1) { sender.sendMessage(ChatColor.RED + "Wrong usage. /pr help"); return; } String id = "icp__tempregion"; Location loc = sender.getLocation(); BlockVector min = new BlockVector(loc.getX() - 1, loc.getY() - 1, loc.getZ() - 1); BlockVector max = new BlockVector(loc.getX() + 1, loc.getY() + 1, loc.getZ() + 1); ProtectedRegion region = new ProtectedCuboidRegion(id, min, max); RegionManager mgr = plugin.getGlobalRegionManager().get(sender.getWorld()); ApplicableRegionSet regions = mgr.getApplicableRegions(region); ProtectedRegion appReg = null; for (ProtectedRegion r : regions) { if (econ.isRegionForSale(r.getId())) { appReg = r; break; } } if (appReg == null) { sender.sendMessage(ChatColor.RED + "No nearby regions for sale!"); return; } else { double cost = regionsForSale.getDouble("regions." + appReg.getId() + ".price", 0D); if (cost == 0) { sender.sendMessage( ChatColor.RED + "(this shouldn't happen) You can't buy this region. Notify an admin!"); return; } sender.sendMessage( ChatColor.YELLOW + "This region " + appReg.getId() + " is for sale by " + regionsForSale.getString("regions." + appReg.getId() + ".seller")); sender.sendMessage(ChatColor.YELLOW + "And costs $" + cost + "."); } }
public void allowUser(Player player, String[] args) { if (args.length != 3) { player.sendMessage(ChatColor.RED + "Wrong usage. /pr help"); return; } String id = "icp_" + player.getName() + "_" + args[2]; World world = player.getWorld(); LocalPlayer localPlayer = plugin.wrapPlayer(player); RegionManager mgr = plugin.getGlobalRegionManager().get(world); ProtectedRegion region = mgr.getRegion(id); if (region == null) { player.sendMessage(ChatColor.RED + "Could not find a region by that name."); return; } if (region.isOwner(localPlayer)) { region.getMembers().addPlayer(args[1]); player.sendMessage( ChatColor.GREEN + "Allowed " + ChatColor.RED + args[1] + ChatColor.GREEN + " to region " + ChatColor.RED + args[2] + ChatColor.GREEN + "."); Player targetPlayer = Bukkit.getServer().getPlayerExact(args[1]); if (targetPlayer != null) { targetPlayer.sendMessage( ChatColor.GREEN + player.getName() + " has added you as a member in the " + ChatColor.RED + args[2] + ChatColor.GREEN + " region."); } } else { player.sendMessage(ChatColor.RED + "(shouldn't happen) You don't own the region " + args[2]); } }
public boolean canEditSign(Player player) { if (!hasPermission(player, "signutils.settext")) { return false; } if (wgHandeler != null) { if (!wgHandeler .getGlobalRegionManager() .canBuild(player, plugin.signSelMgr.getSelection(player))) { player.sendMessage(ChatColor.RED + "You cant edit this sign"); return false; } else { return true; } } else { return true; } }
public void listRegions(Player player, String[] args) { World world = player.getWorld(); RegionManager mgr = plugin.getGlobalRegionManager().get(world); StringBuilder regions = new StringBuilder(); Set<String> keySet = mgr.getRegions().keySet(); for (String regionName : keySet) { if (regionName.startsWith("icp_" + player.getName().toLowerCase() + "_")) { regions.append( regionName.replaceFirst("icp_" + player.getName().toLowerCase() + "_", "") + ", "); } } if (regions.length() == 0) { player.sendMessage(ChatColor.RED + "You don't have regions in this world."); } else { player.sendMessage(ChatColor.AQUA + "Your regions:"); regions.deleteCharAt(regions.length() - 2); player.sendMessage(ChatColor.AQUA + regions.toString()); } }
public void buyRegion(Player sender, String[] args) { if (!sender.hasPermission("iceprotect.buy")) { sender.sendMessage(ChatColor.RED + "You don't have permission!"); return; } if (args.length != 1) { sender.sendMessage(ChatColor.RED + "Wrong usage. /pr help"); return; } String id = "icp__tempregion"; Location loc = sender.getLocation(); BlockVector min = new BlockVector(loc.getX() - 1, loc.getY() - 1, loc.getZ() - 1); BlockVector max = new BlockVector(loc.getX() + 1, loc.getY() + 1, loc.getZ() + 1); ProtectedRegion region = new ProtectedCuboidRegion(id, min, max); RegionManager mgr = plugin.getGlobalRegionManager().get(sender.getWorld()); ApplicableRegionSet regions = mgr.getApplicableRegions(region); ProtectedRegion appReg = null; for (ProtectedRegion r : regions) { if (econ.isRegionForSale(r.getId())) { appReg = r; break; } } if (appReg == null) { sender.sendMessage(ChatColor.RED + "No nearby regions for sale!"); return; } econ.buyRegion(appReg, sender, mgr); }
public void sellRegion(Player sender, String[] args) { if (!sender.hasPermission("iceprotect.sell")) { sender.sendMessage(ChatColor.RED + "You don't have permission!"); return; } if (args.length != 2) { sender.sendMessage(ChatColor.RED + "Something went wrong!"); sender.sendMessage(ChatColor.RED + "Usage: /psell <region_name> <price>"); return; } if (!ProtectedRegion.isValidId(args[0])) { sender.sendMessage(ChatColor.RED + "Invalid region name specified!"); return; } RegionManager mgr = plugin.getGlobalRegionManager().get(sender.getLocation().getWorld()); if (!mgr.hasRegion(args[0])) { sender.sendMessage(ChatColor.RED + "Nonexistent region name specified!"); return; } regionsForSale.setProperty("regions." + args[0] + ".price", Double.parseDouble(args[1])); regionsForSale.setProperty("regions." + args[0] + ".seller", sender.getName()); regionsForSale.save(); sender.sendMessage( ChatColor.GREEN + "You successfully added " + ChatColor.YELLOW + args[0] + ChatColor.GREEN + " to the sell list."); }
public void denyUser(Player player, String[] args) { if (args.length != 3) { player.sendMessage(ChatColor.RED + "Wrong usage. /pr help"); return; } String id = "icp_" + player.getName() + "_" + args[2]; World world = player.getWorld(); LocalPlayer localPlayer = plugin.wrapPlayer(player); RegionManager mgr = plugin.getGlobalRegionManager().get(world); ProtectedRegion region = mgr.getRegion(id); if (region == null) { player.sendMessage(ChatColor.RED + "Could not find a region by that name."); return; } if (region.isOwner(localPlayer)) { region.getMembers().removePlayer(args[1]); player.sendMessage( ChatColor.GREEN + "Removed player " + ChatColor.RED + args[1] + ChatColor.GREEN + " from region " + ChatColor.RED + args[2] + ChatColor.GREEN + "."); } else { player.sendMessage(ChatColor.RED + "(shouldn't happen) You don't own the region " + args[2]); } }
public void setFlags(Player sender, String[] args) { Player player = null; try { player = plugin.checkPlayer(sender); } catch (CommandException e1) { e1.printStackTrace(); return; } World world = player.getWorld(); LocalPlayer localPlayer = plugin.wrapPlayer(player); String value = null; if (args.length == 4) { value = args[3]; } else if (args.length == 3) { // } else { player.sendMessage(ChatColor.RED + "Wrong usage! /pr help"); return; } String id = "icp_" + player.getName() + "_" + args[1]; String flagName = args[2]; if (!(flagName.equals("use") || flagName.equals("chest-access") || flagName.equals("snow-fall") || flagName.equals("snow-melt") || flagName.equals("ice-form") || flagName.equals("ice-melt"))) { player.sendMessage(ChatColor.RED + "Unsupported flag! /pr help flags"); return; } RegionManager mgr = plugin.getGlobalRegionManager().get(world); ProtectedRegion region = mgr.getRegion(id); if (region == null) { player.sendMessage(ChatColor.RED + "Could not find a region by that name."); return; } Flag<?> foundFlag = null; for (Flag<?> flag : DefaultFlag.getFlags()) { if (flag.getName().replace("-", "").equalsIgnoreCase(flagName.replace("-", ""))) { foundFlag = flag; break; } } if (foundFlag == null) { StringBuilder list = new StringBuilder(); for (Flag<?> flag : DefaultFlag.getFlags()) { if (list.length() > 0) { list.append(", "); } if (!region.isOwner(localPlayer)) { continue; } list.append(flag.getName()); } player.sendMessage(ChatColor.RED + "Unknown flag specified: " + flagName); player.sendMessage(ChatColor.RED + "Available flags: " + list); return; } if (region.isOwner(localPlayer)) { if (value != null) { try { setFlag(region, foundFlag, sender, value); } catch (InvalidFlagFormat e) { player.sendMessage(ChatColor.RED + e.getMessage()); return; } sender.sendMessage( ChatColor.YELLOW + "Region flag " + ChatColor.GREEN + foundFlag.getName() + ChatColor.YELLOW + " set."); } else { region.setFlag(foundFlag, null); sender.sendMessage( ChatColor.YELLOW + "Region flag " + ChatColor.GREEN + foundFlag.getName() + ChatColor.YELLOW + " cleared."); } } else { sender.sendMessage(ChatColor.RED + "(shouldn't happen) You don't own this region!"); return; } try { mgr.save(); } catch (IOException e) { player.sendMessage(ChatColor.RED + "Failed to write regions file: " + e.getMessage()); } }
public void setRegion(Player sender, String[] args) { if (args.length != 2) { sender.sendMessage(ChatColor.RED + "Wrong usage. /pr help"); return; } LocalPlayer wgPlayer = plugin.wrapPlayer(sender); String id = "icp_" + sender.getName() + "_" + args[1]; if (!ProtectedRegion.isValidId(id)) { sender.sendMessage(ChatColor.RED + "Invalid region name specified!"); return; } Selection sel = worldEdit.getSelection(sender); if (sel == null) { sender.sendMessage(ChatColor.RED + "Select a region with a wooden axe first."); return; } RegionManager mgr = plugin.getGlobalRegionManager().get(sel.getWorld()); if (mgr.hasRegion(id)) { sender.sendMessage( ChatColor.RED + "That region name is already taken. Please choose a new name."); return; } int regionCount = mgr.getRegionCountOfPlayer(wgPlayer); if (regionCount > Economy.maxDonatorAllowedRegions && !sender.isOp() && sender.hasPermission("iceprotect.freeprotect")) { sender.sendMessage( ChatColor.RED + "You have reached the maximum allowed regions per user (" + Economy.maxDonatorAllowedRegions + ")."); sender.sendMessage(ChatColor.RED + "Please contact an admin."); return; } ProtectedRegion region = null; if (sel instanceof Polygonal2DSelection) { Polygonal2DSelection polySel = (Polygonal2DSelection) sel; int minY = polySel.getNativeMinimumPoint().getBlockY(); int maxY = polySel.getNativeMaximumPoint().getBlockY(); region = new ProtectedPolygonalRegion(id, polySel.getNativePoints(), minY, maxY); } else if (sel instanceof CuboidSelection) { BlockVector min = sel.getNativeMinimumPoint().toBlockVector(); BlockVector max = sel.getNativeMaximumPoint().toBlockVector(); region = new ProtectedCuboidRegion(id, min, max); } else { sender.sendMessage( ChatColor.RED + "(shouldn't happen) Something went wrong. The type of region selected is unsupported!"); return; } String[] names = new String[1]; names[0] = sender.getName(); region.setOwners(RegionUtil.parseDomainString(names, 0)); ApplicableRegionSet regions = mgr.getApplicableRegions(region); if (!regions.isOwnerOfAll(wgPlayer)) { sender.sendMessage(ChatColor.RED + "That region overlaps with another one not owned by you!"); return; } double cost = (int) Math.ceil(econ.getCost(region.volume())); if (cost > Economy.maxDonatorAllowedCost && sender.hasPermission("iceprotect.freeprotect")) { sender.sendMessage( ChatColor.RED + "You have exceeded the maximum allowed price for this region!"); sender.sendMessage( ChatColor.RED + "Cost: " + ChatColor.GRAY + "$" + cost + ChatColor.RED + ", " + ChatColor.GRAY + "$" + Economy.maxDonatorAllowedCost + " allowed."); return; } if (!sender.hasPermission("iceprotect.freeprotect") && !econ.chargePlayer(sender, cost)) { sender.sendMessage(ChatColor.RED + "You don't have enough money! $" + cost + " needed."); return; } mgr.addRegion(region); try { mgr.save(); sender.sendMessage( ChatColor.YELLOW + "Region saved as " + args[1] + ". " + (sender.hasPermission("iceprotect.freeprotect") ? "" : "Cost: $" + cost + ".")); } catch (IOException e) { sender.sendMessage( ChatColor.RED + "(shouldn't happen) Failed to write regions file: " + e.getMessage()); e.printStackTrace(); return; } }