From 85f0446abcf9258db6dd3ce3f0295887ec5be413 Mon Sep 17 00:00:00 2001 From: mcmonkey4eva Date: Wed, 20 Jan 2016 16:34:28 -0800 Subject: [PATCH] Add a points_between tag to location --- .../aufdemrand/denizen/objects/dLocation.java | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/main/java/net/aufdemrand/denizen/objects/dLocation.java b/src/main/java/net/aufdemrand/denizen/objects/dLocation.java index 44fecaea83..3b45b709ad 100644 --- a/src/main/java/net/aufdemrand/denizen/objects/dLocation.java +++ b/src/main/java/net/aufdemrand/denizen/objects/dLocation.java @@ -744,6 +744,30 @@ else if (type == Material.TRAP_DOOR } } + // <--[tag] + // @attribute ]> + // @returns dList(dLocation) + // @description + // Finds all locations between this location and another, separated by 1 block-width each. + // --> + if (attribute.startsWith("points_between")) { + dLocation target = dLocation.valueOf(attribute.getContext(1)); + if (target == null) { + return null; + } + dList list = new dList(); + org.bukkit.util.Vector rel = this.toVector().subtract(target.toVector()); + double len = rel.length(); + rel = rel.multiply(1d / len); + for (int i = 0; i < len; i++) { + list.add(new dLocation(this.clone().add(rel.clone().multiply(i))).identify()); + } + if (len > Math.floor(len)) { + list.add(target.identify()); + } + return list.getAttribute(attribute.fulfill(1)); + } + // <--[tag] // @attribute ]> // @returns dList(dLocation)