/* * WorldEdit, a Minecraft world manipulation toolkit * Copyright (C) sk89q * Copyright (C) WorldEdit team and contributors * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ package com.sk89q.worldedit.operation; import com.sk89q.worldedit.MaxChangedBlocksException; import com.sk89q.worldedit.WorldEditException; /** * Operation helper methods. */ public final class OperationHelper { private OperationHelper() { } /** * Complete a given operation synchronously until it completes. * * @param op operation to execute * @throws WorldEditException WorldEdit exception */ public static void complete(Operation op) throws WorldEditException { while (op != null) { op = op.resume(); } } /** * Complete a given operation synchronously until it completes. Catch all * errors that is not {@link MaxChangedBlocksException} for legacy reasons. * * @param op operation to execute * @throws MaxChangedBlocksException thrown when too many blocks have been changed */ public static void completeLegacy(Operation op) throws MaxChangedBlocksException { while (op != null) { try { op = op.resume(); } catch (MaxChangedBlocksException e) { throw e; } catch (WorldEditException e) { throw new RuntimeException(e); } } } /** * Complete a given operation synchronously until it completes. Re-throw all * {@link com.sk89q.worldedit.WorldEditException} exceptions as * {@link java.lang.RuntimeException}s. * * @param op operation to execute */ public static void completeBlindly(Operation op) { while (op != null) { try { op = op.resume(); } catch (WorldEditException e) { throw new RuntimeException(e); } } } }