@Command( aliases = {"/redo", "redo"}, usage = "[times] [player]", desc = "Redoes the last action (from history)", min = 0, max = 2) @CommandPermissions("worldedit.history.redo") public void redo( CommandContext args, LocalSession session, LocalPlayer player, EditSession editSession) throws WorldEditException { int times = Math.max(1, args.getInteger(0, 1)); for (int i = 0; i < times; ++i) { EditSession redone; if (args.argsLength() < 2) { redone = session.redo(session.getBlockBag(player)); } else { player.checkPermission("worldedit.history.redo.other"); LocalSession sess = we.getSession(args.getString(1)); if (sess == null) { player.printError("Unable to find session for " + args.getString(1)); break; } redone = sess.redo(session.getBlockBag(player)); } if (redone != null) { player.print("Redo successful."); we.flushBlockBag(player, redone); } else { player.printError("Nothing left to redo."); } } }
public boolean actPrimary( ServerInterface server, LocalConfiguration config, LocalPlayer player, LocalSession session, WorldVector clicked) { EditSession editSession = session.createEditSession(player); try { boolean successful = false; for (int i = 0; i < 10; i++) { if (gen.generate(editSession, clicked.add(0, 1, 0))) { successful = true; break; } } if (!successful) { player.printError("A tree can't go there."); } } catch (MaxChangedBlocksException e) { player.printError("Max. blocks changed reached."); } finally { session.remember(editSession); } return true; }
@Command( aliases = {"/copy"}, flags = "e", desc = "Копирует выделенную территорию в буфер обмена", help = "Копирует выделенную территорию в буфер обмен\n" + "Флаги:\n" + " -e определяет, будут ли объекты копироваться в буфер обмена\n" + "ПРЕДУПРЕЖДЕНИЕ: Вставленные объекты не могут быть отменены!", min = 0, max = 0) @CommandPermissions("worldedit.clipboard.copy") public void copy( CommandContext args, LocalSession session, LocalPlayer player, EditSession editSession) throws WorldEditException { Region region = session.getSelection(player.getWorld()); Vector min = region.getMinimumPoint(); Vector max = region.getMaximumPoint(); Vector pos = session.getPlacementPosition(player); CuboidClipboard clipboard = new CuboidClipboard(max.subtract(min).add(new Vector(1, 1, 1)), min, min.subtract(pos)); clipboard.copy(editSession); if (args.hasFlag('e')) { for (LocalEntity entity : player.getWorld().getEntities(region)) { clipboard.storeEntity(entity); } } session.setClipboard(clipboard); player.print("Блок(и) скопирован(ы)."); }
@Command( aliases = {"/copy"}, flags = "em", desc = "Copy the selection to the clipboard", help = "Copy the selection to the clipboard\n" + "Flags:\n" + " -e controls whether entities are copied\n" + " -m sets a source mask so that excluded blocks become air\n" + "WARNING: Pasting entities cannot yet be undone!", min = 0, max = 0) @CommandPermissions("worldedit.clipboard.copy") public void copy( Player player, LocalSession session, EditSession editSession, @Selection Region region, @Switch('e') boolean copyEntities, @Switch('m') Mask mask) throws WorldEditException { BlockArrayClipboard clipboard = new BlockArrayClipboard(region); clipboard.setOrigin(session.getPlacementPosition(player)); ForwardExtentCopy copy = new ForwardExtentCopy(editSession, region, clipboard, region.getMinimumPoint()); if (mask != null) { copy.setSourceMask(mask); } Operations.completeLegacy(copy); session.setClipboard(new ClipboardHolder(clipboard, editSession.getWorld().getWorldData())); player.print(region.getArea() + " block(s) were copied."); }
@Command( aliases = {"/set"}, usage = "<block>", desc = "Set all the blocks inside the selection to a block", min = 1, max = 1) @CommandPermissions("worldedit.region.set") @Logging(REGION) public static void set( CommandContext args, WorldEdit we, LocalSession session, LocalPlayer player, EditSession editSession) throws WorldEditException { Pattern pattern = we.getBlockPattern(player, args.getString(0)); int affected; if (pattern instanceof SingleBlockPattern) { affected = editSession.setBlocks( session.getSelection(player.getWorld()), ((SingleBlockPattern) pattern).getBlock()); } else { affected = editSession.setBlocks(session.getSelection(player.getWorld()), pattern); } player.print(affected + " block(s) have been changed."); }
@Command( aliases = {"/faces", "/outline"}, usage = "<block>", desc = "Build the walls, ceiling, and floor of a selection", min = 1, max = 1) @CommandPermissions("worldedit.region.faces") @Logging(REGION) public static void faces( CommandContext args, WorldEdit we, LocalSession session, LocalPlayer player, EditSession editSession) throws WorldEditException { Pattern pattern = we.getBlockPattern(player, args.getString(0)); int affected; if (pattern instanceof SingleBlockPattern) { affected = editSession.makeCuboidFaces( session.getSelection(player.getWorld()), ((SingleBlockPattern) pattern).getBlock()); } else { affected = editSession.makeCuboidFaces(session.getSelection(player.getWorld()), pattern); } player.print(affected + " block(s) have been changed."); }
public boolean actPrimary( ServerInterface server, LocalConfiguration config, LocalPlayer player, LocalSession session, WorldVector clicked) { BlockBag bag = session.getBlockBag(player); LocalWorld world = clicked.getWorld(); EditSession editSession = WorldEdit.getInstance().getEditSessionFactory().getEditSession(world, -1, bag, player); try { editSession.setBlock(clicked, targetBlock); } catch (MaxChangedBlocksException e) { } finally { if (bag != null) { bag.flushChanges(); } session.remember(editSession); } return true; }
@Command( aliases = {"clipboard", "copy"}, usage = "", desc = "Choose the clipboard brush", help = "Chooses the clipboard brush.\n" + "The -a flag makes it not paste air.\n" + "Without the -p flag, the paste will appear centered at the target location. " + "With the flag, then the paste will appear relative to where you had " + "stood relative to the copied area when you copied it.") @CommandPermissions("worldedit.brush.clipboard") public void clipboardBrush( Player player, LocalSession session, EditSession editSession, @Switch('a') boolean ignoreAir, @Switch('p') boolean usingOrigin) throws WorldEditException { ClipboardHolder holder = session.getClipboard(); Clipboard clipboard = holder.getClipboard(); Vector size = clipboard.getDimensions(); worldEdit.checkMaxBrushRadius(size.getBlockX()); worldEdit.checkMaxBrushRadius(size.getBlockY()); worldEdit.checkMaxBrushRadius(size.getBlockZ()); BrushTool tool = session.getBrushTool(player.getItemInHand()); tool.setBrush(new ClipboardBrush(holder, ignoreAir, usingOrigin), "worldedit.brush.clipboard"); player.print("Clipboard brush shape equipped."); }
@Command( aliases = {"/paste"}, usage = "", flags = "ao", desc = "Вставляет содержимое буфера обмена", help = "Вставить содержимое буфера обмена.\n" + "Флаги:\n" + " -a пропускает блоки воздуха\n" + " -o вставляет на позициях, которые были скопированы/вырезаны", min = 0, max = 0) @CommandPermissions("worldedit.clipboard.paste") @Logging(PLACEMENT) public void paste( CommandContext args, LocalSession session, LocalPlayer player, EditSession editSession) throws WorldEditException { boolean atOrigin = args.hasFlag('o'); boolean pasteNoAir = args.hasFlag('a'); if (atOrigin) { Vector pos = session.getClipboard().getOrigin(); session.getClipboard().place(editSession, pos, pasteNoAir); session.getClipboard().pasteEntities(pos); player.findFreePosition(); player.print("Вставлено. Для отмены напишите //undo"); } else { Vector pos = session.getPlacementPosition(player); session.getClipboard().paste(editSession, pos, pasteNoAir, true); player.findFreePosition(); player.print("Вставлено. Для отмены напишите //undo"); } }
@Command( aliases = {"/paste"}, usage = "", flags = "sao", desc = "Paste the clipboard's contents", help = "Pastes the clipboard's contents.\n" + "Flags:\n" + " -a skips air blocks\n" + " -o pastes at the original position\n" + " -s selects the region after pasting", min = 0, max = 0) @CommandPermissions("worldedit.clipboard.paste") @Logging(PLACEMENT) public void paste( Player player, LocalSession session, EditSession editSession, @Switch('a') boolean ignoreAirBlocks, @Switch('o') boolean atOrigin, @Switch('s') boolean selectPasted) throws WorldEditException { ClipboardHolder holder = session.getClipboard(); Clipboard clipboard = holder.getClipboard(); Region region = clipboard.getRegion(); Vector to = atOrigin ? clipboard.getOrigin() : session.getPlacementPosition(player); Operation operation = holder .createPaste(editSession, editSession.getWorld().getWorldData()) .to(to) .ignoreAirBlocks(ignoreAirBlocks) .build(); Operations.completeLegacy(operation); if (selectPasted) { Vector clipboardOffset = clipboard.getRegion().getMinimumPoint().subtract(clipboard.getOrigin()); Vector realTo = to.add(holder.getTransform().apply(clipboardOffset)); Vector max = realTo.add( holder .getTransform() .apply(region.getMaximumPoint().subtract(region.getMinimumPoint()))); RegionSelector selector = new CuboidRegionSelector(player.getWorld(), realTo, max); session.setRegionSelector(player.getWorld(), selector); selector.learnChanges(); selector.explainRegionAdjust(player, session); } player.print("The clipboard has been pasted at " + to); }
@Command( aliases = {"/cut"}, usage = "[leave-id]", desc = "Вырезает выделенную территорию в буфер обмена", help = "Вырезает выделенную территорию в буфер обмена\n" + "Флаги:\n" + " -e controls определяет, будут ли объекты копироваться в буфер обмена\n" + "ПРЕДУПРЕЖДЕНИЕ: Вырезанные и вставленные объекты не могут быть отменены!", flags = "e", min = 0, max = 1) @CommandPermissions("worldedit.clipboard.cut") @Logging(REGION) public void cut( CommandContext args, LocalSession session, LocalPlayer player, EditSession editSession) throws WorldEditException { BaseBlock block = new BaseBlock(BlockID.AIR); LocalWorld world = player.getWorld(); if (args.argsLength() > 0) { block = we.getBlock(player, args.getString(0)); } Region region = session.getSelection(world); Vector min = region.getMinimumPoint(); Vector max = region.getMaximumPoint(); Vector pos = session.getPlacementPosition(player); CuboidClipboard clipboard = new CuboidClipboard(max.subtract(min).add(new Vector(1, 1, 1)), min, min.subtract(pos)); clipboard.copy(editSession); if (args.hasFlag('e')) { LocalEntity[] entities = world.getEntities(region); for (LocalEntity entity : entities) { clipboard.storeEntity(entity); } world.killEntities(entities); } session.setClipboard(clipboard); int affected = editSession.setBlocks(session.getSelection(world), block); player.print( affected + " " + StringUtil.plural(affected, "блок вырезан", "блока вырезано", "блоков вырезано") + "."); }
@Command( aliases = {"/move"}, usage = "[count] [direction] [leave-id]", flags = "s", desc = "Move the contents of the selection", min = 0, max = 3) @CommandPermissions("worldedit.region.move") @Logging(ORIENTATION_REGION) public static void move( CommandContext args, WorldEdit we, LocalSession session, LocalPlayer player, EditSession editSession) throws WorldEditException { int count = args.argsLength() > 0 ? Math.max(1, args.getInteger(0)) : 1; Vector dir = we.getDirection(player, args.argsLength() > 1 ? args.getString(1).toLowerCase() : "me"); BaseBlock replace; // Replacement block argument if (args.argsLength() > 2) { replace = we.getBlock(player, args.getString(2)); } else { replace = new BaseBlock(BlockID.AIR); } int affected = editSession.moveCuboidRegion( session.getSelection(player.getWorld()), dir, count, true, replace); if (args.hasFlag('s')) { try { Region region = session.getSelection(player.getWorld()); region.expand(dir.multiply(count)); region.contract(dir.multiply(count)); session.getRegionSelector().learnChanges(); session.getRegionSelector().explainRegionAdjust(player, session); } catch (RegionOperationException e) { player.printError(e.getMessage()); } } player.print(affected + " blocks moved."); }
@Command( aliases = {"/hpyramid"}, usage = "<block> <range>", desc = "Generate a hollow pyramid", min = 2, max = 2) @CommandPermissions({"worldedit.generation.pyramid"}) @Logging(PLACEMENT) public static void hpyramid( CommandContext args, WorldEdit we, LocalSession session, LocalPlayer player, EditSession editSession) throws WorldEditException { Pattern block = we.getBlockPattern(player, args.getString(0)); int size = Math.max(1, args.getInteger(1)); Vector pos = session.getPlacementPosition(player); int affected = editSession.makePyramid(pos, block, size, false); player.findFreePosition(); player.print(affected + " block(s) have been created."); }
@Command( aliases = {"/smooth"}, usage = "[iterations]", flags = "n", desc = "Smooth the elevation in the selection", min = 0, max = 1) @CommandPermissions("worldedit.region.smooth") @Logging(REGION) public static void smooth( CommandContext args, WorldEdit we, LocalSession session, LocalPlayer player, EditSession editSession) throws WorldEditException { int iterations = 1; if (args.argsLength() > 0) { iterations = args.getInteger(0); } HeightMap heightMap = new HeightMap(editSession, session.getSelection(player.getWorld()), args.hasFlag('n')); HeightMapFilter filter = new HeightMapFilter(new GaussianKernel(5, 1.0)); int affected = heightMap.applyFilter(filter, iterations); player.print("Terrain's height map smoothed. " + affected + " block(s) changed."); }
@Command( aliases = {"/overlay"}, usage = "<block>", desc = "Set a block on top of blocks in the region", min = 1, max = 1) @CommandPermissions("worldedit.region.overlay") @Logging(REGION) public static void overlay( CommandContext args, WorldEdit we, LocalSession session, LocalPlayer player, EditSession editSession) throws WorldEditException { Pattern pat = we.getBlockPattern(player, args.getString(0)); Region region = session.getSelection(player.getWorld()); int affected = 0; if (pat instanceof SingleBlockPattern) { affected = editSession.overlayCuboidBlocks(region, ((SingleBlockPattern) pat).getBlock()); } else { affected = editSession.overlayCuboidBlocks(region, pat); } player.print(affected + " block(s) have been overlayed."); }
@Command( aliases = {"/hsphere"}, usage = "<block> <radius> [raised?] ", desc = "Generate a hollow sphere", min = 2, max = 3) @CommandPermissions({"worldedit.generation.sphere"}) @Logging(PLACEMENT) public static void hsphere( CommandContext args, WorldEdit we, LocalSession session, LocalPlayer player, EditSession editSession) throws WorldEditException { Pattern block = we.getBlockPattern(player, args.getString(0)); double radius = Math.max(1, args.getDouble(1)); boolean raised = args.argsLength() > 2 ? (args.getString(2).equalsIgnoreCase("true") || args.getString(2).equalsIgnoreCase("yes")) : false; Vector pos = session.getPlacementPosition(player); if (raised) { pos = pos.add(0, radius, 0); } int affected = editSession.makeSphere(pos, block, radius, false); player.findFreePosition(); player.print(affected + " block(s) have been created."); }
@Command( aliases = {"smooth"}, usage = "[size] [iterations]", flags = "n", desc = "Choose the terrain softener brush", help = "Chooses the terrain softener brush.\n" + "The -n flag makes it only consider naturally occurring blocks.", min = 0, max = 2) @CommandPermissions("worldedit.brush.smooth") public void smoothBrush( Player player, LocalSession session, EditSession editSession, @Optional("2") double radius, @Optional("4") int iterations, @Switch('n') boolean naturalBlocksOnly) throws WorldEditException { worldEdit.checkMaxBrushRadius(radius); BrushTool tool = session.getBrushTool(player.getItemInHand()); tool.setSize(radius); tool.setBrush(new SmoothBrush(iterations, naturalBlocksOnly), "worldedit.brush.smooth"); player.print( String.format( "Smooth brush equipped (%.0f x %dx, using " + (naturalBlocksOnly ? "natural blocks only" : "any block") + ").", radius, iterations)); }
@Command( aliases = {"cylinder", "cyl", "c"}, usage = "<block> [radius] [height]", flags = "h", desc = "Choose the cylinder brush", help = "Chooses the cylinder brush.\n" + "The -h flag creates hollow cylinders instead.", min = 1, max = 3) @CommandPermissions("worldedit.brush.cylinder") public void cylinderBrush( Player player, LocalSession session, EditSession editSession, Pattern fill, @Optional("2") double radius, @Optional("1") int height, @Switch('h') boolean hollow) throws WorldEditException { worldEdit.checkMaxBrushRadius(radius); worldEdit.checkMaxBrushRadius(height); BrushTool tool = session.getBrushTool(player.getItemInHand()); tool.setFill(fill); tool.setSize(radius); if (hollow) { tool.setBrush(new HollowCylinderBrush(height), "worldedit.brush.cylinder"); } else { tool.setBrush(new CylinderBrush(height), "worldedit.brush.cylinder"); } player.print(String.format("Cylinder brush shape equipped (%.0f by %d).", radius, height)); }
@Command( aliases = {"gravity", "grav"}, usage = "[radius]", flags = "h", desc = "Gravity brush", help = "This brush simulates the affect of gravity.\n" + "The -h flag makes it affect blocks starting at the world's max y, " + "instead of the clicked block's y + radius.", min = 0, max = 1) @CommandPermissions("worldedit.brush.gravity") public void gravityBrush( Player player, LocalSession session, EditSession editSession, @Optional("5") double radius, @Switch('h') boolean fromMaxY) throws WorldEditException { worldEdit.checkMaxBrushRadius(radius); BrushTool tool = session.getBrushTool(player.getItemInHand()); tool.setSize(radius); tool.setBrush(new GravityBrush(fromMaxY), "worldedit.brush.gravity"); player.print(String.format("Gravity brush equipped (%.0f).", radius)); }
@Command( aliases = {"/rotate"}, usage = "<y-axis> [<x-axis>] [<z-axis>]", desc = "Rotate the contents of the clipboard", help = "Non-destructively rotate the contents of the clipboard.\n" + "Angles are provided in degrees and a positive angle will result in a clockwise rotation. " + "Multiple rotations can be stacked. Interpolation is not performed so angles should be a multiple of 90 degrees.\n") @CommandPermissions("worldedit.clipboard.rotate") public void rotate( Player player, LocalSession session, Double yRotate, @Optional Double xRotate, @Optional Double zRotate) throws WorldEditException { if ((yRotate != null && Math.abs(yRotate % 90) > 0.001) || xRotate != null && Math.abs(xRotate % 90) > 0.001 || zRotate != null && Math.abs(zRotate % 90) > 0.001) { player.printDebug( "Note: Interpolation is not yet supported, so angles that are multiples of 90 is recommended."); } ClipboardHolder holder = session.getClipboard(); AffineTransform transform = new AffineTransform(); transform = transform.rotateY(-(yRotate != null ? yRotate : 0)); transform = transform.rotateX(-(xRotate != null ? xRotate : 0)); transform = transform.rotateZ(-(zRotate != null ? zRotate : 0)); holder.setTransform(holder.getTransform().combine(transform)); player.print("The clipboard copy has been rotated."); }
/** * Sets a status and sends an info message. * * @param code status code * @param message info message * @throws IOException I/O exception */ public void status(final int code, final String message) throws IOException { log(true, code, message); if (session != null) session.close(); res.resetBuffer(); res.setStatus(code); if (code == SC_UNAUTHORIZED) res.setHeader(WWW_AUTHENTICATE, BASIC); if (message != null) res.getOutputStream().write(token(message)); }
@Command( aliases = {"/stack"}, usage = "[count] [direction]", flags = "sa", desc = "Repeat the contents of the selection", min = 0, max = 2) @CommandPermissions("worldedit.region.stack") @Logging(ORIENTATION_REGION) public static void stack( CommandContext args, WorldEdit we, LocalSession session, LocalPlayer player, EditSession editSession) throws WorldEditException { int count = args.argsLength() > 0 ? Math.max(1, args.getInteger(0)) : 1; Vector dir = we.getDiagonalDirection( player, args.argsLength() > 1 ? args.getString(1).toLowerCase() : "me"); int affected = editSession.stackCuboidRegion( session.getSelection(player.getWorld()), dir, count, !args.hasFlag('a')); if (args.hasFlag('s')) { try { Region region = session.getSelection(player.getWorld()); region.expand(dir.multiply(count)); region.contract(dir.multiply(count)); session.getRegionSelector().learnChanges(); session.getRegionSelector().explainRegionAdjust(player, session); } catch (RegionOperationException e) { player.printError(e.getMessage()); } } player.print(affected + " blocks changed. Undo with //undo"); }
@Override public boolean act( ServerInterface server, LocalConfiguration config, LocalPlayer player, LocalSession session, WorldVector clicked) { LocalWorld world = clicked.getWorld(); EditSession editSession = new EditSession(server, world, session.getBlockChangeLimit()); try { editSession.makePineTree(clicked.add(0, 1, 0)); } catch (MaxChangedBlocksException e) { player.printError("Max blocks change limit reached."); } finally { session.remember(editSession); } return true; }
@Command( aliases = {"clearclipboard"}, usage = "", desc = "Clear your clipboard", min = 0, max = 0) @CommandPermissions("worldedit.clipboard.clear") public void clearClipboard(Player player, LocalSession session, EditSession editSession) throws WorldEditException { session.setClipboard(null); player.print("Clipboard cleared."); }
@Command( aliases = {"/replace"}, usage = "[from-block] <to-block>", desc = "Replace all blocks in the selection with another", flags = "f", min = 1, max = 2) @CommandPermissions("worldedit.region.replace") @Logging(REGION) public static void replace( CommandContext args, WorldEdit we, LocalSession session, LocalPlayer player, EditSession editSession) throws WorldEditException { Set<BaseBlock> from; Pattern to; if (args.argsLength() == 1) { from = null; to = we.getBlockPattern(player, args.getString(0)); } else { from = we.getBlocks(player, args.getString(0), true, !args.hasFlag('f')); to = we.getBlockPattern(player, args.getString(1)); } int affected = 0; if (to instanceof SingleBlockPattern) { affected = editSession.replaceBlocks( session.getSelection(player.getWorld()), from, ((SingleBlockPattern) to).getBlock()); } else { affected = editSession.replaceBlocks(session.getSelection(player.getWorld()), from, to); } player.print(affected + " block(s) have been replaced."); }
@Command( aliases = {"clearclipboard"}, usage = "", desc = "Очищает Ваш буфер обмена", min = 0, max = 0) @CommandPermissions("worldedit.clipboard.clear") public void clearClipboard( CommandContext args, LocalSession session, LocalPlayer player, EditSession editSession) throws WorldEditException { session.setClipboard(null); player.print("Буфер обмена очищен."); }
@Command( aliases = {"/clearhistory", "clearhistory"}, usage = "", desc = "Clear your history", min = 0, max = 0) @CommandPermissions("worldedit.history.clear") public void clearHistory( CommandContext args, LocalSession session, LocalPlayer player, EditSession editSession) throws WorldEditException { session.clearHistory(); player.print("History cleared."); }
@Command( aliases = {"/regen"}, usage = "", desc = "Regenerates the contents of the selection", min = 0, max = 0) @CommandPermissions("worldedit.regen") @Logging(REGION) public static void regenerateChunk( CommandContext args, WorldEdit we, LocalSession session, LocalPlayer player, EditSession editSession) throws WorldEditException { Region region = session.getSelection(player.getWorld()); Mask mask = session.getMask(); session.setMask(null); player.getWorld().regenerate(region, editSession); session.setMask(mask); player.print("Region regenerated."); }
@Command( aliases = {"butcher", "kill"}, usage = "[radius]", flags = "plangbtfr", desc = "Butcher brush", help = "Kills nearby mobs within the specified radius.\n" + "Flags:\n" + " -p also kills pets.\n" + " -n also kills NPCs.\n" + " -g also kills Golems.\n" + " -a also kills animals.\n" + " -b also kills ambient mobs.\n" + " -t also kills mobs with name tags.\n" + " -f compounds all previous flags.\n" + " -r also destroys armor stands.\n" + " -l currently does nothing.", min = 0, max = 1) @CommandPermissions("worldedit.brush.butcher") public void butcherBrush( Player player, LocalSession session, EditSession editSession, CommandContext args) throws WorldEditException { LocalConfiguration config = worldEdit.getConfiguration(); double radius = args.argsLength() > 0 ? args.getDouble(0) : 5; double maxRadius = config.maxBrushRadius; // hmmmm not horribly worried about this because -1 is still rather efficient, // the problem arises when butcherMaxRadius is some really high number but not infinite // - original idea taken from https://github.com/sk89q/worldedit/pull/198#issuecomment-6463108 if (player.hasPermission("worldedit.butcher")) { maxRadius = Math.max(config.maxBrushRadius, config.butcherMaxRadius); } if (radius > maxRadius) { player.printError("Maximum allowed brush radius: " + maxRadius); return; } CreatureButcher flags = new CreatureButcher(player); flags.fromCommand(args); BrushTool tool = session.getBrushTool(player.getItemInHand()); tool.setSize(radius); tool.setBrush(new ButcherBrush(flags), "worldedit.brush.butcher"); player.print(String.format("Butcher brush equipped (%.0f).", radius)); }
@Command( aliases = {"/naturalize"}, usage = "", desc = "3 layers of dirt on top then rock below", min = 0, max = 0) @CommandPermissions("worldedit.region.naturalize") @Logging(REGION) public static void naturalize( CommandContext args, WorldEdit we, LocalSession session, LocalPlayer player, EditSession editSession) throws WorldEditException { Region region = session.getSelection(player.getWorld()); int affected = editSession.naturalizeCuboidBlocks(region); player.print(affected + " block(s) have been naturalized."); }