From 77071211f258b2e99dda2a83ffb803f52f0082f9 Mon Sep 17 00:00:00 2001 From: sk89q Date: Fri, 28 Mar 2014 16:48:53 -0700 Subject: [PATCH] Added RegionOffset and FlatRegionOffset. --- .../function/util/FlatRegionOffset.java | 71 ++++++++++++++++++ .../worldedit/function/util/RegionOffset.java | 72 +++++++++++++++++++ 2 files changed, 143 insertions(+) create mode 100644 src/main/java/com/sk89q/worldedit/function/util/FlatRegionOffset.java create mode 100644 src/main/java/com/sk89q/worldedit/function/util/RegionOffset.java diff --git a/src/main/java/com/sk89q/worldedit/function/util/FlatRegionOffset.java b/src/main/java/com/sk89q/worldedit/function/util/FlatRegionOffset.java new file mode 100644 index 000000000..a51b2800d --- /dev/null +++ b/src/main/java/com/sk89q/worldedit/function/util/FlatRegionOffset.java @@ -0,0 +1,71 @@ +/* + * 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.function.util; + +import com.sk89q.worldedit.Vector2D; +import com.sk89q.worldedit.WorldEditException; +import com.sk89q.worldedit.function.FlatRegionFunction; + +import static com.google.common.base.Preconditions.checkNotNull; + +/** + * Offsets the position parameter by adding a given offset vector. + */ +public class FlatRegionOffset implements FlatRegionFunction { + + private Vector2D offset; + private final FlatRegionFunction function; + + /** + * Create a new instance. + * + * @param offset the offset + * @param function the function that is called with the offset position + */ + public FlatRegionOffset(Vector2D offset, FlatRegionFunction function) { + checkNotNull(function); + setOffset(offset); + this.function = function; + } + + /** + * Get the offset that is added to the position. + * + * @return the offset + */ + public Vector2D getOffset() { + return offset; + } + + /** + * Set the offset that is added to the position. + * + * @param offset the offset + */ + public void setOffset(Vector2D offset) { + checkNotNull(offset); + this.offset = offset; + } + + @Override + public boolean apply(Vector2D position) throws WorldEditException { + return function.apply(position.add(offset)); + } +} diff --git a/src/main/java/com/sk89q/worldedit/function/util/RegionOffset.java b/src/main/java/com/sk89q/worldedit/function/util/RegionOffset.java new file mode 100644 index 000000000..b9d063d62 --- /dev/null +++ b/src/main/java/com/sk89q/worldedit/function/util/RegionOffset.java @@ -0,0 +1,72 @@ +/* + * 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.function.util; + +import com.sk89q.worldedit.Vector; +import com.sk89q.worldedit.WorldEditException; +import com.sk89q.worldedit.function.RegionFunction; + +import static com.google.common.base.Preconditions.checkNotNull; + +/** + * Offsets the position parameter by adding a given offset vector. + */ +public class RegionOffset implements RegionFunction { + + private Vector offset; + private final RegionFunction function; + + /** + * Create a new instance. + * + * @param offset the offset + * @param function the function that is called with the offset position + */ + public RegionOffset(Vector offset, RegionFunction function) { + checkNotNull(function); + setOffset(offset); + this.function = function; + } + + /** + * Get the offset that is added to the position. + * + * @return the offset + */ + public Vector getOffset() { + return offset; + } + + /** + * Set the offset that is added to the position. + * + * @param offset the offset + */ + public void setOffset(Vector offset) { + checkNotNull(offset); + this.offset = offset; + } + + @Override + public boolean apply(Vector position) throws WorldEditException { + return function.apply(position.add(offset)); + } + +}