diff --git a/Spigot-API-Patches/0140-Allow-Blocks-to-be-accessed-via-a-long-key.patch b/Spigot-API-Patches/0140-Allow-Blocks-to-be-accessed-via-a-long-key.patch index fbaf72c961..33323e77ef 100644 --- a/Spigot-API-Patches/0140-Allow-Blocks-to-be-accessed-via-a-long-key.patch +++ b/Spigot-API-Patches/0140-Allow-Blocks-to-be-accessed-via-a-long-key.patch @@ -1,4 +1,4 @@ -From d9e2a8161436e5e69cab70d36e48a2c4900bf1fd Mon Sep 17 00:00:00 2001 +From 743e46cd7844b3927e0d4ed1b59261103aebfd70 Mon Sep 17 00:00:00 2001 From: Spottedleaf Date: Tue, 14 Aug 2018 21:42:10 -0700 Subject: [PATCH] Allow Blocks to be accessed via a long key @@ -18,7 +18,7 @@ Y range: [0, 1023] X, Z range: [-67 108 864, 67 108 863] diff --git a/src/main/java/org/bukkit/Location.java b/src/main/java/org/bukkit/Location.java -index 8dcb15fb..7e1ee875 100644 +index 8dcb15fb8..7e1ee875e 100644 --- a/src/main/java/org/bukkit/Location.java +++ b/src/main/java/org/bukkit/Location.java @@ -10,7 +10,6 @@ import org.bukkit.util.Vector; @@ -49,14 +49,14 @@ index 8dcb15fb..7e1ee875 100644 * @return A new location where X/Y/Z are the center of the block */ diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java -index f84f151a..3d8b4925 100644 +index f84f151ad..3170a0746 100644 --- a/src/main/java/org/bukkit/World.java +++ b/src/main/java/org/bukkit/World.java -@@ -73,6 +73,23 @@ public interface World extends PluginMessageRecipient, Metadatable { +@@ -73,6 +73,37 @@ public interface World extends PluginMessageRecipient, Metadatable { */ public Block getBlockAt(Location location); -+ // Paper Start ++ // Paper start + /** + * Gets the {@link Block} at the given block key + * @@ -71,13 +71,27 @@ index f84f151a..3d8b4925 100644 + int z = (int) ((key << 10) >> 37); + return getBlockAt(x, y, z); + } -+ // Paper End ++ /** ++ * Gets the {@link Location} at the given block key ++ * ++ * @param key The block key. See {@link Location#toBlockKey()} ++ * @return Location at the key ++ * @see Location#toBlockKey() ++ * @see Block#getBlockKey() ++ */ ++ public default Location getLocationAtKey(long key) { ++ int x = (int) ((key << 37) >> 37); ++ int y = (int) (key >>> 54); ++ int z = (int) ((key << 10) >> 37); ++ return new Location(this, x, y, z); ++ } ++ // Paper end + /** * Gets the y coordinate of the lowest block at this position such that the * block and all blocks above it are transparent for lighting purposes. diff --git a/src/main/java/org/bukkit/block/Block.java b/src/main/java/org/bukkit/block/Block.java -index 238de6f0..d700df53 100644 +index 238de6f0a..d700df538 100644 --- a/src/main/java/org/bukkit/block/Block.java +++ b/src/main/java/org/bukkit/block/Block.java @@ -139,6 +139,30 @@ public interface Block extends Metadatable {