17b58d00d8
This was a useless exception wrapper that ends up making stack traces harder to read as well as the JVM cutting off the important parts Nothing catches this exception, so its safe to just get rid of it and let the REAL exception bubble down
74 lines
2.4 KiB
Diff
74 lines
2.4 KiB
Diff
From d79f06b36da5d3fc3aed359bdafd8c15d445488c Mon Sep 17 00:00:00 2001
|
|
From: Aikar <aikar@aikar.co>
|
|
Date: Sat, 4 Aug 2018 19:37:35 -0400
|
|
Subject: [PATCH] Provide Chunk Coordinates as a Long API
|
|
|
|
Allows you to easily access the chunks X/z as a long, and a method
|
|
to look up by the long key too.
|
|
|
|
diff --git a/src/main/java/org/bukkit/Chunk.java b/src/main/java/org/bukkit/Chunk.java
|
|
index 441ed7ad..33cd0ea0 100644
|
|
--- a/src/main/java/org/bukkit/Chunk.java
|
|
+++ b/src/main/java/org/bukkit/Chunk.java
|
|
@@ -23,6 +23,32 @@ public interface Chunk {
|
|
*/
|
|
int getZ();
|
|
|
|
+ // Paper start
|
|
+ /**
|
|
+ * @return The Chunks X and Z coordinates packed into a long
|
|
+ */
|
|
+ default long getChunkKey() {
|
|
+ return getChunkKey(getX(), getZ());
|
|
+ }
|
|
+
|
|
+ /**
|
|
+ * @param loc Location to get chunk key
|
|
+ * @return Location's chunk coordinates packed into a long
|
|
+ */
|
|
+ static long getChunkKey(Location loc) {
|
|
+ return getChunkKey((int) Math.floor(loc.getX()) << 4, (int) Math.floor(loc.getZ()) << 4);
|
|
+ }
|
|
+
|
|
+ /**
|
|
+ * @param x X Coordinate
|
|
+ * @param z Z Coordinate
|
|
+ * @return Chunk coordinates packed into a long
|
|
+ */
|
|
+ static long getChunkKey(int x, int z) {
|
|
+ return (long) x & 0xffffffffL | ((long) z & 0xffffffffL) << 32;
|
|
+ }
|
|
+ // Paper end
|
|
+
|
|
/**
|
|
* Gets the world containing this chunk
|
|
*
|
|
diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java
|
|
index e424ed4e..807bd7fc 100644
|
|
--- a/src/main/java/org/bukkit/World.java
|
|
+++ b/src/main/java/org/bukkit/World.java
|
|
@@ -139,6 +139,21 @@ public interface World extends PluginMessageRecipient, Metadatable {
|
|
*/
|
|
public Chunk getChunkAt(Block block);
|
|
|
|
+ // Paper start
|
|
+ /**
|
|
+ * Gets the chunk at the specified chunk key, which is the X and Z packed into a long.
|
|
+ *
|
|
+ * See {@link Chunk#getChunkKey()} for easy access to the key, or you may calculate it as:
|
|
+ * long chunkKey = (long) chunkX & 0xffffffffL | ((long) chunkZ & 0xffffffffL) >> 32;
|
|
+ *
|
|
+ * @param chunkKey The Chunk Key to look up the chunk by
|
|
+ * @return The chunk at the specified key
|
|
+ */
|
|
+ public default Chunk getChunkAt(long chunkKey) {
|
|
+ return getChunkAt((int) chunkKey, (int) (chunkKey >> 32));
|
|
+ }
|
|
+ // Paper end
|
|
+
|
|
/**
|
|
* Checks if the specified {@link Chunk} is loaded
|
|
*
|
|
--
|
|
2.20.1
|
|
|