package in.twizmwaz.cardinal.module.modules.regions.type.modifications; import com.google.common.collect.Lists; import in.twizmwaz.cardinal.module.modules.regions.RegionModule; import in.twizmwaz.cardinal.module.modules.regions.parsers.modifiers.TranslateParser; import in.twizmwaz.cardinal.module.modules.regions.type.BlockRegion; import in.twizmwaz.cardinal.module.modules.regions.type.PointRegion; import org.bukkit.block.Block; import org.bukkit.util.Vector; import java.util.List; public class TranslatedRegion extends RegionModule { private final Vector offset; private final RegionModule base; public TranslatedRegion(String name, RegionModule base, Vector offset) { super(name); this.offset = offset; this.base = base; } public TranslatedRegion(TranslateParser parser) { this(parser.getName(), parser.getBase(), parser.getOffset()); } @Override public boolean contains(Vector vector) { return base.contains(vector.minus(offset)); } @Override public PointRegion getRandomPoint() { return new PointRegion(null, base.getRandomPoint().getVector().plus(offset)); } @Override public BlockRegion getCenterBlock() { return new BlockRegion(null, base.getCenterBlock().getVector().plus(offset)); } @Override public List<Block> getBlocks() { List<Block> result = Lists.newArrayList(); for (Block block : base.getBlocks()) { result.add(block.getLocation().add(offset).getBlock()); } return result; } @Override public Vector getMin() { return base.getMin().plus(offset); } @Override public Vector getMax() { return base.getMax().plus(offset); } }