/** * Checks to see if the specified radius is within bounds. * * @param radius the radius * @throws MaxRadiusException */ public void checkMaxRadius(double radius) throws MaxRadiusException { if (getConfiguration().maxRadius > 0 && radius > getConfiguration().maxRadius) { throw new MaxRadiusException(); } }
/** * Checks to see if the specified brush radius is within bounds. * * @param radius the radius * @throws MaxBrushRadiusException */ public void checkMaxBrushRadius(double radius) throws MaxBrushRadiusException { if (getConfiguration().maxBrushRadius > 0 && radius > getConfiguration().maxBrushRadius) { throw new MaxBrushRadiusException(); } }
/** * Get a file relative to the defined working directory. If the specified * path is absolute, then the working directory is not used. * * @param path the subpath under the working directory * @return a working directory */ public File getWorkingDirectoryFile(String path) { File f = new File(path); if (f.isAbsolute()) { return f; } return new File(getConfiguration().getWorkingDirectory(), path); }
/** * Helper function for /up and /ceil. * * @param args The {@link CommandContext} to extract the flags from. * @return true, if glass should always be put under the player */ private boolean getAlwaysGlass(CommandContext args) { final LocalConfiguration config = worldEdit.getConfiguration(); final boolean forceFlight = args.hasFlag('f'); final boolean forceGlass = args.hasFlag('g'); return forceGlass || (config.navigationUseGlass && !forceFlight); } }
public String[] commandDetection(String[] split) { // Quick script shortcut if (split[0].matches("^[^/].*\\.js$")) { String[] newSplit = new String[split.length + 1]; System.arraycopy(split, 0, newSplit, 1, split.length); newSplit[0] = "cs"; newSplit[1] = newSplit[1]; split = newSplit; } String searchCmd = split[0].toLowerCase(); // Try to detect the command if (!dispatcher.contains(searchCmd)) { if (worldEdit.getConfiguration().noDoubleSlash && dispatcher.contains("/" + searchCmd)) { split[0] = "/" + split[0]; } else if (searchCmd.length() >= 2 && searchCmd.charAt(0) == '/' && dispatcher.contains(searchCmd.substring(1))) { split[0] = split[0].substring(1); } } return split; }
@ExceptionMatch public void convert(MaxBrushRadiusException e) throws CommandException { throw new CommandException("Maximum brush radius (in configuration): " + worldEdit.getConfiguration().maxBrushRadius); }
@ExceptionMatch public void convert(MaxRadiusException e) throws CommandException { throw new CommandException("Maximum radius (in configuration): " + worldEdit.getConfiguration().maxRadius); }
public static ActorSelectorLimits forActor(Actor actor) { return new ActorSelectorLimits(WorldEdit.getInstance().getConfiguration(), actor); }
public ConfigReport() { super("WorldEdit Configuration"); append("Configuration", new HierarchyObjectReport("Configuration", WorldEdit.getInstance().getConfiguration())); }
@Command( aliases = { "/wand" }, usage = "", desc = "Get the wand object", min = 0, max = 0 ) @CommandPermissions("worldedit.wand") public void wand(Player player, LocalSession session, EditSession editSession, CommandContext args) throws WorldEditException { player.giveItem(new BaseItemStack(ItemTypes.get(we.getConfiguration().wandItem), 1)); player.print("Left click: select pos #1; Right click: select pos #2"); }
@Command( aliases = { "/ex", "/ext", "/extinguish", "ex", "ext", "extinguish" }, usage = "[radius]", desc = "Extinguish nearby fire", min = 0, max = 1 ) @CommandPermissions("worldedit.extinguish") @Logging(PLACEMENT) public void extinguish(Player player, LocalSession session, EditSession editSession, CommandContext args) throws WorldEditException { LocalConfiguration config = we.getConfiguration(); int defaultRadius = config.maxRadius != -1 ? Math.min(40, config.maxRadius) : 40; int size = args.argsLength() > 0 ? Math.max(1, args.getInteger(0)) : defaultRadius; we.checkMaxRadius(size); int affected = editSession.removeNear(session.getPlacementPosition(player), BlockTypes.FIRE, size); player.print(affected + " block(s) have been removed."); }
@Command( aliases = { "delete", "d" }, usage = "<filename>", desc = "Delete a saved schematic", help = "Delete a schematic from the schematic list", min = 1, max = 1 ) @CommandPermissions("worldedit.schematic.delete") public void delete(Player player, LocalSession session, EditSession editSession, CommandContext args) throws WorldEditException { LocalConfiguration config = worldEdit.getConfiguration(); String filename = args.getString(0); File dir = worldEdit.getWorkingDirectoryFile(config.saveDir); File f = worldEdit.getSafeSaveFile(player, dir, filename, "schematic", "schematic"); if (!f.exists()) { player.printError("Schematic " + filename + " does not exist!"); return; } if (!f.delete()) { player.printError("Deletion of " + filename + " failed! Maybe it is read-only."); return; } player.print(filename + " has been deleted."); }
@Override public EditSession getEditSession(World world, int maxBlocks, BlockBag blockBag, Player player) { if (WorldEdit.getInstance().getConfiguration().traceUnflushedSessions) { return new TracedEditSession(eventBus, world, maxBlocks, blockBag, new EditSessionEvent(world, player, maxBlocks, null)); } return new EditSession(eventBus, world, maxBlocks, blockBag, new EditSessionEvent(world, player, maxBlocks, null)); }
@Command( aliases = { "/limit" }, usage = "<limit>", desc = "Modify block change limit", min = 1, max = 1 ) @CommandPermissions("worldedit.limit") public void limit(Player player, LocalSession session, EditSession editSession, CommandContext args) throws WorldEditException { LocalConfiguration config = worldEdit.getConfiguration(); boolean mayDisable = player.hasPermission("worldedit.limit.unrestricted"); int limit = Math.max(-1, args.getInteger(0)); if (!mayDisable && config.maxChangeLimit > -1) { if (limit > config.maxChangeLimit) { player.printError("Your maximum allowable limit is " + config.maxChangeLimit + "."); return; } } session.setBlockChangeLimit(limit); if (limit != -1) { player.print("Block change limit set to " + limit + ". (Use //limit -1 to go back to the default.)"); } else { player.print("Block change limit set to " + limit + "."); } }
@Command(aliases = {"report"}, desc = "Writes a report on WorldEdit", flags = "p", max = 0) @CommandPermissions({"worldedit.report"}) public void report(Actor actor, CommandContext args) throws WorldEditException { ReportList report = new ReportList("Report"); report.add(new SystemInfoReport()); report.add(new ConfigReport()); String result = report.toString(); try { File dest = new File(we.getWorkingDirectoryFile(we.getConfiguration().saveDir), "report.txt"); Files.write(result, dest, Charset.forName("UTF-8")); actor.print("WorldEdit report written to " + dest.getAbsolutePath()); } catch (IOException e) { actor.printError("Failed to write report: " + e.getMessage()); } if (args.hasFlag('p')) { actor.checkPermission("worldedit.report.pastebin"); ActorCallbackPaste.pastebin( we.getSupervisor(), actor, result, "WorldEdit report: %s.report", WorldEdit.getInstance().getPlatformManager().getCommandManager().getExceptionConverter() ); } }
@Command( aliases = { "area" }, usage = "<radius>", desc = "Enable the area super pickaxe pickaxe mode", min = 1, max = 1 ) @CommandPermissions("worldedit.superpickaxe.area") public void area(Player player, LocalSession session, EditSession editSession, CommandContext args) throws WorldEditException { LocalConfiguration config = we.getConfiguration(); int range = args.getInteger(0); if (range > config.maxSuperPickaxeSize) { player.printError("Maximum range: " + config.maxSuperPickaxeSize); return; } session.setSuperPickaxe(new AreaPickaxe(range)); session.enableSuperPickAxe(); player.print("Mode changed. Left click with a pickaxe. // to disable."); }
@Command( aliases = { "recur", "recursive" }, usage = "<radius>", desc = "Enable the recursive super pickaxe pickaxe mode", min = 1, max = 1 ) @CommandPermissions("worldedit.superpickaxe.recursive") public void recursive(Player player, LocalSession session, EditSession editSession, CommandContext args) throws WorldEditException { LocalConfiguration config = we.getConfiguration(); double range = args.getDouble(0); if (range > config.maxSuperPickaxeSize) { player.printError("Maximum range: " + config.maxSuperPickaxeSize); return; } session.setSuperPickaxe(new RecursivePickaxe(range)); session.enableSuperPickAxe(); player.print("Mode changed. Left click with a pickaxe. // to disable."); } }
@Command( aliases = { "floodfill", "flood" }, usage = "<pattern> <range>", desc = "Flood fill tool", min = 2, max = 2 ) @CommandPermissions("worldedit.tool.flood-fill") public void floodFill(Player player, LocalSession session, Pattern pattern, int range) throws WorldEditException { LocalConfiguration config = we.getConfiguration(); if (range > config.maxSuperPickaxeSize) { player.printError("Maximum range: " + config.maxSuperPickaxeSize); return; } BaseItemStack itemStack = player.getItemInHand(HandSide.MAIN_HAND); session.setTool(itemStack.getType(), new FloodFillTool(range, pattern)); player.print("Block flood fill tool bound to " + itemStack.getType().getName() + "."); }
@Command( aliases = { "cs" }, usage = "<filename> [args...]", desc = "Execute a CraftScript", min = 1, max = -1 ) @CommandPermissions("worldedit.scripting.execute") @Logging(ALL) public void execute(Player player, LocalSession session, EditSession editSession, CommandContext args) throws WorldEditException { String[] scriptArgs = args.getSlice(1); String name = args.getString(0); if (!player.hasPermission("worldedit.scripting.execute." + name)) { player.printError("You don't have permission to use that script."); return; } session.setLastScript(name); File dir = worldEdit.getWorkingDirectoryFile(worldEdit.getConfiguration().scriptsDir); File f = worldEdit.getSafeOpenFile(player, dir, name, "js", "js"); worldEdit.runScript(player, f, scriptArgs); }
File dir = worldEdit.getWorkingDirectoryFile(worldEdit.getConfiguration().scriptsDir); File f = worldEdit.getSafeOpenFile(player, dir, lastScript, "js", "js");