import com.fastasyncworldedit.core.queue.implementation.ParallelQueueExtent; import com.google.common.base.Preconditions; import com.sk89q.worldedit.MaxChangedBlocksException; import com.sk89q.worldedit.WorldEditException; import com.sk89q.worldedit.event.extent.EditSessionEvent; import com.sk89q.worldedit.function.RegionMaskingFilter; import com.sk89q.worldedit.function.block.BlockReplace; import com.sk89q.worldedit.function.mask.Mask; import com.sk89q.worldedit.function.operation.Operations; import com.sk89q.worldedit.function.pattern.Pattern; import com.sk89q.worldedit.function.visitor.RegionVisitor; import com.sk89q.worldedit.math.BlockVector3; import com.sk89q.worldedit.regions.Region; import com.sk89q.worldedit.world.block.BaseBlock; import com.sk89q.worldedit.world.block.BlockStateHolder; import java.util.Set; import org.bukkit.Bukkit; public class FaweCustomBlocksExtent extends AbstractCustomBlockExtent { public FaweCustomBlocksExtent(EditSessionEvent event) { super(event); } public > boolean setBlock(int n, int n2, int n3, T t) { Result result = this.setBlockInternal(n, n2, n3, t); if (result == Result.SUCCESS) { return true; } return this.getExtent().setBlock(n, n2, n3, t); } @Override public > boolean setBlock(BlockVector3 position, T block) throws WorldEditException { return this.setBlock(position.getX(), position.getY(), position.getZ(), block); } @Override public int replaceBlocks(Region region, Mask mask, Pattern pattern) throws MaxChangedBlocksException { return replace(region, mask, pattern); } private int replace(Region region, Mask mask, Pattern pattern) throws MaxChangedBlocksException { Preconditions.checkNotNull(region); Preconditions.checkNotNull(mask); Preconditions.checkNotNull(pattern); BlockReplace replace = new BlockReplace(this, pattern); RegionMaskingFilter filter = new RegionMaskingFilter(this, mask, replace); RegionVisitor visitor = new RegionVisitor(region, filter, this); Operations.completeLegacy(visitor); return visitor.getAffected(); } @Override public int setBlocks(Region region, Pattern pattern) throws MaxChangedBlocksException { int changes = 0; for (BlockVector3 pos : region) { if (pattern.apply(this, pos, pos)) { ++changes; } } return changes; } }