From c2f3378222678178ed336881bfe3efb4cb3c96f5 Mon Sep 17 00:00:00 2001 From: Aikar Date: Wed, 25 Jul 2018 01:36:07 -0400 Subject: [PATCH] Expand Location Manipulation API Adds set(x, y, z), add(base, x, y, z), subtract(base, x, y, z); diff --git a/src/main/java/org/bukkit/Location.java b/src/main/java/org/bukkit/Location.java index 056a4d6b..8dcb15fb 100644 --- a/src/main/java/org/bukkit/Location.java +++ b/src/main/java/org/bukkit/Location.java @@ -503,6 +503,51 @@ public class Location implements Cloneable, ConfigurationSerializable { public boolean isChunkLoaded() { return world.isChunkLoaded(locToBlock(x) >> 4, locToBlock(z) >> 4); } // Paper // Paper start + + /** + * Sets the position of this Location and returns itself + * + * This mutates this object, clone first. + * @param x X coordinate + * @param y Y coordinate + * @param z Z coordinate + * @return self (not cloned) + */ + public Location set(double x, double y, double z) { + this.x = x; + this.y = y; + this.z = z; + return this; + } + + /** + * Takes the x/y/z from base and adds the specified x/y/z to it and returns self + * + * This mutates this object, clone first. + * @param base The base coordinate to modify + * @param x X coordinate to add to base + * @param y Y coordinate to add to base + * @param z Z coordinate to add to base + * @return self (not cloned) + */ + public Location add(Location base, double x, double y, double z) { + return this.set(base.x + x, base.y + y, base.z + z); + } + + /** + * Takes the x/y/z from base and subtracts the specified x/y/z to it and returns self + * + * This mutates this object, clone first. + * @param base The base coordinate to modify + * @param x X coordinate to subtract from base + * @param y Y coordinate to subtract from base + * @param z Z coordinate to subtract from base + * @return self (not cloned) + */ + public Location subtract(Location base, double x, double y, double z) { + return this.set(base.x - x, base.y - y, base.z - z); + } + /** * @return A new location where X/Y/Z are on the Block location (integer value of X/Y/Z) */ -- 2.20.1